高效解包!5 个三进制位紧密放入 8 位字节,效率达 99.06%
如何用 8 位字节打包三进制数三进制数的每一位有 3 种可能的值这 3 种值可以代表任何内容。最近有人被一个问题吸引试图把 [BitNet b1.58] 的三进制权重打包使其尽可能接近每个三进制数位 log(3) / log(2) 比特的理论理想值。这里把“三进制数位”称为“三进制位trit”就像把“二进制数位”称为“二进制位bit”一样。块大小由于目标是实现快速的 **并行** 解包三进制位的块不能无限大。需要找到一个合适的“块”大小理想情况下这个大小既能保证信息密度高效又能在当前硬件上方便使用。为了找到合适的块大小要找到一个 3 的幂使其下一个 2 的幂与之非常接近。通过列表展示不同三进制位数量对应的 3 的幂、所需比特数、2 的幂以及每个三进制位的比特数1 个三进制位3 的幂为 3所需 2 比特2 的幂为 4每个三进制位 2 比特2 个三进制位3 的幂为 9所需 4 比特2 的幂为 16每个三进制位 2 比特3 个三进制位3 的幂为 27所需 5 比特2 的幂为 32每个三进制位 1.666... 比特4 个三进制位3 的幂为 81所需 7 比特2 的幂为 128每个三进制位 1.75 比特5 个三进制位3 的幂为 243所需 8 比特2 的幂为 256每个三进制位 1.6 比特非常幸运的是5 个三进制位刚好能紧密地放入 8 位字节中每个三进制位只需 1.6 比特。与完美打包相比这种方式的效率达到了 99.06%。每个三进制位 1.6 比特这种打包方案的基本思路很简单就是用三进制数位组成一个数。给出了 Python 代码示例def pack_number(digits: list[int], base: int) - int: number 0 for digit in digits: assert digit base number number * base number number digit return number将三进制位打包成字节的过程与之类似。快速乘法解包虽然可以通过反复取余和除法来提取一个数的各个数位但除法和取模操作在 SIMD 编程中通常对整数不支持。解决这个问题的方法显然是换一种方式看待数字。提出疑问如果不用取模来提取最低有效位而是用乘法来提取最高有效位是不是会更好呢答案是定点数可以解决这个问题。通过图示展示相关操作当用这个 8 位字节乘以 3 时可以很容易地从得到的 10 位数字的前两位中提取出三进制位。在使用 SIMD 解包时这种方法比取模操作方便得多。在将三进制位打包成字节的过程中唯一涉及除法的地方就在这里。这里假设打包操作的频率低于解包操作在大语言模型LLM权重的场景中确实如此。给出了将三进制位打包成字节和从字节解包出三进制位的 Python 代码示例# 接收一个包含 -1、0、1 的列表并将其打包成字节def pack_trits(digits: list[int]) - bytearray: assert len(digits) % 5 0 # 这里不处理填充 n_bytes len(digits) // 5 packed bytearray() for i in range(n_bytes): b 0 for j in range(5): digit digits[5*i j] digit max(-1, min(digit, 1)) # 限制在 -1 和 1 之间 digit 1 # 从 -1、0、1 转换为 0、1、2 b * 3 b digit b ((b * 256) (243 - 1)) // 243 packed.append(b) return packeddef unpack_trits(packed: bytes) - list[int]: trits: list[int] [] for byte in packed: b byte for i in range(5): b b * 3 trit b 8 trits.append(trit - 1) # 0、1、2 转换为 -1、0、1 b b 0xFF return trits为了验证这个方法是否可行写了一个 C 程序来检查是否真的没有信息损失并给出了 C 程序代码。编译并运行该程序对于能放入 8 位字节的 243 个三进制数都得到了 PASS 的结果。llama.cpp 中用于 TriLMs 和 BitNet b1.58 的三进制类型就采用了这种技术。提醒大家可以关注相关技术的应用和发展。

相关新闻

从《贝加尔湖畔》录音实践解析音频处理全流程:动态范围、EQ与混响应用

从《贝加尔湖畔》录音实践解析音频处理全流程:动态范围、EQ与混响应用

那天下午,我正对着屏幕调试一段音频处理脚本,耳机里随机播放到了《贝加尔湖畔》的钢琴版。突然意识到,距离第一次听到这首歌,已经过去了整整十年。十年间,我从一个只会用现成软件的音乐爱好者,变成了能自己…

2026/7/27 3:27:59 阅读更多 →
50MW 电站无人机巡检:从红外热斑到 OM 工单的断层怎么接

50MW 电站无人机巡检:从红外热斑到 OM 工单的断层怎么接

去年 10 月,西北某 100MW 集中式电站的运维负责人找到我们,开口第一句话就是:“无人机飞了一整天,AI 识别出 300 多个热斑,结果我手下的人得对着 Excel 找半天位置,这巡检巡了个寂寞。” 这其实是目前光伏…

2026/7/27 5:58:23 阅读更多 →
宠物社区话题系统搭建,评论点赞实时交互开发实操

宠物社区话题系统搭建,评论点赞实时交互开发实操

宠物社区话题系统搭建,评论点赞实时交互开发实操 宠物社区话题系统的用户活跃度,核心依赖评论、点赞、回复等实时交互功能的体验支撑。相较于普通资讯展示平台,宠物社交场景用户交互频次更高,用户习惯实时查看话题点赞数、最新评…

2026/7/25 15:19:04 阅读更多 →

最新新闻

汽车状态分类器代码详解(未完待续)

汽车状态分类器代码详解(未完待续)

先是data_processing文件: import pandas as pd from urllib.request import urlretrievedef load_data(downloadTrue):# download data from : http://archive.ics.uci.edu/ml/datasets/CarEvaluationif download:data_path, _ urlretrieve("http://archive.…

2026/7/28 18:55:19 阅读更多 →
Adobe GenP 3.0终极方案:跨版本激活Adobe Creative Cloud的深度解析

Adobe GenP 3.0终极方案:跨版本激活Adobe Creative Cloud的深度解析

Adobe GenP 3.0终极方案:跨版本激活Adobe Creative Cloud的深度解析 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 在数字创意领域,Adobe C…

2026/7/28 18:55:19 阅读更多 →
手语翻译革命:用AI打破无声世界的沟通壁垒

手语翻译革命:用AI打破无声世界的沟通壁垒

手语翻译革命:用AI打破无声世界的沟通壁垒 【免费下载链接】Sign-Language-Interpreter-using-Deep-Learning A sign language interpreter using live video feed from the camera. 项目地址: https://gitcode.com/gh_mirrors/si/Sign-Language-Interpreter-usi…

2026/7/28 18:55:19 阅读更多 →
工程车辆识别挖掘机推土机洒水车压路机等识别分割数据集labelme格式3823张13类别

工程车辆识别挖掘机推土机洒水车压路机等识别分割数据集labelme格式3823张13类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数):3823标注数量(json文件个数):3823标注类别数:13标注类别名称:["articulated_truck","backhoe_loader&…

2026/7/28 18:55:19 阅读更多 →
基于LangChain的AI学习计划生成器开发实践

基于LangChain的AI学习计划生成器开发实践

1. 项目概述:用LangChain构建AI学习计划生成器 这个项目源于一个非常实际的需求——如何让AI帮助我们制定高效的学习计划。作为一名长期关注AI应用落地的开发者,我发现市面上大多数学习计划工具要么过于死板,要么缺乏个性化适配能力。而LangC…

2026/7/28 18:55:19 阅读更多 →
常用排序算法时间复杂度和空间复杂度

常用排序算法时间复杂度和空间复杂度

均按从小到大排列 k代表数值中的"数位"个数 n代表数据规模 m代表数据的最大值减最小值

2026/7/28 18:54:19 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻