Descriere & Utilizare
Un model de 8 miliarde de parametri (precum Llama 3.1 8B) are nevoie de ~16 GB VRAM în format FP16, depășind capacitatea multor plăci video consumer sau a instanțelor gratuite Google Colab T4.
Biblioteca bitsandbytes integrată prin BitsAndBytesConfig permite încărcarea modelului pe 4 biți (reducând memoria necesară la doar ~5.5 GB VRAM!).
Secretul păstrării calității constă în trei opțiuni: bnb_4bit_quant_type='nf4' (NormalFloat4 – un tip de date optimizat informațional pentru distribuția gaussiană a greutăților neuronale), bnb_4bit_use_double_quant=True (cuantizează și constantele de cuantizare, economisind încă ~0.4 biți per parametru) și bnb_4bit_compute_dtype=torch.bfloat16 (face înmulțirile matriciale rapide în 16 biți).
Cum să o reții ușor
💡 Ca arhivarea unei colecții de filme 4K în format HEVC de înaltă eficiență: fișierele ocupă un sfert din spațiul de pe hard disk (4-bit), iar când apeși Play sunt dezarhivate din mers pe ecran (`compute_dtype=bfloat16`) la o calitate aproape identică.
Opțiuni și parametri tehnici
- Interceptează încărcarea straturilor
torch.nn.Linearși le înlocuiește cu straturiLinear4bit. - Stochează greutățile înghețate în VRAM pe 4 biți.
- În timpul pasului de inferență (forward pass), de-cuantizează blocul curent în
bfloat16pentru calculul CUDA.
Exemple practice și cazuri de utilizare
- Cuantizare simplă pe 8 biți (aproape zero pierdere de precizie):
bnb_8bit = BitsAndBytesConfig(load_in_8bit=True) - Bază pentru antrenare QLoRA:
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-3.1-8B', quantization_config=bnb_config, device_map='auto')
Sfaturi de configurare & capcane
Nu uita să setezi bnb_4bit_compute_dtype=torch.bfloat16 (sau float16). Dacă îl omiți, calculele se vor face implicit în float32, iar viteza de generare va fi de 2-3 ori mai mică!
Comenzi și ghiduri înrudite
peft-lora-qlora: Resursă asociată din acest modul.automodel-causal-lm: Resursă asociată din acest modul.accelerate-library: Resursă asociată din acest modul.