7.2 KiB
RustyTorch++ — Phase 3 Plan (Distributed Training & Multi‑GPU Execution)
Objective (4–5 months): Enable scalable training across multiple GPUs and nodes with topology‑aware communication, hybrid parallelism (data/tensor/pipeline/sequence), elastic recovery, and sharded states (FSDP/ZeRO‑style). Maintain determinism where declared and ship CI gates, benchmarks, and observability tailored to distributed runs.
Reference paths
RUSTYTORCH_ROOT: /home/osobh/projects/rustytorch
RUSTG_COMPILER: /home/osobh/projects/rust/rustg (RTX 5090, sm_120)
STRATOSWARM_ROOT: /home/osobh/projects/stratoswarm (deployment in later phases)
Darwin apps remain deferred. Phase 3 focuses on RustyTorch++ core scaling.
- Scope & Non‑Goals
In scope
Communication backend: NCCL (CUDA) / RCCL (ROCm) integration and process group API
Topology discovery & hints (PCIe, NVLink, NVSwitch, InfiniBand)
Parallelism: data parallel (DP), tensor parallel (TP), pipeline parallel (PP), sequence parallel (SP); auto‑hybrid partitioner
Sharded training: FSDP/ZeRO‑style (gradients, optimizer, and parameters)
Elastic engine: membership changes (join/leave), pre‑emption‑safe checkpoints (WAL), retry/backoff
Overlap: comm/compute scheduling; bucketization; gradient accumulation
Determinism surface for distributed runs (documented limits)
Benchmarks & CI at 1, 2, 4, 8 GPUs (single‑node) and 2–4 nodes (where available)
Out of scope (Phase 4+)
Advanced auto‑kernel synthesis & compiler autotuning (beyond basic sweeps)
Inference serving/scheduling stack (separate track)
- Success Criteria (Exit / Phase‑Gate)
Functional DP/TP/PP/SP with a simple configuration API; hybrids validated on reference models.
Sharded training reduces per‑GPU memory by ≥40% versus DP baseline at equal global batch.
Throughput scaling: ≥0.8× efficiency from 1→8 GPUs (single node); ≥0.7× to multi‑node on IB/NVLink.
Elasticity: mid‑run failure of one rank recovers automatically; pre‑emption resumes from latest durable checkpoint.
Determinism: declared deterministic mode yields repeatable results within tolerance across identical hardware and seeds; non‑deterministic surfaces are documented.
Observability: per‑rank and aggregated timelines/metrics; bottleneck attribution (compute vs. network) with actionable hints.
- Architecture Work
A. Process Group & Collectives
Process group abstraction (rtx-dist) with pluggable backends (NCCL/RCCL; CPU fallback)
Collectives: allreduce, reduce‑scatter, allgather, broadcast; async handles with stream selection
Fault detection (timeout/health) and retry/backoff policies
B. Topology & Placement
Discover PCIe/NVLink/NVSwitch/IB; build bandwidth/latency matrix
Rank mapping strategies (ring, mesh, tree) selected by topology and model parallel mode
Affinity & NUMA pinning policies
C. Parallelism Implementations
DP with gradient bucketing & overlap
TP (tensor‑slicing of large layers) with fused all‑reduce/all‑gather epilogues
PP with micro‑batching & 1F1B schedule; activation checkpointing integration
SP for attention/sequence‑length scaling
Auto‑hybrid planner chooses DP/TP/PP mix from model graph & hardware profile
D. Sharded Training (FSDP/ZeRO‑style)
Partition parameters/gradients/optimizer states
State prefetch & offload hooks (CPU/NVMe) with backpressure
Checkpoint format with shard metadata; streaming save/restore
E. Elasticity & Reliability
Rendezvous service; rank reconfiguration without restart
WAL checkpoints + periodic durable snapshots
Deterministic resume: resume graph/seed/capture hashes; verify parity
- APIs & Configuration
dist.init(backend, devices, env); returns process group
parallel.configure({dp, tp, pp, sp, micro_batch, bucket_bytes})
fsdp.configure({shard_strategy, offload={'cpu'|'nvme'|none}, auto_wrap=true})
elastic.configure({rendezvous, preempt_policy, checkpoint_interval})
Minimal user code to switch from single‑GPU to distributed (≤ 10 LOC)
- Benchmarks & Baselines
Models
LLM‑block (attention + MLP) and GPT‑style stack; ViT block for CV parity
Scales
Single node: 1, 2, 4, 8 GPUs (RTX 5090)
Multi‑node (if available): 2–4 nodes with IB
Metrics
Tokens/sec (or images/sec), step time, p50/p95/p99, allreduce time %, overlap %, network BW utilization, peak memory, frag%
- CI Gates (Phase 3)
Scaling Gate: efficiency thresholds (≥0.8× 1→8 GPUs single node)
Memory Gate: FSDP/ZeRO memory reduction ≥40% vs DP
Reliability Gate: injected rank failure recovers; determinism resume parity
Security Gate: dependency pinning; SBOM/sign; secrets hygiene
- Observability & Telemetry
Per‑rank Nsight/rocprof traces; aggregated timeline
Prometheus: step_time_ms, tokens_per_s, allreduce_pct, overlap_pct, net_bw_gbps, alloc_frag_pct, oom_count
Bottleneck classifier (compute‑bound vs. network‑bound) with suggestions
- Deliverables
rtx-dist crate (process group, collectives, rendezvous)
Parallelism modules (DP/TP/PP/SP) + auto‑hybrid planner
rtx-fsdp (or integrated) sharding with offload hooks & checkpoint format
Elastic runtime with WAL checkpoints and pre‑emption support
Benchmarks & dashboards for scaling curves; CI gates
Documentation: docs/distributed.md, docs/fsdp.md, examples
- RACI — Phase 3 Agent Ownership
Conductor (Orchestrator) — Accountable: cross‑agent plan, gate readiness
Distributed Strategy Agent — Responsible: topology discovery, planner, overlap scheduling
Rust Engineer — Responsible: runtime hooks, stream/collective integration, checkpoint I/O
Kernel Synthesizer Agent — Consulted: fused epilogues for collective‑adjacent ops
Memory Planner Agent — Responsible: sharding integration; offload/backpressure policies
Performance Engineer — Accountable: scaling benches, overlap tuning, efficiency gates
Security Engineer & Auditor — Accountable: dependency/secret policies; SBOM/sign
DevOps Engineer — Responsible: multi‑GPU runners; optional multi‑node staging; artifact storage
Governance & Provenance Agent — Responsible: checkpoint provenance; reproducible resumes
Agent Organizer — Accountable: routing, tool allowlists, freeze switch on gate failures
- Risks & Mitigations
Allreduce bottlenecks → bucket tuning; overlap; topology‑aware rings/trees
Elasticity edge cases → chaos tests; forced rank drops; partial shard recovery
Determinism drift → documented nondet surfaces; seed discipline; stable reductions; resume checks
Network variance → pin NIC/drivers; IB tuning; retry/backoff
Memory pressure → shard/offload thresholds; activation checkpointing; streaming checkpoints
- Timeline (suggested)
Weeks 1–2: Process group, collectives, rendezvous prototype; single‑node DP
Weeks 3–4: TP/PP/SP implementations; overlap scheduling; hybrid planner
Weeks 5–6: FSDP/ZeRO sharding & checkpoint format; offload hooks
Weeks 7–8: Elastic runtime; chaos tests; multi‑GPU scaling benches; CI gates; docs; phase‑gate review
- Phase‑4 Handover Seeds
Compiler autotuning & auto‑kernel synthesis plan (hardware profile DB, caches)
Inference scheduler design seeds (continuous batching, KV paging)
Governance extension for distributed reproducibility across clusters
— End of Phase 3 Plan —