Skip to content

Add and live-qualify a TP4/DCP4 launch profile on the R33 image #264

Description

@FujitsuPolycom

Parent

Follow-up to the merged R33 image release (#262). Related: #220 (native MTP3 sparse prefix retention, suspected defect affecting TP4 DCP4 capture), #254 (rejecting dynamic GLM DFlash depth on TP4 DCP4 plans).

What to build

The generic R33 ARM64 image (ghcr.io/fujitsupolycom/sparkring@sha256:1328a4f6f483014021a66a757012793629bd054d28d0fe4d5e581fa4aed776ef, source commit 86ae2153a9177fea487d1b208305624a33d66616) ships only tp4-dcp1 and tp4-dcp1-sparkcache launch profiles. The TP4/DCP1 quickstart states: "DCP1 is the qualified profile. This R33 profile contract does not expose a DCP4 launch profile."

A TP4/DCP4 profile means four GB10 ranks with tensor-parallel degree four and data/context-parallel degree four, so each rank owns one quarter of requests and a quarter of the context window; KV spans 24 GiB per rank with the DCP top-k owner exchange moving keys between rank groups. The mesh owner-exchange and fused-endpoint source exists and passed CPU/ARM64 binding tests, but the R33 profile contract and renderer cannot select it. No live serving run has exercised DCP4 on the R33 image.

This issue adds the missing profile and qualifies it live.

Steps

  1. Render a tp4-dcp4-sparkcache launch profile in runtime/sparkring/jovian-r33/profiles/ that binds the existing receipt contract (sparkring-r33-image-receipt/v1), validates via verify_profile.py, and selects an empty activation_blockers list when the image is pulled from the published digest. Include the DCP top-k owner exchange and fused mesh endpoints. Cache stays disabled for the first profile (matching the TP4 DCP1 pattern: cache-disabled first, cache-enabled second).
  2. Add profile-contract tests in runtime/sparkring/jovian-r33/profiles/test_profile_contract.py mirroring the DCP1 cases: schema field coverage, receipt binding, activation-blocker enumeration, mesh renderer output for four ranks (verify the four-HCA NCCL ring and six-QP virtual mesh the DCP1 profile documents).
  3. Live qualification on DGX4 — the existing four-rank mesh must be briefly stopped; this requires operator presence. Qualification set, mirroring the TP4/DCP1 record performance/records/glm53-flash/r33-image020-tp4-sparkcache-20260911.md:
    • Four-rank startup through managed gates; verify --tensor-parallel-size 4 and DCP degree 4 in the effective command
    • Cold prefill medians of three samples at 8,192 / 16,384 / 32,768 tokens (exact-token harness)
    • Decode cells at 8K/32K for C1 and C4 with MTP-normalized steps/s
    • Exact-answer retrieval and the six-case prefix-hit regression (the 1,027-token suffix case matters for the packed checkpoint adapter)
    • Dual-domain NCCL route attribution across both host PCIe domains (the RouteFinal evidence pattern the DCP1 record uses)
    • DCP top-k owner-exchange activation evidence from worker logs, not environment-variable presence
  4. Optional cache profile (tp4-dcp4-sparkcache): capture, restore across process restart, mixed prefill, and failed-restore recovery, gated by the same steps the TP2/TP4 DCP1 cache records document. Note issue [bug] Native MTP3: pinned sparse prefix retention may discard reachable cache states (SparkCache / TP4 DCP4) #220 (sparse prefix retention discarding reachable states) is unresolved and affects DCP4 capture; if the zero-hit reproduction fires during cache qualification, stop and record it rather than qualifying past it.
  5. Documentation: expose the DCP4 profile in docs/GLM53_TP4_PREFILL_QUICKSTART.md and README.md; write a qualification record under performance/records/glm53-flash/ with explicit status (qualified or research-only per evidence, not assumed); add the qualification entry to runtime/sparkring/jovian-r33/publication.json when the record is finalized.

Current evidence for DCP4 on this model (all pre-R33, all research-only)

  • performance/records/glm53-flash/b12x-kda-dcp4-20260903.md — TP4/DCP4 perf observation on the earlier sparkring-glm53-sparkcache image sha256:0d4029b3…, TP4/DCP4, 24 GiB KV/rank, BF16 DFlash2 depth seven. Performance only; no functional qualification.
  • outputs/issue220-dcp4-live-20260909/ (Codex worktree, not in repo) — live DCP4 run on fingerprint vllm-0.1.dev1+gd377796e8: healthy four-rank startup, one arithmetic restore smoke passed. Pre-dates the R33 composition entirely.

Acceptance criteria

  • tp4-dcp4 (cache-disabled) renders from a verified R33 receipt with empty activation_blockers
  • Profile-contract tests cover the four-rank DCP4 renderer output and receipt binding
  • Live receipt on DGX4: cold 8K/16K/32K prefill medians (3 samples each), C1/C4 decode with MTP normalization, exact-answer retrieval, six-case prefix regression, dual-domain NCCL route attribution
  • DCP top-k owner exchange confirmed active in worker logs
  • Qualification record written with honest scope: what is qualified vs research-only (e.g. multimodal, sustained soak, 1M-token requests stay unclaimed)
  • publication.json gains a tp4-dcp4 qualification entry only when the record is finalized; docs updated in the same change
  • If [bug] Native MTP3: pinned sparse prefix retention may discard reachable cache states (SparkCache / TP4 DCP4) #220's zero-hit behavior reproduces on DCP4, the cache profile is not published past it; the failure is recorded as a tracked limitation

Blocked by

  • None — can start immediately. Live qualification (step 3) requires the four-rank DGX4 mesh to be taken down and restored, so it needs operator scheduling; the profile and test work (steps 1-2) can proceed AFK against the published image.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions