Skip to content

refactor(rm): migrate RMConfig, RMSaveState, RMValMetrics to BaseModel#2526

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

refactor(rm): migrate RMConfig, RMSaveState, RMValMetrics to BaseModel#2526
NolenLiang wants to merge 5 commits into
mainfrom
nliang/typeddict-to-basemodel-rm

Conversation

@NolenLiang
Copy link
Copy Markdown
Contributor

@NolenLiang NolenLiang commented May 19, 2026

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

  • RMConfig: 9 required fields
  • RMSaveState: 5 fields with defaults
  • RMValMetrics: 9 required fields, validation metrics

Update all dict-style access to attribute access in rm.py. Fix BaseModel-incompatible patterns: .items() → .model_dump().items(), "key not in obj" → "not hasattr(obj, key)".
Wrap model_construct rm dicts in test_rm.py with RMConfig.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:22
@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 7cf7f71

@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 2b901ea

Convert 3 TypedDict classes to pydantic BaseModel with extra="allow":
- RMConfig: 9 required fields
- RMSaveState: 5 fields with defaults
- RMValMetrics: 9 required fields, validation metrics

Update all dict-style access to attribute access in rm.py.
Fix BaseModel-incompatible patterns: .items() → .model_dump().items(),
"key not in obj" → "not hasattr(obj, key)".
Wrap model_construct rm dicts in test_rm.py with RMConfig.model_construct().

Signed-off-by: nliang <nliang@nvidia.com>
Signed-off-by: nliang <nliang@nvidia.com>
logger.log_metrics() calls metrics.items() internally. RMValMetrics
is now BaseModel which lacks .items(). Use .model_dump() to convert.

Signed-off-by: nliang <nliang@nvidia.com>
@NolenLiang NolenLiang force-pushed the nliang/typeddict-to-basemodel-rm branch from 64125e7 to 4cc1cb3 Compare May 19, 2026 06:05
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test 4cc1cb3

Add defaults to RMConfig, RMValMetrics fields matching the reference
config (rm.yaml). RMSaveState 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 dfde832

@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 dfde832

1 similar comment
@NolenLiang
Copy link
Copy Markdown
Contributor Author

/ok to test dfde832

val_metrics returned by validate() is a plain dict, not RMValMetrics
BaseModel, so .model_dump() fails. Same fix as DPO (PR #2524).

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 1c57dd8

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