Aller au contenu principal

Chapitre 2 : Quantification (INT8, INT4)

Pourquoi quantifier ?​

Réduire la mémoire et augmenter la vitesse en utilisant une précision inférieure :

PrécisionBitsMémoireQualité
FP3232100%100%
FP161650%~100%
INT8825%~99%
INT4412.5%~95-98%

GPTQ​

Quantification après entraînement optimisée pour les modèles de type GPT :

from transformers import AutoModelForCausalLM
from auto_gptq import AutoGPTQForCausalLM

model = AutoGPTQForCausalLM.from_quantized(
"TheBloke/Llama-2-7B-GPTQ",
device="cuda:0"
)

AWQ (Quantification des poids sensible à l'activation)​

Préserve les poids importants :

from awq import AutoAWQForCausalLM

model = AutoAWQForCausalLM.from_quantized(
"TheBloke/Llama-2-7B-AWQ",
fuse_layers=True
)

bitsandbytes​

Quantification à la volée :

from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.bfloat16
)
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b",
quantization_config=bnb_config
)