Repository navigation
feat: GPT-OSS 20B and Moonlight 16B convergence results - #1577
Merged
Merged
Conversation
hemildesai
requested review from
HuiyingLi,
ZhiyuLi-Nvidia,
adil-a,
akoumpa and
snowmanwwg
as code owners
March 19, 2026 00:47
hemildesai
force-pushed
the
hemild/tulu3-convergence-models
branch
4 times, most recently
from
March 19, 2026 01:00
14b8f49 to
dd7cc0c
Compare
Contributor
Author
|
/claude review |
Comment on lines
+117
to
+124
| sl = None | ||
| if split is not None: | ||
| match = _SPLIT_SLICE_RE.match(split) | ||
| if match: | ||
| base_split = match.group(1) | ||
| start = int(match.group(2)) if match.group(2) else None | ||
| end = int(match.group(3)) if match.group(3) else None | ||
| sl = slice(start, end) |
Contributor
There was a problem hiding this comment.
Nit: The split-parsing logic (regex match → base_split + sl) is now duplicated across the HF path (lines 81-89) and this Parquet path. Consider extracting a small helper to avoid the duplication. Not blocking, but worth noting since a bug fix to one would need to be applied to both.
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test 50b9bee |
Moonlight 16B (A3B):
- Custom chat_template.jinja with {% generation %} tags
- FlashAdamW and TE FusedAdam configs (EP=8, FSDP)
- TikToken slow tokenizer fallback patch
- Training curves and MoE metrics plots
- Results: prompt_strict 0.148 -> 0.412 (+179%)
GPT-OSS 20B:
- Custom chat_template.jinja with {% generation %} tags wrapping
full assistant output (channel header + content + stop token)
- FlashAdamW and TE FusedAdam configs (EP=8, FSDP, AC=false)
- Training curves and MoE metrics plots
- Results: prompt_strict 0.303 -> 0.484 (+60%)
Fix parallelizer.py to search for num_local_experts attribute
(GPT-OSS uses Mixtral-style config) with unit test.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: hemildesai <hemild@nvidia.com>
Address review comment: the split-parsing regex logic was duplicated between the HF and Parquet code paths in _load_openai_messages. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Hemil Desai <hemild@nvidia.com>
hemildesai
force-pushed
the
hemild/tulu3-convergence-models
branch
from
March 30, 2026 22:23
50b9bee to
0b0522e
Compare
Contributor
Author
|
/claude review |
…at_template_safe Replace fast/slow tokenizer terminology with native HF vs TikToken in docstrings and comments. Update test class and helper names to match. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: hemildesai <hemild@nvidia.com>
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test de0e6b6 |
Instead of relying on heuristic char-to-token text matching for
{% generation %} mask computation, convert TikToken-based tokenizers
to Rust-backed fast tokenizers in from_pretrained using TikTokenConverter.
This enables native char_to_token() support. The _apply_chat_template_safe
fallback is kept as a safety net. Also addresses claude bot review comments
(stale patch reference in README, magic number documentation).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: hemildesai <hemild@nvidia.com>
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test 8189108 |
The TikToken-to-native conversion at load time makes char_to_token() work natively, so the heuristic text-matching fallback is no longer needed. Also rename _try_convert_tiktoken_to_fast to _try_convert_tiktoken_to_native. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: hemildesai <hemild@nvidia.com>
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test b2003c2 |
Remove autocast blocks from moonlight-16b and gpt-oss-20b configs that were missed in the earlier cleanup. Update moonlight README to reference _try_convert_tiktoken_to_native instead of the removed _apply_chat_template_safe. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: hemildesai <hemild@nvidia.com>
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test 46550a8 |
Contributor
|
/ok to test 5d7d65f |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: hemildesai <hemild@nvidia.com>
Contributor
Author
|
/claude review |
Contributor
Author
|
/ok to test eb7c5ad |
akoumpa
approved these changes
Apr 2, 2026
This branch was previously deployed
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.
Summary
{% generation %}chat template, training configs, W&B plots, and full resultsparallelizer.pyto supportnum_local_expertsattribute (used by GPT-OSS / Mixtral-style configs)GPT-OSS 20B Results
Key findings:
{% generation %}tags wrapping full assistant output (channel header + content + stop token) improve IFEval by ~4pts over no-tag trainingactivation_checkpointing: falseworks well for GPT-OSS 20B (~58 GiB peak)quantization_configmust be removed from saved config.json before vLLM eval (pretrained model uses mxfp4 but SFT saves bf16)Moonlight 16B Results
Key findings:
Test plan
Generated with Claude Code