Skip to content

Conversation

@ItsMrLin
Copy link
Contributor

@ItsMrLin ItsMrLin commented Dec 9, 2025

Summary:
Enables PreferenceOptimizationConfig to be persisted and loaded via both SQA and JSON storage.

The implementation follows the existing MultiObjective storage pattern, storing config-level properties (preference_profile_name, expect_relativized_outcomes) in the parent metric's properties field and reusing existing decoder logic for the objective metrics.

Differential Revision: D88678911

@meta-cla meta-cla bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Dec 9, 2025
@meta-codesync
Copy link

meta-codesync bot commented Dec 9, 2025

@ItsMrLin has exported this pull request. If you are a Meta employee, you can view the originating Diff in D88678911.

@codecov-commenter
Copy link

codecov-commenter commented Dec 9, 2025

Codecov Report

❌ Patch coverage is 96.26168% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.54%. Comparing base (c57e6a8) to head (2fd8766).

Files with missing lines Patch % Lines
ax/adapter/torch.py 88.88% 5 Missing ⚠️
ax/adapter/tests/test_torch_adapter.py 98.97% 1 Missing ⚠️
ax/storage/sqa_store/decoder.py 90.00% 1 Missing ⚠️
ax/storage/sqa_store/encoder.py 94.44% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4638      +/-   ##
==========================================
- Coverage   96.54%   96.54%   -0.01%     
==========================================
  Files         561      561              
  Lines       58249    58429     +180     
==========================================
+ Hits        56236    56409     +173     
- Misses       2013     2020       +7     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…acebook#4632)

Summary:

Adds an `expect_relativized_outcomes` boolean flag to `PreferenceOptimizationConfig` to validate that outcomes are in the expected scale (relative percentage vs. absolute) before reaching the preference model. This flag will be used in later steps by the adapter layer to validate that appropriate transform pipelines are in place.

meta: although we expect relativized outcomes in PTS where BOPE is primarily used, it is a natural default to expect the outcomes to be on their raw, original scale. This is part of [the plan](https://docs.google.com/document/d/185KQovo9WAkBsIzpERZR6apRg6lbayUI0o1wZjF9EnY/edit?usp=sharing) to replace PLBO node with regular MBM node + PrefOptConfig in PTS

Reviewed By: Balandat

Differential Revision: D87721201
Summary:

Performs two validations for PLBO:
(1) Transform validation ensures the Relativize transform presence matches the preference model's expectation to prevent scale mismatches, and
(2) metric ordering validation ensures outcome model outputs match preference model inputs in the correct order to prevent silently optimizing the wrong objectives.

meta: This is part of [the plan](https://docs.google.com/document/d/185KQovo9WAkBsIzpERZR6apRg6lbayUI0o1wZjF9EnY/edit?usp=sharing) to replace PLBO node with regular MBM node + PrefOptConfig in PTS

Reviewed By: esantorella

Differential Revision: D87721200
…4638)

Summary:

Enables PreferenceOptimizationConfig to be persisted and loaded via both SQA and JSON storage.

The implementation follows the existing MultiObjective storage pattern, storing config-level properties (preference_profile_name, expect_relativized_outcomes) in the parent metric's properties field and reusing existing decoder logic for the objective metrics.

Differential Revision: D88678911
ItsMrLin added a commit to ItsMrLin/Ax that referenced this pull request Dec 10, 2025
…4638)

Summary:

Enables PreferenceOptimizationConfig to be persisted and loaded via both SQA and JSON storage.

The implementation follows the existing MultiObjective storage pattern, storing config-level properties (preference_profile_name, expect_relativized_outcomes) in the parent metric's properties field and reusing existing decoder logic for the objective metrics.

Differential Revision: D88678911
ItsMrLin added a commit to ItsMrLin/Ax that referenced this pull request Dec 10, 2025
…4638)

Summary:

Enables PreferenceOptimizationConfig to be persisted and loaded via both SQA and JSON storage.

The implementation follows the existing MultiObjective storage pattern, storing config-level properties (preference_profile_name, expect_relativized_outcomes) in the parent metric's properties field and reusing existing decoder logic for the objective metrics.

Differential Revision: D88678911
ItsMrLin added a commit to ItsMrLin/Ax that referenced this pull request Dec 10, 2025
…4638)

Summary:

Enables PreferenceOptimizationConfig to be persisted and loaded via both SQA and JSON storage.

The implementation follows the existing MultiObjective storage pattern, storing config-level properties (preference_profile_name, expect_relativized_outcomes) in the parent metric's properties field and reusing existing decoder logic for the objective metrics.

Differential Revision: D88678911
@meta-codesync meta-codesync bot closed this in 88d3dda Dec 11, 2025
@meta-codesync
Copy link

meta-codesync bot commented Dec 11, 2025

This pull request has been merged in 88d3dda.

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

Labels

CLA Signed Do not delete this pull request or issue due to inactivity. fb-exported Merged meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants