微软开源 1.58bit 推理框架:千亿参数模型量化后单 CPU 可跑,速度每秒 5-7 个 token
微软发布了一款新的大规模模型推理框架!
现在,经过量化处理后,千亿参数的大型模型可以在单个CPU上运行,速度每秒可达5-7个标记。
比如,在苹果 M2新品上运行BitNet b1.58 3B模型,效果如下:
就是今年备受关注的论文 The Era of 1-bit LLMs 的官方代码实现,开源不到一周GitHub已赢得了 7.9k Star。
传统的大型模型参数以16位浮点数(如FP16或BF16)的形式进行存储,而BitNet b1.58将这些参数全部转换为三进制,即 {-1, 0, 1}。
在这里,“1.58位”的设计意味着每个参数可以用1.58位信息来表示。
转换后,矩阵计算只涉及加法,从而使大型模型在保持一定精度的同时显着减少存储空间和计算资源需求,这也大幅提高了在本地设备上运行LLM的可能性。
此项目开源后,也在X上引起了高度关注。
千亿参数模型量化后单CPU运行
bitnet.cpp是1bit LLM(如BitNet b1.58)的官方推理框架。
该框架配备一系列优化核心,支持在CPU上快速无损的1.58bit模型推理,未来将扩展支持NPU和GPU。
bitnet.cpp的首个版本主要支持CPU推理。
在性能改进方面,该框架在ARM CPU上实现了1.37至5.07倍的加速,而更大的模型将获得更显著的性能提升。
同时,它可将能耗降低55.4%至70.0%,进一步提高效率。
在x86 CPU上,加速效果介于2.37至6.17倍之间,能耗减少71.9%至82.2%。
网友们也发现在x86上性能增益要大于ARM。
此外,bitnet.cpp可使千亿参数模型量化后,单CPU运行,速度每秒可达5-7个标记,接近人类阅读速度。
微软还展示了使用 bitnet.cpp推理框架支持的各种1bit LLM。
6页论文介绍1bit LLM
1 bit LLM的实现方法,微软一年前就有了相关研究,称为BitNet(一种Transformer),使用BitLinear取代了nn.Linear。
今年二月,BitNet的团队在上一篇论文的基础上进行了优化,推出了BitNet b1.58,在原始BitNet的基础上增加了额外的0值。
接着,这篇仅有6页的论文引起了热议:
BitNet b1.58模型的权重被量化为三元值{-1, 0, 1},相当于用1.58位来表示每个权重在二进制系统中。
使用absmean量化功能来约束权重,将权重矩阵缩放到其平均绝对值范围内,然后四舍五入到最接近的整数值(-1、0或1)。
在激活量化中,激活值被缩放到[-Qb, Qb]范围内,以消除零点量化。
在架构设计方面,BitNet b1.58采用了RMSNorm、SwiGLU、旋转位置编码等组件,移除了所有偏置项。这一设计使其能够轻松集成到主流的开源框架中。
在实验中,与Llama相比,BitNet b1.58在矩阵乘法方面节省了71.4倍的计算能耗。
这种方法推出后,有许多人在这项研究基础上进行了探索。
其中一个问题是,BitNet b1.58将每个参数仅用三元值表示,但并不是每个人都有预算进行LLM的预训练。
最近,Huggingface Transformers集成了BitNet b1.58,并应用了一些技巧,使得现有模型可以直接微调为1.58bit。
有兴趣的人可以进行深入了解。
一些网友指出了这种方法的一些局限性:
总的来说,1 bit LLM有着巨大的潜力。
但如一些网友所说,1 bit LLM关键在于实践证明。
相关链接:
[1]https://github.com/microsoft/BitNet
[2]https://x.com/rohanpaul_ai/status/1847814379657462201
[3]https://x.com/rohanpaul_ai/status/1848172443258728860?s=46&t=iTysI4vQLQqCNJjSmBODPw
[4]https://huggingface.co/blog/zh/1_58_llm_extreme_quantization
本文来自微信公众号:微信公众号(ID:QbitAI),作者:西风,原标题《微软开源爆火1.58bit大模型推理框架!千亿参数模型量化后单CPU可跑,速度每秒5-7个token》
广告声明:文内包含对外跳转链接(超链接、二维码、口令等形式),旨在传达更多信息,节省筛选时间,结果仅供参考。