BitsAndBytesConfig (cuantizare 4-bit NF4 și 8-bit) în Hugging Face Hub & Transformers

Optimizare Hardware & Stocare Transformers 5.x / bitsandbytes 0.50 (octombrie 2026)

Încarcă modelele cu greutăți pe 8 sau 4 biți prin bitsandbytes, ca să ocupe mult mai puțină memorie; baza pentru antrenarea QLoRA.

Sintaxă & invocare Python
import torch
from transformers import BitsAndBytesConfig, AutoModelForCausalLM

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype="auto", quantization_config=bnb_config)

Ce face BitsAndBytesConfig (cuantizare 4-bit NF4 și 8-bit)

Biblioteca bitsandbytes înlocuiește straturile liniare PyTorch cu variante cuantizate (Linear8bitLt, Linear4bit). Oferă două metode principale: LLM.int8(), pe 8 biți, care păstrează precizie mai mare pentru calculele sensibile, și cuantizarea pe 4 biți folosită de QLoRA, la care se antrenează doar adaptoare LoRA mici peste modelul cuantizat.

Pentru 4 biți contează trei opțiuni: bnb_4bit_quant_type="nf4" (tipul NormalFloat4 din lucrarea QLoRA, recomandat pentru antrenare), bnb_4bit_use_double_quant=True (cuantizare imbricată, care economisește încă 0,4 biți pe parametru fără cost de performanță) și bnb_4bit_compute_dtype (tipul folosit la calcule; implicit float32, iar bf16 grăbește calculul).

Cerințe hardware din documentație: pe GPU-uri NVIDIA, LLM.int8() cere arhitectura Turing (RTX 20xx, T4) sau mai nouă, iar NF4/FP4 Pascal sau mai nouă. Biblioteca suportă și Intel XPU, Intel Gaudi și CPU.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
load_in_8bit=True Cuantizare LLM.int8().
load_in_4bit=True Cuantizare pe 4 biți.
bnb_4bit_quant_type "nf4" sau "fp4".
bnb_4bit_compute_dtype Tipul de calcul; implicit float32, recomandat torch.bfloat16.
bnb_4bit_use_double_quant=True Cuantizare imbricată: încă 0,4 biți / parametru economisiți.

Exemple practice

Exemplul 1: Cuantizare pe 8 biți

bnb_8bit = BitsAndBytesConfig(load_in_8bit=True)

Exemplul 2: Tipul de calcul schimbat în bf16

quantization_config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.bfloat16)

Exemplul 3: Bază pentru QLoRA

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B", quantization_config=bnb_config, device_map="auto")

Exemplul 4: Instalare

pip install --upgrade transformers accelerate bitsandbytes

Greșeli frecvente și bune practici

  • Lași bnb_4bit_compute_dtype la valoarea implicită (float32). Documentația recomandă bf16 pentru calcul mai rapid.
  • Folosești LLM.int8() pe GPU-uri mai vechi decât Turing. Verifică tabelul de compatibilitate hardware.
  • Antrenezi direct greutățile cuantizate. Pentru antrenare adaugi adaptoare LoRA cu PEFT (QLoRA).

Comenzi înrudite