LoRA-Fine-Tuning
Ein Open-Weight-LLM mit LoRA oder QLoRA über die Hugging Face TRL CLI auf einer Node-Lodge-GPU fine-tunen und den Adapter von der Maschine kopieren.
Supervised Fine-Tuning mit LoRA-Adaptern über die Kommandozeile trl. Kein Trainingsskript nötig.
GPU: 24 GB für den 0.5B-Smoke-Test und QLoRA auf 7B, 48 GB für LoRA auf 7B. Zur Dimensionierung siehe Fine-Tuning.
1. Installation
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
Stack prüfen:
trl env
2. Smoke-Test
Ein kurzer Lauf mit einem kleinen Modell prüft Speicher und Durchsatz:
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. Training
Führen Sie den eigentlichen Job in tmux aus:
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
Mit Ctrl+b d lösen Sie sich von der Sitzung, mit tmux attach -t train kehren Sie zurück.
Bei 24 GB laden Sie das Basismodell in 4-Bit (QLoRA): Fügen Sie --load_in_4bit hinzu.
Eigene Daten: eine JSONL-Datei mit einer Spalte messages (Chat-Format) oder einer Spalte text.
rsync -avz ./train.jsonl ubuntu@203.0.113.42:~/data/
Verweisen Sie trl statt mit --dataset_name über eine Konfigurationsdatei darauf:
# 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
Flags auf der Kommandozeile überschreiben Werte aus der Datei. Ein privates Dataset auf dem Hub funktioniert ebenfalls: Übergeben Sie seinen Namen an --dataset_name.
Zugangsbeschränkte Basismodelle (Llama, Gemma) benötigen vor dem Training export HF_TOKEN=hf_....
4. Multi-GPU
Bei Multi-GPU-Angeboten übergeben Sie die Zahl der Prozesse:
trl sft ... --num_processes 2
5. Den Adapter kopieren
Der Adapter wird im Ausgabeverzeichnis gespeichert:
rsync -avz ubuntu@203.0.113.42:~/runs/qwen7b-lora/ ./qwen7b-lora/
Wählen Sie dann End session. Checkpoints, Caches und das Basismodell werden mit der Maschine gelöscht.
Referenz: TRL CLI, PEFT-Integration.
Teil eines Anwendungsfalls: Fine-Tuning, mit dem, was eine Sitzung garantiert.