Přehled
| Krok | Co se udělá |
|---|---|
| 1. Zobrazíte aktuální seznam modelů a jejich statistiky na leaderboardu spark‑arena.com. | |
2. Spustíte model lokálně (nebo v kloučovém cloudu) pomocí oficiálního Docker‑image eugr/spark‑vllm (repo spark‑vllm‑docker). | |
| 3. Připravíte data a pomocí stejného Docker‑image provedete fine‑tuning (trénink) vlastního modelu. |
Níže je podrobný návod, který můžete použít krok po kroku.
2️⃣ Tabulka modelů – Leaderboard
- Otevřete web
https://spark-arena.com/leaderboard - Co najdete?
- Seznam modelů (např. Llama‑2‑7B, Mistral‑7B, …)
- Hodnocení (R‑score, chat‑score, inference‑latency)
- Počet parametrů, podpora 8‑bit kvantizace, režim „chat“, „completion“ atd.
- Jak použít data?
- Zkopírujte název modelu, který chcete nasadit (např.
meta-llama/Llama-2-7b-chat-hf). - Na stránce najdete i odkaz na Hugging‑Face/GitHub, takže si můžete model stáhnout (pokud je veřejný) nebo použít přímo jeho identifikátor ve skriptu.
- Zkopírujte název modelu, který chcete nasadit (např.
3️⃣ Spuštění modelu s Dockerem (spark‑vllm‑docker)
3.1 Požadavky
| Požadavek | Verze / Důležitost |
|---|---|
| Docker Engine | ≥ 20.10 |
| GPU (volitelně) | NVIDIA RTX A6000 / A100, alespoň 16 GB VRAM (pro 7 B model) |
| CUDA (pokud používáte GPU) | 11.8 + |
| Disk | ≈ 30 GB volného místa (model + Docker‑image) |
| Python 3.9+ (pro fine‑tuning skripty) | – |
3.2 Stažení a kontrola Docker‑image
# Stažení oficiálního image
docker pull eugr/spark-vllm:latest
# Ověříme, že je image dostupný
docker images | grep spark-vllm
3.3 Jednoduché spuštění (CPU‑only)
docker run -d \
--name spark-vllm \
-p 8000:8000 \
-e MODEL_NAME="meta-llama/Llama-2-7b-chat-hf" \
-e PORT=8000 \
eugr/spark-vllm
Parametry
MODEL_NAME– identifikátor modelu na Hugging‑Face (např.meta-llama/Llama-2-7b-chat-hf).-p 8000:8000– otevře HTTP API na portu 8000 (můžete změnit).-d– spustí kontejner na pozadí.
3.4 Spuštění s GPU (CUDA)
docker run -d \
--gpus all \
--name spark-vllm-gpu \
-p 8000:8000 \
-e MODEL_NAME="meta-llama/Llama-2-7b-chat-hf" \
-e PORT=8000 \
eugr/spark-vllm
Poznámka: Musíte mít nainstalovaný balíček
nvidia-docker2a zapnutýnvidia-container-runtime.
3.5 Ověření, že model běží
curl -X POST http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Llama-2-7b-chat-hf",
"prompt": "Jaký je hlavní město Česka?",
"max_tokens": 64,
"temperature": 0.7
}'
Odpověď – měla by obsahovat "Praha".
4️⃣ Trénink (Fine‑tuning) – Jak připravit data a spustit trénink v Dockeru
4.1 Co můžete fine‑tunovat?
| Typ úkolu | Příklady dat |
|---|---|
| Chat‑bot | dialogy (uživatel – asistent) |
| Instrukční model | JSON L1/L2 instrukce + odpovědi |
| SFT (Supervised Fine‑Tuning) | páry <prompt, completion> |
| RLHF (pokud máte policy‑model) | hodnocení odpovědí lidským hodnotitelem |
4.2 Příprava dat
- Formát – CSV, JSONL nebo Hugging‑Face
datasets(doporučeno).
Příklad JSONL (každý řádek):{"prompt":"Napiš krátké shrnutí knihy '1984'.","completion":"Kniha '1984'..."} - Uložení – Vytvořte složku např.
./data/training/a uložte souborytrain.jsonlavalid.jsonl.
4.3 Vytvoření Docker‑containeru pro fine‑tuning
Existují dva hlavní režimy:
| Režim | Popis | Příkaz |
|---|---|---|
| Train‑only (CPU / GPU) | Spustí trénink a po skončení kontejner končí. | docker run --gpus all -v $(pwd)/data:/workspace/data -e TRAINING_ARGS="…" eugr/spark-vllm finetune |
| Interactive notebook | Připojí Jupyter/VS Code a umožní ladit hyperparametry. | docker run --gpus all -p 8888:8888 -v $(pwd)/data:/workspace/data eugr/spark-vllm jupyter |
4.3.1 Příklad kompletního spuštění (GPU)
docker run -it --rm \
--gpus all \
-v "$(pwd)/data:/workspace/data" \
-e MODEL_NAME="meta-llama/Llama-2-7b-chat-hf" \
-e TRAINING_STEPS=2000 \
-e BATCH_SIZE=4 \
-e LR=2e-5 \
eugr/spark-vllm \
python -m spark_vllm.finetune \
--model_name $MODEL_NAME \
--train_file /workspace/data/train.jsonl \
--validation_file /workspace/data/valid.jsonl \
--output_dir /workspace/output \
--per_device_train_batch_size $BATCH_SIZE \
--learning_rate $LR \
--num_train_epochs 1 \
--logging_steps 10 \
--save_steps 100
Vysvětlení parametrů
| Parametr | Popis |
|---|---|
TRAINING_STEPS | Maximální počet tréninkových kroků (alternativa k num_train_epochs). |
BATCH_SIZE | Kolik vzorků se posílá na GPU najednou (větší → více VRAM). |
LR | Learning rate – typicky 1e‑5 – 5e‑5. |
--output_dir | Kam se ukládají checkpointy a finální model. |
--logging_steps | Počet kroků, po kterých se vypíše progres. |
--save_steps | Po kolika krocích se uloží checkpoint (možnost obnovy). |
4.4 Monitorování tréninku
- Logy – V kontejneru jsou výstupy v
stdout. Pro podrobnější sledování můžete použít TensorBoard:docker exec -it spark-vllm bash -c "tensorboard --logdir /workspace/output/runs" - Kontrola checkpointu – Po dokončení:
docker cp spark-vllm:/workspace/output/checkpoint-1000 ./my_finetuned_model
4.5 Použití finetuned modelu
- Uložte finetuned checkpoint do např.
my_finetuned_model/. - Spusťte model (GPU) s novým
MODEL_NAME:docker run -d \ --gpus all \ -p 8001:8000 \ -e MODEL_NAME="/workspace/my_finetuned_model" \ -e PORT=8000 \ eugr/spark-vllm - Test (stejný HTTP‑request jako v krok 3.5, jen s novým modelem).
5️⃣ Praktické tipy a často kladené otázky
| Otázka | Odpověď |
|---|---|
| Jak zjistit, kolik VRAM mohu použít? | V kontejneru spusťte nvidia-smi. |
| Mohu trénovat na více GPU najednou? | Ano – použijte --gpus "device=0,1" a zapněte accelerate nebo deepspeed (obě jsou v image). |
| Kde najdu předtrénovaný model? | Na leaderboardu najdete odkaz na Hugging‑Face hub. Stačí zadat identifikátor (např. meta-llama/Llama-2-7b-chat-hf). |
| Chci trénovat 4‑bit kvantovaný model. Jak? | Přidejte env‑variablu QUANTIZE_BITS=4 před spuštěním (docker run -e QUANTIZE_BITS=4 …). |
| Maximální počet tokenů při inference? | Default 512 tokenů, lze změnit MAX_TOTAL_TOKENS (např. -e MAX_TOTAL_TOKENS=1024). |
| Co když dostanu „CUDA out of memory“? | Snižte BATCH_SIZE nebo použijte --gradient_accumulation_steps (např. --gradient_accumulation_steps 4). |
| Jak přistoupit k modelu z Jupyter notebooku? | Spusťte kontejner s portem 8888 (-p 8888:8888) a otevřete http://localhost:8888. V notebooku můžete použít transformers a vllm SDK. |
6️⃣ Shrnutí (krok po kroku)
- Zobrazte leaderboard → vyberte model.
- Spusťte Docker (CPU nebo GPU) s proměnnou
MODEL_NAME. - Připravte data (
train.jsonl,valid.jsonl). - Spusťte fine‑tuning (příkaz výše).
- Uložte checkpoint a restartujte kontejner s novým modelem.
- Testujte pomocí jednoduchého HTTP POST na
/v1/completions.
📎 Užitečné odkazy
| Odkaz | Popis |
|---|---|
| https://spark-arena.com/leaderboard | Aktuální žebříček modelů a metrik. |
| https://github.com/eugr/spark-vllm-docker | Oficiální Dockerfile, README a příklady spouštění. |
| https://huggingface.co/meta-llama/Llama-2-7b-chat-hf | Stránka modelu Llama‑2‑7B‑Chat (stáhnout/klon). |
| https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modeling | Příklady k fine‑tuning (obecné, ale použitelné). |
| https://github.com/huggingface/accelerate | Správa multi‑GPU tréninku. |
Mějte úspěšný trénink a nasazení!
Pokud narazíte na konkrétní problém (např. chyba během Docker run nebo během fine‑tuning), dejte vědět – rád pomohu s laděním parametrů nebo debugem.