Skip to content

refactor(distillation): migrate DistillationConfig, DistillationSaveS…#2527

Open
NolenLiang wants to merge 5 commits into
mainfrom
nliang/typeddict-to-basemodel-distillation
Open

refactor(distillation): migrate DistillationConfig, DistillationSaveS…#2527
NolenLiang wants to merge 5 commits into
mainfrom
nliang/typeddict-to-basemodel-distillation

Conversation

@NolenLiang
Copy link
Copy Markdown
Contributor

@NolenLiang NolenLiang commented May 19, 2026

…tate to BaseModel

Convert 2 TypedDict classes to pydantic BaseModel with extra="allow":

  • DistillationConfig: 12 required fields
  • DistillationSaveState: 5 fields with defaults + val_reward float

Update all dict-style access to attribute access in distillation.py. Wrap model_construct distillation/loss_fn dicts in test_distillation.py with DistillationConfig.model_construct() and DistillationLossConfig.model_construct().

What does this PR do ?

Add a one line overview of what this PR aims to accomplish.

Issues

List issues that this PR closes (syntax):

Usage

  • You can potentially add a usage example below
# Add a code snippet demonstrating how to use this

Before your PR is "Ready for review"

Pre checks:

  • Make sure you read and followed Contributor guidelines
  • Did you write any new necessary tests?
  • Did you run the unit tests and functional tests locally? Visit our Testing Guide for how to run tests
  • Did you add or update any necessary documentation? Visit our Document Development Guide for how to write, build and test the docs.

Results before / after the changes

image

@NolenLiang NolenLiang requested review from a team as code owners May 19, 2026 02:35
@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented May 19, 2026

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@NolenLiang NolenLiang added the CI:Lfast Runs a fast test suite and re-use nightly `main` container (but sync dependencies to PRs version) label May 19, 2026
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 6ac197b

@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 018d187

…tate to BaseModel

Convert 2 TypedDict classes to pydantic BaseModel with extra="allow":
- DistillationConfig: 12 required fields
- DistillationSaveState: 5 fields with defaults + val_reward float

Update all dict-style access to attribute access in distillation.py.
Wrap model_construct distillation/loss_fn dicts in test_distillation.py
with DistillationConfig.model_construct() and DistillationLossConfig.model_construct().

Signed-off-by: nliang <nliang@nvidia.com>
Signed-off-by: nliang <nliang@nvidia.com>
@NolenLiang NolenLiang force-pushed the nliang/typeddict-to-basemodel-distillation branch from 018d187 to 83f9191 Compare May 19, 2026 06:06
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 83f9191

Add defaults to DistillationConfig fields matching the reference config
(distillation_math.yaml). DistillationSaveState already had defaults.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: nliang <nliang@nvidia.com>
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 62c3b1e

DistillationLossConfig is still a TypedDict on this branch (converted
in PR2 Loss), so model_construct() is not available. Use plain dicts
for loss_fn config in tests to avoid cross-PR dependency.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: nliang <nliang@nvidia.com>
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 4ca79cc

@NolenLiang NolenLiang added CI:L1 Run doctests, unit tests, and functional tests and removed CI:Lfast Runs a fast test suite and re-use nightly `main` container (but sync dependencies to PRs version) labels May 19, 2026
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 4ca79cc

- Convert DistillationLossConfig from TypedDict to BaseModel with defaults
- DistillationLossFn.__init__ uses attribute access directly (no guard)
- distillation.py needs no change (master_config.loss_fn already BaseModel
  via pydantic auto-conversion)
- Update test_loss_functions.py and test_distillation.py to pass
  DistillationLossConfig(...) instead of dict

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: nliang <nliang@nvidia.com>
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 6ccdb87

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI:L1 Run doctests, unit tests, and functional tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant