近年来,大语言模型(LLM)的参数规模和能力快速增长,其在自然语言处理任务中的卓越表现,让人惊艳。然而,这也带来了部署挑战,以及高能耗引发的环境和经济影响。因此,研究人员一直在寻找解决方案,以降低大模型在推理过程中的内存和计算需求。
近日,由微软亚洲研究院、中国科学院大学等机构的研究人员提交的一篇论文在AI圈引起广泛关注。他们提出了一种1-bit大模型,实现效果让人震惊。如果这种方法可以广泛应用,这可能是生成式AI的新时代。
在过去的几年里,大语言模型的参数规模和能力快速增长,表现出了卓越的性能,同时也带来挑战。为了降低大模型在推理过程中的内存和计算需求,研究人员提出使用后训练(post-training)量化技术来创建低bit推理模型。这类技术可以降低权重和激活函数的精度,从16 bits转向更低的bit,比如4 bits。然而,尽管这类量化技术在LLM中广泛使用,但并不是最优的。
微软亚洲研究院、国科大等机构的研究人员提出了BitNet,这是一种支持训练1-bit大语言模型的新型网络结构。BitNet具有强大的可扩展性和稳定性,能够显著减少大语言模型的训练和推理成本。与最先进的8-bit量化方法和全精度Transformer基线相比,BitNet在大幅降低内存占用和计算能耗的同时,表现出了极具竞争力的性能。
更让人振奋的是,BitNet的研究团队最近推出了BitNet b1.58,这是一种重要的1-bit变体。在原来的1-bit基础上,他们添加了一个附加值0,得到二进制系统中的1.58 bits。BitNet b1.58继承了原始1-bit BitNet的所有优点,包括新的计算范式,使得矩阵乘法几乎不需要乘法运算,并可以进行高度优化。同时,BitNet b1.58具有与原始1-bit BitNet相同的能耗,相较于FP16 LLM基线在内存消耗、吞吐量和延迟方面更加高效。
BitNet b1.58的建模能力更强,这是由于它明确支持了特征过滤,在模型权重中包含了0值,显著提升了1-bit LLM的性能。实验结果表明,当使用相同配置(比如模型大小、训练token数)时,从3B参数规模开始,BitNet b1.58在困惑度和最终任务的性能方面媲美全精度(FP16)基线方法。
如下图所示,BitNet b1.58为降低LLM推理成本(延迟、吞吐量和能耗)并保持模型性能提供了一个帕累托(Pareto)解决方案。
BitNet b1.58是基于BitNet架构,并且用BitLinear替代nn.Linear的Transformer。它是从头开始训练的,具有1.58 bit权重和8 bit激活。与原始BitNet架构相比,它引入了一些修改。用于激活的量化函数与BitNet中的实现相同,只是该研究没有将非线性函数之前的激活缩放到[0, Q_b]范围。相反,每个token的激活范围为[-Q_b, Q_b],从而消除零点量化。这样做对于实现和系统级优化更加方便和简单,同时对实验中的性能产生的影响可以忽略不计。
与LLaMA类似的组件。LLaMA架构已成为开源大语言模型的基本标准。为了拥抱开源社区,该研究设计的BitNet b1.58采用了类似LLaMA的组件。具体来说,它使用了RMSNorm、SwiGLU、旋转嵌入,并且移除了所有偏置。通过这种方式,BitNet b1.58可以很容易的集成到流行的开源软件中(例如,Huggingface、vLLM和llama.cpp2)。