高效解包!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/22 6:40:18 阅读更多 →
50MW 电站无人机巡检:从红外热斑到 OM 工单的断层怎么接

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

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

2026/7/22 6:40:18 阅读更多 →
宠物社区话题系统搭建,评论点赞实时交互开发实操

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

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

2026/7/22 6:40:17 阅读更多 →

最新新闻

边界监督在离线安全强化学习中的创新应用

边界监督在离线安全强化学习中的创新应用

1. 项目概述:边界监督在离线安全强化学习中的创新应用这个标题指向的是强化学习领域一个非常前沿的研究方向——如何在完全离线的训练环境中确保智能体的安全性。2025年NIPS会议论文《Boundary to region supervision for offline safe reinforcement learning》提出…

2026/7/22 7:27:37 阅读更多 →
零基础看懂RSA加解密:最经典的非对称加密原理详解

零基础看懂RSA加解密:最经典的非对称加密原理详解

在网络支付、账号登录、文件传输、网页浏览的过程中,我们的隐私数据之所以不被窃取、篡改,核心离不开加密技术。而RSA加密是目前全球应用最广、最经典、最安全的加密算法之一。很多新手觉得RSA晦涩难懂,其实抛开复杂数学公式,它的…

2026/7/22 7:27:37 阅读更多 →
软件测试技能大赛:接口测试报告撰写全攻略与高分要点解析

软件测试技能大赛:接口测试报告撰写全攻略与高分要点解析

1. 项目概述与赛项背景解析最近刚带完一波学生备战今年的省赛,看到“软件测试”高职组赛项,特别是接口测试报告这个环节,感触颇深。这不仅是检验学生理论知识的考场,更是将书本上的“黑盒白盒”、“等价类边界值”转化为实际项目交…

2026/7/22 7:27:37 阅读更多 →
调查问卷设计:核心原则与实战技巧

调查问卷设计:核心原则与实战技巧

1. 调查问卷设计基础与核心价值调查问卷作为一种经典的数据收集工具,在商业决策、学术研究和社会调查中始终保持着不可替代的地位。我经手过的问卷项目从3个问题的快速反馈表到200维度的深度调研,发现真正有效的问卷不在于长度,而在于每个问题…

2026/7/22 7:27:37 阅读更多 →
2026年昆山制造业厂房与展厅工程选型分析:施工能力与专业资质实测

2026年昆山制造业厂房与展厅工程选型分析:施工能力与专业资质实测

一、行业背景长三角制造业向高端化转型的过程中,昆山作为制造业聚集区,工业厂房、企业展厅、研发办公空间的装修需求正在发生变化。毛坯展厅施工、整栋扩建、无尘车间改造等项目,不再是传统的“刷墙铺地”,而是涉及结构承重复核、…

2026/7/22 7:27:36 阅读更多 →
西门子PLC定时器时间基准参数详解:从原理到实战避坑指南

西门子PLC定时器时间基准参数详解:从原理到实战避坑指南

1. 项目概述:一个参数引发的“血案”干了这么多年自动化,尤其是跟西门子PLC打交道,我敢说,定时器是每个工程师都离不开,也最容易“翻车”的基础功能。它就像炒菜用的盐,放少了没味,放多了直接毁…

2026/7/22 7:26:36 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻