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.

Ergebnisse erscheinen beim Tippen. Mit den Pfeiltasten wechseln Sie zwischen ihnen.