Add Domino draft model training#142
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6852d5d928
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
6852d5d to
364cd37
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 364cd3778b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: TukeMa <fivedguy001@gmail.com>
364cd37 to
afe6688
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: afe66884e7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| self.curriculum_steps = getattr(args, "domino_curriculum_steps", None) or getattr( | ||
| args, "lr_total_steps", None | ||
| ) |
There was a problem hiding this comment.
Preserve explicit zero curriculum steps
When a run sets training.domino_curriculum_steps=0 to disable the curriculum, this or treats the explicit zero as missing and falls back to lr_total_steps, so _compute_curriculum_lambda() starts at 1.0 and anneals instead of returning 0.0 as its total <= 0 branch intends. This silently changes no-curriculum ablation experiments; use an is None check so only omitted values default to the LR schedule length.
Useful? React with 👍 / 👎.
|
Hi @SeaTuKeMa , thanks for the PR. Can you help me understand how this is different from DSpark? I would like to see if their performance numbers are similar or whether one of them is a clear winner. The implementation looks mostly clean to me. I recommend cleaning the run script. |
Thanks @Dogacel . I’m trying to resolve this issue (#114), which was created before DSpark was released. My understanding is that Domino and DSpark are still architecturally different, but I don’t have an apples-to-apples performance comparison yet. I’d like to involve the Domino author @jianuo-huang, since he may already have run relevant experiments and may have results that help answer this question. Yes, I can clean up the run script in the next iteration. |
Replaces #118, which was auto-closed for inactivity.
Summary
Why
This adds training support for the Domino speculative decoding method while reusing TorchSpec's existing DFlash anchor sampling, masking, metrics, and distributed trainer path.
Addresses #114.
Usage
The run script accepts normal config overrides after the optional config path, for example:
Validation
pytest tests/test_domino.py tests/test_dflash.py -q(90 passed)ruff checkon all changed Python filesgit diff --checkGPU Phase 1
iter_0000501.iter_0000501GPU Phase 2
examples/qwen3-8b-domino-8h100/run.sh./workspace/checkpoints.iter_0000251.iter_0000501;latest_checkpointed_iteration.txtreported501.Scope
This PR implements training support. Serving/export integration for the fused Domino head remains follow-up work.