Fine-tuning LoRA

Faites le fine-tuning d'un LLM à poids ouverts en LoRA ou QLoRA avec la CLI Hugging Face TRL sur un GPU Node Lodge, puis copiez l'adaptateur hors de la machine.

Fine-tuning supervisé avec des adaptateurs LoRA, en ligne de commande avec trl. Aucun script d’entraînement à écrire.

GPU : 24 Go pour le test rapide en 0.5B et QLoRA en 7B, 48 Go pour LoRA en 7B. Voir Fine-tuning pour le dimensionnement.

1. Installer

curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env

uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install torch --torch-backend=auto
uv pip install "trl[peft]" bitsandbytes

Vérifiez l’environnement :

trl env

2. Test rapide

Une courte exécution sur un petit modèle vérifie la mémoire et le débit :

trl sft \
  --model_name_or_path Qwen/Qwen2.5-0.5B \
  --dataset_name trl-lib/Capybara \
  --use_peft \
  --max_steps 50 \
  --output_dir runs/smoke

3. Entraîner

Lancez l’entraînement réel dans tmux :

tmux new -s train
source .venv/bin/activate
trl sft \
  --model_name_or_path Qwen/Qwen2.5-7B \
  --dataset_name trl-lib/Capybara \
  --use_peft \
  --lora_r 16 \
  --lora_alpha 32 \
  --lora_target_modules q_proj k_proj v_proj o_proj gate_proj up_proj down_proj \
  --learning_rate 2.0e-4 \
  --num_train_epochs 1 \
  --per_device_train_batch_size 2 \
  --gradient_accumulation_steps 8 \
  --save_steps 200 \
  --output_dir runs/qwen7b-lora

Détachez la session avec Ctrl+b d. Rattachez-la avec tmux attach -t train.

Sur 24 Go, chargez le modèle de base en 4 bits (QLoRA) : ajoutez --load_in_4bit.

Vos propres données : un fichier JSONL avec une colonne messages (format conversationnel) ou une colonne text.

rsync -avz ./train.jsonl ubuntu@203.0.113.42:~/data/

Indiquez-le à trl dans un fichier de configuration, à la place de --dataset_name :

# sft.yaml
model_name_or_path: Qwen/Qwen2.5-7B
datasets:
  - path: json
    data_files: /home/ubuntu/data/train.jsonl
use_peft: true
output_dir: runs/qwen7b-lora
trl sft --config sft.yaml

Les options de ligne de commande priment sur les valeurs du fichier. Un jeu de données privé du Hub fonctionne aussi : passez son nom à --dataset_name.

Les modèles de base à accès restreint (Llama, Gemma) demandent export HF_TOKEN=hf_... avant l’entraînement.

4. Multi-GPU

Dans les offres multi-GPU, indiquez le nombre de processus :

trl sft ... --num_processes 2

5. Copier l’adaptateur

L’adaptateur est enregistré dans le dossier de sortie :

rsync -avz ubuntu@203.0.113.42:~/runs/qwen7b-lora/ ./qwen7b-lora/

Sélectionnez ensuite End session. Les checkpoints, les caches et le modèle de base sont supprimés avec la machine.

Référence : CLI TRL, intégration PEFT.

Fait partie d'un cas d'usage : Fine-tuning, avec ce que garantit une session.

Les résultats apparaissent pendant la saisie. Les flèches permettent de les parcourir.