近期,微软的科研团队自豪地宣布,他们已成功研发出一款前所未有的原生1-bit人工智能巨擘——BitNet b1.58 2B4T。这款模型以其精简至0.4GB(即约409.6MB)的内存占用,却能在包括苹果M2芯片在内的多种CPU上流畅运行,令人瞩目。据评估,BitNet b1.58 2B4T在执行各类任务时,其表现与同等规模的开源全精度大语言模型难分伯仲,而在计算效率上更是独占鳌头,实现了内存占用、能耗以及解码延迟的大幅缩减。 值得一提的是,这款模型现已全面开源,遵循MIT许可协议,向公众敞开怀抱。在Hugging Face平台上,微软贴心地提供了BitNet b1.58 2B4T的多样化模型权重版本,涵盖了压缩至1.58 bit的高效权重、BF16格式的核心权重,以及GGUF格式的模型权重,以供用户按需选择。 网友们对这款模型的反响热烈,纷纷发表见解。“若它真能与全精度模型性能比肩,那简直是个奇迹!”一位网友感叹道。另一位则赞誉道:“BitNet b1.58 2B4T的问世,无疑是大型语言模型(LLM)发展历程中的一个璀璨里程碑,其卓越的性能与效率,令人叹为观止。


值得一提的是,BitNetb1.58 2B4T 成果背后这支来自 Microsoft Research 的技术团队,全员都是中国人。

据了解,论文一作马树铭(Shuming Ma)是北京大学电子工程与计算机科学学院(EECS)的一名硕士研究生,目前处于研三阶段,从事自然语言处理和机器学习方面的研究工作。二作王鸿钰(Hongyu Wang)是中国科学院 (CAS) 的三年级博士生,2021 年 8 月至今在微软亚洲研究院 GenAI 团队担任研究实习生, 在韦福如(Furu Wei )和马树铭的指导下开展工作。

韦福如现任微软杰出科学家,领导团队从事基础模型、自然语言处理、语音处理和多模态人工智能等领域的研究。近年来,他还致力于领导和推进通用型人工智能的基础研究和创新。韦博士还担任西安交通大学和中国科技大学兼职博士生导师,香港中文大学教育部 – 微软重点实验室联合主任。此前,他分别于 2004 年和 2009 年获得武汉大学学士学位和博士学位。
1 性能与同等参数模型相当,速度甚至是其两倍
BitNet b1.58 2B4T,一款拥有20亿参数(这些“参数”可视为“权重”的另一种表述)的开创性BitNet模型,其在浩瀚的数据海洋中遨游——一个包含了4万亿个token的数据集,这一数字大致相当于将3300万册书籍的内容融入其中。经过这番洗礼,BitNet b1.58 2B4T在语言理解、数学逻辑、编程技巧及对话交互等多个维度接受了严苛的基准测试考验,其性能与同类规模模型旗鼓相当,并且在效率上实现了质的飞跃。 值得注意的是,BitNet b1.58 2B4T并未能在所有对决中全面碾压其他20亿参数的竞争对手,但其展现的实力确实令人瞩目。研究团队的测试揭示,该模型在ARC-Challenge、OpenbookQA、BoolQ、GSM8K(专注于小学难度数学问题的题库)以及PIQA(旨在衡量物理常识推理能力的测试)等一系列高标准基准测试中,成功超越了Meta的Llama 3.2 1B、谷歌的Gemma 3 1B以及阿里巴巴的Qwen 2.5 1.5B,展现出了非凡的竞争力。

图:BitNet b1.58 2B4T 与类似尺寸(1B-2B 参数)的领先开放权重全精度 LLM 在各种基准测试中的效率指标和性能的比较
更令人印象深刻的是,BitNet b1.58 2B4T 的运行速度比其他同等规模的模型更快,在某些情况下的速度甚至能达到其他模型的数倍,同时内存占用却只是后者的一小部分。BitNet b1.58 2B4T 的内存大小仅为 0.4GB,CPU 推理延迟是 29ms;而其他同等规模的模型需要 1.4-4.8GB,CPU 推理延迟在 41ms-124ms。

从微软在技术报告中放出的对比图可以看到,BitNet b1.58 2B4T 在性能上几乎与 Qwen 2.5 1.5B 相当,但内存大小仅为后者的 1/6,速度提高了 2 倍。并且,其性能优于需 2GB 内存的 Llama 3.2 1B 模型,且 BitNet b1.58 2B4T 处理 token 的速度还要快 40%。

此外,具有 1000 亿(100B)参数的 BitNet b1.58 模型可以在单个 CPU 上运行,速度可与人类阅读速度相媲美(每秒处理 5-7 个 token),这一结果极大地增强了在本地设备上运行 LLM 的可能性在 Github 上,微软还放出了在苹果 M2 上运行 BitNet b1.58 3B 模型的演示视频:
据介绍,Bitnet 本质上是专为在轻量级硬件上运行而设计的压缩模型。微软表示,在 BitNet 和 BitNet b1.58 上取得的这一新进展,为在速度和能耗方面提高大语言模型(LLM)的效率提供了一种可行的方法,还使得 LLM 能够在广泛的各类设备上进行本地部署。
2 技术架构的核心创新
微软在其详尽的技术文献中揭晓,BitNet b1.58 2B4T 是从一张白纸跃然而出的创新之作,其架构根植于标准的Transformer模型,但融入了BitNet框架所带来的深度变革。这项技术的核心闪光点,在于对传统全精度线性层(即torch.nn.Linear)的颠覆性替换,采用了定制的BitLinear层作为替代。 在以往,大型模型往往依赖于32位或16位的浮点数来承载其繁重的权重,而BitNet b1.58 2B4T则打破了这一常规,将权重压缩至令人惊叹的1.58位。这一壮举是通过运用绝对平均值(absmean)量化策略实现的,它巧妙地将权重量化为三个基本元素:-1、0和1。这种简化不仅极大地缩减了模型的体积,还促进了数学运算的高效执行。然而,三元权重的存储面临着前所未有的挑战,因为传统的数据类型难以胜任这一重任。为此,微软开创性地采取了将多个权重值捆绑成一个8位整数的方案,并巧妙地将其安置在高带宽内存(HBM)的怀抱中。这一策略,即绝对最大(absmax)量化策略,针对每个token进行了细致入微的应用。 从理论的高度来看,BitNet b1.58 2B4T的效率远超当今市面上的众多模型。在标准的模型中,权重(那些定义了模型内在结构的神秘数字)通常会经历量化的洗礼,从而使得模型能够在各式各样的机器上展现出卓越的适应性。而权重的量化,实质上是对表示这些权重所需的比特数(比特,这个计算机世界的最小货币)进行削减,进而使得模型能够在内存资源有限的芯片上疾驰。 尤为值得一提的是,BitNet b1.58 2B4T并非是在训练之后才被赋予这种量化方案的,而是从一开始就与之紧密相连,共同成长。除了其标志性的BitLinear层外,该模型还吸纳了诸如激活函数(FFN)、位置嵌入以及偏差消除等一系列已得到广泛认可的大型语言模型(LLM)技术,以此来夯实其性能和稳定性。 在训练的征途中,BitNet b1.58 2B4T经历了三个截然不同的阶段:首先是浩如烟海的大规模预训练,随后是细致入微的监督微调(SFT),最后是直接偏好优化(DPO)。在预训练阶段,它采用了两阶段的学习率和权重衰减计划,在公开的文本、代码数据以及精心合成的数学数据上进行了艰苦卓绝的训练。而在监督微调(SFT)阶段,它则借助损失求和聚合的方法以及一系列精心调配的超参数,在指令遵循和对话相关的数据集上进行了精细的调整。最终,在直接偏好优化的过程中,它更是借助偏好数据的力量,不断地优化自身,以使其更符合人类在有用性和安全性方面的期待。
3 背后是微软定制框架,硬件兼容性可能受阻
微软称,要使 BitNet b1.58 2B4T 模型实现技术报告中所展示的效率优势,必须使用专门的 C++ 实现方案,即 bitnet.cpp。当前商用 GPU 架构在设计上并未针对 1 bit 模型进行优化,itnet.cpp 提供经过优化的内核,可以确保此模型能够在缺少强大 GPU 加持的设备(如边缘设备、笔记本电脑、标准服务器等)上部署以实现广泛可及。
据介绍,bitnet.cpp 是一个微软专门定制的用于 1-bit LLM 的推理框架,基于 llama.cpp 框架,旨在在优化速度和能耗的同时释放 1-bit LLM 的全部潜力。具体来说,他们在 T-MAC 中开创的 Lookup Table 方法之上开发了一套内核,支持在 CPU 上对 BitNet b1.58 这种三权重值的 LLM 进行快速且无损失地推理。对于三权重值之外的一般低 bit LLM,微软则建议使用 T-MAC 来做推理。
在公开披露的技术报告中,微软从推理速度和能耗两个方面对 bitnet.cpp 进行了评估,并针对参数大小从 125M 到 100B 的各类模型展开了全面测试。微软还分别在 ARM 和 x86 架构上进行了系统测试,在 ARM 这边,选择搭载有苹果 M2 Ultra 处理器及 64 GB 内存的 Mac Studio 进行了三轮端到端测试;在 x86 这边,使用的则是搭载英特尔酷睿 i7-13700H 处理器(14 核,20 线程)加 64 GB 内存的 Surface Laptop Studio 2。
此外,微软分别在两台设备上测试了两种场景:其一是将推理限制在两个线程之内,其二则不设线程限制,以求得出最佳推理速度。据悉,此举旨在考虑本地设备上的可用线程数量有限这一现实情况,希望更准确地评估 BitNet b1.58 在本地环境中的性能表现。

图:使用 llama.cpp (fp16)与 bitnet.cpp 在 Apple M2 Ultra (ARM CPU) 上、各种 BitNet b1.58 模型大小的推理速度和能耗比较
结果显示,bitnet.cpp 在 ARM CPU (苹果 M2)上实现了 1.37 倍到 5.07 倍的显著提速效果,将能耗降低了 55.4% 到 70.0%,进一步提高了整体效率。在 x86 CPU (英特尔 i7-13700H)上的提速范围为 2.37 倍到 6.17 倍,能耗降低在 71.9% 到 82.2% 之间。
并且,bitnet.cpp 在 ARM 与 x86 CPU 上的性能均显著优于 llama.cpp,且优势随模型规模增长进一步提升,速度从 1.37 倍到 6.46 倍不等,具体视模型与架构而定。在苹果 M2 且线程数量不受限的情况下,速度比峰值可达到 5.07 倍;而在英特尔 i7-13700H 且线程受限的情况下,bitnet.cpp 的速度比最高可达 6.46 倍,意味着其在资源受限的本地系统推理运行中特别有效。

图:在无限线程和线程受限设置中不同 CPU 的推理速度比较
除了性能差异之外,带宽限制在不同架构的 bitnet.cpp 的不同功效中起着重要作用,尤其是在比较 苹果 M2 和 Intel i7-13700H 时。由于 苹果 M2 的带宽更大,与 Intel i7-13700H 相比,bitnet.cpp 的速度提升明显更快,尤其是在运行大体量模型时。
在对比能耗成本时,微软分别运行了参数为 700M、7B 和 70B 的模型。在苹果 M2 上,随着模型体量的增加,bitnet.cpp 的能效提升亦更加显著。这凸显了 bitnet.cpp 在速度和能源使用方面更高效地部署大规模推理的能力,这对于移动设备或边缘计算等能源受限的环境至关重要。在英特尔 i7-13700H 芯片上,使用 bitnet.cpp 的节能效果更为显著。虽然目前尚无 70B 模型在该英特尔 CPU 上运行的直接能耗数量,但对较小模型进行测试的结果清晰表明,bitnet.cpp 能够显著降低大语言模型在高性能多核心处理器上执行推理时的能耗需求。

图:不同 CPU 之间的能耗成本比较(单位:焦 /token),“N/A”代表测试的 CPU 无法使用给定核心运行指定大小的模型
为了评估推理准确性,微软从 WildChat 中随机选取了 1000 条提示词,使用到 700M BitNet b15.8 模型,并将 bitnet.cpp 及 llama.cpp 生成的输出与 FP32 内核生成的输出进行了比较。评估工作是逐个 token 进行的,每个模型输出最多 100 个 token,且仅在推理样本与全精度输出完全匹配时方认定该样本为无损。结果证实,bitnet.cpp 能够对 1-bit LLM 实现准确、无损的推理。

图:llama.cpp 与 bitnet.cpp 之间的推理准确率对比
然而,需要一提的是,bitnet.cpp 框架目前只能在特定的硬件上运行。在其支持的芯片列表中,并不包括在 AI 基础设施领域占据主导地位的图形处理器(GPU)。也就是说,BitNet 或许前景可期,特别是对于资源受限的设备来说,但硬件兼容性可能仍然会是一个很大的发展阻碍因素。
不过,微软在技术报告中表示,他们已在对 bitnet.cpp 进行扩展,以支持更广泛的平台和设备,其中包括移动设备(如苹果手机和安卓设备)、神经网络处理器(NPU)以及图形处理器(GPU)。未来,微软还将致力于 1-bit LLM 的训练优化工作以及定制化硬件和软件栈的协同设计。
4 结语
BitNet b1.58 2B4T 代表一项令人信服的概念验证,对在大规模大语言模型(LLM)中实现高性能必须依赖全精度权重这一观点提出了挑战,为在资源受限环境中部署强大语言模型开辟了新的道路,解决了原有模型在此类环境中难以实现的问题,有望推动先进 AI 进一步实现大众化普及。
微软表示,除了当前的性能结果,BitNet b1.58 2B4T 还展现出以下几个令人兴奋的研究方向,包括研究原生 1 bit 大模型的缩放特性、扩展序列长度、多语言能力、多模态架构集成等。
原文链接:https://zhuanlan.zhihu.com/p/1896305018975527834