Skip to content

sync: merge upstream 69a147dfc (native LoRA #1792) - #46

Merged
listar2000 merged 8 commits into
mainfrom
sync-69a147dfc
Oct 19, 2026
Merged

listar2000 merged 8 commits into
mainfrom
sync-69a147dfc

Conversation

@listar2000

@listar2000 listar2000 commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Outcome

main takes the next upstream image, which adds upstream's native LoRA framework. This is the base the DeepSeek-V4.1 LoRA work builds on; on its own it changes nothing for the recipes we run.

before after
upstream base af4413b74 (2026-10-14) 69a147dfc (2026-10-16), 6 upstream commits
base image radixark/miles:dev b836fec… radixark/miles:dev-202610160544 c64fa34…
SGLang / Megatron-LM in the image 7b6993a / 9df207f same
native LoRA for raw mode (miles/backends/megatron_utils/lora/native/) no yes (upstream #1792)

69a147dfc is the first upstream commit after #1792 that a published upstream image was built from (read from the image's /root/miles/.git), as the rulebook requires for a between-releases sync.

Contract

  • Base image changes to radixark/miles:dev@sha256:c64fa344e3a86715f03c0a1b6a422c474e0035355591a2f6da87bf52a74c52da; same CUDA, torch, SGLang and Megatron commits. Python packages are unchanged: no docker/, requirements.txt or pyproject.toml change in the range.
  • W&B and image labels show upstream:v0.1.2+69a147dfc2.
  • Upstream removed --log-probs-max-tokens-per-gpu (#4118). No recipe in miles_ext sets it.

Side-effects

The six upstream commits:

  • #1792 native LoRA for raw mode. It replaces the Kimi K3 and Inkling LoRA plugins (miles_plugins/models/{kimi_k3,inkling}/lora.py are deleted) with a registry and per-architecture specs. Only active with --lora-* flags.
  • #4099 torch-native per-token loss normalizer. Torch-native backend only; the Megatron loss path does not pass the new argument.
  • #4114 custom modules with --skip-actor-forward-only. Opt-in.
  • #4118 removes --log-probs-max-tokens-per-gpu.
  • #4120 (test) and #4112 (docs).

No merge conflicts; no fork fix or hook needed re-applying. Open PRs #36 and #45 do not touch the changed files.

Done

  • Merge of upstream 69a147dfc (Fork-Infra: sync-69a147dfc).
  • miles_ext/stack.py: UPSTREAM_BASE and BASE_IMAGE for that commit.

Verification

  • python fork/tools/ledger.py check: ok (119 fork commits, 43 upstream files touched).
  • fork/vendored.json: the only vendored file (Harbor sail.py) is outside the range.
  • REVIEW_PATHS diff (fork/tools/sync.py): only miles/utils/arguments.py (the flag removal above).
  • CPU tests in the miles-mobius image with this tree: pytest miles_ext/tests tests/fast/backends/megatron_utils/lora tests/fast/backends/megatron_utils/test_{lora_utils,lora_model_branches,checkpoint,model_initialize}.py: 419 passed, 10 skipped.
  • Base image pins, read from the new image's .git refs (2026-10-19): Miles 69a147d, SGLang (sglang-miles) 7b6993a31, Megatron-LM (miles-main) 9df207fd1. SGLang and Megatron are the same commits as the previous base image, so the BASE_IMAGE comment's "plus 9 SGLang and 1 Megatron commits" still holds.
  • Flag-off GPU step on the new base image (4-layer DeepSeek-V4.1 slice, 1x B300:8, GPU check B R0's exact setup with LoRA off; W&B mobiuslab/miles-smoke/ni2fatd9): step 0 log-prob gap 0.1100 vs R0 0.1103, KL 0.0139 vs 0.0138, grad norm 1.008 vs 0.986; the first-sync bit-exact weight check passed and the NVMe optimizer step ran (rc 0).
  • --check-only from this head (image built by Modal from 7b43958, recipe dsv41-flash-tb4-overfit16, 1 H100): check: ok. The CPU-only parse fails with "CUDA driver is a stub library", as it does on main (Megatron's parse_args needs CUDA).

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.

5 participants