|
|
před 1 měsícem | |
|---|---|---|
| .. | ||
| baked | před 1 měsícem | |
| baked-ours | před 1 měsícem | |
| base-ours | před 1 měsícem | |
| base-theirs | před 1 měsícem | |
| diffs | před 1 měsícem | |
| README.md | před 1 měsícem | |
| aiden-dcp2.patch | před 1 měsícem | |
| manifest.txt | před 1 měsícem | |
Everything needed to port Aiden's DCP2 (decode context parallelism) stack onto our
clone-at-pin DSV4.1 tree — extracted from aidendle94/sparkrun-vllm-dsv41-gb10:
production-1.1 (published 2026-09-11T16:54Z; the DCP2 A/B ran on it, report in
recipes/dsv41-flash-4x-aiden11/reports/2026-09-12_003640_aiden11-dcp2-0912.md).
Aiden 1.1 DCP2 (300K ctx, dcp=2, a2a, 8 GiB KV) vs our b12x baseline (512K ctx):
| our b12x (live) | Aiden 1.1 DCP2 | |
|---|---|---|
| score | 167/176 | 158/176 |
| pp/tg/TTFT (d0 c1, ms) | 1,642 / 47.0 / 1,738 | 1,517 / 41.8 / 2,446 |
| KV | ~2M tokens @512K | 2,518,386 @300K |
DCP2 buys KV capacity / high-concurrency headroom, not quality or single-stream speed. Port it only if we want the 2.5M-token KV on our (fresher) stack.
vllm/vllm-openai:nightly-8a728663 — an older vLLM tree (before
DSV4.1 landed in-tree; it has no models/deepseek_v4_1/ at all). Aiden's
overlay adds the model files + the DCP2 machinery; the 24-file manifest is
/opt/dsv41-dcp2-mounts.txt (copied to manifest.txt here).07869c61 already ships
csrc/trtllm_dcp_alltoall.cu, flashinfer/cake_dcp.py, and the bench.--decode-context-parallel-size N (-dcp), --dcp-comm-backend
{ag_rs|a2a} (default ag_rs; the a2a path is the new all-to-all with LSE
exchange). Env (image defaults in brackets, all OFF): DSV41_DCP_STAGE [3],
DSV41_DCP_COMBINE [ag_rs], DSV41_DCP_PREFILL_GATHER [0],
DSV41_ENGRAM_MMAP [0], DSV41_ENGRAM_PREFETCH [0] (+MODE/THREADS/... ).| path | what |
|---|---|
manifest.txt |
23 (flat name, vllm-relative target) pairs from the image |
baked/ |
the 23 final (patched) files, docker cp'd from site-packages |
base-theirs/ |
the same 16 files at their base commit 8a728663 (GitHub) |
base-ours/ |
the same 23 files at our pin e47aa780 (GitHub) |
aiden-dcp2.patch |
their 16-file delta (base-theirs → baked), headers rewritten to a/vllm/… b/vllm/… for apply at the vLLM source root |
| bucket | files | notes |
|---|---|---|
clean git apply |
12 | communication_op, fused_moe/b12x, weight_utils, v1/attention/backend, mla/compressor_utils, kv_cache_coordinator, kv_cache_interface, cp_utils, gpu/attn_utils, gpu/block_table, gpu/model_runner, dflash/speculator — their base == our tree byte-for-byte |
| needs 3-way merge | 4 | sparse_attn_indexer.py, mla/indexer.py, mla/sparse_swa.py, kv_cache_utils.py — our pin is newer in these (their base 8a728663 predates our e47aa780 for these paths) |
| new-in-their-tree | 7 | models/deepseek_v4_1/* (6) + candidate_blocks.py — their base has no deepseek_v4_1 at all; the overlay adds it. Our tree has newer versions in-tree; only the DCP2-specific deltas are wanted (largest: engram.py 773 diff lines, nvidia/flashinfer_sparse.py 681, candidate_blocks.py 254 — cherry-pick from baked/ vs base-ours/, don't adopt wholesale) |
PORTED (2026-09-12, same day). The full 22-file delta was triaged
per-file against our baked image state (baked-ours/, extracted from
dsv41-flash:local): every file adopted wholesale — the set is a strict
superset. It carries the DCP2 machinery AND independently converged copies of
our own fixes (SM12x top-k guard, get_swa_block_size,
get_compressed_block_size, DSV41_ENGRAM_DISK, the kai pread thread pool —
verified present in their files; their engram.py is our KAI pool refactored
into a lazy _kai_pool() plus their new mmap/prefetch modes). weight_utils.py
is byte-identical. The port shipped as a thin wrapper
(docker-images/dsv41-flash-dcp2/, FROM dsv41-flash-b12x:local + one COPY
of the 23 final files, symbol-verified at build) + recipe
dsv41-flash-4x-dcp2 (--decode-context-parallel-size 2 --dcp-comm-backend
a2a, rest = the b12x recipe).
A/B result (dev65 harness, same 512K/GMU-0.85/DSpark-k5 config, 2026-09-12):
| KV | score | pp/tg/TTFT (d0 c1, ms) | |
|---|---|---|---|
| b12x (no DCP2, record) | ~2M @512K | 167/176 (95) | 1,642 / 47.0 / 1,738 |
| DCP2 a2a on our tree | 5,344,235 @512K | 162/176 (92) | 1,316 / 41.1 / 1,783 |
| Aiden 1.1 DCP2 (their stack, 300K) | 2,518,386 | 158/176 (90) | 1,517 / 41.8 / 2,446 |
Verdict: DCP2 on our stack costs ~5 quality points and ~13–20% single-stream speed (same trade as on Aiden's stack) in exchange for 5.34M-token KV at 512K — 2.6× our baseline, 2.1× their DCP2 @300K. The variant exists as the high-KV / long-context option; the b12x lane stays the quality/speed baseline. Engine was rock-steady through all 88 scenarios (no sparkring-style death). Fails: TC-68 (all DSV4.1 runs), TC-74, TC-84; TC-51 (failed on plain b12x) passed here.
cd <vllm source checkout @ e47aa780>
git apply --check dcp2/aiden-dcp2.patch # 12 clean, 4 expected failures
# merge the 4 manually (per-file diffs inside aiden-dcp2.patch)
# cherry-pick the 7 model-file deltas by hand
# build with the usual clone-at-pin driver (DCP2 flags stay OFF unless the
# recipe sets --decode-context-parallel-size 2 --dcp-comm-backend a2a + envs)