bitsandbytes
让大模型在消费级显卡上跑得动的量化计算库,QLoRA / LLM.int8() / 8位优化器的开源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大模型在消费级显卡上跑得动的量化计算库,QLoRA / LLM.int8() / 8位优化器的开源
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你有一台配置不错的游戏电脑,但显存只有 6GB,想跑一个 70 亿参数的中文大模型,该怎么办?传统的解决方案是「要么买更贵的显卡,要么就别玩了」。但 bitsandbytes 这个开源项目,改变了这个局面——它让大模型在有限的硬件上也能跑得动,甚至还能训练。
自 2020 年 GPT-3 以来,大语言模型(LLM)参数规模呈指数级增长。GPT-3 有 1750 亿参数,即使以 FP16 半精度存储也需要约 350GB 显存。而消费级最强显卡 RTX 4090 只有 24GB 显存,服务器级 A100 80GB 也「装不下」一个 GPT-3。
这种「内存焦虑」催生了模型量化技术。简单类比:如果把模型权重从「高清照片」(32 位浮点)压缩成「低分辨率截图」(8 位整数),内存占用直接降为原来的 1/4,且精度损失可控。bitsandbytes 正是这个领域的标杆实现。
bitsandbytes 由华盛顿大学 Tim Dettmers 博士主导开发,核心论文包括:
2023 年 HuggingFace 收购 bitsandbytes 团队,项目正式移交 bitsandbytes-foundation 维护,获得了持续的资金和人力保障。
传统的 Adam 优化器在训练大模型时占用巨大显存——优化器状态通常比模型参数本身还大 2-4 倍。bitsandbytes 将优化器状态分块量化到 8 位,在梯度计算时动态反量化,保持 32 位精度更新,最终效果与全精度优化器相当,内存占用降至 1/4。
典型应用:训练 70 亿参数模型,显存需求从约 48GB 降至约 24GB,使得单卡 A100(80GB)即可完成训练。
将大模型权重和激活值量化到 8 位,配合向量级(vector-wise)量化策略,将矩阵乘法效率提升 2 倍。关键创新是「异常值感知」:对少数数值异常的特征向量单独保留 16 位精度,其余量化到 8 位,避免异常值被压缩导致精度崩溃。
典型应用:在 6GB 显存的 RTX 2060 上运行 60 亿参数模型的 INT8 推理,吞吐量是 FP16 的 2 倍。
QLoRA 是 bitsandbytes 对开源生态最重要的贡献之一。它将模型权重量化到 4 位,插入可训练的低秩适配器(LoRA),通过少量参数微调实现接近全量微调的效果。配合 DeepSpeed ZeRO-3 和 FSDP,可实现在单张消费级显卡上微调 650 亿参数模型。
这一技术直接引爆了 2023 年的开源微调热潮,Llama 2、Qwen、ChatGLM 等模型的高效微调方案几乎全部基于 QLoRA。
bitsandbytes 采用多后端解耦设计,核心模块包括:
bitsandbytes.nn:量化神经网络层(Linear8bitLt、Linear4bit)bitsandbytes.autograd:量化矩阵乘法的反向传播实现bitsandbytes.optim:8 位优化器(Adam8bit、Lion8bit 等)bitsandbytes.backends:多硬件后端支持(CUDA、ROCm、IPEX、Intel XPU、Intel HPU、Apple MPS、CPU)bitsandbytes.functional:底层量化函数(分块量化、NF4 格式)这种架构使得同一套 API 可以透明地运行在 NVIDIA GPU、AMD GPU、Intel GPU、Apple M 系列芯片和 CPU 上。
bitsandbytes 已被主流 AI 框架深度集成,开发者无需直接调用 bitsandbytes API:
BitsAndBytesConfig 一行配置启用 4-bit/8-bit 量化这种「隐形基础设施」定位是 bitsandbytes 成功的关键——开发者感知到的只是一个配置参数,底层由 bitsandbytes 提供算力。
pip install bitsandbytes
或从源码编译(需要 CUDA Toolkit):
pip install bitsandbytes --index-url https://github.com/bitsandbytes-foundation/bitsandbytes/releases/download/cuda-12.2/
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
quantization_config=bnb_config,
device_map="auto"
)
7B 模型从 14GB 显存降至约 4GB,7B+TG(ChatGLM3-6B)也能轻松跑在 6GB 显卡上。
bitsandbytes 是大模型民主化的重要推手之一。它的贡献远不止技术本身——QLoRA 论文催生了数千个开源微调模型,让资源有限的个人开发者和中小企业也能参与大模型竞赛。
从 GitHub 趋势看,bitsandbytes 与 PyTorch、transformers、PEFT 形成强依赖链,被 thousands of downstream 项目引用。它不仅是一个库,更成为了 LLM 工程实践的标准组件。
项目信息

图1:bitsandbytes 官方组织 Logo