bitsandbytes
iaDéfinition
bitsandbytes (bnb) est une bibliotheque Python open-source developpee par Tim Dettmers (University of Washington) qui implémente des algorithmes de quantisation 8-bit (LLM.int8()) et 4-bit (NF4, FP4) pour les LLMs dans PyTorch. Elle est la fondation des techniques de QLoRA (Quantized LoRA) qui ont permis le fine-tuning de modeles 70B sur des GPU de gaming grand public. LLM.int8() (Dettmers et al., 2022) est la premiere technique de quantisation 8-bit stable pour les LLMs : au lieu de quantifier simplement tous les poids en INT8 (ce qui degrade les performances), elle detecte les 'outlier features' (dimensions qui contiennent des valeurs extremes importantes pour la precision) et les maintient en FP16, tandis que les autres dimensions sont quantifiees en INT8. Cette approche degrade les performances de < 1% sur la plupart des benchmarks. QLoRA (Dettmers et al., 2023) combine LLM.int8() avec NF4 (NormalFloat 4-bit) et LoRA pour permettre le fine-tuning de modeles 65B/70B sur un seul GPU A100 80GB. NF4 est une quantisation 4-bit optimisee pour les distributions normales typiques des poids LLM, avec un impact negligeable sur la perplexite. L'integration dans HuggingFace Transformers rend bitsandbytes accessible : charger un modele quantifie necessite juste load_in_8bit=True ou load_in_4bit=True dans from_pretrained(). Le module bnb.nn.Linear8bitLt remplace automatiquement les couches nn.Linear, transparent pour le reste du code. En production, bitsandbytes est utilise pour : (1) le fine-tuning QLoRA qui reduit par 4 la memoire GPU necessaire, (2) le serving en INT8 qui reduit la memoire de 50% vs BF16 avec une degradation < 1%, (3) le chargement de grands modeles sur des GPU de moindre capacite pour l'experimentation.
Chargement 4-bit avec bitsandbytes
import torch
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type='nf4', # NormalFloat 4-bit
bnb_4bit_use_double_quant=True, # Quantisation imbriquee (-VRAM)
bnb_4bit_compute_dtype=torch.bfloat16 # Compute en BF16
)
model = AutoModelForCausalLM.from_pretrained(
'meta-llama/Meta-Llama-3.1-70B-Instruct',
quantization_config=bnb_config,
device_map='auto'
)
# LLaMA 3.1 70B = ~140GB en BF16, ~37GB en 4-bit NF4Impact memoire des methodes bnb
| Methode | Taille 7B | Taille 70B | Degradation |
|---|---|---|---|
| BF16 (baseline) | 14 GB | 140 GB | - |
| INT8 (LLM.int8()) | 7 GB | 70 GB | <1% |
| NF4 (4-bit) | 4 GB | 37 GB | 1-2% |
| GGUF Q4_K_M | 4.7 GB | 42 GB | ~2% |
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h