--->更多内容,请移步“鲁班秘笈”!!<---
人工智能领域近年来的发展主要由大型语言模型(LLMs)驱动,这些模型能够实现从智能聊天机器人到复杂代码生成等多种应用。然而,这一进步伴随着巨大的成本。训练和运行拥有数十亿甚至数千亿参数的模型需要庞大的计算资源、大量内存空间和显著的能源消耗。这种现状不仅限制了模型的部署场景(特别是在边缘设备上),还引发了环境可持续性的担忧。为了应对这些挑战,研究人员一直在探索各种模型效率优化技术,包括剪枝(pruning)、知识蒸馏(knowledge distillation),以及最为显著的量化(quantization)技术。
BitNet b1.58 2B4T
微软最近发布的模型BitNet b1.58 2B4T代表对模型效率的极致追求。BitNet架构旨在使用极低位权重运行,将量化技术推向了高潮。先来温习一些背景知识。
传统的深度学习模型通常使用32位(FP32)或16位(FP16或BF16)浮点数来存储参数(权重)并执行计算。这些格式提供了高精度,使模型能够捕捉数据中的细微差别。但是却是通过内存和计算强度为代价换取。
量化技术通过减少单个参数的位数来表示来减少成本。例如INT8量化中,每个参数使用8位整数。与FP32相比,这显著减少了4倍的内存使用,并且可以加速计算,特别是在具有专用INT8支持的硬件(如现代GPU和CPU)上。更低位量化(例如INT4、INT2等)进一步降低精度虽然理论上可以提供更大的效率增益,但历来伴随着性能严重下降的风险。
量化的理论极限是1位,即权重仅限于两个值(例如,+1和-1)。这就是二进制神经网络(Binary Neural Networks, BNNs)的领域。训练稳定且准确的BNNs,特别是在LLMs的规模上已被证明是极其困难的。在训练过程中将权重直接量化为仅+1/-1可能会阻碍学习过程,通常导致与全精度对应模型相比质量大幅下降。
BitNet的核心理念(源自微软研究院)是通过采用1位权重表示方式来大幅降低LLMs的计算成本。如果权重是二进制的(+1/-1),Transformer中最计算密集的操作——矩阵乘法——可以在很大程度上被简单的加法和减法替代。虽然原始BitNet概念可能旨在实现纯1位权重,但"b1.58"表明采用了一种特定的、略有不同的量化方案。这个数字对应于1.58位表示,这在数学上源于使用三值权重。与仅有两个值(+1,-1)不同,三值量化允许权重为三个值之一:+1、0或-1。
为什么选择三值?
第一引入稀疏性:将权重表示为'0'的能力使模型能够有效地"关闭"某些连接,比纯二进制网络(其中每个连接必须是正值或负值)更容易训练。
第二,改进表示能力(相比1位):虽然精度仍然极低,但具有三种可能状态(+1、0、-1)比仅有两种(+1、-1)提供了稍微更多的灵活性。这种小的增加可能对维持复杂语言任务的性能至关重要。
第三保持效率,与二进制权重一样,三值权重仍然允许矩阵乘法主要由加法/减法组成(乘以+1、-1或0是简单的)。与FP16相比,核心效率优势在很大程度上保持不变。
"1.58位"来自信息理论计算:log₂(3)≈1.58。每个参数需要约1.58位信息来存储其状态(+1、0或-1)。实现将Transformer架构中的标准nn.Linear层替换为自定义BitLinear层,该层在前向和后向传递中对其权重强制执行这种三值约束(使用直通估计器(Straight-Through Estimator)等技术来处理梯度通过不可微分的量化步骤)。
BitNet有2B个参数,属于小模型,与Phi-2、Gemma 2B或Llama的较小版本相媲美。如果BitNet模型确实能在关键基准测试上匹配Llama 2 7B或13B( FP16)模型的性能,这代表着效率方面的巨大飞跃。意味着可以实现相似的语言理解和推理能力,同时参数减少约3-6倍,权重内存占用减少约10倍,在兼容硬件上显著更快的推理延迟。
BitNet是在惊人的4T个Token上进行了训练。这是一个巨大的数据集规模,可与目前一些最大的基础模型所使用的训练数据相媲美甚至超过。这样一来可以弥补低精度。且能够提供更强、更一致的梯度,并帮助模型收敛到一个小数据集可能无法达到的有效状态。
有趣的是微软在探索通过将数据维度推向极限,在高度高效的架构内可实现的能力极限。这种思维代表着严格限制模型参数,但提供几乎无限的数据来学习。
模型效率
围绕BitNet b1.58的核心主张集中在效率和比较性能上。评估主要关注在MMLU(一般知识)、HellaSwag(常识推理)、ARC(推理挑战)和可能的GSM8K(数学应用题)等基准上的表现将与成熟的FP16模型(如Llama 2 7B/13B、Mistral 7B)进行比较。
根据微软提供的数据,BitNet b1.58在多项测试中表现出色。使用GGUFs(在bitnet.cpp中)的场景中:
-
测试内存使用:模型权重仅占用0.4GB(不包括嵌入)比同类大小的模型降低了3.5-12倍内存使用
-
测试CPU解码延迟:每个词元29毫秒,超越所有基准模型(包括LLaMA 3.1B、Gemma 2B等)
-
测试能源效率:每个Token0.028焦耳,比Gemma 3 1B模型低6倍
这些基准测试表明,BitNet b1.58确实能够在保持竞争性能的同时提供显著的效率提升。
上图展示了bitnet.cpp在苹果和英特尔芯片上面的运行情况,它是1位LLM的官方推理框架(BitNetb1.58)。它提供了一套优化的内核,支持在CPU上对1.58位模型进行快速无损的推理。
bitnet.cpp在ARMCPU上实现了1.37倍到 5.07倍的加速,更大的模型性能提升更大。此外它还将能耗降低了55.4% 至70.0%,进一步提高了整体效率。在x86CPU上面的加速范围为2.37倍到6.17倍,能耗降低在 71.9% 到 82.2% 之间。
bitnet.cpp可以在单个CPU上运行100BBitNetb1.58模型,实现与人类读取相当的速度(每秒5-7个令牌),显著增强了在本地设备上运行LLM潜力。
量化未来
BitNet b1.58不仅是一种软件创新,它还具有深远的硬件影响。它从浮点乘法转向加法使BitNet模型在CPU上可能比传统LLMs快得多,而后者严重依赖GPU加速进行矩阵运算。
低内存和能源占用使BitNet b1.58等模型成为在智能手机、笔记本电脑、传感器和嵌入式系统等边缘设备上部署的主要候选者,无需持续云连接即可实现强大的AI能力。
该架构非常适合在专为位操作设计的定制硬件(ASIC或FPGA)上实现。此类硬件可能比当前通用硬件解锁数量级的速度和能源效率提升。
虽然如此但仍有几个问题:虽然基准测试提供了定量测量,但与高精度模型相比,生成质量的细节方面(一致性、创造性、避免重复)需要彻底评估。BitNet模型对特定下游任务的微调与标准FP16模型相比,三值约束可能使微调过程更为复杂。
虽然进一步测试和评估是必不可少的,但BitNet b1.58 2B4T从根本上重塑LLM格局的想法的具体、大规模实现,为更高效、更易获取和更可持续的AI未来铺平道路。