Codeseys's picture
Wave 12: close V1-V8 brief — GPU smoke, SDPO firing, real-trace e2e
d88715c
|
Raw
History Blame Contribute Delete
3.31 kB

Spike 002a-mini-gpu-smoke — VERDICT

Status: ✅ PASSED on local 5090 Date: 2026-05-26 Wave: 12 (closing the "zero GPU evidence" gap from cross-model review item #4)

Headline

composer_replication 3-channel loss composition runs cleanly on real GPU hardware. Qwen2.5-0.5B-Instruct on RTX 5090 sm_120 in bf16, 50 backward steps, loss 0.7354 → 0.00034 (99.95% reduction), all gradients finite throughout. Peak VRAM 5.31 GB (well under the ADR-001 8GB target). Median step time 480ms.

Closes

  • The cross-model review's item #4: "Run Spike 002a-mini on the local 5090. ADR-001 made the choice; the spike was not run. Until then, the framework has zero GPU evidence of any kind." Done.
  • ADR-001's underlying claim that local 5090 is the right venue for this workload class. Verified: 50-step run completes in ~30 s wall-clock on the local 5090, vs an estimated 3-5 min cold-start cycle on Modal L4.
  • The "but the framework only runs on CPU" objection in V8.

Acceptance criteria

Criterion Target Result
Model loads via AutoModelForCausalLM on cuda bf16, no errors ✅ 7.3 s
50 steps run end-to-end No nan/inf
Loss decreases meaningfully final < 50% × initial ✅ final = 0.046% × initial
Peak VRAM < 8 GB on 0.5B model headroom check ✅ 5.31 GB
Step time stable no thermal throttling, no swap ✅ median 480ms, no outliers
All gradients finite throughout per-step finite check
sm_120 Blackwell architecture supported not pre-Hopper-only ✅ verified arch in torch.cuda.get_arch_list()

Per-channel behavior on GPU

Same as CPU (Spike 006): LM-CE channel dominates, DPO channel contributes small nonzero gradient throughout, SDPO channel zero (shape-mismatch fallback — to exercise the SDPO channel on GPU, run with align_sdpo_shapes batch builder per Spike 006-strict's test_sdpo_channel_actually_fires).

Memory profile

step total peak_mem_gb step_time_ms
0 (post-warmup) 0.7354 5.31 ~500
10 0.0067 5.31 ~480
25 0.0007 5.31 ~480
49 0.0003 5.31 ~480

Memory stays flat at 5.31 GB after warmup — no leak, no expanding activation buffers. (The 0.5B model in bf16 + Adam states + activations + DPO logit gradients all fit comfortably.)

What this does NOT close

  • Multi-replica / multi-process DiLoCo (V2 partial gap). This spike is single-GPU. Real DiLoCo training across replicas is GPU-multi-process and not yet attempted.
  • Composer-2.5-quality empirical results (V8 partial gap). This spike verifies the framework runs on GPU; it does NOT verify the method improves model quality vs plain GRPO. That requires the full pipeline (real teacher rollouts + real GRPO rewards + a benchmark like SWE-bench-lite) and is the post-replication GPU phase ($30-100+).

Files

  • run_gpu_smoke.py — 50-step GPU smoke runner with VRAM + step-time capture
  • results/gpu_loss_curve.csv — per-step metrics
  • results/gpu_verdict.json — programmatic verdict for CI/audit
  • results/run.log — actual successful run output

Cost / time

  • $0 (local 5090, no Modal spend)
  • 35 s wall-clock total (7 s model load + 25 s training)
  • ~5 GB VRAM