Skip to content

Commit f340120

Browse files
committed
chore: merge main into Ling and EXAONE builder migration
Signed-off-by: Chen Cui <chcui@nvidia.com>
2 parents 8ceb812 + e86caf6 commit f340120

215 files changed

Lines changed: 23203 additions & 4830 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/actions/test-template/action.yml‎

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,14 @@ runs:
193193
export BASH_ENV=/dev/null
194194
fi
195195
196-
timeout $(( ${{ inputs.timeout }} * 60 ))s bash tests/${{ inputs.is_unit_test == 'true' && 'unit_tests' || format('functional_tests/launch_scripts/{0}', inputs.script_dir) }}/${{ inputs.script }}.sh || EXIT_CODE=$?
196+
timeout $(( ${{ inputs.timeout }} * 60 ))s bash "tests/${{ inputs.is_unit_test == 'true' && 'unit_tests' || format('functional_tests/launch_scripts/{0}', inputs.script_dir) }}/$1.sh" || EXIT_CODE=$?
197197
198198
if [[ "$EXIT_CODE" -eq 124 ]]; then
199199
echo "::error:: Test timed out after ${{ inputs.timeout }} minutes. Please reach out to the PIC."
200200
fi
201201
202202
exit $EXIT_CODE
203-
'
203+
' bash "$SCRIPT"
204204
205205
RUN_TEST_EOF
206206
)
@@ -212,9 +212,11 @@ runs:
212212
- name: Run main script
213213
id: run-main-script
214214
shell: bash -e -u -o pipefail {0}
215+
env:
216+
SCRIPT: ${{ inputs.script }}
215217
run: |
216218
echo -e "\033[1;34m┌─ launching test ─────────────────────────────────────────────────────────┐\033[0m"
217-
echo -e "\033[1;34m│ script : ${{ inputs.script }}\033[0m"
219+
echo -e "\033[1;34m│ script : $SCRIPT\033[0m"
218220
echo -e "\033[1;34m│ runner : ${{ inputs.runner }}\033[0m"
219221
echo -e "\033[1;34m│ container : ${{ inputs.container-image }}\033[0m"
220222
echo -e "\033[1;34m└──────────────────────────────────────────────────────────────────────────┘\033[0m"
@@ -229,6 +231,8 @@ runs:
229231
id: check
230232
shell: bash -e -u -o pipefail {0}
231233
if: always()
234+
env:
235+
SCRIPT: ${{ inputs.script }}
232236
run: |
233237
docker exec nemo_container_${{ github.run_id }} /opt/venv/bin/coverage combine || true
234238
docker exec nemo_container_${{ github.run_id }} /opt/venv/bin/coverage xml || true
@@ -254,19 +258,19 @@ runs:
254258
echo -e "\033[1;32m╔══════════════════════════════════════════════════════════════════════════╗\033[0m"
255259
echo -e "\033[1;32m║ ║\033[0m"
256260
echo -e "\033[1;32m║ ✅ PASSED ║\033[0m"
257-
echo -e "\033[1;32m║ ${{ inputs.script }}\033[0m"
261+
echo -e "\033[1;32m║ $SCRIPT\033[0m"
258262
echo -e "\033[1;32m║ ║\033[0m"
259263
echo -e "\033[1;32m╚══════════════════════════════════════════════════════════════════════════╝\033[0m"
260-
echo "::notice title=Result::✅ ${{ inputs.script }} — PASSED"
264+
echo "::notice title=Result::✅ $SCRIPT — PASSED"
261265
exit 0
262266
else
263267
echo -e "\033[1;31m╔══════════════════════════════════════════════════════════════════════════╗\033[0m"
264268
echo -e "\033[1;31m║ ║\033[0m"
265269
echo -e "\033[1;31m║ ❌ FAILED (exit code: ${EXIT_CODE}) ║\033[0m"
266-
echo -e "\033[1;31m║ ${{ inputs.script }}\033[0m"
270+
echo -e "\033[1;31m║ $SCRIPT\033[0m"
267271
echo -e "\033[1;31m║ ║\033[0m"
268272
echo -e "\033[1;31m╚══════════════════════════════════════════════════════════════════════════╝\033[0m"
269-
echo "::error title=Result::❌ ${{ inputs.script }} — FAILED (exit $EXIT_CODE)"
273+
echo "::error title=Result::❌ $SCRIPT — FAILED (exit $EXIT_CODE)"
270274
exit 1
271275
fi
272276

‎.github/workflows/cicd-main.yml‎

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,9 @@ jobs:
729729
name=$(basename "$f" .sh)
730730
timeout=$(get_timeout "$f")
731731
runner=$(get_runner "$f")
732-
entries="${entries}{\"script\":\"${name}\",\"timeout\":${timeout},\"runner\":\"${runner}\"},"
732+
entry=$(jq -cn --arg script "$name" --argjson timeout "$timeout" --arg runner "$runner" \
733+
'{script: $script, timeout: $timeout, runner: $runner}')
734+
entries="${entries}${entry},"
733735
done
734736
matrix="{\"include\":[${entries%,}]}"
735737
echo "matrix_${tier,,}=${matrix}" | tee -a "$GITHUB_OUTPUT"
@@ -740,7 +742,9 @@ jobs:
740742
name=$(basename "$f" .sh)
741743
timeout=$(get_timeout "$f")
742744
runner=$(get_runner "$f")
743-
entries="${entries}{\"script\":\"${name}\",\"timeout\":${timeout},\"runner\":\"${runner}\"},"
745+
entry=$(jq -cn --arg script "$name" --argjson timeout "$timeout" --arg runner "$runner" \
746+
'{script: $script, timeout: $timeout, runner: $runner}')
747+
entries="${entries}${entry},"
744748
done
745749
echo "matrix_flaky={\"include\":[${entries%,}]}" | tee -a "$GITHUB_OUTPUT"
746750
@@ -978,7 +982,9 @@ jobs:
978982
name=$(basename "$f" .sh)
979983
timeout=$(get_timeout "$f")
980984
runner=$(get_runner "$f")
981-
entries="${entries}{\"script\":\"${name}\",\"timeout\":${timeout},\"runner\":\"${runner}\"},"
985+
entry=$(jq -cn --arg script "$name" --argjson timeout "$timeout" --arg runner "$runner" \
986+
'{script: $script, timeout: $timeout, runner: $runner}')
987+
entries="${entries}${entry},"
982988
done
983989
echo "matrix_gb200_${tier,,}={\"include\":[${entries%,}]}" | tee -a "$GITHUB_OUTPUT"
984990
done
@@ -988,7 +994,9 @@ jobs:
988994
name=$(basename "$f" .sh)
989995
timeout=$(get_timeout "$f")
990996
runner=$(get_runner "$f")
991-
entries="${entries}{\"script\":\"${name}\",\"timeout\":${timeout},\"runner\":\"${runner}\"},"
997+
entry=$(jq -cn --arg script "$name" --argjson timeout "$timeout" --arg runner "$runner" \
998+
'{script: $script, timeout: $timeout, runner: $runner}')
999+
entries="${entries}${entry},"
9921000
done
9931001
echo "matrix_gb200_flaky={\"include\":[${entries%,}]}" | tee -a "$GITHUB_OUTPUT"
9941002
@@ -1376,3 +1384,44 @@ jobs:
13761384
path: |
13771385
.coverage
13781386
include-hidden-files: true
1387+
1388+
notify-nightly-failure:
1389+
name: Notify scheduled CI failure
1390+
runs-on: ubuntu-latest
1391+
environment: main
1392+
needs:
1393+
- ephemeral-runner-routing
1394+
- pre-flight
1395+
- configure
1396+
- lint-check
1397+
- cicd-wait-in-queue
1398+
- cicd-compute-build-matrix
1399+
- cicd-container-build
1400+
- cicd-import-check
1401+
- cicd-unit-tests-core
1402+
- cicd-unit-tests-diffusion
1403+
- generate-test-matrix
1404+
- cicd-functional-tests-l0
1405+
- cicd-functional-tests-l1
1406+
- cicd-functional-tests-l2
1407+
- cicd-functional-tests-flaky
1408+
- generate-gb200-test-matrix
1409+
- cicd-functional-tests-gb200-l0
1410+
- cicd-functional-tests-gb200-l1
1411+
- cicd-functional-tests-gb200-l2
1412+
- cicd-functional-tests-gb200-flaky
1413+
- Nemo_CICD_Test
1414+
- Coverage
1415+
permissions: {}
1416+
# Keep setup failures visible even when downstream jobs are skipped.
1417+
if: >-
1418+
${{ always() && !cancelled() && failure() &&
1419+
github.repository == 'NVIDIA-NeMo/Megatron-Bridge' &&
1420+
github.event_name == 'schedule' &&
1421+
github.ref_name == github.event.repository.default_branch }}
1422+
steps:
1423+
- name: Notify CI alerts channel
1424+
uses: NVIDIA-NeMo/FW-CI-templates/.github/actions/notify-ci-failure@631c404d00a9e60afc591cd071d35d2e18f82fc6
1425+
with:
1426+
needs-json: ${{ toJSON(needs) }}
1427+
webhook: ${{ secrets.SLACK_WEBHOOK }}

‎.github/workflows/link-check.yml‎

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414

1515
name: Link check
1616

17-
# Checks external (http/https) links in the docs so broken cross-repo / published
18-
# links (NVBug 6421302 class) are caught before merge and on a weekly cadence.
17+
# Checks repository links against the candidate Git tree, then checks external
18+
# and explicitly versioned HTTP(S) destinations online.
1919
#
2020
# Scope note: this job checks http/https URLs only (`--scheme`). Internal
2121
# cross-page links in the Fern docs use a `.md` extension while the source files
2222
# are `.mdx`, so filesystem-level checking of relative links would report ~600
23-
# false positives; that convention is out of scope here. GitHub links are NOT
24-
# excluded. File links are checked through GitHub's raw-content endpoint to
25-
# avoid transient 503s from HTML pages; GITHUB_TOKEN supports API fallback.
23+
# false positives; that convention is out of scope here. Same-repository links
24+
# to the target branch use the checked tree, including unchanged historical
25+
# pages. Other file links use raw content to avoid GitHub HTML rendering.
2626

2727
on:
2828
pull_request:
@@ -40,13 +40,57 @@ jobs:
4040
steps:
4141
- name: Checkout
4242
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
43+
with:
44+
# On pull_request this is GitHub's synthetic merge, including forks.
45+
# A complete tree needs no parents/history or submodule checkout.
46+
ref: ${{ github.sha }}
47+
persist-credentials: false
48+
49+
- name: Record checked revision
50+
env:
51+
EVENT_SHA: ${{ github.sha }}
52+
BASE_SHA: ${{ github.event.pull_request.base.sha }}
53+
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
54+
run: |
55+
test "$(git rev-parse HEAD)" = "$EVENT_SHA"
56+
git show --no-patch --format='Checked commit: %H%nTree: %T' HEAD
57+
echo "PR base: $BASE_SHA"
58+
echo "PR head: $HEAD_SHA"
59+
60+
- name: Extract all documentation URLs
61+
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2
62+
with:
63+
lycheeVersion: v0.24.2
64+
token: ''
65+
# Compact avoids the action appending a Markdown report link to the dump.
66+
format: compact
67+
jobSummary: false
68+
output: ${{ runner.temp }}/documentation-links.txt
69+
args: >-
70+
--dump
71+
--scheme https
72+
--scheme http
73+
--root-dir docs/fern
74+
"docs/fern/**/*.mdx"
75+
"docs/**/*.md"
4376
44-
- name: Check links
77+
- name: Check repository links in the candidate tree
78+
env:
79+
REPOSITORY: ${{ github.repository }}
80+
TARGET_BRANCH: ${{ github.base_ref || github.ref_name }}
81+
run: |
82+
python3 scripts/docs/check_repository_links.py \
83+
--repository "$REPOSITORY" --branch "$TARGET_BRANCH" \
84+
--links-file "$RUNNER_TEMP/documentation-links.txt" \
85+
--external-links-file "$RUNNER_TEMP/external-links.txt"
86+
87+
- name: Check external and versioned links
4588
uses: lycheeverse/lychee-action@e7477775783ea5526144ba13e8db5eec57747ce8 # v2
4689
with:
90+
lycheeVersion: v0.24.2
4791
fail: true
48-
# TODO(kimi-k3): drop the two kimi_k3 / kimi-k3 excludes below once this PR is
49-
# merged. They point at files added by the same PR, so blob/main 404s until then.
92+
# An all-local scan is valid; the extraction stage must still be nonempty.
93+
failIfEmpty: false
5094
# Keep requests bounded and check file availability without GitHub HTML rendering.
5195
args: >-
5296
--no-progress
@@ -63,9 +107,6 @@ jobs:
63107
--exclude 'github\.com/NVIDIA-NeMo/Megatron-Bridge/stargazers'
64108
--exclude 'sched\.com'
65109
--exclude 'llama\.com'
66-
--exclude 'Megatron-Bridge/(blob/)?main/src/megatron/bridge/models/kimi/kimi_k3_'
67-
--exclude 'Megatron-Bridge/(blob/)?main/examples/model_verification_cards/kimi-k3/'
68-
"docs/fern/**/*.mdx"
69-
"docs/**/*.md"
110+
"${{ runner.temp }}/external-links.txt"
70111
env:
71112
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

‎.main.commit‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
a98aed553e25b4e86c59f50be54ac0ea4227b442
1+
6e7e6ed435e41af04fc41e7007ef862049153fdc

‎3rdparty/Megatron-LM‎

Submodule Megatron-LM updated 206 files

‎README.md‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,16 @@
1111
</div>
1212

1313
## 📣 News
14+
15+
- [10/16/2026] [**Reflection AI Beam-1.0-501B-A23B**](https://huggingface.co/reflection/Beam-1.0-501B-A23B) is now supported! Megatron Bridge provides HF↔Megatron checkpoint conversion, inference, and BF16 H200 recipes for pretraining, SFT, long-context SFT, and LoRA PEFT. See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/beam/README.md) and [verification card](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/model_verification_cards/beam/card.yaml) for verified configurations and current limitations.
16+
17+
- [10/15/2026] [**NVIDIA Nemotron 3.5 Super VL**](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Super-VL-120b-a12b-base-BF16) is released! Megatron Bridge supports the 120B-A12B vision-language model with HF↔Megatron checkpoint conversion, image inference, and pretraining, SFT, and LoRA recipes, plus text-only conversion and training workflows. See the [model documentation](docs/models/nemotron/nemotron3.5-super-vl.md) and [verification card](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/model_verification_cards/nemotron-3.5-super-vl-120b-a12b/card.yaml) for supported workflows, verified configurations, and current limitations.
18+
19+
- [10/15/2026] [**Muse-Spark-Open-816B-A42B**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/muse_spark_open/README.md) is now supported! Megatron Bridge adds checkpoint conversion, inference, and GB200 training recipes for the 816B-total / 42B-active vision-and-audio-language MoE model: pretraining, full SFT, long-context SFT at 32K and 64K with context parallelism, LoRA, and image-text SFT and LoRA, with HybridEP MoE dispatch. See the [examples README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/muse_spark_open/README.md) and the [verification card](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/model_verification_cards/muse-spark-open-816b-a42b/card.yaml) for details.
20+
1421
- [08/19/2026] **Megatron Bridge 0.6.0 released!** Highlights include GLM-5.2 with cuDNN fused DSA for 128K THD-packed context-parallel training, new LLM/VLM/diffusion models, more reliable VLM data and sequence packing, improved checkpoint and LoRA workflows, unified training and conversion launchers, and refreshed performance recipes. Huge thanks to our community contributors! See the [full release notes](https://github.com/NVIDIA-NeMo/Megatron-Bridge/releases/tag/v0.6.0).
1522

16-
- [08/11/2026] **NVIDIA Nemotron 3.5 Lightning is released!** Read the technical blog [here](https://developer.nvidia.com/blog/nvidia-nemotron-3-5-lightning-delivers-fast-accurate-specialized-task-execution-for-long-running-agents/). See the [Nemotron 3.5 Lightning README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_5_lightning/README.md) for details.
23+
- [08/11/2026] [**NVIDIA Nemotron 3.5 Lightning**](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16) is released! Read the technical blog [here](https://developer.nvidia.com/blog/nvidia-nemotron-3-5-lightning-delivers-fast-accurate-specialized-task-execution-for-long-running-agents/). See the [Nemotron 3.5 Lightning README](https://github.com/NVIDIA-NeMo/Megatron-Bridge/blob/main/examples/models/nemotron/nemotron_3_5_lightning/README.md) for details.
1724

1825
- [07/31/2026] **[K-EXAONE-2](https://huggingface.co/LGAI-EXAONE/K-EXAONE-2.0-750B-A37B) is now supported**! Day-0 support for LG AI Research's K-EXAONE-2 (750B-A37B MoE) is now available on the [k-exaone-2 branch](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/k-exaone-2). Users can convert checkpoints, run inference, fine-tune with SFT or PEFT (LoRA), and use the NVFP4 inference-optimized checkpoint released alongside the model. See the branch documentation for setup instructions and examples.
1926

@@ -225,6 +232,7 @@ Megatron Bridge provides out-of-the-box bridges and training recipes for a wide
225232
|----------------|--------------------|
226233
| [**BAGEL**](docs/models/bagel/bagel.md) | BAGEL-7B-MoT (requires the tested MCore `dev` revision and `bagel` extra) |
227234
| [**Bailing**](docs/models/bailing/index.md) | Ling 2.0 / Ling MoE V2 (Bailing) |
235+
| [**Beam**](docs/models/beam/beam.md) | Beam-1.0-501B-A23B |
228236
| [**BERT**](docs/models/bert/index.md) | Megatron-Style BERT (`MegatronBertForMaskedLM`) |
229237
| [**DeepSeek**](docs/models/deepseek/index.md) | DeepSeek V3, DeepSeek V4 / V4 Flash |
230238
| [**Diffusion**](https://github.com/NVIDIA-NeMo/Megatron-Bridge/tree/main/src/megatron/bridge/diffusion/models) | FLUX, LLaDA 1.5, Nemotron-Labs Diffusion, WAN |
@@ -242,6 +250,7 @@ Megatron Bridge provides out-of-the-box bridges and training recipes for a wide
242250
| [**Xiaomi-MiMo**](docs/models/mimo/index.md) | Xiaomi-MiMo, MiMo-V2-Flash |
243251
| [**Moonlight**](docs/models/moonlight/index.md) | Moonlight |
244252
| [**Muse Glimmer**](docs/models/muse_glimmer/muse-glimmer.md) | Muse Glimmer 30B |
253+
| [**Muse Spark Open**](docs/models/muse_spark_open/muse-spark-open.md) | Muse-Spark-Open-816B-A42B |
245254
| [**Nemotron**](docs/models/nemotron/index.md) | Nemotron-3 Nano, Nemotron-3 Super, Nemotron-3 Ultra, Nemotron-3 Nano Omni |
246255
| [**OLMoE**](docs/models/olmoe/index.md) | OLMoE |
247256
| [**Qwen**](docs/models/qwen/index.md) | Qwen2 / Qwen2.5, Qwen3, Qwen3-MoE, Qwen3 Next, Qwen3.5 (dense/MoE), Qwen2.5-VL, Qwen3-VL, Qwen3.5-VL, Qwen3.6-VL, Qwen2 Audio, Qwen2.5-Omni, Qwen3-Omni, Qwen3-ASR |

0 commit comments

Comments
 (0)