fix: propagate user-supplied tags to created resources - #6167
fix: propagate user-supplied tags to created resources#6167rohangujarathi wants to merge 1 commit into
Conversation
|
Claude finished @rohangujarathi's task in 5m 27s —— View job PR Review: propagate user-supplied tags to created resources
This is a solid, well-scoped fix — the intent (accept-but-drop → accept-and-forward) is clear and consistently applied, and each change is backed by a test. A few things worth a look before merge.
Correctness1. Inconsistent tag key-casing between evaluator paths (worth flagging) —
Net effect: a user who passes the documented lowercase tag form (as the new Minor / non-blocking2.
3. Duplicate tags not de-duped — trainers (e.g. TestsGood coverage on the fixed paths (Nova deploy, SFT trainer merge +
Overall the change is correct for the majority of paths and the approach is clean; finding #1 is the one I'd resolve (or explicitly confirm the MTRL tag format expectation) before merge. |
Tags passed to the trainer, evaluator and ModelBuilder classes were accepted
but never reached the resources they create, so they could not be used for
tag-based resource association.
- Trainers (SFT, DPO, RLVR, RLAIF, MultiTurnRL): the serverless train() path
built its tag list from the JumpStart tags only and discarded self.tags.
MultiTurnRLTrainer additionally computed tags and then never passed them to
Job.create().
- BaseTrainer._train_serverful_smtj() did not forward tags to
ModelTrainer.from_recipe().
- BaseEvaluator had no tags field at all; add one and merge it into the
pipeline tags.
- MultiTurnRLEvaluator passed only the evaluation discovery tag to
CreatePipeline and dropped customer tags.
- ModelBuilder.deploy(tags=...) dropped tags on the model-customization and
Nova paths, which bypass the normal _deploy_core_endpoint() handling.
The create APIs are typed List[Tag] and validated by pydantic, which coerces
plain key/value dicts and accepts Tag objects, so the merged tag lists are
passed through as-is. ModelBuilder additionally accepts a single {key: value}
mapping on deploy(), which is expanded into list form for those APIs.
5b5ad11 to
ef9999e
Compare
|
Claude finished @rohangujarathi's task in 6m 17s —— View job PR Review: propagate user-supplied tags to created resources
The change is clean and consistently applied: every accept-but-drop path now forwards I verified the potentially risky spots and they hold up:
Minor / non-blocking
Test coverageStrong on the fixed paths — Nova deploy (merge + dict-form + no-tags), SFT trainer (merge +
Overall: correct, well-tested, and the one blocking concern from the prior pass is now fixed. Nothing here blocks merge. |
|
Claude finished @rohangujarathi's task in 2m 28s —— View job PR Review: propagate user-supplied tags to created resources
Clean, well-scoped fix. The accept-but-drop → accept-and-forward pattern is applied consistently across every path (trainers, evaluators, ModelBuilder deploy), and each fixed path is backed by a test. I verified the spots that could bite and they hold up.
Verified correct
Minor / non-blocking
Test coverageStrong on the fixed paths. Two changed lines remain unexercised (both low priority):
Overall: correct, well-tested, and the one prior blocking concern is resolved. Nothing here blocks merge. |
Tags passed to the trainer, evaluator and ModelBuilder classes were accepted but never reached the resources they create, so they could not be used for tag-based resource association.
The create APIs are typed List[Tag] and validated by pydantic, which coerces plain key/value dicts and accepts Tag objects, so the merged tag lists are passed through as-is. ModelBuilder additionally accepts a single {key: value} mapping on deploy(), which is expanded into list form for those APIs.
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.