Nvidia DGX models run

 Přehled

KrokCo 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

  1. Otevřete webhttps://spark-arena.com/leaderboard
  2. 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.
  3. 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.

3️⃣ Spuštění modelu s Dockerem (spark‑vllm‑docker)

3.1 Požadavky

PožadavekVerze / 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-docker2 a 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 úkoluPříklady dat
Chat‑botdialogy (uživatel – asistent)
Instrukční modelJSON 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

  1. 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'..."}
  2. Uložení – Vytvořte složku např. ./data/training/ a uložte soubory train.jsonl a valid.jsonl.

4.3 Vytvoření Docker‑containeru pro fine‑tuning

Existují dva hlavní režimy:

RežimPopisPří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 notebookPř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ů

ParametrPopis
TRAINING_STEPSMaximální počet tréninkových kroků (alternativa k num_train_epochs).
BATCH_SIZEKolik vzorků se posílá na GPU najednou (větší → více VRAM).
LRLearning rate – typicky 1e‑5 – 5e‑5.
--output_dirKam se ukládají checkpointy a finální model.
--logging_stepsPočet kroků, po kterých se vypíše progres.
--save_stepsPo 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

  1. Uložte finetuned checkpoint do např. my_finetuned_model/.
  2. 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
  3. Test (stejný HTTP‑request jako v krok 3.5, jen s novým modelem).

5️⃣ Praktické tipy a často kladené otázky

OtázkaOdpověď
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)

  1. Zobrazte leaderboard → vyberte model.
  2. Spusťte Docker (CPU nebo GPU) s proměnnou MODEL_NAME.
  3. Připravte data (train.jsonlvalid.jsonl).
  4. Spusťte fine‑tuning (příkaz výše).
  5. Uložte checkpoint a restartujte kontejner s novým modelem.
  6. Testujte pomocí jednoduchého HTTP POST na /v1/completions.

📎 Užitečné odkazy

OdkazPopis
https://spark-arena.com/leaderboardAktuální žebříček modelů a metrik.
https://github.com/eugr/spark-vllm-dockerOficiální Dockerfile, README a příklady spouštění.
https://huggingface.co/meta-llama/Llama-2-7b-chat-hfStránka modelu Llama‑2‑7B‑Chat (stáhnout/klon).
https://github.com/huggingface/transformers/tree/main/examples/pytorch/language-modelingPříklady k fine‑tuning (obecné, ale použitelné).
https://github.com/huggingface/accelerateSprá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.

Napsat komentář