Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b3bc471
test(checkpoint): expand parity metrics and phase coverage
yuhezhang-ai Aug 17, 2026
864f8f1
test(checkpoint): calibrate all parity phases on long input
yuhezhang-ai Aug 17, 2026
82adb34
test(checkpoint): use unique long-context parity input
yuhezhang-ai Aug 18, 2026
e8a0812
test(checkpoint): stabilize long-context parity input
yuhezhang-ai Aug 18, 2026
d19bc92
test(checkpoint): define representative parity cohort
yuhezhang-ai Aug 18, 2026
5ec9443
test(checkpoint): calibrate parity profiles
yuhezhang-ai Aug 18, 2026
99f1672
test(checkpoint): relax Step resume drift
yuhezhang-ai Aug 18, 2026
bddd12d
test(checkpoint): calibrate parity profiles from scoped CI
yuhezhang-ai Aug 18, 2026
9740a8c
test(ci): capture checkpoint repeatability metrics
yuhezhang-ai Aug 18, 2026
301e44d
docs(ci): explain repeatability metric diagnostics
yuhezhang-ai Aug 18, 2026
b0e2a95
test(ci): add high-variance checkpoint parity profile
yuhezhang-ai Aug 18, 2026
cc1a0da
test(checkpoint): avoid redundant resume checkpoint writes
yuhezhang-ai Aug 18, 2026
2520cbe
refactor(checkpoint): use targeted Step parity overrides
yuhezhang-ai Aug 18, 2026
651514d
fix(test): repair checkpoint parity CI regressions
yuhezhang-ai Aug 19, 2026
ae6e283
test(checkpoint): cover Nemotron Flash HF reload
yuhezhang-ai Aug 19, 2026
3c88e95
fix(test): stabilize remote checkpoint parity
yuhezhang-ai Aug 19, 2026
fda2cf7
fix(ci): use cached Nemotron family tokenizer
yuhezhang-ai Aug 19, 2026
28c4965
test(ci): enable routed MoE resume coverage
yuhezhang-ai Aug 19, 2026
1810002
fix(checkpoint): map Nemotron PEFT export namespace
yuhezhang-ai Aug 19, 2026
65c42a9
fix(ci): reach configured resume boundary
yuhezhang-ai Aug 19, 2026
991d600
test(ci): calibrate Nemotron chat resume drift
yuhezhang-ai Aug 19, 2026
ad1c5ac
docs(ci): clarify checkpoint robustness compatibility
yuhezhang-ai Aug 19, 2026
9156721
test(ci): enable Nemotron resume coverage
yuhezhang-ai Aug 19, 2026
db9de31
test(ci): preserve Nemotron tokenizer issue gate
yuhezhang-ai Aug 19, 2026
43d7605
test(ci): retire stale Nemotron KL overrides
yuhezhang-ai Aug 19, 2026
b1b5de4
test(ci): forbid legacy max KL recipe thresholds
yuhezhang-ai Aug 19, 2026
f6e8063
test(ci): remove unmeasured Mistral FP8 overrides
yuhezhang-ai Aug 20, 2026
a986b67
test(ci): remove legacy checkpoint parity fields
yuhezhang-ai Aug 20, 2026
65486db
Merge branch 'main' into yuhez/test/checkpoint-parity-metrics
yuhezhang-ai Aug 20, 2026
d84c8f3
test(ci): unify checkpoint parity overrides
yuhezhang-ai Aug 20, 2026
4611e89
Merge remote-tracking branch 'origin/yuhez/test/checkpoint-parity-met…
yuhezhang-ai Aug 20, 2026
f5e6870
test(ci): support per-comparison parity profiles
yuhezhang-ai Aug 20, 2026
92bdc0b
Merge branch 'main' into yuhez/test/checkpoint-parity-metrics
akoumpa Aug 21, 2026
2050b32
Merge branch 'main' into yuhez/test/checkpoint-parity-metrics
yuhezhang-ai Aug 24, 2026
9cad931
fix(ci): keep parity threshold numeric across YAML loaders
yuhezhang-ai Aug 25, 2026
a6e84a2
Merge remote-tracking branch 'origin/main' into yuhez/test/checkpoint…
yuhezhang-ai Aug 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions examples/llm_finetune/baichuan/baichuan_2_7b_squad.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,8 @@ ci:
known_issue_id: AM-149
checkpoint_robustness:
trust_remote_code: true
kl_threshold: 1e-2
hf_kl_threshold: 5e-2
distributed.tp_size: 2
cross_tp_size: 2
cross_tp_kl_threshold: 1e-2
training_reproducibility_loss_threshold: 5e-2
tokenizer_name: baichuan-inc/Baichuan2-7B-Chat
dataset.limit_dataset_samples: 500
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,6 @@ ci:
known_issue_id: AM-149
checkpoint_robustness:
trust_remote_code: true
kl_threshold: 1e-2
hf_kl_threshold: 5e-2
distributed.tp_size: 2
tokenizer_name: baichuan-inc/Baichuan2-7B-Chat
dataset.limit_dataset_samples: 500
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,5 +130,16 @@ optimizer:
ci:
# pp_size(1) * ep_size(32) = 32 GPUs => 4 nodes (8 H100/node).
recipe_owner: hemildesai
time: "00:20:00"
time: "01:00:00"
nodes: 4
checkpoint_robustness:
step_scheduler.global_batch_size: 32
step_scheduler.local_batch_size: 1
tokenizer_name: deepseek-ai/DeepSeek-V4-Flash
trust_remote_code: true
hf_device_map_auto: true
# EP32 sparse routing is inside the shared relaxed envelope; the separate
# vanilla-HF reload gate remains enabled so reference-load regressions still fail.
parity_tolerance_profile: relaxed
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,6 @@ ci:
recipe_owner: HuiyingLi
time: "00:20:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 5e-3
source_load_kl_threshold: 5e-3
source_load_cosine_threshold: 0.9995
tokenizer_name: baidu/ERNIE-4.5-21B-A3B-PT
hf_device_map_auto: true
dataset.num_samples_limit: 500
1 change: 0 additions & 1 deletion examples/llm_finetune/gemma/gemma_3_270m_squad.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ ci:
recipe_owner: HuiyingLi
time: "00:20:00"
checkpoint_robustness:
hf_kl_threshold: 1e-1
tokenizer_name: google/gemma-3-270m
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
Expand Down
1 change: 0 additions & 1 deletion examples/llm_finetune/gemma/gemma_3_270m_squad_peft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ ci:
known_issue_id: AM-154
allow_failure: true
checkpoint_robustness:
hf_kl_threshold: 1e-1
tokenizer_name: google/gemma-3-270m
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
Expand Down
9 changes: 9 additions & 0 deletions examples/llm_finetune/glm/glm_4.7_flash_te_deepep.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,12 @@ optimizer:

ci:
recipe_owner: hemildesai
nodes: 1
time: "00:30:00"
checkpoint_robustness:
# Keep the currently mismatched HF comparisons blocking until the model or
# reference path is fixed; an observed mismatch alone is not a reason to skip.
tokenizer_name: zai-org/GLM-4.7-Flash
hf_device_map_auto: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ parallelizer:
ci:
time: "00:30:00"
checkpoint_robustness:
hf_kl_threshold: 5e-2
# Routed-MoE source parity measures 0.0064-0.0076 mean KL at 2K while
# p95 KL and cosine pass standard; retain every gate with the shared profile.
parity_tolerance_profile: relaxed
tokenizer_name: openai/gpt-oss-20b
no_check_resume: true
check_phantom_keys: true
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,7 @@ parallelizer:
ci:
time: "00:30:00"
checkpoint_robustness:
hf_kl_threshold: 5e-2
# Routed-MoE source parity measures 0.0064-0.0076 mean KL at 2K while
# p95 KL and cosine pass standard; retain every gate with the shared profile.
parity_tolerance_profile: relaxed
tokenizer_name: openai/gpt-oss-20b
no_check_resume: true
5 changes: 3 additions & 2 deletions examples/llm_finetune/gpt_oss/customizer_gpt_oss_peft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 5e-2
# Routed-MoE source parity measures 0.0064-0.0076 mean KL at 2K while
# p95 KL and cosine pass standard; retain every gate with the shared profile.
parity_tolerance_profile: relaxed
tokenizer_name: openai/gpt-oss-20b
no_check_resume: true
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 5e-2
# Routed-MoE source parity measures 0.0064-0.0076 mean KL at 2K while
# p95 KL and cosine pass standard; retain every gate with the shared profile.
parity_tolerance_profile: relaxed
tokenizer_name: openai/gpt-oss-20b
no_check_resume: true
4 changes: 1 addition & 3 deletions examples/llm_finetune/gpt_oss/gpt_oss_20b.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,14 +118,12 @@ optimizer:

ci:
recipe_owner: hemildesai
time: "00:15:00"
time: "00:30:00"
node_multiplier: true
vllm_deploy: true
vllm_smoke_test: true
checkpoint_robustness:
hf_kl_threshold: 1e-1
tokenizer_name: openai/gpt-oss-20b
check_phantom_keys: true
no_check_resume: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
7 changes: 4 additions & 3 deletions examples/llm_finetune/gpt_oss/gpt_oss_20b_peft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,12 @@ ci:
vllm_deploy: true
vllm_smoke_test: true
recipe_owner: akoumpa
time: "00:15:00"
time: "00:20:00"
checkpoint_robustness:
hf_kl_threshold: 5e-2
# PEFT source and reload comparisons consistently sit above the standard
# same-implementation envelope while remaining well inside the shared relaxed profile.
parity_tolerance_profile: relaxed
tokenizer_name: openai/gpt-oss-20b
no_check_resume: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,10 @@ wandb:
ci:
recipe_owner: huiyingl
nodes: 1
time: "01:00:00"
time: "00:40:00"
checkpoint_robustness:
tokenizer_name: moonshotai/Kimi-Linear-48B-A3B-Instruct
trust_remote_code: true
hf_device_map_auto: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,4 @@ loss_fn:
ci:
time: "00:30:00"
checkpoint_robustness:
hf_kl_threshold: 1e-2
tokenizer_name: meta-llama/Llama-3.1-8B-Instruct
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,5 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 1e-2
training_reproducibility_loss_threshold: 5e-3
tokenizer_name: meta-llama/Llama-3.2-1B-Instruct
Original file line number Diff line number Diff line change
Expand Up @@ -169,5 +169,4 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 5e-3
tokenizer_name: meta-llama/Llama-3.2-1B-Instruct
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,4 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 5e-3
tokenizer_name: meta-llama/Llama-3.2-1B-Instruct
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,4 @@ ci:
time: "00:30:00"
nproc_per_node: 1
checkpoint_robustness:
hf_kl_threshold: 5e-3
tokenizer_name: meta-llama/Llama-3.2-1B-Instruct
8 changes: 1 addition & 7 deletions examples/llm_finetune/llama3_2/llama3_2_1b_hellaswag.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,17 +91,11 @@ optimizer:

ci:
recipe_owner: akoumpa
time: "00:15:00"
time: "00:20:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 5e-3
source_load_kl_threshold: 5e-3
source_load_cosine_threshold: 0.9995
model.pretrained_model_name_or_path: meta-llama/Llama-3.2-3B-Instruct
tokenizer_name: meta-llama/Llama-3.2-3B-Instruct
cross_tp_size: 2
# Allow observed bf16 row-parallel reduction drift across 8-GPU TP reloads.
cross_tp_kl_threshold: 6e-3
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,6 @@ ci:
recipe_owner: akoumpa
time: "00:15:00"
checkpoint_robustness:
hf_kl_threshold: 5e-3
model.pretrained_model_name_or_path: meta-llama/Llama-3.2-3B-Instruct
tokenizer_name: meta-llama/Llama-3.2-3B-Instruct
check_fused_qkv_keys: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,14 +97,13 @@ optimizer:
ci:
vllm_deploy: true
recipe_owner: akoumpa
time: "00:30:00"
known_issue_id: AM-154
allow_failure: true
checkpoint_robustness:
hf_kl_threshold: 5e-3
model.pretrained_model_name_or_path: meta-llama/Llama-3.2-3B-Instruct
tokenizer_name: meta-llama/Llama-3.2-3B-Instruct
cross_tp_size: 2
cross_tp_kl_threshold: 5e-3
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,11 @@ optimizer:
ci:
recipe_owner: akoumpa
vllm_deploy: true
time: "00:40:00"
checkpoint_robustness:
hf_kl_threshold: 5e-3
model.pretrained_model_name_or_path: meta-llama/Llama-3.2-3B-Instruct
tokenizer_name: meta-llama/Llama-3.2-3B-Instruct
cross_tp_size: 2
cross_tp_kl_threshold: 5e-3
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,23 +113,21 @@ optimizer:
ci:
# pp_size(1) * ep_size(32) = 32 GPUs => 4 nodes (8 H100/node).
recipe_owner: hemildesai
time: "00:30:00"
# Allow the complete source, reload, and resume calibration matrix to finish.
time: "01:00:00"
nodes: 4
checkpoint_robustness:
# The robustness default local batch is 2; with 32 ranks the global batch
# must be at least 64 and divisible by 2 * 32.
step_scheduler.global_batch_size: 64
# Keep each large-model load in a fresh process so the HF reload has all
# local GPU memory available after the distributed train/save phase.
process_isolation: true
# Exact adapter fingerprints and a successful HF+PEFT forward still run;
# live-LoRA cross-runtime logit parity is not a stable quantized reference.
skip_hf_logit_parity: true
# Process isolation is the harness default, leaving all local GPU memory
# available to the HF reload after the distributed train/save phase exits.
# Use Transformers' built-in MiniMax M2 implementation for the HF+PEFT
# reload; the checkpoint's remote code targets an older Transformers API.
trust_remote_code: false
# Keep the cross-framework gates blocking: the current built-in-HF mismatch
# must be fixed or explicitly proven to be an invalid reference before it is skipped.
tokenizer_name: MiniMaxAI/MiniMax-M2.7
hf_device_map_auto: true
no_check_resume: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
10 changes: 1 addition & 9 deletions examples/llm_finetune/mistral/ministral3_3b_squad.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -108,23 +108,15 @@ ci:
recipe_owner: akoumpa
time: "00:15:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 6e-3
# TP=2 BF16 reductions add bounded source-load drift; retain independent
# max/mean KL and cosine gates instead of skipping the FP8 parity check.
source_load_kl_threshold: 2.5e-2
source_load_mean_kl_threshold: 3e-3
source_load_cosine_threshold: 0.9995
distributed.tp_size: 2
tokenizer_name: mistralai/Ministral-3-3B-Instruct-2512
cross_tp_size: 2
cross_tp_kl_threshold: 5e-3
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
# vision_tower params receive no grads from text-only batches, so Adam
# never materialises per-param `step` state for them; DCP resume load is
# strict and fails with `Missing key ... optim.state.model.vision_tower.*`.
no_check_resume: true
skip_resume: true

# Uncomment and configure for W&B logging
# wandb:
Expand Down
10 changes: 1 addition & 9 deletions examples/llm_finetune/mistral/ministral3_3b_squad_peft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,22 +120,14 @@ ci:
recipe_owner: akoumpa
time: "00:15:00"
checkpoint_robustness:
check_source_load_parity: true
# LoRA merge stays within the TP=2-to-HF drift measured by source parity.
hf_kl_threshold: 2.5e-2
# TP=2 BF16 reductions add bounded source-load drift; retain independent
# max/mean KL and cosine gates instead of skipping the FP8 parity check.
source_load_kl_threshold: 2.5e-2
source_load_mean_kl_threshold: 3e-3
source_load_cosine_threshold: 0.9995
distributed.tp_size: 2
tokenizer_name: mistralai/Ministral-3-3B-Instruct-2512
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
# vision_tower params receive no grads from text-only batches, so Adam
# never materialises per-param `step` state for them; DCP resume load is
# strict and fails with `Missing key ... optim.state.model.vision_tower.*`.
no_check_resume: true
skip_resume: true

# Uncomment and configure for W&B logging
# wandb:
Expand Down
10 changes: 0 additions & 10 deletions examples/llm_finetune/mistral/mistral_7b_hellaswag_fp8.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -120,16 +120,6 @@ ci:
recipe_owner: HuiyingLi
time: "00:25:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 1e-2
# FP8 here is training-time quantization of a bf16 checkpoint (see the fp8
# section above), so Phase 0 bounds the FP8-prepared trainer model against
# the raw bf16 HF reference. This is an FP8-only exception; keep the
# non-quantized Phase 0 configs at the default strict mean KL threshold.
source_load_kl_threshold: 1e-2
source_load_mean_kl_threshold: 3e-3
source_load_cosine_threshold: 0.999
tokenizer_name: mistralai/Mistral-7B-v0.1
no_check_resume: true
dataset.num_samples_limit: 500
validation_dataset.num_samples_limit: 500
6 changes: 1 addition & 5 deletions examples/llm_finetune/mistral/mistral_7b_squad.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,7 @@ ci:
recipe_owner: HuiyingLi
time: "00:20:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 5e-3
source_load_kl_threshold: 5e-3
source_load_cosine_threshold: 0.9995
tokenizer_name: mistralai/Mistral-7B-v0.1
no_check_resume: true
skip_resume: true
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,8 @@ ci:
recipe_owner: HuiyingLi
time: "00:25:00"
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 5e-3
source_load_kl_threshold: 5e-3
source_load_cosine_threshold: 0.9995
tokenizer_name: mistralai/Mistral-Nemo-Base-2407
hf_device_map_auto: true
no_check_resume: true
skip_resume: true
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
8 changes: 3 additions & 5 deletions examples/llm_finetune/mistral/mixtral-8x7b-v0-1_squad.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,12 @@ ci:
time: "00:40:00"
nodes: 2
checkpoint_robustness:
check_source_load_parity: true
hf_kl_threshold: 1e-2
source_load_kl_threshold: 1e-2
source_load_cosine_threshold: 0.9995
# PP buffers are fixed to the 1024-token packed-sequence size.
parity_sequence_length: 1024
tokenizer_name: mistralai/Mixtral-8x7B-v0.1
trust_remote_code: true
hf_device_map_auto: true
no_check_resume: true
skip_resume: true
dataset.limit_dataset_samples: 500
validation_dataset.limit_dataset_samples: 500
release:
Expand Down
Loading
Loading