Files
trade-frontend/doc/vast-gpu-runbook.md
2026-02-01 21:44:45 +01:00

3.5 KiB

Vast GPU (kilka godzin) — runbook do trenowania + eksportu modelu

Cel: używać Vast (GPU) jako krótkiej sesji treningowej (kilka godzin), a wynik (wagi/adapter) zapisać trwałe i wersjonowane.

W tym projekcie Vast:

  • nie dostaje sekretów tradingowych,
  • nie ma dostępu do kluczy,
  • zwraca tylko trade_intent/predykcje.

1) Najważniejsza zasada przy krótkim wynajmie

Vast jest “ephemeral”. Żeby nie stracić pracy:

  • wszystko musi być reproducible (konfig + kod + seed),
  • model output musi być mały i łatwy do przeniesienia (preferuj LoRA/adaptery),
  • checkpointy i final artifacts muszą być uploadowane poza maszynę (Gitea packages/S3/scp).

2) Co potrzebujemy mieć gotowe przed startem sesji

2.1 Kod i entrypoint

W repo powinien istnieć “one command training”, np.:

  • python -m train ... albo bash scripts/train.sh ...

Zasada: komenda sama:

  • pobiera dataset (albo czyta lokalny plik),
  • trenuje,
  • zapisuje artifacts/,
  • robi upload.

2.2 Dataset (krótki transfer)

Dla sesji “kilka godzin” unikaj wielkich transferów.

Rekomendacja:

  • zbuduj dataset jako plik (np. jsonl/parquet) i spakuj (zstd),
  • trzymaj wersję datasetu (hash) i loguj ją do metryk.

Źródło danych (rekomendowane u nas):

  • Postgres/Timescale w k3s → eksport do pliku (offline), potem upload.

2.3 Bazowy model

Masz 2 ścieżki:

  • pobierasz z internetu (HF) na Vast (szybko, ale zależy od sieci),
  • albo trzymasz bazę w swoim storage i ściągasz kontrolowanie.

Na start preferuj LoRA na umiarkowanym modelu i krótkiej sekwencji.


3) Co uruchamiamy na Vast

3.1 Kontener

Najprościej: jeden Docker image z zależnościami (PyTorch + libs). Obraz powinien być pinned (digest) i gotowy do uruchomienia bez pip install w trakcie.

3.2 Konfiguracja treningu (config file)

Trzymaj config jako plik (np. YAML/JSON) i loguj go do artifactów:

  • model_name, model_version
  • dataset_version (hash)
  • seq_len, batch_size, grad_accum, lr
  • lora_r, lora_alpha, lora_dropout (jeśli LoRA)
  • seed

3.3 Output

Preferowane outputy:

  • LoRA adapter (mały): adapter.safetensors + config
  • metryki treningu: metrics.json
  • walidacja: eval_report.json

Opcjonalnie:

  • export do ONNX/TensorRT jeśli planujesz inference poza GPU (zależne od modelu).

4) Gdzie trzymamy artefakty (żeby nie zniknęły)

Opcje (w kolejności prostoty):

  1. scp na VPS/k3s (na start najprostsze)
  2. Gitea Packages (jeśli chcesz wersjonować jako “package”)
  3. S3/MinIO (najbardziej skalowalne)

Minimalne wymaganie: zawsze zapisuj model_version i dataset_version obok wag.


5) Jak to łączy się z executor / UI

Model na Vast zwraca trade_intent (patrz doc/drift-perp-contract.md). Executor w k3s:

  • buduje features z DB,
  • woła predictor,
  • waliduje gates,
  • loguje:
    • decision_id, model_version, features_hash, intent,
    • outcome (fill/exit).

Jeśli Vast jest niedostępny:

  • executor przechodzi w observe/off (nie handluje),
  • UI nadal pokazuje warstwy rynku (DLOB/ticki).

6) Checklist “kilka godzin” (operacyjnie)

  • Vast instance: GPU + wystarczająco VRAM + szybki disk.
  • Pull docker image (pinned).
  • Download dataset (jedna komenda).
  • Train (z logowaniem metryk co N kroków).
  • Eval (krótki).
  • Export adapter/weights.
  • Upload artifacts (scp / packages / S3).
  • Zapisz model_version do DB/config (k3s) przed użyciem.