Skip to content

results(dsv41): the prefill chunk size is the lever, 4096 rows over 2048 - #45

Closed
imD-5 wants to merge 1 commit into
Elevatormusic:deepseek-v41-tp2from
imD-5:results/prefill-chunk
Closed

imD-5 wants to merge 1 commit into
Elevatormusic:deepseek-v41-tp2from
imD-5:results/prefill-chunk

Conversation

@imD-5

@imD-5 imD-5 commented Oct 25, 2026

Copy link
Copy Markdown

What this changes

tools/dsv41/REPORT.md: section 6's open item on prefill overlap becomes its result, and the launch line's chunk size
goes from 2048 to 4096 rows.

Effect

  • Two GB10 (TP2), DeepSeek-V4.1-Flash-1017 EXL3 2.9 bpw, tools/prefill_cold.py, cold 64K prompt, spill off, fresh prompts a round.
  • Chunk 2048 (today's line): 30.87 s.
  • Chunk 4096: 28.14 s, and 16K is 7.35 s against 7.84 s, 32K is 14.40 s against 15.49 s.
  • Decode is unchanged: 60.4 / 59.9 / 64.5 / 69.2 tok/s.
  • Chunk 8192: does not run, because its MoE step needs about 1.3 GiB more than engine._memory_ceiling leaves.

Why

  • A chunk is one prompt pass of TF_DS_PREFILL_CHUNK rows, one row a prompt token, so a bigger chunk gives each expert launch more rows and reads the weights once for more of them.
  • The gather overlap was built as the open item described (two halves, one stream for every collective, stage-major) and measured 0%: half 1's attention waits for half 0's ring writes, and splitting the rows halves each launch.

Type

  • type: results: run results or a close-out

Receipt

  • Exactness: the chunk size is not bit-neutral, so 4096 gives other tokens than 2048, reproducible within a configuration (26 greedy prompts, same file on two runs).
  • Not run: other checkpoints or families; a single GB10, where a 4096-row chunk has less headroom.

Checklist

  • No personal data, machine names, internal hosts or local paths. No AI attribution lines.
AI disclosure

AI: Claude Opus 5.5 via Hermes Agent
Checked: (pending the author's review)

…048, and the overlap is not

Two GB10 (TP2), DeepSeek-V4.1-Flash-1017 EXL3 2.9 bpw, tools/prefill_cold.py, cold 64K prompt, spill off, fresh prompts
a round: 4096 rows 28.14 s against 30.87 s at 2048. 16K 7.35 against 7.84 s, 32K 14.40 against 15.49 s, decode
unchanged.

The gather overlap was built as SECTION 6 described (two halves, one stream for every collective, stage-major) and
measured 0%: half 1's attention waits for half 0's ring writes, and each expert launch gets half the rows.

8192 rows does not run: its MoE step asks for ~1.3 GiB more than engine._memory_ceiling leaves.
@imD-5
imD-5 requested a review from Elevatormusic as a code owner October 25, 2026 16:49
@imD-5 imD-5 closed this Oct 25, 2026
@imD-5
imD-5 deleted the results/prefill-chunk branch October 25, 2026 16:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant