Aller au contenu principal

Chapitre 2 : Optimisation de l'inférence

Quantification​

PrécisionMémoireVitesseQualité
FP32100%1xMeilleure
FP1650%2x~Meilleure
INT825%3xBonne
INT412.5%4xAcceptable
from transformers import AutoModelForCausalLM, BitsAndBytesConfig

# Quantification en 4 bits
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_quant_type="nf4",
)

model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-chat-hf",
quantization_config=quantization_config,
device_map="auto"
)

Optimisation du cache KV​

# vLLM gère automatiquement le cache KV avec PagedAttention
# Cela permet une utilisation efficace de la mémoire pour des séquences de longueur variable

# Traditionnel : Pré-allouer la longueur maximale de séquence
# PagedAttention : Allouer dynamiquement par pages

llm = LLM(
model="model-name",
max_model_len=4096,
block_size=16, # Taille de la page
gpu_memory_utilization=0.9
)

Suivant : Chapitre 3 : Gestion des coûts