canado / scripts /remote_hosts.example.toml
funny790's picture
Upload folder using huggingface_hub (part 4)
bb02ad0 verified
Raw
History Blame Contribute Delete
3.02 kB
# Example remote-training host file for `cascade-trainer --remote-hosts`.
#
# This file is TRAINER-LOCAL β€” keep it out of git and OFF the public chain.toml.
# It lists the SSH GPU pods (Lium, Targon, or any host you can SSH into) that the
# trainer dispatches a round's king and challenger to, in parallel. The first
# host trains the king, the second the challenger (more hosts β†’ a round-robin
# pool for multi-challenger rounds).
#
# Each pod must already have: cascade installed (`pip install -e '.[train,hippius]'`),
# torch + a GPU, and registry/S3 access. The pod does NOT need the bittensor
# wallet β€” signing/publishing stays on the orchestrator. Seed the pod's env once
# when you rent it (HIPPIUS_HUB_TOKEN, HIPPIUS_S3_ACCESS_KEY,
# HIPPIUS_S3_SECRET_KEY) OR list them under forward_env to have the orchestrator
# pass them over SSH.
#
# WANDB_API_KEY is special: when [wandb] enabled=true, the trainer AUTO-forwards
# it to every pod (the training β€” and its wandb run β€” happen on the pod), so you
# do NOT need to list it under forward_env. It's only forwarded when present in
# the orchestrator's own env; without it, pod-side wandb silently no-ops and the
# runs show no per-step training logs.
#
# For BYTE-EXACT re-derivation, rent the SAME GPU SKU on both pods and pin it in
# chain.toml [training] expected_gpu (the reference trainer runs deterministically;
# the validator rejects any round whose two checkpoints weren't trained on it).
#
# STAGE TAGS (optional, default "any"): stage = "heat" | "final" | "any" restricts
# which round stage a pod serves. Heats can run on a CHEAPER SKU class (e.g.
# A6000) than the final β€” heat checkpoints are trainer-internal (screened and
# discarded, never validated), and the fixed token budget keeps every heat
# entrant on identical compute regardless of SKU. Two rules:
# * keep each stage's pods a single SKU (heat entrants stay numerically
# comparable; the final's king/challenger must match for the validator gate),
# * only the FINAL pods need the expected_gpu SKU from chain.toml.
# Untagged ("any") hosts serve both stages β€” the pre-stage behaviour.
[[host]]
name = "king-box"
host = "203.0.113.10" # pod public IP / hostname
port = 22
user = "root"
key_path = "~/.ssh/lium_ed25519"
remote_python = "/root/cascade/.venv/bin/python"
workdir = "/root/cascade" # where cascade is installed on the pod
cuda_device = "0" # pins CUDA_VISIBLE_DEVICES on the pod
# chain_toml = "/root/cascade/chain.toml" # only if non-default on the pod
# forward_env = ["HIPPIUS_HUB_TOKEN", "HIPPIUS_S3_ACCESS_KEY", "HIPPIUS_S3_SECRET_KEY"]
# ssh_options = ["ServerAliveInterval=30", "ServerAliveCountMax=120"]
[[host]]
name = "challenger-box"
host = "203.0.113.11"
port = 22
user = "root"
key_path = "~/.ssh/targon_ed25519"
remote_python = "/root/cascade/.venv/bin/python"
workdir = "/root/cascade"
cuda_device = "0"