Conversation
Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
Contributor
Author
|
/ok to test 717ee4a |
Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
Contributor
Author
|
/ok to test 03b9ee2 |
Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
Contributor
Author
|
/ok to test c759c71 |
Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
Contributor
Author
|
/ok to test 14fb0eb |
Four independent dependency problems surfaced when running the nightly
suites on the vllm 0.28.0 / torch 2.13.0 bump. All of them are in the
resolved environment rather than in vLLM itself.
* cutlass-dsl: stop excluding `nvidia-cutlass-dsl-libs-base`. The exclusion
worked around cutlass#3259 (4.5.x libs-base and libs-cu13 overwrite 180
shared files, 99 with different content). At 4.6.x the wheels are split
cleanly: libs-base carries the whole Python `cutlass` DSL and libs-cu13
only the CUDA-13 `_cutlass_ir` extension, with zero overlapping files.
flashinfer 0.6.16's `gdn_prefill` imports `cutlass.cute` at module load
and vLLM 0.28 imports `gdn_prefill` eagerly, so with libs-base excluded
every Qwen3.5 worker and every Blackwell vLLM worker died with
`ModuleNotFoundError: No module named 'cutlass.cute'`. The mcore extra's
own `nvidia-cutlass-dsl==4.5.2` pin moves to 4.6.2 so the training venv
does not pick up the overlapping 4.5.x pair (flashinfer 0.6.8.post1
accepts >=4.4.2). The trtllm fork still resolves 4.5.0 through
tensorrt-llm; that venv is already unusable on torch 2.13 (see the PR).
* flash-attn: bound its source build with `MAX_JOBS=4`. No flash-attn 2.8.x
wheel exists for torch >= 2.11, so the bump switched both architectures
to an sdist build. flash-attn's setup.py sizes MAX_JOBS from the host's
free memory (not the cgroup) and cpu_count()//2 and runs nvcc with
--threads 4, which OOM-killed cicc on every nemo-ci runner
(`ResourceExhausted`). 4x4 built cleanly on both architectures.
* nvidia-modelopt: c3b913b9 -> 613e5e8b. The old vLLM plugin registers a
quant module on `fused_moe.layer.FusedMoE`, which 0.28 removed. ModelOpt
swallows the AttributeError inside `import_plugin`, leaving the linear
classes registered but the module absent from sys.modules; NeMo-RL's
explicit re-import in `vllm_quant_patch.py` then re-runs the decorators
and fails with `RowParallelLinear already registered`, killing every
fakequant nvfp4 test. 5dde396bd (Aug 4) ported the plugin to
`RoutedExperts`.
* numpy: cap the override at `<2.5`. vLLM 0.28 pins `numba==0.65.0`, whose
metadata requires `numpy<2.5`; the `numpy>=2.1.0` override forced 2.5.1
past it and numba refused to import in the vLLM venv ("Numba needs NumPy
2.4 or less"). Resolves to 2.4.6, still above tensorrt-llm's `<2.4` cap.
Lock diff beyond marker churn: numpy 2.5.1 -> 2.4.6, cutlass-dsl 4.5.2
dropped, libs-base 4.5.0/4.6.0/4.6.2 and libs-core 4.6.0/4.6.2 added,
modelopt 0.46.0.dev86 -> 0.47.0rc1.dev36.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
… vLLM 0.28 Two vLLM-internal APIs that the fp8 rollout integration relies on changed between 0.25.1 and 0.28.0. Both broke at worker construction on the nightlies and were misreported by the error extractor as import errors. * `make_fp8_moe_kernel` (now in `fused_moe/oracle/fp8.py`, still re-exported from `quantization/fp8.py`) dropped its `layer` kwarg; 0.25 only forwarded it to the FlashInfer TRTLLM experts. Passing it raised `TypeError: make_fp8_moe_kernel() got an unexpected keyword argument 'layer'` in every fp8 MoE test (qwen3.5-35B ep16tp2_fp8, moonlight fp8_e2e). * The attention layer no longer carries `calculate_kv_scales`; dynamic scales are a KV-cache dtype now (`kv_cache_uses_per_token_head_scales`) and the static-scale branch keys off `is_quantized_kv_cache`. Our refit-friendly copy of `BaseKVCacheMethod.process_weights_after_loading` failed with `AttributeError: 'Attention' object has no attribute 'calculate_kv_scales'` (qwen3-8b fp8_kvcache). Re-mirror upstream 0.28: per-token-head dtypes short-circuit, the fp8 branch uses `is_quantized_kv_cache`, and the host `_k_scale_cpu`/`_v_scale_cpu` copies are refreshed on refit. Parameters are still not deleted so refit can keep updating them. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
vLLM 0.28 (vllm-project/vllm#50411) calls the HF image processor with `do_rescale=False, do_normalize=False` and re-applies both on the GPU in the vision tower's dtype. The policy side normalizes the same images on the CPU in fp32 through the same processor, and the nightly token_mult_prob_error / gen_kl_error checks assume identical inputs on both sides, so default `mm_device_do_normalize` to False and keep the 0.25 path. Verified on CPU with transformers 5.12.1 that the fused path is exact in fp32 but differs by up to 0.019 (about 1.7% of the pixel std) in bf16; upstream has also already shipped a silent-corruption fix for the device path (vllm-project/vllm#55370). Users can opt back in via policy.generation.vllm_kwargs.mm_device_do_normalize=true. This is a parity fix, not a confirmed root cause: on the 0.28 nightlies both Qwen2.5-VL-3B recipes (DTensor and Megatron) show token_mult_prob_error of 2e2-2e4 against 1.02 on main with reward collapsing to 0.3, and the same-image-path Qwen2.5-Omni audio recipe is unaffected. See the PR description for the open investigation. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Yi-Fu Wu <yifu.wu@gmail.com>
Supply unused CP-local position IDs to satisfy Megatron-Core's MTP assertion. Preserve existing positions and exclude multimodal, subclass, and learned-absolute-position paths. Add regression tests.
Contributor
Author
|
closed in favor of 0.29 bump #4080 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do ?
Bumps vLLM from 0.25.1 to 0.28.0, which moves the whole environment to torch 2.13.0 (torchvision 0.28.0, flashinfer 0.6.16.post3, nvidia-cutlass-dsl 4.6.2, tilelang 0.1.12, llguidance 1.7.x). Still a draft: the first nightly run on both SKUs is summarized below and the fixes it required are in, but a rebuild and re-run are needed to confirm them, and the PR is currently not mergeable against
main(needs a rebase;mainchangeddocker/Dockerfilein #4002).Changes
Bullets are prefixed with the commit that made the change.
Dependencies (
pyproject.toml/uv.lock)0.25.1→0.28.0from PyPI (default cu130 wheels for both arches), torch2.11.0→2.13.0, torchvision0.26.0→0.28.0,flashinfer-python/-cubin/-jit-cache0.6.13→0.6.16.post3,nvidia-cutlass-dsl[cu13]4.5.2→4.6.2in thevllmextra, tilelang<0.1.13,llguidance>=1.7.0,<1.8.0. flash-attn switches from the pinnedcu13torch2.10GitHub wheels toflash-attn==2.8.1(sdist) because no 2.8.x wheel exists for torch ≥ 2.11.NEMO_GYM_VLLM_VERSION0.24.0→0.25.1to match the Gym submodule'svllm==0.25.1/flashinfer-python==0.6.13pins. This also fixes the gym image onmain, which has failed to build since feat(sc): gate-authoritative token capture via an external TransferQueue sink #3837 (Sept 5) withNo solution foundonflashinfer-python==0.6.12vs0.6.13.nvidia-cutlass-dsl-libs-baseis no longer excluded. The exclusion worked around cutlass#3259 (the 4.5.xlibs-baseandlibs-cu13wheels overwrite 180 shared files, 99 with different content). 4.6 split the wheels cleanly:libs-baseships the entire PythoncutlassDSL andlibs-cu13only the_cutlass_ir.cu13extension, zero overlapping files (verified by unzipping 4.6.0 and 4.6.2). flashinfer 0.6.16'sgdn_prefill.pyimportscutlass.cuteat module load and vLLM 0.28'sqwen_gdn_linear_attn.pyimportsgdn_prefilleagerly, so with the exclusion in place every Qwen3.5 worker and every Blackwell vLLM worker died withModuleNotFoundError: No module named 'cutlass.cute'(17 nightly tests plus an external 64-node super run). Themcoreextra's ownnvidia-cutlass-dsl==4.5.2pin moves to 4.6.2 so the training venv does not inherit the 4.5.x overlapping pair (flashinfer 0.6.8.post1 accepts>=4.4.2). The only fork still on 4.5.0 istrtllm(via tensorrt-llm), which is unusable on torch 2.13 anyway — see Known issues.MAX_JOBS=4via[tool.uv.extra-build-variables]. flash-attn'ssetup.pysizes its parallelism from the host's free memory (not the cgroup) andcpu_count()//2, with--threads 4per nvcc. Every nemo-ci build attempt on both architectures died withResourceExhaustedafter dozens ofKilled "$CICC_PATH/cicc"(6 attempts, 22–63 kills each). 4×4 built cleanly on aarch64 (2h47m) and x86 (~2h, alongside TE and flash-mla); the CI images below were produced with the same bound passed as a--build-arg.c3b913b9→613e5e8b. The old vLLM plugin registers a quant module onfused_moe.layer.FusedMoE, which 0.28 removed. ModelOpt swallows thatAttributeErrorinsideimport_plugin(the trace showsFailed to import modelopt vllm plugin due to: AttributeError(... has no attribute 'FusedMoE')), leavingRowParallelLinear/ColumnParallelLinear/… registered but the module gone fromsys.modules; NeMo-RL's explicit re-import invllm_quant_patch.pyre-runs the decorators and every fakequant nvfp4 test died withAssertionError: RowParallelLinear already registered!. 5dde396bd (Aug 4) ported the plugin toRoutedExperts; the pinned commit predates it by 137 commits.<2.5(resolves 2.4.6). vLLM 0.28 pinsnumba==0.65.0, whose metadata requiresnumpy<2.5; thenumpy>=2.1.0override forced 2.5.1 past it and numba refused to import in the vLLM venv ("Numba needs NumPy 2.4 or less"). Not fatal by itself — vLLM's optional-module probe catches it — but it left a broken numba in the venv and polluted every trace.libs-base4.5.0/4.6.0/4.6.2 andlibs-core4.6.0/4.6.2 added, modelopt 0.46.0.dev86 → 0.47.0rc1.dev36.uv lock --checkpasses;tests/unit/test_dependency_pins.pypasses.vLLM source patches / worker (
patches.py,vllm_worker.py)_patch_vllm_shm_broadcast_bind_retryre-targeted: 0.28 binds theMessageQueueremote socket to port 0 directly (no probe/bind race any more) but ignoresVLLM_PORT; the patch restores reserved-band selection with bind retries so engine sockets stay out of the ephemeral range.mm_device_do_normalizedefaults toFalse. vLLM 0.28 (#50411) calls the HF image processor withdo_rescale=False, do_normalize=Falseand re-applies both on the GPU in the vision tower's dtype. The policy normalizes the same images on the CPU in fp32 through the same processor, and the nightly probability-error checks assume identical inputs on both sides. Verified on CPU with transformers 5.12.1: the fused path is exact in fp32 but differs by up to 0.019 (≈1.7 % of the pixel std) in bf16. Upstream has already shipped one silent-corruption fix for the device path (#55370, encoder cudagraphs). This is a parity measure, not a confirmed fix for the Qwen2.5-VL mismatch below. Opt back in withpolicy.generation.vllm_kwargs.mm_device_do_normalize=true.fp8 generation (
quantization/fp8.py)make_fp8_moe_kernellost itslayerkwarg in 0.28 (0.25 forwarded it only to the FlashInfer TRTLLM experts). Both call sites updated; the unit test's expected kwargs follow.process_weights_after_loading_kvre-mirrored on 0.28'sBaseKVCacheMethod.process_weights_after_loading: the attention layer no longer hascalculate_kv_scales(dynamic scales are a KV-cache dtype now,kv_cache_uses_per_token_head_scales), the static-scale branch keys offis_quantized_kv_cache, and the host_k_scale_cpu/_v_scale_cpucopies are refreshed on refit. Parameters are still kept so refit can update them.Distributed (
collectives.py)all_gather_into_tensor→all_gather_single(torch 2.13 API).Known issues not fixed here
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr…3003d70f) pinstorch==2.11.0andsglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0andsglang-kernel==0.4.6.post1. Needs a sglang-miles rebase; a speculative pin bump is not safe because a faileduv sync --extra sglangfails the entire image build. Notemain's sglang tests also fail today ontorch.multiprocessing.reductions._rebuild_cuda_tensor_original.tensorrt_llm/libs/libth_common.so: undefined symbol _ZNR5torch7Library4_def…inTrtllmAsyncGenerationWorker.__init__torch<=2.13.0a0).vlm_grpo-qwen2.5-vl-3b-instruct-clevr-1n8g-{dtensor2tp1,megatrontp2}.v1++policy.generation.vllm_cfg.enforce_eager=True.ModelOpt layerwise reload is incomplete for 23 layer(s): …routed_experts: 134701312/179601664 elementsgrpo-nanov3-30ba3b-4n4g-megatron-qa-nvfp4-w4a16-real(GB200)RoutedExperts. The w4a4 sibling passes. Needs an audit of the real-quant refit against the 0.28 MoE weight layout, probably together with the ModelOpt bump.mainSept 8 ran to completion and failed only on golden metrics.grpo-nemotron3-super-120BA12B-16n8g-automodel-ep8.v2(NCCL watchdog timeout, 600 s) andvlm_grpo-qwen3-omni-30ba3b-audiomcq-4n8g-megatron.v1(gloo recv timeout, 1800 s, insideVllmGenerationWorker.generate)nixl_epextension built against torch 2.11 —nixl_ep_cpp.cpython-313-…so: undefined symbol _ZN3c104impl3cow23materialize_cow_storage…has_nixl_ep()probe catches it and disables the optionalnixl_epall2all backend, but the traceback appears in every vLLM worker log and nemo-ci's error extractor picked it as the "cause" of seven unrelated failures. Bump nixl to a torch-2.13 build in a follow-up.grpo-nemotron3-super-120BA12B-8n4g-megatron(GB200) —Unquantized FlashInfer TRTLLM refit does not yet support a co-trained MTP draftermainSept 8 identical). Blackwell picks the FlashInfer TRTLLM BF16 MoE backend, and #3545 rejects co-trained MTP on that path. Either addmoe_backend: tritonto the recipe'svllm_kwargs(supported since 0.25) or extend_weight_update_lifecycleto include the drafter's TRTLLM modules in the layerwise reload. Separate PR.Notes for reviewers
[tool.uv]exclusion that was load-bearing at 4.5.x. I verified the 4.5.2 overlap (180 files) and the 4.6.x non-overlap (0 files) directly from the PyPI wheels, anduv pip installof the overlapping 4.5.2 pair does not error — it silently picks a winner per file — which is why themcorepin had to move to 4.6.2 as well.mm_device_do_normalize=Falsechanges a vLLM default for every multimodal recipe. It restores the 0.25 behaviour byte-for-byte on the processor side; the cost is the CPU normalize vLLM's PR was avoiding.nemo_rl/modelopt/models/generation/vllm_quant_patch.pyalready guards against double registration ofRoutedExperts, and_drop_nonclass_quant_registry_keysbecomes a no-op rather than a conflict.tests/unit/test_dependency_pins.pypasses on the new lock;test_vllm_fp8_quantization.pywas updated but could not be executed here (no vLLM in the host venv) — it needs the rebuilt image.mainjobs died in 7 s at checkout on a corrupted shared-workspace directory (.nemo-ci-triage/...: Bad address), and 3 jobs per side hit the offline Hugging Face cache miss for gemma4-12b / nanov3.5 / qwen3-8-27b. PR-side checkout failures were retried;main's were not, so those tests have no same-day control and Sept 8's nightly is used where it helps.Test plan
nightlysuite on both SKUs against the PR head, compared per test with the same-daymainnightly (RL74b857c8e, 0 commits behind the merge-base) and Sept 8's (85ec4510c) as fallback. First pass below; second pass after the rebuild with the fixes above.disabled.txtqwen3.5 entries: not yet run.Results — nightly, first pass (PR head 14fb0eb, images built with
MAX_JOBS=4/8)Pipelines: PR H100 nemo-ci#66971980 (tests 67032553) · PR GB200 nemo-ci#66965177 (tests 67018071) · main Sept 9 nemo-ci#66919718 (tests 67009322 H100, 67009271 GB200) · main Sept 8 nemo-ci#66728092. The original combined pipeline nemo-ci#66948077 never produced an image (flash-attn OOM on all six build attempts).
Legend: ✅ pass · ❌ fail · ⏳ running · — not in that run. Snapshot while both PR lanes were still finishing; will be refreshed.
Total PR test jobs: 171 (H100 131, GB200 40). Regressions vs main: 17 · both fail: 31 · PR passes where main failed: 21 · both pass: 80 · still running: 22.
PR fails, main passes (17)
llm_dapo_gemma4_e2b_it_1n8g_fsdp2_automodelH100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load.llm_distillation_nano3_30ba3b_4n4g_megatron_qa_nvfp4_modelopt_specGB200
AssertionError: RowParallelLinear already registered!— ModelOpt c3b913b9's vLLM plugin dies on the removedfused_moe.layer.FusedMoE,import_pluginswallows it, and our explicit re-import re-registers the linear classes. Bumped ModelOpt to 613e5e8b.llm_distillation_qwen3_1_7b_1n8g_megatron_qa_nvfp4H100
AssertionError: RowParallelLinear already registered!— ModelOpt c3b913b9's vLLM plugin dies on the removedfused_moe.layer.FusedMoE,import_pluginswallows it, and our explicit re-import re-registers the linear classes. Bumped ModelOpt to 613e5e8b.llm_grpo_deepscaler_1_5b_8KH100
max(gen_kl_error) < 0.0005at 0.00052; main passes. Worth re-checking after 170beee.llm_grpo_llama3_1_8b_instruct_1n8g_megatron_fp8_rollouts_v3H100
ratio_above(token_mult_prob_error, 1.1) < 0.1at exactly 0.100. Distribution matches main (avg 1.210 vs 1.207, KL 0.0040 vs 0.0039, reward 0.447 vs 0.447; PR max 6.8 vs main 11.8).llm_grpo_nemotron3_super_120BA12B_16n8g_automodel_ep8_v2H100
llm_grpo_qwen2_5_math_1_5b_instruct_2n8g_fsdp2tp1_sglangH100
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build).llm_grpo_qwen3_1_7b_2n4g_fsdp2_trtllmGB200
tensorrt_llm/libs/libth_common.so: undefined symbol _ZNR5torch7Library4_def.... No TRT-LLM release supports torch 2.13.0 yet (1.3.0rc26 requirestorch<=2.13.0a0).llm_grpo_qwen3_5_35ba3b_2n8g_megatron_ep16tp2_fp8H100
TypeError: make_fp8_moe_kernel() got an unexpected keyword argument 'layer'— 0.28 dropped the kwarg.llm_grpo_qwen3_5_35ba3b_2n8g_megatron_ep16tp2cp2H100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load.llm_grpo_qwen3_5_9b_1n8g_megatronH100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load.llm_grpo_qwen3_8b_base_1n8g_fp8_kvcache_megatronH100
AttributeError: 'Attention' object has no attribute 'calculate_kv_scales'— vLLM 0.28 removed the attribute; the fp8 KV-cache post-processing is re-mirrored on 0.28'sBaseKVCacheMethod.llm_sft_gpt_oss_20b_1n8g_fsdp8ep8_automodelH100
grad_norm[50] > 10.0at 9.98; main's GB200 twin fails the same lower bound at 9.94.vlm_vlm_grpo_gemma4_e4b_geo3k_1n8g_automodelH100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load.vlm_vlm_grpo_qwen2_5_vl_3b_instruct_clevr_1n4g_megatrontp1_v1GB200
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. (Blackwell attention path reaches the same import for every model.)vlm_vlm_grpo_qwen2_5_vl_3b_instruct_clevr_1n8g_dtensor2tp1_v1H100
++policy.generation.vllm_cfg.enforce_eager=True.vlm_vlm_grpo_qwen3_omni_30ba3b_audiomcq_4n8g_megatron_v1H100
VllmGenerationWorker.generate; main passes. Not yet root-caused.PR fails, main fails (26)
llm_dapo_gemma4_12b_it_2n8g_fsdp2_automodelH100
llm_dapo_nanov3_5_30BA3B_4n8g_automodelH100
llm_dpo_mistral_nemo_instruct_2407_1n8g_fsdp2tp8_actckpt_longH100
loss[1] < 0.70at 0.7087).llm_dpo_nanov3_30B3AB_1n4g_fsdp4ep4_automodelGB200
< 5); same on main.llm_dpo_qwen2_5_math7b_1n8g_megatron_fused_linear_logprobsH100
accuracy[10] >= 0.5at 0.40625 — bit-identical value on main.llm_grpo_moonlight_16ba3b_4n4g_megatronGB200
ModuleNotFoundError: No module named 'cutlass._mlir.dialects'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. main fails later with the pre-existing Moonlight state-dictKeyError.llm_grpo_moonlight_16ba3b_4n8g_megatronH100
KeyError: decoder.layers.N.self_attention.linear_q_proj.layer_norm_weight ... not in state dict; identical on main.llm_grpo_moonlight_16ba3b_4n8g_megatron_fp8_e2eH100
AttributeError: 'DeepseekV3Config' object has no attribute 'qk_head_dim'; identical on main.llm_grpo_moonlight_16ba3b_4n8g_megatron_tq_simpleH100
KeyErroras main.llm_grpo_nanov3_30ba3b_4n4g_megatron_qa_nvfp4_w4a16_realGB200
ModelOpt layerwise reload is incomplete for 23 layer(s): ...routed_experts: 134701312/179601664 elements— exactly 3/4 of each w4a16 expert tensor arrives, so the streamed layout no longer matches 0.28'sRoutedExperts. main Sept 8 ran to completion and failed only on golden metrics.llm_grpo_nemotron3_super_120BA12B_16n8g_megatronH100
AssertionErrorinMegatronPolicyWorker.get_logprobs; identical on main.llm_grpo_nemotron3_super_120BA12B_8n4g_megatronGB200
Unquantized FlashInfer TRTLLM refit does not yet support a co-trained MTP drafter(#3545 guard; Blackwell selects the TRTLLM BF16 MoE backend); identical on main Sept 8.llm_grpo_qwen2_5_0_5b_1n4g_megatron_trtllm_noncolocated_asyncGB200
tensorrt_llm/libs/libth_common.so: undefined symbol _ZNR5torch7Library4_def.... No TRT-LLM release supports torch 2.13.0 yet (1.3.0rc26 requirestorch<=2.13.0a0). main fails later on golden metrics (token_mult_prob_error 20.7).llm_grpo_qwen2_5_1_5B_4n8g_megatron_yarn_256kH100
reward[30] > 0.5at 0.5; main fails the same check at 0.4375.llm_grpo_qwen2_5_math_1_5b_instruct_1n4g_fsdp2tp1_sglangGB200
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build).llm_grpo_qwen2_5_math_1_5b_instruct_1n4g_megatrontp1_sglangGB200
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build). main fails on its own_rebuild_cuda_tensor_originalAttributeError.llm_grpo_qwen2_5_math_1_5b_instruct_2n4g_megatrontp1_sglang_noncolocatedGB200
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build).llm_grpo_qwen2_5_math_1_5b_instruct_2n8g_megatrontp1_sglangH100
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build). main fails on its owntorch.multiprocessing.reductions._rebuild_cuda_tensor_originalAttributeError.llm_grpo_qwen3_5_35ba3b_2n8g_automodel_ep16H100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. main fails later with a DeepEP dispatch timeout.llm_grpo_qwen3_8_27b_2n8g_megatron_tp4pp2cp2H100
OSError: We couldn't connect to 'https://huggingface.co'(model not in the offline cache); identical on main.llm_ppo_qwen2_5_1_5b_gsm8k_2n8g_megatron_valuetp2sp_dynbatch_noncolocated_async_single_controllerH100
ValueError: SingleController checkpointing ... requires checkpointing.save_data_plane=true; identical on main.vlm_vlm_grpo_nemotron_omni_30ba3b_clevr_8n4g_megatron_generation_v1GB200
validation/accuracy[50] > accuracy[0] + 0.01fails on main Sept 9 too (0.652 vs 0.620); probability error is healthy (1.014).vlm_vlm_grpo_qwen2_5_vl_3b_instruct_clevr_1n4g_dtensor2tp1_v1GB200
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. Once past the import, expect the Qwen2.5-VL mismatch below.vlm_vlm_grpo_qwen2_5_vl_3b_instruct_clevr_1n8g_megatrontp2_v1H100
++policy.generation.vllm_cfg.enforce_eager=True. (main's Megatron variant misses only the 0.9 reward bound at 0.886 with healthy probability error.)vlm_vlm_grpo_qwen3_5_35ba3b_geo3k_2n8g_automodel_ep16H100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. main fails later with a DeepEP dispatch timeout.vlm_vlm_grpo_qwen3_5_35ba3b_geo3k_2n8g_automodel_ep16_tq_simpleH100
ModuleNotFoundError: No module named 'cutlass.cute'—nvidia-cutlass-dsl-libs-basewas excluded; at 4.6.x it is the wheel that ships the Python DSL, and flashinfer 0.6.16'sgdn_prefillimports it at module load. main fails later with a DeepEP dispatch timeout.PR fails, main had no result (infra) (5)
llm_dpo_nanov3_30B3AB_1n8g_fsdp8ep8_automodel_v2H100
loss[11] < 0.57at 0.5825 and step time 5.03 vs< 5. main's run died at checkout, so no same-day control. main job died at checkout (shared-workspaceBad address), no result.llm_grpo_nanov3_30ba3b_3n8g_megatron_dynamo_swe1H100
ValueError: NeMo Gym does not support generation backend 'dynamo'; main's run had no gym image and fails too (Sept 8 as well). main has no gym image (Gym pin vsNEMO_GYM_VLLM_VERSIONconflict since Sept 5).llm_grpo_qwen2_5_math_1_5b_instruct_2n8g_megatrontp1_sglang_noncolocatedH100
sgl_kernel/.../common_ops.abi3.so: undefined symbol _ZNK2at10TensorBase14const_data_ptr.... sglang-miles pinstorch==2.11.0/sglang-kernel==0.4.5; sglang 0.5.19 moved totorch==2.13.0/sglang-kernel==0.4.6.post1, so this needs a sglang-miles rebase, not a pin bump (a brokenuv sync --extra sglangwould fail the whole image build). main job died at checkout (shared-workspaceBad address), no result.llm_grpo_qwen3_30ba3b_4n8g_megatron_qa_nvfp4H100
AssertionError: RowParallelLinear already registered!— ModelOpt c3b913b9's vLLM plugin dies on the removedfused_moe.layer.FusedMoE,import_pluginswallows it, and our explicit re-import re-registers the linear classes. Bumped ModelOpt to 613e5e8b. main job died at checkout (shared-workspaceBad address), no result.llm_prorlv2_qwen2_5_math_1_5b_instruct_1n8g_fsdp2tp1_v2_tq_mooncakeH100
Bad address), no result.PR passes, main fails (5)
llm_grpo_math_qwen3_30ba3b_megatron_tp4_32kH100
llm_grpo_nanov3_30BA3B_4n4g_megatron_generation_noncolocated_mxfp8_rolloutsGB200
llm_grpo_qwen2_5_32b_32n8g_fsdp2tp8_actckpt_v3H100
llm_grpo_qwen3_30ba3b_4n8g_megatron_zmq_deltaweight_noncolocatedH100
llm_sft_gpt_oss_20b_1n4g_fsdp4ep4_automodelGB200
PR passes, main had no result (infra) (16)
llm_dpo_llama3_1_8b_instruct_4n8g_megatrontp2pp2_quickH100
Bad address), no result.llm_grpo_llama3_1_8b_instruct_2n8g_megatron_fp8_e2eH100
Bad address), no result.llm_grpo_llama3_2_1b_instruct_1n8g_megatron_tq_simpleH100
Bad address), no result.llm_grpo_nanov3_30BA3B_1n8g_fsdp2_tq_mooncake_v2H100
Bad address), no result.llm_grpo_qwen3_1_7b_1n8g_megatron_eagle3H100
Bad address), no result.llm_grpo_qwen3_1_7b_1n8g_megatron_super_swe1H100
NEMO_GYM_VLLM_VERSIONconflict since Sept 5).llm_grpo_qwen3_1_7b_2n8g_megatron_super_rlhfH100
Bad address), no result.llm_grpo_qwen3_30ba3b_8n8g_megatron_cp2_r3H100
Bad address), no result.llm_mopd_qwen3_1_7b_3n8g_megatron_packH100
NEMO_GYM_VLLM_VERSIONconflict since Sept 5).llm_mopd_qwen3_1_7b_3n8g_megatron_pack_single_controllerH100
NEMO_GYM_VLLM_VERSIONconflict since Sept 5).llm_ppo_qwen2_5_1_5b_gsm8k_1n8g_megatron_valuetp2sp_dynbatchH100
Bad address), no result.llm_ppo_qwen2_5_1_5b_gsm8k_2n8g_megatron_valuetp2sp_dynbatch_noncolocated_asyncH100
Bad address), no result.llm_prorlv2_qwen2_5_math_1_5b_instruct_1n8g_fsdp2tp1_v2H100
Bad address), no result.llm_sft_llama3_1_8b_1n8g_fsdp2tp2H100
Bad address), no result.llm_sft_llama3_1_8b_1n8g_megatronH100
Bad address), no result.vlm_vlm_grpo_nemotron_omni_30ba3b_clevr_1n8g_automodel_ep8_v2H100
Bad address), no result.Still running on the PR (22)
llm_grpo_deepscaler_1_5b_1n4g_8KGB200
llm_grpo_deepscaler_1_5b_8K_tq_simpleH100
Bad address), no result.llm_grpo_gemma3_1b_it_1n4g_fsdp2tp1GB200
llm_grpo_gspo_deepscaler_1_5b_8K_tq_simpleH100
llm_grpo_llama3_1_8b_instruct_2n4g_async_1off_single_controller_streaming2GB200
llm_grpo_llama3_1_8b_instruct_2n4g_fsdp2tp1_noncolocatedGB200
llm_grpo_llama3_1_8b_instruct_2n8g_fsdp2tp1_noncolocated_tq_simpleH100
llm_grpo_llama3_2_1b_instruct_1n4g_fsdp2tp1_v3GB200
llm_grpo_llama3_2_1b_instruct_1n4g_megatronGB200
llm_grpo_llama3_2_1b_instruct_1n4g_megatron_generationGB200
llm_grpo_llama3_2_1b_instruct_1n8g_fsdp2tp2_temp0_8_topp0_9_topk50_tq_mooncakeH100
llm_grpo_moonlight_16b_automodel_1n8g_ep8H100
llm_grpo_nanov3_30BA3B_2n8g_megatron_generation_noncolocated_async_gymH100
llm_grpo_nanov3_30BA3B_4n4g_megatron_generation_noncolocated_async_gymGB200
llm_grpo_qwen2_5_math_1_5b_instruct_1n4g_fsdp2tp1_v3GB200
llm_grpo_qwen2_5_math_1_5b_instruct_1n4g_megatron_single_controller_syncGB200
llm_grpo_qwen3_1_7b_6n8g_megatron_super_rlvrH100
Bad address), no result.llm_grpo_qwen3_30ba3b_thinking_swe1_16n8g_megatron_cp2_r3_async_gymH100
llm_grpo_qwen3_5_9b_1n8g_megatron_fp8H100
llm_grpo_qwen3_8b_base_dapo_2n8g_long_megatron_qa_nvfp4_w4a16H100
Bad address), no result.vlm_vlm_grpo_nemotron_omni_30ba3b_clevr_1n8g_megatron_tp8ep8_v1H100
Bad address), no result.vlm_vlm_grpo_nemotron_omni_30ba3b_mmpr_4n8g_megatron_tp8ep16_v1H100
AssertionError: defer_fp32_logits must be True if logprob_chunk_size is set.Both pass: 80 tests. PR passes, main still running: 0.
🤖 Generated with Claude Code