bitsandbytes 量化训练与推理
bitsandbytes 提供 8-bit/4-bit 量化和 8-bit 优化器,常用于 QLoRA、低显存微调和量化推理。它与 Transformers、PEFT、Accelerate 集成紧密。
核心能力:load_in_8bit、load_in_4bit、BitsAndBytesConfig、Adam8bit、LLM.int8()。
安装:
pip install bitsandbytes
python -c "import bitsandbytes as bnb; print(bnb.__version__)"
4-bit 加载模型:
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="bfloat16",
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-7B-Instruct",
quantization_config=bnb_config,
device_map="auto",
)
8-bit 优化器:
import bitsandbytes as bnb
optimizer = bnb.optim.Adam8bit(model.parameters(), lr=1e-4)
检查 CUDA 支持:
python -m bitsandbytes
libbitsandbytes_cuda...so 找不到。device_map="auto" 与多卡训练冲突,训练应使用 Accelerate/DeepSpeed。bnb_4bit_compute_dtype 使用 fp16 可能溢出,优先 bf16。