Tutoriel

Statut éditorial : En attente de relecture

Utiliser un modèle de génération de texte en local avec Transformers

Charger un modèle causal, appliquer son template de chat et maîtriser mémoire, longueur et paramètres de génération.

Classification du contenu

Types

  • Modèles et API
  • Outils
Niveau
Intermédiaire
Publié le
11 août 2026
Dernière relecture
Relecture en attente
Prochaine vérification
11 novembre 2026

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.

Sources utilisées