Repository navigation
feat(planner): asap-planner --planner saved writes a sketch-bench eval plan without re-solving - #828
Open
milindsrivastava1997 wants to merge 1 commit into
Open
milindsrivastava1997 wants to merge 1 commit into
milindsrivastava1997 wants to merge 1 commit into
Conversation
…l plan without re-solving Reads a plan from sketch-bench's autosketch_vs_asap plan file and the eval table's `e2e` block (PromQL queries, the plan RQEs each reads, metric labels), and writes streaming and inference YAML through the same converter as --planner milp. experiment_run_e2e.py gains controller.prebuilt_output_dir to deploy those configs instead of running the planner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 of 6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Before this PR
The only way to get streaming and inference configs from an rqe-optimizer plan was
--planner milp, which solves the plan itself. The #777 eval's plans were solved in sketch-bench (autosketch_vs_asap, saved in sketch-bench#203), and re-solving gives a different plan: a different solver objective, accuracy source and arrival rates.experiment_run_e2e.pyalso always runs the planner.After this PR
B1 + B2:
asap-planner --planner savede2eblock (sketch-bench#208) becomes aControllerConfig: one query group per interval, withmetricshints from its labels.workload_from_config(the facts-free half ofbuild_milp_workload) turns it into Raqes.e2e.queries[].rqes, and the RQE to itschosendeployment, sketch, params, window and slide. The result goes throughdeployments_to_planner_output, the existing converter withMilpSolutionreplaced by(deployments, Raqe → deployment).plan_to_planner_outputis now a thin wrapper around it, so--planner milpoutput is unchanged.--sla-msit picks thecheapestplan, and with it theslaplan at that SLA. A.gzplan file is read directly (flate2).deployment_grouping)B3:
controller.prebuilt_output_dirinexperiment_run_e2e.pyskipscontroller_service.startand syncs that directory'sstreaming_config.yamlandinference_config.yamlto the controller output dir. It checks that both files exist at startup.Departures from the #824 plan:
MilpSolution, becausePlanCostcan't be built honestly from a saved plan.--sla-msinstead of--kind, because the file has one SLA plan per SLA.Blocked: 12 classic queries (#827)
On the real classic base table (ASAP cheapest at CPU weights), 12 of the 54 queries are shapes ASAPQuery can't serve:
sum by (job) (rate(...))andtopk(32, sum by (label_0) (...))overrateandsum_over_time. So--planner savedrefuses the table:With those 12 removed from a copy of the table, it writes 5 aggregations. Their windows, slides and params match the plan: dd 0.02 1s; dd 0.05 300s/60s sliding; exact-increase 60s; exact-sum 1s and 60s. The other 3 plan deployments serve the removed queries. #827 tracks engine support, and the e2e run waits on it.
Validation
cargo test -p asap_planner: all pass, including 5 new tests insaved_plan.rs. They cover:--sla-msselection, plus no matching plancargo clippy --all-targets -D warnings,cargo fmt, black, flake8: clean.--sla-ms 1000.Part of #824 (B1, B2, B3).
🤖 Generated with Claude Code