Skip to content

Bump DeepSeek-V4.1-Flash to miles dev-202610082133 image - #689

Closed
zhouhelena1 wants to merge 2 commits into
mainfrom
devin/1791518818-dsv41-miles-dev-image
Closed

zhouhelena1 wants to merge 2 commits into
mainfrom
devin/1791518818-dsv41-miles-dev-image

Conversation

@zhouhelena1

@zhouhelena1 zhouhelena1 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Closing this bc current image already has DeepSeek-V4.1 DSA attention kernel, so we already see the benefits of radixark/miles#3608. This new image does fix a TileLang forward bug at 16 heads with top-k 128, but this doesn't match our recipe, so I'd prefer sticking to the default image than switching to dev image.


Moves DeepSeek_V4_1_Flash_Recipe (8×8 H200) from the dedicated dsv41-h200-ea751aac8 image to the standard multi-arch dev image radixark/miles:dev-202610082133, pinned by digest. That image is miles f5757caab, which contains the radixark/miles#3605–#3634 kernel stack including #3608, with sglang-miles b84bec576 and Megatron-LM fd15ee20a. Other Miles recipes are unchanged.

Changes:

  • Recipe: new image pin. Adds SGLANG_OPT_DEEPGEMM_HC_PRENORM=0 to match upstream's run_deepseek_v4_1.py, which turns off the compensated-MHC derived-weight cache that goes stale under online weight updates.
  • DeepSeek patches: all 6 apply to the new image unchanged. Only their image/sglang revision docstrings and the renamed plugin path (deepseek_v41 → deepseek_v4_1) were updated.
  • patch_zero_std_metrics: now also matches the new uniform_rewards layout from Fix uniform reward percentages for numeric rewards radixark/miles#3722. That upstream change still puts an int 1 and a float 1.0 in different buckets. Unit tests added.
  • patch_advantage_distribution: finds log_utils.py at its new training_utils/metrics/ location (moved in training_utils: the shared layer for every training backend radixark/miles#3248). Before this fix it printed "not found" and was skipped.

Validation

3-step run of validate_model_configs.py check -m DeepSeek-V4.1-Flash -n 3 in helena-dev, compared with a run on the old image:

old image messy-plate-d27a30d8cf5a new image sophisticated-hoop-e728ce9825ea
reward (steps 1/2/3) 0.375 / 0.188 / 0.453 0.422 / 0.180 / 0.461
train↔rollout logprob abs diff 0.132 / 0.117 / 0.132 0.130 / 0.115 / 0.133
train↔rollout KL 0.056 / 0.043 / 0.057 0.056 / 0.042 / 0.058
grad norm 0.106 / 0.077 / 0.077 0.090 / 0.090 / 0.111
rollout time (s) 613 / 589 / 581 592 / 594 / 622
log_probs (s) 248 / 47 / 36 291 / 79 / 51
actor_train (s) 880 / 373 / 395 1018 / 341 / 356
checkpoint save (s) 412 436

Rollout traces for all 3 steps (128 samples each) look like the old image's. Responses are coherent and end with \boxed{} answers, and the number truncated at 4096 tokens is about the same (66/105/69 vs 71/103/70). The new image reports ppo_kl and pg_clipfrac as exactly 0. With one optimizer step per rollout that means the training forward pass now reproduces the log_probs pass bit for bit, where the old image differed by about 1e-4.

Wall time is roughly unchanged for this setup. In steps 2–3, actor_train is about 9% faster, which fits #3608's faster DSA attention. But optimizer step (about 4.5 min) dominates training time and the stack doesn't change it, while log_probs is somewhat slower. Pre-existing gaps that are the same on both images: dashboard stage labels for rollout substeps, and train_async substep timing.

Locally: ruff, format, compileall, pre-commit, and the tests/ files pass. Two dashboard test files, test_dashboard_ingestion_auth.py and test_dashboard_metrics.py, hang locally; this PR doesn't touch them.

Checklist

  • Example is documented with comments throughout, in a Literate Programming style.
  • Example does not require third-party dependencies to be installed locally
  • Example pins its dependencies
    • Example pins container images to a stable tag, not a dynamic tag like latest
    • Example specifies a python_version for the base image, if it is used
    • Example pins all dependencies to at least minor version, ~=x.y.z or ==x.y
    • Example dependencies with version < 1 are pinned to patch version, ==0.y.z

Pins the standard multi-arch miles dev image (miles f5757caab with the
radixark/miles#3605-#3634 kernel stack) and updates the shared zero-std and
advantage-distribution patches for the moved/rewritten upstream sources.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@zhouhelena1 zhouhelena1 closed this Oct 9, 2026

This branch is waiting to be deployed

1 waiting deployment
modal — 5bddcd3f Waiting Oct 9, 2026 by devin-ai-integration[bot] via validate (Qwen3.5-0.8B) #2934
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