swactor/apps/pipeline-parallel-inference/profiles/example.env
Zachery Aaron Shores-Chmielewski ae9ca3bcf3 feat: datastream feature cleaning
Promote pipeline-parallel-inference to a first-class app and consolidate observability on the datastream wire, decoupling the dashboard crate from `distribution`.

- apps/pipeline-parallel-inference: move the example out of `examples/` into `apps/` as its own workspace, rename binaries to `pp-worker`/`pp-orchestrator`, and strip release binaries
- cluster: add `ClusterNode`, a synchronous facade over the actorized distribution protocol (IrohDriver + per-node Runtime hosting Swim/Registry/Metadata/Directory actors with a `MembershipFanout`), replacing ad-hoc `driver.node()`/`tick()` call sites
- fleet: add per-node fleet telemetry that ships identity/resource records as `DatastreamFrame`s over the cluster transport to the orchestrator's `DatastreamSink`, folded into a `FleetView` on a 3s tick
- provision: add best-effort, opt-in SSH boot-phase telemetry (`PP_DEPLOY_KEY`) that streams rented-node boot logs onto the orchestrator's datastream as `proc.boot.<stage>.*`
- dashboard: rewire the crate dependency from `distribution` to `datastream`, drop the standalone `swactor-datastream-dashboard` binary, and rewrite `datastream_source.rs` to demux per-node frames into Overview/Distribution/Fleet views with live-node TTL filtering
- distribution: refresh dist/netmap plugin copy and README from "Kademlia routing" to gossip-directory terminology

Signed-off-by: Zachery Aaron Shores-Chmielewski <zacheryasc@gmail.com>
2026-06-09 13:29:07 +04:00

66 lines
3 KiB
Bash

# pipeline-parallel-inference — run profile (.env style)
# ----------------------------------------------------------------------------
# This is the single source of truth for the knobs that used to be scattered
# across the binaries and one operator's shell. Copy it to set up a run:
#
# cp profiles/example.env profiles/local.env # untracked; put real secrets here
# PP_PROFILE=profiles/local.env cargo run --bin pp-orchestrator -- --seed ...
#
# When PP_PROFILE is unset, profiles/local.env is loaded automatically if it
# exists. The run scripts pick this up too (the binaries load it at startup).
#
# PRECEDENCE (lowest -> highest):
# compiled default < this profile < real process env < CLI flag
# i.e. anything already exported in your shell wins over the file, and a
# --flag wins over everything. The profile only fills in what is unset.
#
# Lines are KEY=VALUE; `export ` prefix and surrounding quotes are tolerated;
# `#` comments and blank lines are ignored.
# ----------------------------------------------------------------------------
# --- Networking / relay -----------------------------------------------------
# Custom iroh relay the whole cluster homes onto (a swactor-iroh-relay on a
# VPS). Leave unset to use the iroh default relays. Placeholder below — put
# YOUR real relay only in profiles/local.env (gitignored), not here.
#SWACTOR_IROH_RELAY_URL=https://relay.example.com
# --- Topology ---------------------------------------------------------------
# Number of pipeline stages (>= 2). pp-orchestrator also accepts --num-stages.
#NUM_STAGES=2
# --- Compute target (vast.ai / docker) --------------------------------------
# Container image to run on each node. The run scripts already read PP_IMAGE;
# pp-orchestrator's --image default now reads it too. Set to your registry tag.
#PP_IMAGE=swactor-pp-gpu:latest
# GPU class requested when leasing on vast.ai (pp-orchestrator --gpu overrides).
#PP_GPU=RTX 3060
# --- Workload (what each stage computes) ------------------------------------
# Model identifier handed to the worker.
#MODEL=
# Python worker script + interpreter (per-stage compute). WORKER_SCRIPT is the
# pp-worker default; pp-orchestrator --worker ships a script to remote nodes.
#WORKER_SCRIPT=./pp_tinygrad_worker.py
#WORKER_CMD=python3
#PYTHON=python3
# Stub mode: skip the real worker, echo activations (fast local smoke runs).
#PP_WORKER_STUB=1
# Inference request prompt + token budget (pp-orchestrator --prompt/--max-tokens).
#MAX_TOKENS=64
# --- Timeouts (seconds; sane defaults baked in — override only if needed) ---
#PP_CONVERGE_TIMEOUT_SECS=1200
#PP_WORKER_READY_TIMEOUT_SECS=1800
#PP_NEIGHBOR_RESOLVE_TIMEOUT_SECS=1800
#PP_PIPELINE_WIRED_TIMEOUT_SECS=1800
#PP_AWAIT_RESPONSE_TIMEOUT_SECS=600
#PP_RESOLVE_TIMEOUT_SECS=1200
# --- Diagnostics / dashboards (optional) ------------------------------------
#PP_DASHBOARD=1
#PP_DASHBOARD_PORT=9090
#SWACTOR_DIAG_COLLECTOR_URL=http://127.0.0.1:9080
# Secrets (orchestrator / stage identity). Keep real values in local.env only.
#PP_ORCH_SECRET=
#PP_STAGE_SECRET=