bitsandbytes是一个开源Python库,提供轻量级封装,用于在图形处理单元(GPU)上以降低数值精度的方式量化和运行机器学习模型。它实现了高效的内存使用和更快的计算,适用于深度学习工作负载,特别是大型语言模型的训练、微调和推理。该库在人工智能生态系统中被广泛采用,通常与Hugging Face Transformers和PyTorch等流行框架集成。
该项目源于对8位优化器和量化技术的研究,由当时在华盛顿大学的研究员Tim Dettmers于2021年首次发布。它作为在消费级硬件上运行大型模型的实用工具而声名鹊起,通过以较低精度格式(如8位整数(int8)和4位浮点数(nf4))表示权重和激活,减少了GPU内存需求。
核心功能
bitsandbytes提供了几个关键组件。其8位优化器,包括Adam和SGD变体,在训练期间减少了优化器状态内存。该库还提供量化函数,将模型权重从32位浮点数(fp32)转换为8位或4位格式,并支持反量化以进行计算。一个显著的特性是LLM.int8()方法,它通过使用混合精度分解,使大型模型(如基于Transformer的架构)的推理性能下降最小:异常特征以fp16处理,而大多数矩阵乘法使用int8。
对于4位量化,bitsandbytes实现了NormalFloat(NF4)数据类型,专为正常分布的权重设计,并支持QLoRA(量化低秩适配),这是一种在单个GPU上微调大型模型的技术。QLoRA将4位基础模型量化与低秩适配器相结合,实现了高效的参数高效微调。
集成与使用
该库与PyTorch无缝集成,只需最少的代码更改。用户可以通过transformers库传递load_in_8bit=True或load_in_4bit=True来加载8位或4位精度的模型。它还支持CPU卸载,通过将层传输到系统RAM,使大于GPU内存的模型能够运行。bitsandbytes兼容计算能力7.5或更高的NVIDIA GPU(例如,Turing、Ampere、Ada Lovelace架构)。
截至2024年,该库支持一系列硬件,包括通过ROCm支持最近的AMD GPU,并已在实验版本中通过Metal Performance Shaders在Apple硅芯片上进行了测试。它也被用于云环境,如亚马逊网络服务、Azure和谷歌云,这些环境中GPU实例很常见。
对模型部署的影响
bitsandbytes降低了运行大型模型的门槛。例如,一个700亿参数的模型在fp16下需要超过140 GB内存,而以4位精度加载仅需约35 GB,可适配单个高端GPU(如NVIDIA A100或RTX 4090)。这一能力使研究人员和爱好者无需访问大型集群即可实验最先进的模型。
该库是开源AI社区的基石,GitHub上有数千个项目依赖它。它已被众多学术论文引用,包括QLoRA论文(2023年),该论文展示了在单个48 GB GPU上微调650亿参数模型。
开发与社区
bitsandbytes由一个小型贡献者团队维护,Tim Dettmers是主要作者。它根据MIT许可证发布,允许免费商业和学术使用。该项目的开发得到社区贡献的支持,并经常更新以支持新的GPU架构和量化方法。截至2025年,该库在GitHub上拥有超过10,000颗星,是许多生成式AI流水线中的标准工具。
局限性与注意事项
虽然量化减少了内存,但可能会引入轻微精度损失,特别是对于非常大的模型或需要高数值精度的任务。该库的性能取决于GPU支持;没有张量核心支持的旧GPU可能会看到较慢的速度。此外,某些操作,如某些注意力机制,在量化模式下可能未完全优化,需要回退到更高精度。
尽管存在这些局限性,bitsandbytes仍然是高效AI的关键基础设施组件,补充了剪枝和蒸馏等其他优化技术。其持续演进反映了使神经网络模型更易访问和更可持续的更广泛趋势。