Skip to content

Commit 14cadec

Browse files
committed
merge(main): resolve chat normalization conflicts
Signed-off-by: yaoyu-33 <yaoyu.094@gmail.com>
2 parents c7bf93d + 5ebc338 commit 14cadec

18 files changed

Lines changed: 727 additions & 116 deletions

File tree

‎docs/training/activation-recomputation.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,5 +210,5 @@ overlap. Prefer the narrow boundary that satisfies the memory target.
210210

211211
- [docs/training/cuda-graphs.md](cuda-graphs.md)
212212
- [docs/training/moe-optimization.md](moe-optimization.md)
213-
- [skills/nemo-mbridge-perf-activation-recompute/SKILL.md](../../skills/nemo-mbridge-perf-activation-recompute/SKILL.md) — architecture-specific module selection, compatibility, and measurement guidance
214-
- [skills/nemo-mbridge-perf-memory-tuning/SKILL.md](../../skills/nemo-mbridge-perf-memory-tuning/SKILL.md) — expandable segments, parallelism resizing, and other memory reduction strategies
213+
- [skills/nemo-mbridge-perf-activation-recompute/SKILL.md](../skills/nemo-mbridge-perf-activation-recompute/SKILL.md) — architecture-specific module selection, compatibility, and measurement guidance
214+
- [skills/nemo-mbridge-perf-memory-tuning/SKILL.md](../skills/nemo-mbridge-perf-memory-tuning/SKILL.md) — expandable segments, parallelism resizing, and other memory reduction strategies

‎docs/training/checkpointing.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,8 @@ The load default follows the actual source because the checkpoint restored on re
312312

313313
### Restore Behavior and Failure Modes
314314

315-
- If the dataloader state directory is **absent** (e.g. a checkpoint saved before this feature existed), the dataloader starts from the beginning and a message is logged.
316-
- If the directory **exists** but the current rank's per-DP-rank file is **missing**, restore **raises**. This almost always means the data-parallel size changed since the checkpoint was saved; resuming would silently change the data order, so it fails loudly instead.
315+
- If the dataloader state root or the selected `iter_N` directory is **absent** (e.g. the selected checkpoint was saved before this feature existed), the dataloader starts from the beginning and a message is logged. Other state generations under the same root do not change this behavior.
316+
- If the selected `iter_N` directory **exists** but the current rank's per-DP-rank file is **missing**, restore **raises**. This almost always means the data-parallel size changed since the checkpoint was saved; resuming would silently change the data order, so it fails loudly instead.
317317

318318
### Determinism Requirement
319319

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
# Agent-readable model verification card.
2+
# status: unverified | verified | unsupported | not_applicable
3+
4+
title: deepseek_v3
5+
summary: >
6+
The canonical pretrain_performance.H100 1024-GPU BF16,
7+
pretrain_performance.GB200 256-GPU MXFP8, and pretrain_performance.GB300
8+
256-GPU MXFP8 recipes are verified.
9+
Timing and throughput metrics from future functional training items remain
10+
sanity checks rather than optimized performance results. Model-level
11+
conversion, forward correlation, inference, functional training,
12+
fine-tuning, and checkpoint-resume verification are deferred.
13+
verification_index:
14+
model_level:
15+
unverified:
16+
- hf_to_megatron_cpu
17+
- hf_to_megatron_gpu
18+
- megatron_to_hf_cpu
19+
- megatron_to_hf_gpu
20+
- manual_forward_pass
21+
- inference
22+
training:
23+
GB300:
24+
unverified: [pretrain, sft, sft_export_inference, sft_long_context, peft, checkpoint_resume]
25+
performance:
26+
H100: verified
27+
GB200: verified
28+
GB300: verified
29+
model:
30+
hf_id: deepseek-ai/DeepSeek-V3
31+
hf_revision: e815299b0bcbac849fa540c768ef21845365c9eb # pragma: allowlist secret
32+
architecture: DeepseekV3ForCausalLM
33+
min_transformers_version: "5.8.0"
34+
verification_environment:
35+
base_container: nvcr.io/nvidia/nemo:26.08.rc5
36+
bridge_commit: 79308d0d99fb8c09b3f1a22baa68a4ffa4f4ce1e # pragma: allowlist secret
37+
38+
items:
39+
hf_to_megatron_cpu:
40+
status: unverified
41+
precision: bf16
42+
command: null
43+
last_verified: null
44+
expected_result: >
45+
A CPU import of the pinned blockwise-FP8 Hugging Face checkpoint must
46+
dequantize every mapped weight correctly, persist a reloadable Megatron
47+
checkpoint, and pass a complete tensor audit. This workflow is deferred
48+
by this card.
49+
50+
hf_to_megatron_gpu:
51+
status: unverified
52+
precision: bf16
53+
command: null
54+
last_verified: null
55+
expected_result: >
56+
A distributed GPU import of the pinned blockwise-FP8 Hugging Face
57+
checkpoint must complete every mapping, persist a reloadable Megatron
58+
checkpoint, and pass a complete tensor audit. This workflow is deferred
59+
by this card.
60+
61+
megatron_to_hf_cpu:
62+
status: unverified
63+
precision: bf16
64+
command: null
65+
last_verified: null
66+
expected_result: >
67+
A CPU export from a verified Megatron checkpoint must preserve every
68+
mapped tensor and strictly reload as DeepseekV3ForCausalLM. This workflow
69+
is deferred by this card.
70+
71+
megatron_to_hf_gpu:
72+
status: unverified
73+
precision: bf16
74+
command: null
75+
last_verified: null
76+
expected_result: >
77+
A distributed GPU export from a verified Megatron checkpoint must
78+
preserve every mapped tensor and strictly reload as
79+
DeepseekV3ForCausalLM. This workflow is deferred by this card.
80+
81+
manual_forward_pass:
82+
status: unverified
83+
precision: bf16
84+
command: null
85+
last_verified: null
86+
expected_result: >
87+
A pinned first-token Hugging Face versus Megatron comparison must match
88+
the argmax token, reach cosine similarity of at least 0.99, and report
89+
maximum and mean absolute logit differences. This workflow is deferred
90+
by this card.
91+
92+
inference:
93+
status: unverified
94+
precision: bf16
95+
command: null
96+
last_verified: null
97+
expected_result: >
98+
A synchronous deterministic Megatron generation from a verified
99+
checkpoint must finish with finite logits and a recorded literal greedy
100+
completion. This workflow is deferred by this card.
101+
102+
pretrain:
103+
GB300:
104+
status: unverified
105+
precision: bf16
106+
enabled_features: {}
107+
command: null
108+
last_verified: null
109+
metrics:
110+
initial_loss: null
111+
final_loss: null
112+
last_10_steps_step_time_ms_avg: null
113+
last_10_steps_model_tflops_per_gpu_avg: null
114+
last_10_steps_tokens_per_second_per_gpu_avg: null
115+
expected_result: >
116+
A bounded public-data DeepSeek V3 pretraining run must complete with
117+
finite loss, zero skipped or NaN iterations, all five metrics, a saved
118+
post-setup configuration, and a reloadable final checkpoint. Functional
119+
training is deferred by this card.
120+
121+
sft:
122+
GB300:
123+
status: unverified
124+
precision: bf16
125+
enabled_features: {}
126+
command: null
127+
last_verified: null
128+
metrics:
129+
initial_loss: null
130+
final_loss: null
131+
last_10_steps_step_time_ms_avg: null
132+
last_10_steps_model_tflops_per_gpu_avg: null
133+
last_10_steps_tokens_per_second_per_gpu_avg: null
134+
expected_result: >
135+
A pinned-data full-SFT run must finish with finite loss, zero skipped or
136+
NaN iterations, all five metrics, a saved post-setup configuration, and
137+
a reloadable final checkpoint. Fine-tuning is deferred by this card.
138+
139+
sft_export_inference:
140+
GB300:
141+
status: unverified
142+
precision: bf16
143+
depends_on: sft
144+
commands: null
145+
last_verified: null
146+
expected_result: >
147+
A verified full-SFT checkpoint must export to Hugging Face, strictly
148+
reload, and produce a recorded deterministic checkpoint-backed
149+
completion. Training and post-SFT export verification are deferred by
150+
this card.
151+
152+
sft_long_context:
153+
GB300:
154+
status: unverified
155+
precision: bf16
156+
enabled_features: {}
157+
command: null
158+
last_verified: null
159+
metrics:
160+
initial_loss: null
161+
final_loss: null
162+
last_10_steps_step_time_ms_avg: null
163+
last_10_steps_model_tflops_per_gpu_avg: null
164+
last_10_steps_tokens_per_second_per_gpu_avg: null
165+
expected_result: >
166+
A dedicated packed long-context SFT run must complete with context
167+
parallelism, finite loss, zero skipped or NaN iterations, all five
168+
metrics, and a reloadable checkpoint. This workflow is deferred by this
169+
card.
170+
171+
peft:
172+
GB300:
173+
status: unverified
174+
precision: bf16
175+
enabled_features: {}
176+
command: null
177+
last_verified: null
178+
metrics:
179+
initial_loss: null
180+
final_loss: null
181+
last_10_steps_step_time_ms_avg: null
182+
last_10_steps_model_tflops_per_gpu_avg: null
183+
last_10_steps_tokens_per_second_per_gpu_avg: null
184+
expected_result: >
185+
A DeepSeek V3 PEFT recipe with an audited model-native attention adapter
186+
target set must complete with finite loss, zero skipped or NaN
187+
iterations, all five metrics, and a reloadable adapter checkpoint. This
188+
workflow is deferred by this card.
189+
190+
checkpoint_resume:
191+
GB300:
192+
status: unverified
193+
precision: bf16
194+
depends_on: pretrain
195+
command: null
196+
last_verified: null
197+
metrics:
198+
initial_loss: null
199+
final_loss: null
200+
last_10_steps_step_time_ms_avg: null
201+
last_10_steps_model_tflops_per_gpu_avg: null
202+
last_10_steps_tokens_per_second_per_gpu_avg: null
203+
resume_comparison:
204+
reference_item: pretrain
205+
sentinel_steps: [51, 100]
206+
loss_relative_tolerance: 1.0e-2
207+
loss_absolute_tolerance: 1.0e-6
208+
sentinels_match: null
209+
expected_result: >
210+
A direct continuation must restore model, optimizer, scheduler,
211+
data-order, and RNG state, match declared sentinel losses, and save a
212+
reloadable checkpoint to a distinct output root. Resume verification is
213+
deferred by this card.
214+
215+
pretrain_performance:
216+
H100:
217+
status: verified
218+
precision: bf16
219+
command: >
220+
./scripts/training/train.sh --wait --nodes 128 --gpus-per-node 8
221+
--recipe deepseek_v3_pretrain_1024gpu_h100_bf16_config
222+
--mode pretrain --max_steps 50 --seq_length 4096
223+
logger.save_config_filepath=work/model-verification/deepseek-v3/h100-performance/ConfigContainer.yaml
224+
last_verified: 2026-08-15
225+
metrics:
226+
initial_loss: 11.89496
227+
final_loss: 6.815285
228+
last_10_steps_step_time_ms_avg: 61756.130
229+
last_10_steps_model_tflops_per_gpu_avg: 276.030
230+
last_10_steps_tokens_per_second_per_gpu_avg: 1061.206
231+
expected_result: >
232+
On exactly 1,024 H100 GPUs, the canonical 50-step mock-data BF16 recipe
233+
completed at TP2/PP8/VP4/CP1/EP64/ETP1 and GBS/MBS 16384/1. All 50
234+
keyed rows had finite loss and throughput with zero skipped or NaN
235+
iterations, and the resolved configuration was saved. Steps 41-50
236+
averaged 61,756.130 ms and 276.030 model TFLOP/s/GPU, passing gates of
237+
at most 62,000 ms and at least 275 TFLOP/s/GPU. Mock data and forced
238+
expert balancing make this benchmark-only evidence, not convergence
239+
evidence.
240+
241+
GB200:
242+
status: verified
243+
precision: fp8_mx
244+
command: >
245+
./scripts/training/train.sh --wait --nodes 64 --gpus-per-node 4
246+
--recipe deepseek_v3_pretrain_256gpu_gb200_fp8mx_config
247+
--mode pretrain --max_steps 50 --seq_length 4096
248+
logger.save_config_filepath=work/model-verification/deepseek-v3/gb200-performance/ConfigContainer.yaml
249+
last_verified: 2026-08-14
250+
metrics:
251+
initial_loss: 11.89246
252+
final_loss: 6.311604
253+
last_10_steps_step_time_ms_avg: 13841.180
254+
last_10_steps_model_tflops_per_gpu_avg: 1231.040
255+
last_10_steps_tokens_per_second_per_gpu_avg: 4734.856
256+
expected_result: >
257+
On exactly 256 GB200 GPUs, the canonical 50-step mock-data MXFP8 recipe
258+
completed at TP1/PP4/VP4/CP1/EP64/ETP1 and GBS/MBS 4096/1. All 50 keyed
259+
rows had finite loss and throughput with zero skipped or NaN iterations,
260+
and the resolved configuration was saved. Steps 41-50 averaged
261+
13,841.180 ms and 1,231.040 model TFLOP/s/GPU, passing gates of at most
262+
14,000 ms and at least 1,200 TFLOP/s/GPU. Mock data, forced expert
263+
balancing, and reduced-precision optimizer moments make this
264+
benchmark-only evidence, not convergence evidence.
265+
266+
GB300:
267+
status: verified
268+
precision: fp8_mx
269+
command: >
270+
./scripts/training/train.sh --wait --nodes 64 --gpus-per-node 4
271+
--recipe deepseek_v3_pretrain_256gpu_gb300_fp8mx_config
272+
--mode pretrain --max_steps 50 --seq_length 4096
273+
logger.save_config_filepath=work/model-verification/deepseek-v3/gb300-performance/ConfigContainer.yaml
274+
last_verified: 2026-08-14
275+
metrics:
276+
initial_loss: 11.89526
277+
final_loss: 6.236621
278+
last_10_steps_step_time_ms_avg: 10667.300
279+
last_10_steps_model_tflops_per_gpu_avg: 1597.310
280+
last_10_steps_tokens_per_second_per_gpu_avg: 6143.635
281+
expected_result: >
282+
On exactly 256 GB300 GPUs, the canonical 50-step mock-data MXFP8 recipe
283+
completed at TP1/PP2/VP8/CP1/EP32/ETP1 and GBS/MBS 4096/1. All 50 keyed
284+
rows had finite loss and throughput with zero skipped or NaN iterations,
285+
and the resolved configuration was saved. Steps 41-50 averaged
286+
10,667.300 ms and 1,597.310 model TFLOP/s/GPU, passing gates of at most
287+
11,000 ms and at least 1,550 TFLOP/s/GPU. Mock data, forced expert
288+
balancing, and reduced-precision optimizer moments make this
289+
benchmark-only evidence, not convergence evidence.

0 commit comments

Comments
 (0)