微软发布高效 1 位语言模型框架
微软研究院和中国科学院大学的研究人员推出了 BitNet b1.58,这是一种 1 位语言模型,有望在大幅降低成本和功耗的同时实现高性能。
1Bit 大语言模型
称为1位大型语言模型(1-bit Large Language Models、1-bit LLMs)一类将大语言模型的权重以1比特(即二进制格式)进行编码的技术,内存节省,但由于权重精度的降低,可能会对模型的性能产生一定影响,需要在压缩率和模型准确性之间进行权衡,以实现最佳效果。
BitNet 背后的团队发布了 Bitnet.cpp,这是一个适用于 1 位语言模型(如 BitNet b1.58)的新推理框架。它提供优化的内核,可在 CPU 上进行快速、无损推理。
据开发人员介绍,bitnet.cpp 在 ARM CPU 上实现了 1.37 倍至 5.07 倍的速度提升,在 x86 CPU 上实现了 2.37 倍至 6.17 倍的速度提升。能耗降低了 55.4% 至 82.2%。
Bitnet.cpp 目前支持 Hugging Face 的三个 1 位模型:
后续还有更多内容。BitNet可在 GitHub 上获取。
背景上下文
近年来,GPT-4等大规模语言模型的开发取得了重大进展,但高能耗、高内存消耗以及相关成本继续对环境和人工智能的广泛使用构成重大挑战。不过,微软研究院和中国科学院大学的马树明及其同事最近的一项研究可能为这一问题提供突破:他们提出了一种名为 BitNet b1.58 的 1 位语言模型,该模型提供与传统 16 位模型(FP16 或 BF16)类似的性能,同时显著降低了延迟、内存要求和功耗。
这些 1 位模型使用三元参数,这些参数可以取值 -1、0 和 1,并在研究中与 BitNet b1.58 一起引入,这是原始 BitNet 的演进。这里的亮点是参数不再局限于两个值 -1 和 1,还包括零,从而产生平均 1.58 位的表示,这提供了更高的建模能力,从而更好地反映了经典语言模型的性能。
研究人员表明,在 30 亿个参数的情况下,BitNet b1.58 在困惑度和任务性能方面的表现可与传统语言模型相媲美 - 处理速度提高了 2.71 倍,内存消耗降低了 3.55 倍。
据说,BitNet b1.58 的 39 亿个参数变体的性能明显优于 Meta 的 Llama 3B。
1 位模型可以继续受益于特殊硬件
这些新的 1 位模型的一个关键优势是它们在矩阵乘法中的效率,这主要需要整数相加 - 这项操作比通常的浮点运算消耗的能量少得多。研究人员认为,这些模型的节能也可以转化为更快的计算,因为许多芯片的性能受到可用能量的限制。
另一个积极的方面是内存需求的减少。由于 BitNet b1.58 使用更少的位,因此将模型参数从 DRAM 传输到片上加速器内存所需的内存量也减少了。这导致推理过程更快、更高效。
该研究还与当前模型进行了比较,结果显示具有 700 亿个参数的 BitNet b1.58 可以实现比同类LLaMA 70B模型高达 11 倍的批量大小和高达 8.9 倍的令牌吞吐量。
研究人员还指出,要充分发挥 1 位语言模型的潜力,需要开发专门用于这些模型的硬件。