Une génération correcte dépend du tokenizer et du template de chat autant que des poids. Utilisez un petit modèle instruct compatible avec votre machine et dont la licence autorise votre usage.
Installer
~~~bash pip install -U transformers accelerate torch safetensors ~~~
Charger
~~~python import torch from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = 'votre-modele-instruct' tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, torch_dtype='auto', device_map='auto', use_safetensors=True, ) ~~~
Appliquer le template de chat
~~~python messages = [ {'role':'system','content':'Réponds clairement en français.'}, {'role':'user','content':'Explique un index SQL en deux phrases.'}, ] inputs = tokenizer.apply_chat_template( messages, add_generation_prompt=True, return_tensors='pt', return_dict=True, ).to(model.device)
with torch.inference_mode(): output = model.generate( **inputs, max_new_tokens=180, do_sample=False, pad_token_id=tokenizer.eos_token_id, )
generated = output[0, inputs['input_ids'].shape[1]:] print(tokenizer.decode(generated, skip_special_tokens=True)) ~~~
Découper la sortie après la longueur d’entrée évite de réafficher le prompt.
Ajuster
Pour une sortie stable, commencez sans sampling. Ajoutez température et top_p seulement si la tâche bénéficie de diversité. max_new_tokens borne la sortie ; vérifiez aussi la fenêtre totale du modèle.
Mémoire
Si le modèle ne tient pas, réduisez taille, contexte ou utilisez une quantification compatible. device_map auto peut répartir les poids, mais un offload disque devient très lent.
Production
Figez commit et dépendances, chargez une fois par worker et mesurez temps au premier token, débit, VRAM et qualité. Ne rendez pas un notebook directement accessible comme API.
FAQ
Pourquoi la sortie contient-elle des balises étranges ?
Le template ou les tokens spéciaux sont probablement incorrects.
pipeline est-il préférable ?
Il simplifie un prototype ; generate donne plus de contrôle sur entrées et sortie.