Repository navigation
chore: AUT-2689 nightly sync main into dev (2026-10-30) - #8813
Conversation
…NVIDIA#8532) Signed-off-by: Jiangfei Duan <jiangfeid@nvidia.com>
…#7961) Signed-off-by: Deepak Narayanan <dnarayanan@nvidia.com> Signed-off-by: Jiangfei Duan <jiangfeid@nvidia.com> Signed-off-by: ykarnati <ykarnati@nvidia.com> Co-authored-by: Deepak Narayanan <dnarayanan@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: ykarnati <ykarnati@nvidia.com>
… recompute with mHC (NVIDIA#7521) Signed-off-by: Hollow Man <hollowman@opensuse.org> Signed-off-by: Philip Petrakian <ppetrakian@nvidia.com> Co-authored-by: Philip Petrakian <ppetrakian@nvidia.com>
…mentations into dedicated files (NVIDIA#8424) Signed-off-by: Kwangjun Ahn <kwangjuna@nvidia.com>
…A#8116) Signed-off-by: Xiaoda Zhang <xiaodaz@nvidia.com>
… one DP group (NVIDIA#8502) Signed-off-by: William Dykas <wdykas@nvidia.com>
Signed-off-by: Deepak Narayanan <dnarayanan@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Deepak Narayanan <dnarayanan@nvidia.com> Co-authored-by: Robert McHardy <rmchardy@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Maanu Grover <maanug@nvidia.com>
Signed-off-by: Ajay Balasa <abalasa@nvidia.com>
…DIA#8145) Signed-off-by: Michal Futrega <mfutrega@nvidia.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: oliver könig <okoenig@nvidia.com>
Signed-off-by: Philip Petrakian <ppetrakian@nvidia.com>
Signed-off-by: Deyu Fu <deyuf@nvidia.com> Co-authored-by: qizhang <qizhang@nvidia.com> Co-authored-by: Xin Yao <xiny@nvidia.com> Co-authored-by: HaochenYuan <haocheny@nvidia.com> Co-authored-by: Ajay Balasa <abalasa@nvidia.com>
…A#7617) Signed-off-by: FunJim <xunjin.zheng@outlook.com>
Signed-off-by: ilml <tolong@nvidia.com>
Signed-off-by: Deepak Narayanan <dnarayanan@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Helen Ngo <helenn@nvidia.com>
…ize = 1 (NVIDIA#8449) Signed-off-by: Ravi Ghadia <rghadia@nvidia.com>
…pills (NVIDIA#8527) Signed-off-by: Deepak Narayanan <dnarayanan@nvidia.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… gates (NVIDIA#7054) Signed-off-by: Hollow Man <hollowman@opensuse.org>
Signed-off-by: Philip Petrakian <ppetrakian@nvidia.com>
…VIDIA#7751) Signed-off-by: Jingyue Wu <jingyuew@nvidia.com> Co-authored-by: Ajay <abalasa@nvidia.com>
Signed-off-by: Waterpine <biansonghz@gmail.com>
Signed-off-by: Waterpine <biansonghz@gmail.com>
Signed-off-by: Jingyue Wu <jingyuew@nvidia.com>
Signed-off-by: oliver könig <okoenig@nvidia.com>
…orward (NVIDIA#8420) Signed-off-by: ykarnati <ykarnati@nvidia.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
|
/ok to test 08b2dce |
|
CI status for head
Requested maintainer actions:
Local H100 validation of this head: 84 of 84 functional rows passed. Of the 71 unit rows, 69 passed and 2 were skipped upstream because NIXL is not installed. |
FDecaYed
left a comment
There was a problem hiding this comment.
Please reconcile the dependency requirements of #8013 before merging this sync.
The imported clamped squared-ReLU FlashInfer path needs ActivationType.ClampedRelu2 and clamped_relu2_limit (resolver). Main brought that feature in with FlashInfer >=0.7.2, but this PR still requires <0.7.0 and locks 0.6.18.post1. That version lacks both APIs, so selecting FlashInfer + squared_relu + a positive tanh clamp fails during model construction. The explicit RuntimeError prevents silent corruption, but does not preserve the incoming main capability.
Please reconcile the compatible dependency pins, lockfile and image inputs, checking the accompanying cuDNN frontend requirement too; or explicitly defer this feature with its supported configuration boundary. A note that the dependency triple matches dev does not resolve this mismatch.
Separately, this head's CICD stopped at the determinism-coverage gate, so the unit, functional and downstream jobs were skipped. Those are validation gaps, not observed training failures. The local H100 results and refreshed mHC goldens still need accessible source/environment-bound evidence before approval.
|
@FDecaYed, thank you for the review. This reply is for head 1. #8013 dependencies I confirmed the finding. #8013 (
The sync rule keeps these three files identical to dev. So this head locks FlashInfer 0.6.18.post1 and cuDNN frontend 1.29.0. Dev was already behind main here: dev pins I took the deferral option and did not change the dependency files. I asked for this boundary to be added to the PR description:
The local H100 unit run covered the error path: If you want dev to adopt FlashInfer 0.7.2 and cuDNN frontend 1.32 in this PR, reply with that decision. That change goes outside the sync rule for the dependency files. It needs a regenerated 2. CI evidence on this head I agree. The local H100 results do not replace CICD on this head. CICD run 41299281492 stopped at linting, and the only linting failure is the 6 kernel-determinism-coverage findings. So the unit, functional, MBridge and NeMo-RL jobs were skipped. To get CI evidence on
The functional jobs will then check the 4 refreshed mHC golden-value files in |
FDecaYed
left a comment
There was a problem hiding this comment.
Thanks, the explicit deferral addresses my dependency finding. For clamped squared-ReLU, the documented torch/vLLM alternatives retain the clamp, while the locked FlashInfer version rejects that combination at construction rather than silently changing behavior. I’m no longer requesting a dependency upgrade in this sync.
Approval is still pending the validation evidence noted in my earlier review: accessible runtime results tied to this source and environment, and the generation logs/inputs for the four refreshed mHC goldens. The current CICD attempt stopped before unit, functional and downstream tests; skipped jobs are not runtime failures. Existing local artifacts or appropriately scoped CI evidence can address the gap—this clarification alone does not require another full matrix.
|
@FDecaYed Thank you for the second review. This reply answers the open item: runtime results, and the inputs and logs for the 4 refreshed mHC golden files. It does not change code. The PR head is still Runtime environment (all local runs)
How the 4 golden files were made
Verification of the new files Why the values changed
In #7521, main refreshed its own mHC golden values. These 4 test cases exist only on dev.
Access GitHub CI
|
FDecaYed
left a comment
There was a problem hiding this comment.
Thanks, this clarifies the environment and how the four mHC goldens were generated. Could you post the existing log excerpts (or accessible artifact links) for those runs: source/image and executed recipe, training completion, and the DETERMINISTIC/APPROXIMATE results? Please include the generated-file hashes so we can match them to the committed goldens.
I couldn't resolve f583febb in the fork. Please include its full SHA and the source diff to 08b2dcef, or an accessible source snapshot if that commit is no longer published. The result summaries for the previously reported unit/functional runs would also help close the runtime evidence gap. No new test matrix requested here—just the existing evidence.
|
@FDecaYed, this comment answers review 5727959735 with evidence that I already have. I did not run new tests. GitHub cannot read the session storage that holds the run logs. So I copied the relevant log lines into this comment. All runs used one node with 8 H100 GPUs, the same test profile, and this image: The run IDs are short workload IDs. The line numbers in the excerpts are from the rank-0 1. mHC golden-value runs (R3)I did these steps for each of the 4 test cases:
The Recipe and command. Each run used the
Golden-file hashes. These are sha256 values of The verification runs also wrote a golden file. Compared with the committed file, it is different only in Log excerpts (8 runs)
|
| Tested SHA | Unit rows | Functional rows | Files that change from this SHA to 08b2dcef |
|---|---|---|---|
08b2dcef |
2 passed | – | none |
04709f9f |
1 passed | – | tests/unit_tests/ssm/test_kda.py |
dcd760ab |
1 passed | – | ssm/test_kda.py, transformer/test_thd_cuda_graph.py |
f583febb |
2 passed | 4 passed | the 5 files in section 2 |
44a87715 |
63 passed, 2 skipped upstream | 80 passed | 13 files: kda.py, kda_layer_config.py, the 4 mHC golden files and 7 unit-test files |
| Total | 71: 69 passed, 2 skipped upstream | 84: 84 passed |
Full SHAs: 04709f9fa044172b9e0b98dc8d1a814f16f9fb14, dcd760aba32de57a468565d809418760fa6afb28. No retained result is from the candidates 3ce3f8d2 (3ce3f8d21203af614174481952121771e120d138) and 258bb660 (258bb660eda749cca46b50316d65bec2cd80a935).
Why a pass on an older SHA applies to 08b2dcef. I kept a pass only if the diff from its tested SHA to 08b2dcef does not change an input of that row:
- After
44a87715, no dependency, lock, Docker, CI or test-utility file changed (pyproject.toml,uv.lock,docker/,.github/,tests/test_utils/). All runs used the same image and test profile. - Only the 4 mHC rows read the 4 golden files. These rows passed on
f583febb, which has the same golden files as08b2dcef. - Each of the 7 changed unit-test files belongs to one row. That row ran on a SHA that has the final version of the file:
data/**ondcd760ab,models/**andtransformer/moe/**onf583febb,transformer/**on04709f9f, andssm/**on08b2dcef. kda.py, recompute change: the two checkpoint calls passFalseagain instead ofdistribute_saved_activations. This has an effect only during training withrecompute_gdnanddistribute_saved_activationsboth set. Outside the rows that ran again, no KDA test sets these flags.kda.py, gate-reshape change: this has an effect only when a test runsKimiDeltaAttention._apply_gated_norm. Only thessm/**,ssm/gated_delta_net/test_kda.pyandtransformer/**rows do that, and they ran on SHAs with the finalkda.py. The other KDA consumers do not run it. The determinism kernel tests call only_compute_gatesandchunk_kda, andtest_gated_norm.pyuses the unchangedGatedDeltaNet._apply_gated_norm.inference/contexts/test_dynamic_context.pychecks that KDA inference fails early. Themodels/**files build only configs and module specs.- No functional row in this matrix uses KDA. The only KDA functional case,
hybrid_mr_mcore_te_tp1_pp1_ep8_cp2_kda_gated_mla_1N8G, is not in the matrix. kda_layer_config.py: the extravalidate_kda()call cannot reject a config that the later call accepts. Of the fields thatvalidate_kda()reads,TransformerConfig.__post_init__sets onlylinear_cp_mode, and the CP checks skip while that field is unset.test_ssm_kernels.pyusesKDALayerConfig.from_config, which does not run__post_init__.- Skipped upstream:
inference/engines/test_batch_invariant_handoff.pyandinference/engines/test_disagg_coordinator_pairwise.py. The log showsNIXL is not installed; skipping .... Upstream main run 40846739249 skips them the same way (jobs 123357253143 and 123357253359, at0a513268). Their inputs did not change from44a87715to08b2dcef. These 2 rows are skipped, not passed.
For rows that have no pytest summary line, the lists show the line that the test script prints instead. Most unit rows print two pytest summary lines, one for each pytest call in the row script. The lists show both, in order. ×N means that the row printed the same summary N times.
Unit rows (71)
Rows without a SHA mark ran on 44a87715.
examples/multimodal_dev/tests/**/*.py:83 passed/83 deselected**/*.py:4391 passed, 162 skipped, 94 deselected, 19 subtests passed/4647 deselecteda2a_overlap/**/*.py:128 passed, 1 skipped, 4 deselected/133 deselecteda2a_overlap/test_fsdp_1f1b_overlap.py:69 passed/69 deselecteda2a_overlap/test_schedule_chunk_1f1b.py:189 passed/189 deselecteda2a_overlap/test_schedule_chunk_1f1b_layers_1_1.py:60 passed/60 deselecteda2a_overlap/test_schedule_chunk_1f1b_layers_1_2.py:60 passed/60 deselecteda2a_overlap/test_schedule_chunk_1f1b_padding.py:24 passed/24 deselecteda2a_overlap/test_schedule_chunk_1f1b_recompute_block.py:60 passed/60 deselecteda2a_overlap/test_schedule_chunk_1f1b_recompute_uniform.py:45 passed, 15 skipped/60 deselecteddata/**/*.py@dcd760ab:813 passed, 161 skipped, 2 deselected/976 deselecteddeterminism/correctness/**/*.py:55 passed, 6 skipped/61 deselecteddeterminism/kernels/**/*.py:781 passed, 45 skipped, 2 xfailed, 7 xpassed/835 deselecteddist_checkpointing/**/*.py:428 passed, 49 skipped, 21 deselected/498 deselecteddist_checkpointing/models/**/*.py:142 passed/142 deselecteddist_checkpointing/models/test_moe_experts.py:170 passed/170 deselecteddist_checkpointing/test_layer_wise_optimizer_common_state_dict.py:164 passed, 128 skipped/292 deselecteddist_checkpointing/test_optimizer.py:152 passed, 28 skipped/180 deselecteddistributed/mfsdp_v1/**/*.py:109 passed, 12 skipped, 21 deselected/142 deselecteddistributed/mfsdp_v1/test_mfsdp_fully_shard.py:249 passed, 95 skipped, 6 xfailed/350 deselecteddistributed/mfsdp_v2/**/*.py:339 passed, 47 skipped, 7 deselected/393 deselectedfusions/**/*.py:391 passed, 183 skipped, 91 deselected/83 passed, 582 deselectedfusions/test_fused_mhc_kernels.py:74 passed, 8 deselected/82 deselectedgeneralized_tensor_parallel/**/*.py:250 passed, 59 skipped, 6 deselected/315 deselectedinference/**/*.py:3830 passed, 84 skipped/3 skipped, 3911 deselectedinference/engines/**/*.py:410 passed, 21 skipped, 9 deselected/440 deselectedinference/engines/test_batch_invariant_coordinator.py:9 passed/9 deselectedinference/engines/test_batch_invariant_handoff.py: skipped upstream:3 skipped/3 deselectedinference/engines/test_disagg_coordinator_pairwise.py: skipped upstream:NIXL is not installed; skipping tests/unit_tests/inference/engines/test_disagg_coordinator_pairwise.pyinference/engines/test_dynamic_engine.py:287 passed, 2 skipped/289 deselectedinference/engines/test_dynamic_engine_parallel_and_chunked_prefill.py:107 passed, 80 skipped/187 deselectedinference/test_batch_invariant_fp8.py:5 passed, 2 deselected/1 passed, 6 deselectedinference/test_coordinator_execution_pairwise.py:10 passed/10 deselectedinference/test_coordinator_media_pairwise.py:12 passed/12 deselectedinference/test_coordinator_sampling_pairwise.py:30 passed/30 deselectedinference/test_coordinator_schedule_pairwise.py:4 passed/4 deselectedinference/test_disagg_transfer_pairwise.py:4 passed×6inference/test_hybrid_moe.py:130 passed, 1 deselected/131 deselectedmodels/**/*.py@f583febb:1243 passed, 49 skipped, 29 deselected/24 passed, 1297 deselectedops/**/*.py:54 passed, 8 skipped/62 deselectedpipeline_parallel/**/*.py:385 passed, 3 skipped, 22 deselected/410 deselectedpost_training/**/*.py:67 passed/67 deselectedresharding/**/*.py:362 passed, 105 skipped/467 deselectedrl/**/*.py:326 passed/326 deselectedssm/**/*.py@08b2dcef:670 passed, 17 skipped, 131 subtests passed/687 deselectedssm/gated_delta_net/test_gdn.py:87 passed, 28 skipped, 18 deselected/133 deselectedssm/gated_delta_net/test_gdn_fusion.py:19 passed, 2 deselected/21 deselectedssm/gated_delta_net/test_gdn_parallel.py:36 passed/36 deselectedssm/gated_delta_net/test_kda.py@08b2dcef:25 passed/25 deselectedssm/test_gated_delta_net2.py:44 passed, 16 skipped/60 deselectedssm/test_gated_delta_net_padding.py:8 passed, 4 skipped/12 deselectedssm/test_gated_delta_net_parallel.py:10 passed, 14 skipped/24 deselectedssm/test_gated_delta_net_recompute.py:12 passed/12 deselectedssm/test_gdn_gated_output_norm_distributed.py:16 passed/16 deselectedssm/test_gdn_gated_output_norm_fusion.py:39 passed, 4 skipped/43 deselectedssm/test_gdp_dynamic_inference.py:63 passed/63 deselectedtest_fp8_param.py:14 passed, 15 skipped/29 deselectedtest_model_configs.py:242 passed, 67 skipped/309 deselectedtransformer/**/*.py@04709f9f:1843 passed, 63 skipped, 15 deselected/1921 deselectedtransformer/experimental_attention_variant/**/*.py:1410 passed, 160 skipped, 56 deselected/1626 deselectedtransformer/experimental_attention_variant/test_csa_fused_sparse_attention_dev.py:120 passed, 18 skipped/138 deselectedtransformer/experimental_attention_variant/test_dsa_tilelang_kernels.py:38 passed/38 deselectedtransformer/experimental_attention_variant/test_dsv4_hybrid_attention_cp_cuda_graph.py:3 passed, 3 skipped/6 deselectedtransformer/moe/**/*.py@f583febb:823 passed, 80 skipped, 236 deselected/204 passed, 935 deselectedtransformer/moe/test_early_wgrad.py:75 passed, 25 skipped/100 deselectedtransformer/moe/test_token_dispatcher.py:82 passed, 29 skipped/111 deselectedtransformer/moe/test_token_dispatcher_capacity.py:21 passed, 33 skipped/54 deselectedtransformer/test_cuda_graphs.py:157 passed, 3 skipped, 27 deselected/187 deselectedtransformer/test_multi_latent_attention.py:80 passed, 8 skipped, 51 deselected/38 passed, 13 skipped, 88 deselectedtransformer/test_multi_token_prediction.py:282 passed, 2 skipped, 8 deselected/292 deselectedtransformer/test_thd_correctness.py:19 passed/19 deselected
Functional rows (84)
- @
44a87715, no pytest summary in log;step_time iter=5: det=54.80ms nondet=52.70ms ratio=1.04x (threshold 1.35x)(1):gpt/determinism_perf - @
44a87715,1 passed(43):gpt/gpt3_mcore_te_mfsdp_v2_cp2,gpt/gpt3_mcore_te_tp1_pp1_dist_optimizer_fim_dataset,gpt/gpt3_mcore_te_tp1_pp1_dist_optimizer_no_mmap_bin_files,gpt/gpt3_mcore_te_tp1_pp4_vp1,gpt/gpt3_mcore_te_tp1_pp4_vp1_dist_optimizer_overlap_grad_reduce_param_gather_overlap_optimizer,gpt/gpt3_mcore_te_tp1_pp4_vp1_uneven_pipeline,gpt/gpt3_mcore_te_tp1_pp4_vp2_account_for_embedding_loss_in_pipeline_split,gpt/gpt3_mcore_te_tp2_pp2_cp2,gpt/gpt3_mcore_te_tp2_pp2_cp2_calculate_per_token_loss,gpt/gpt3_mcore_te_tp2_pp2_cp2_calculate_per_token_loss_nondeterministic,gpt/gpt3_mcore_te_tp2_pp2_cp2_etp4_calculate_per_token_loss_dp_last,gpt/gpt3_mcore_te_tp2_pp2_cp2_etp4_calculate_per_token_loss_nondeterministic_dp_last,gpt/gpt3_mcore_te_tp2_pp2_cp2_etp4_dp_last,gpt/gpt3_mcore_te_tp2_pp2_cp2_etp4_nondeterministic_dp_last,gpt/gpt3_mcore_te_tp2_pp2_cp2_nondeterministic,gpt/gpt3_mcore_te_tp2_pp2_cross_entropy_loss_fusion,gpt/gpt3_mcore_te_tp4_pp1_dist_optimizer_overlap_grad_reduce_param_gather,gpt/gpt3_mr_mcore_te_tp1_pp2_core_attn_offload_attn_cudagraph,gpt/gpt_dynamic_inference_tp1_pp1_dp8_583m_long_prompt_logitsmatch_zmq,gpt/gpt_dynamic_inference_tp2_pp2_dp2_583m_logitsmatch_zmq,gpt/gpt_static_inference_tp1_pp1_16b_multiprompt_tokensmatch,gpt/gpt_static_inference_tp1_pp1_583m_cudagraphs,gpt/gpt_static_inference_tp1_pp1_583m_fp8_cudagraphs,gpt/gpt_static_inference_tp1_pp1_583m_logitsmatch,hybrid/hybrid_dynamic_inference_tp1_pp1_dp8_583m,hybrid/hybrid_dynamic_inference_tp1_pp1_dp8_583m_chunked_prefill,hybrid/hybrid_dynamic_inference_tp1_pp1_dp8_583m_flashinfer,hybrid/hybrid_dynamic_inference_tp1_pp1_dp8_583m_mamba_bf16_states,hybrid/hybrid_gdp_dynamic_inference_tp1_pp1_dp8_800m,hybrid/hybrid_mr_mcore_te_tp1_pp1_cp1_dgx_a100_1N8G,hybrid/hybrid_mr_mcore_te_tp1_pp2_mhc_core_attn_offload_attn_cudagraph,hybrid/hybrid_mr_mcore_te_tp1_pp2_vpp2_cp1_dgx_a100_1N8G,hybrid/hybrid_mr_mcore_te_tp1_pp4_cp1_dgx_a100_1N8G,hybrid/hybrid_mr_mcore_te_tp2_pp1_cp1_dgx_a100_1N8G,hybrid/hybrid_mr_mcore_te_tp2_pp1_cp4_dgx_a100_1N8G,mimo/mimo_hetero_gtp_checkpoint_round_trip,moe/deepseek_proxy_mfsdp_v2_ep2,moe/deepseek_proxy_mfsdp_v2_ep2_ep_overlap,moe/deepseek_proxy_mfsdp_v2_ep2_hfsdp_mb2,moe/deepseek_proxy_mfsdp_v2_ep2_hsdp_mb2,moe/deepseek_proxy_mfsdp_v2_ep2_mb2,moe/gpt3_mcore_te_tp1_pp1_te_4experts_groupedGEMM_op_fuser,moe/gpt_dynamic_inference_tp4_pp1_ep4_16B_mtp_sp_block_cudagraphs - @
44a87715,1 passed×2 (26):gpt/gpt3_mcore_te_tp1_pp1_resume_torch_dist_uniform_full_recompute,gpt/gpt3_mcore_te_tp1_pp2_resume_torch_dist_rope_embeddings,gpt/gpt3_mcore_te_tp1_pp2_resume_torch_dist_rope_embeddings_interleaved_no_fusion,gpt/gpt3_mcore_te_tp1_pp4_resume_torch_dist_disable_bias_linear,gpt/gpt3_mcore_te_tp1_pp4_resume_torch_dist_persistent_disable_bias_linear,gpt/gpt3_mcore_te_tp1_pp4_resume_torch_dist_untie_embeddings_and_outputs,gpt/gpt3_mcore_te_tp1_pp4_vp1_resume_torch_dist_calculate_per_token_loss,gpt/gpt3_mcore_te_tp1_pp4_vp1_resume_torch_dist_dist_optimizer_overlap_grad_reduce,gpt/gpt3_mcore_te_tp2_pp1_modelopt_distill_resume,gpt/gpt3_mcore_te_tp2_pp1_resume_torch_dist_cp2_nondeterministic,gpt/gpt3_mcore_te_tp2_pp1_resume_torch_dist_multi_dist_optimizer_instances,gpt/gpt3_mcore_te_tp2_pp2_mla,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist_cp2_nondeterministic,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist_cross_entropy_loss_fusion,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist_ddp_average_in_collective,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist_defer_embedding_wgrad_compute,gpt/gpt3_mcore_te_tp2_pp2_resume_torch_dist_reshard_1x4xNone,gpt/gpt3_mcore_te_tp4_pp1_resume_torch_dist_dist_optimizer_overlap_grad_reduce,gpt/gpt3_mcore_te_tp4_pp1_resume_torch_dist_dist_optimizer_overlap_grad_reduce_param_gather,gpt/gpt3_mcore_te_tp4_pp1_resume_torch_dist_qk_layernorm_test_mode,gpt/gpt3_mcore_te_tp4_pp2_resume_torch_dist_reshard_8x1xNone,moe/gpt3_mcore_te_tp1_pp2_resume_torch_dist_reshard_2x1x4_te_8experts2parallel_dist_optimizer,moe/gpt3_mcore_te_tp2_pp1_resume_torch_dist_te_8experts2parallel_dist_optimizer,moe/gpt3_mcore_te_tp2_pp1_resume_torch_dist_te_8experts2parallel_multi_dist_optimizer_instances,moe/gpt3_moe_mcore_te_tp4_ep2_etp2_pp2_scoped_cudagraph - @
44a87715, no pytest summary in log; test script printedEXIT_CODE=0(7):gpt/gpt3_mcore_te_tp1_pp2_dsv4_hybrid_mhc_mtp,gpt/gpt3_mcore_te_tp2_pp1_cp4_dcp,gpt/gpt3_mcore_te_tp2_pp1_gdn,gpt/gpt3_mcore_te_tp2_pp1_gdn_no_nvrx_sync,gpt/gpt3_mcore_te_tp2_pp2_dsa,gpt/gpt3_mcore_tp2_pp2_uninstall_te,gpt/gpt_grpo_basic_function - @
44a87715, expected-failure case:Training failed as expected. Marking test as success.(1):gpt/gpt3_mcore_te_tp2_pp1_gdn_no_nvrx_async - @
f583febb,1 passed(3):gpt/gpt3_mcore_te_tp2_pp2_ep4_mhc_overlap_attn_cudagraph,gpt/gpt3_mcore_te_tp2_pp2_ep4_mhc_overlap_attn_cudagraph_nosplit,gpt/gpt3_mcore_te_tp2_pp2_mhc_attn_cudagraph - @
f583febb,1 passed×2 (1):gpt/gpt3_mcore_te_tp2_pp2_mhc - @
44a87715,[sse] legacy mode passed,[sse] async mode passed(1):gpt/gpt_inference_server_async_sched_tp2_pp2_dp2_qwen3_8b_sse - @
44a87715,Packed static GPT train/eval passed,Packed dynamic GPT train/eval passed(1):gpt/gpt_packed_train_eval
FDecaYed
left a comment
There was a problem hiding this comment.
Thanks for the logs and source mapping. The mHC golden hashes, recipes and reported values match, and the affected test rows support carrying the reviewed local results to 08b2dcef. This addresses the remaining evidence request; the explicit FlashInfer deferral remains accepted.
Approving based on the author-provided H100 results and our source checks. GitHub runtime CI has not passed: the determinism-coverage gate still needs to be addressed before merge. The two NIXL rows were skipped; Blackwell MoK and external MBridge coverage are not implied.
Single repair commit for the main slice 5812485 -> dev merge. - ssm/kda: restore dev's `False` distribute_saved_activations argument in both KDA recompute checkpoints. The kda.py conflict resolution had taken main NVIDIA#7054's config read; dev's recompute contract (NVIDIA#8203, test_gdn_quantized_recompute) passes False, as dev's GDN does. - tests/models/test_hybrid_mhc: main NVIDIA#7555 replaced mtp_layer_pattern with mtp_layer_config_list; assert the new attributes instead. - tests/transformer/moe/test_route_metadata_cpu: the dispatcher test double accepts packed_seq_params, which main NVIDIA#8458 now passes. - tests/transformer/test_attention_output_gate: the KDA test double sets two_stage_gates=False, read by main NVIDIA#7054's _apply_gated_norm. - tests/data/test_get_batch: stub dev's prepare_packed_seq_params hook in main NVIDIA#8525's config-cache test; all main assertions are kept. - ssm/kda: keep dev's direct-gate op order in _apply_gated_norm (norm, then gate reshape). main NVIDIA#7054 reshaped the gate first, which changed the compiled rounding that dev NVIDIA#8006's test_kda_gated_norm_preserves_upstream_ rounding pins; main's two-stage branch is unchanged. - tests/data/test_pretrain_gpt_dataset_config: main NVIDIA#8391 replaced pretrain_gpt's build_tokenizer(args) with get_tokenizer(); the dev test now patches get_tokenizer. Its assertion is unchanged. - ssm/kda_layer_config: run validate_kda() before TransformerConfig's __post_init__ as well as after it. Dev NVIDIA#6556's shared GDN-family assertions ran first and preempted the KDA ValueErrors that main NVIDIA#7054's test_kda config tests expect. Dev's plain TransformerConfig checks are unchanged. - tests/transformer/test_thd_cuda_graph: the dev HybridModel test double sets hybrid_layer_config_list=None, which main NVIDIA#7555 reads in HybridModel.forward. Main NVIDIA#7555 made the same change to its own hybrid test doubles. The test assertions are unchanged. - functional goldens: refresh dev_dgx_h100 golden values for the four gpt3_mcore_te_tp2_pp2 mHC cases after main NVIDIA#7521 changed their numerics (local H100 runs on merge 44a8771). - tests/unit_tests/ssm/test_kda.py: keep dev NVIDIA#6556 kda_safe_gate/kda_lower_bound on TransformerConfig (CLI flags); main NVIDIA#7054 placement check now excludes only those two fields and asserts they stay on the stack config. - tests/unit_tests/ssm/test_kda.py: main NVIDIA#7054's recompute-acceptance test builds a non-hybrid experimental_attention_variant="kda" config. Dev NVIDIA#6556 registers kda as a GDN-family variant, and dev requires linear_attention_freq for every standalone GDN-family model, so the kda case now passes linear_attention_freq=[1]. Dev's validation and the test assertion are unchanged. - docker: pin the ARM64 MoK build to main NVIDIA#8210's 7a8cfb7f. The merged MoK backend passes shared_output_gate_weight to mok.functional.forward, and main's test_mok_numerics runs that path on GB200. Dev's a2ad2d0c pin does not accept the argument (GB200 CI TypeError in test_real_mok_ddp_numerics). 7a8cfb7f is a fast-forward of a2ad2d0c (2 commits) that already contains both hunks of dev's docker/patches/mok.patch, so the patch, its bind mount and the install_mok.sh patch argument are removed as on main, and the MoE README names the new snapshot. The AMD64 (H100) image still skips MoK; the rest of dev's Dockerfile.ci.dev is unchanged. - .github/workflows/cicd-main.yml: NVIDIA-NeMo/RL 4aaa48fa (NVIDIA#4253) renamed tests/functional/L1_Functional_Tests_Megatron_4.sh to L1_Functional_Tests_Megatron_Generation.sh, so the NeMo RL dispatch pattern matched no script and the downstream pre-flight failed with "No test scripts match the requested selection". Point the pattern at the renamed script. Dev and main carry the same stale pattern. Signed-off-by: svcnemo-autobot <svcnemo-autobot@nvidia.com>
08b2dce to
2ca8104
Compare
|
/ok to test 2ca8104 |
FDecaYed
left a comment
There was a problem hiding this comment.
Approved for 2ca8104c. The rebuilt GB200 image uses MoK 7a8cfb7f, and all four gate/main-gradient numerical cases passed on all four ranks. The current run also passes the previously failing VE case on all eight ranks, completes the A2A job, and validates the four mHC golden recipes. The earlier VE failure remains unexplained; this pass does not establish a root-cause fix.
The remaining NeMo-RL failure is in its Git checkout step (shallow file has changed since we read it), before Generation tests. NeMo-RL Generation, MBridge and the skipped NIXL paths remain unvalidated; this approval does not imply a fully green CI run. The explicit FlashInfer deferral remains accepted.
Background
Nightly sync of
mainintodevfor 2026-10-30. The slice has N=46 commits, which were all ofdev..mainat selection time, oldest first. Dev base:c4220af3. Slice tip (main):58124853. Merge base:364eef70.What changed
maincommits are included unchanged and in this order: 53015a0 57018e4 8e13411 31c7230 47715bb 4a55e6f d1eec51 a296523 73f17bc dc36b1a 2723d2f 2cfbc2c 6463d38 3e47f31 a153d5d f77f360 e4a643d 51039e5 a714709 79f5594 26020f4 d5cc5e6 57103cf babb33e b9d4e2b 01ac4e8 928fe9d ccea662 5de526f 0a51326 92e1d6a 53944a3 128d097 7d6895a 6dca79c 7196f83 bc9a10e 1ac85e9 579f710 f677840 0f3e582 a77288b 952fdb7 90e4049 902feb8 581248544a87715. Its parents arec4220af3(dev) and58124853(main).2ca8104c. It fixes the main/dev API mismatches that validation found. It keeps dev'skda_safe_gate([Dev] Add Ling-V3 Tiny hybrid model training support #6556), restores dev'sdistribute_saved_activations=False, and refreshes 4 mHC golden-value files that Add mHC precision controls, mean output contract, and full activation recompute with mHC #7521 changed. It also fixes two CI failures from the previous head,08b2dcef:mok-wheelstage indocker/Dockerfile.ci.devnow pins MoK7a8cfb7f, as main does. Dev's pin,a2ad2d0c, does not accept theshared_output_gate_weightargument thatruntime.py:128passes. That is why GB200test_real_mok_ddp_numericsfailed.7a8cfb7falready containsdocker/patches/mok.patch, so the patch file and its install step are removed. Only the ARM64 image builds MoK.L1_Functional_Tests_Megatron_4.shtoL1_Functional_Tests_Megatron_Generation.sh.cicd-main.ymlnow selects the new name. Dev and main still use the old pattern.Details
nightly-sync-main-to-dev.yml(ci(sync): remove scheduled main-to-dev workflow #8603). CODEOWNERS is identical to dev.pyproject.tomlanduv.lockare identical to dev.Dockerfile.ci.devdiffers from dev only in the MoK pin. The Fused tanh-clamped sqrelu activation for inference #8013 change (FlashInfer 0.7.2, cuDNN frontend 1.32) is deferred. On dev, FlashInfer with a clampedsquared_reluraises aRuntimeError. Thetorchandvllmbackends still work.packed_seq_params;report_theoretical_memory(a bug already in main); KDA with CP>1;deepseek_proxygolden values kept from dev.determinism-exemptcovers 6 kernel-coverage findings from imported commits.Tested
Local H100 runs used image
766267172432.dkr.ecr.us-east-1.amazonaws.com/nemo-autobot/agent-sandbox@sha256:6a14e041d26a8ebc12e1add41d331ab7e90f01be06262b0245b543f0c6cdc28a. No CI results were reused for local rows.test_batch_invariant_handoff.pyandtest_disagg_coordinator_pairwise.py), because NIXL is not installed. Upstream run 40846739249 skips them the same way.2ca8104c. Since08b2dcef, the repair changes no Python, test or lock file, and the AMD64 H100 image does not build MoK. The lint mirror passed on08b2dcef.08b2dcefhad 4 failures and 1 cancelled job. This head fixes the MoK and NeMo RL failures.test_virtual_expert_planner_graph_replay[dtype1-8]looks flaky: its test and source are unchanged from dev, and it passes on dev, on main and locally.a2a_overlap/test_schedule_chunk_1f1b.pypassed 189 tests and was then cancelled at the job time limit. CI on2ca8104cis pending.Run MBridge testslabel and a DCO resolution for 18 importedmaincommits.