bitsandbytes是一个由bitsandbytes基金会维护的开源Python库,专门用于通过k位量化技术使大型语言模型更容易访问和部署。该项目是围绕CUDA自定义函数的轻量级Python包装器,特别专注于8位优化器、矩阵乘法(LLM.int8())以及8位和4位量化功能。
项目地址: https://github.com/bitsandbytes-foundation/bitsandbytes
官方文档: https://huggingface.co/docs/bitsandbytes/main
bitsandbytes.optim
模块提供各种8位优化器bitsandbytes通过量化技术显著降低模型内存占用。例如,对于10亿参数的模型,传统Adam优化器需要8GB内存用于存储优化器状态,而使用8位量化后可以大幅减少这一需求。
项目正在努力支持更多硬件后端:
bitsandbytes的4位量化技术常与QLoRA(Quantized Low-Rank Adaptation)结合使用,实现:
bitsandbytes采用块级动态量化技术,将权重矩阵分割成小块,每个块独立进行量化。这种方法在保持精度的同时实现了高效的压缩。
这是bitsandbytes的核心算法之一,专门针对大型语言模型设计的8位矩阵乘法实现,能够在保持模型性能的同时大幅减少内存使用。
对于某些关键层(如特别敏感的注意力层),库支持混合精度处理,在量化和全精度之间找到最佳平衡。
pip install bitsandbytes
import bitsandbytes as bnb
from transformers import AutoModelForCausalLM
# 加载4位量化模型
model = AutoModelForCausalLM.from_pretrained(
"model_name",
load_in_4bit=True,
device_map="auto"
)
项目由bitsandbytes基金会维护,得到了多个赞助商的支持,确保项目的持续发展和改进。
bitsandbytes是AI领域的重要工具,通过先进的量化技术使大型语言模型的部署和使用变得更加容易和经济。无论是研究人员、开发者还是企业用户,都可以通过这个库在资源受限的环境中高效地使用最先进的AI模型。其开源性质和活跃的社区支持使其成为量化技术领域的首选解决方案之一。