# Purpose: every setting the Part 20 scripts read. Copy this file to `.env` beside the # scripts and fill in the empty lines for your own machines. Nothing here is a # secret except the Hugging Face token, which you generate rather than copy, and # which the scripts read from the environment and never write anywhere. # Platform: all (the Spark values matter on Track S; the two-card values on Track N) # Minimum memory: 128 GB per node for the two-Spark path; 24 GB per GPU for the two-card path # Assumes: `cp env-example.txt .env`, then an editor. Every script loads it with # `set -a; . ./.env; set +a` when the file is present, so a value set in your # shell always wins over a value in the file. # ------------------------------------------------------------------- the two machines # Addresses on the direct QSFP link, NOT on the house network. Take them from # `ip addr show ` after the connect-two-Sparks playbook has assigned them. # The playbook's example puts the first port's pair on a 192.168.100.0/24 subnet and the # second port's pair on 192.168.101.0/24, one host address per node in each. # This node's own address on the link. Different on each machine. NODE_SELF_ADDR= # The head node's address on the link. The SAME value on both machines: on the head it # equals NODE_SELF_ADDR, on the worker it is the head's address. NODE_HEAD_ADDR= # The other machine's address on the link, used by prepare-spark-pair.sh for its # reachability and SSH checks. Different on each machine. NODE_PEER_ADDR= # The login name that exists on BOTH machines. The playbooks require it to match. CLUSTER_USER= # ------------------------------------------------------------------ the link itself # The QSFP interface that came up, from `ibdev2netdev`. The playbook's validated example # on a DGX Spark is enp1s0f1np1; confirm yours rather than copying this one. CX7_IFNAME=enp1s0f1np1 # The RoCE device paired with that interface in the same ibdev2netdev output, without the # trailing port number. Used as the NCCL_IB_HCA filter. Leave empty to let NCCL choose. CX7_ROCE_DEV= # The management interface you SSH in on, used only for the NCCL test suite's bootstrap, # which NVIDIA's NCCL playbook launches over the management network. MGMT_IFNAME= # ------------------------------------------------------------------------ containers # The NGC vLLM image for your hardware. Take the current tag from the DGX Spark vLLM # playbook's Instructions tab; it changes, and both nodes must use the same one. VLLM_IMAGE= # The TensorRT-LLM release image, if you take the playbook path in the optional task. # Three NVIDIA pages named three different tags on 2026-09-09: check NGC. TRTLLM_IMAGE= # ---------------------------------------------------------------------------- models # Where models live on each node. The same path on both machines, as vLLM's multi-node # documentation requires, or a filesystem both can read. HF_HOME= # The very large model served across the pair. The vLLM multi-node playbook's optional # 405B step uses hugging-quants/Meta-Llama-3.1-405B-Instruct-AWQ-INT4, published under the # Llama 3.1 Community licence: read the model card before using it. PAIR_MODEL=hugging-quants/Meta-Llama-3.1-405B-Instruct-AWQ-INT4 # The single-machine comparison. gpt-oss-120b is Apache-2.0 with native MXFP4 weights. SINGLE_MODEL=openai/gpt-oss-120b # The two-card desktop fallback. hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4 is # the 70B-class option and is tight on 2x24 GB; Qwen/Qwen3-32B-AWQ is the comfortable one. TWO_CARD_MODEL=hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4 # The name clients send in the "model" field. Keep it stable across every path so the # load generator's command line does not change between runs. SERVED_NAME=local-cluster # ------------------------------------------------------------------------- serving SERVE_HOST=127.0.0.1 SERVE_PORT=8000 # Context length. The vLLM playbook's 405B step uses 64 because there is no headroom; # raise it for the single-machine and two-card paths and record what you used. CTX=4096 # Fraction of each device the engine may claim, and sequences in flight. MEM_FRACTION=0.90 MAX_SEQS=4 # --------------------------------------------------------------------------- secrets # Gated models need a Hugging Face token. Export it in your shell rather than writing it # here if you can; if you do put it here, keep .env out of version control. HF_TOKEN= # The load generator reads an API key, if the server needs one, from the variable named # here. It is never written to the notebook. LOADTEST_API_KEY_ENV=LOADTEST_API_KEY