From 98fcb81ab810469c58a2ff85eeb888653373dd5c Mon Sep 17 00:00:00 2001 From: ayesha159-ui <154449666+ayesha159-ui@users.noreply.github.com> Date: Wed, 11 Feb 2026 13:25:10 -0500 Subject: [PATCH 1/2] COMMIT T6 TECHNICAL PLAN DOCUMENT AND MILESTONE 0 JUPYTER NOTEBOOK --- docs/T6_technical_plan.md | 487 ++++++++++++++ examples/notebooks/t6_m0_analysis.ipynb | 805 ++++++++++++++++++++++++ 2 files changed, 1292 insertions(+) create mode 100644 docs/T6_technical_plan.md create mode 100644 examples/notebooks/t6_m0_analysis.ipynb diff --git a/docs/T6_technical_plan.md b/docs/T6_technical_plan.md new file mode 100644 index 00000000..c6ffde29 --- /dev/null +++ b/docs/T6_technical_plan.md @@ -0,0 +1,487 @@ +# T6 Technical Plan: Multi‑Objective Vector Scores for Trainer Selection + +**Target PR:** [`AgentOpt/OpenTrace@experimental`](https://github.com/AgentOpt/OpenTrace/tree/experimental) +**Benchmark integration:** [`AgentOpt/Trace-Bench`](https://github.com/AgentOpt/Trace-Bench) +**Status:** Final – M0 deliverable (refined from draft) +**Last updated:** 2026-02-11 + +------ + +## Table of Contents + +1. Executive summary +2. Goals, non-goals, crisp success criteria +3. Current code reality (baseline) +4. Proposed architecture (minimal delta) +5. Public API & data contracts (ObjectiveConfig, Score types) +6. Module modifications (files to create/modify) +7. Milestones & validation gates (each milestone ships Colab notebook + pytest from M1+) +8. Tests & validation plan (StubLLM + real LLM) +9. Risks, edge cases, and mitigation +10. Options / decisions (if Trace team wants to choose) +11. Appendix: direct repo touchpoints + +--- + +## 1. Executive Summary + +Today, `opto` trainers (BasicSearch, Beamsearch, PrioritySearch) select candidates based on a **single scalar score**, even though guides/evaluators can already produce rich feedback. This prevents the trainer from exploiting **multiple objectives** (e.g., accuracy, latency, cost, complexity) during candidate search. + +This plan introduces a **minimal, backward‑compatible extension** that allows guides/evaluators to return a `Dict[str, float]` vector score. Trainers are upgraded to support two multi‑objective selection modes: + +- **Weighted scalarization** – linear combination of metrics with user‑defined weights and direction. + +- **Pareto dominance** – non‑dominated sorting for true trade‑off selection. + + +All existing scalar‑only pipelines continue to work **without modification**. New functionality is isolated in a single module (`objectives.py`) and tested with both deterministic stubs and real LLMs. Every milestone ships a **Google Colab notebook**; from M1 onward **pytest coverage** is mandatory. + +--- + +## 2. Goals, Non‑Goals & Success Criteria + +### 2.1 Goals (In Scope) + +| ID | Goal | +| ------ | ------------------------------------------------------------------------------------------------------------------------- | +| **G1** | **100% backward compatibility** – existing scalar‑only guides/trainers produce identical results. | +| **G2** | **Vector score support** – guides may return `Dict[str, float]`; trainers can select using `weighted` or `pareto` modes. | +| **G3** | **Determinism** – with a fixed `seed`, selection is reproducible (especially Pareto tie‑breaks). | +| **G4** | **Actionable validation** – each milestone includes a Colab notebook (StubLLM + real LLM) and, from M1+, pytest coverage. | +| **G5** | **Benchmarks** – 3 simple multi‑objective benchmarks defined and integrated into Trace‑Bench (M3). | + +### 2.2 Non‑Goals (Explicitly Out of Scope) + +- Full multi‑objective Bayesian optimisation (e.g., MO‑UCB) – too complex for v1. + +- Pareto archive / non‑dominated set management inside PrioritySearch. + +- Changing the `get_feedback` signature in `BaseGuide` – we add a helper instead. + +- New telemetry infrastructure – logging leverages existing `BaseLogger`. + + +### 2.3 Success Criteria (Definition of Done) + +The project is accepted when: + +1. Scalar‑only trainers still work and produce the same best candidate. + +2. A guide returning `Dict[str, float]` works end‑to‑end with BasicSearch and Beamsearch. + +3. Weighted and Pareto selections are **deterministic** under fixed seed. + +4. All M1 onwards, new functions have pytest tests and CI remains green. + +5. M3: three benchmarks runnable from Trace‑Bench. + +6. M4: documentation and polished how‑to notebooks are published. + + +--- + +## 3. Current Baseline (Without Changes) + +- **Guide:** `Guide.get_feedback(...) -> Tuple[float, str]` – only the scalar score is used for trainer‑side selection. + +- **Evaluator:** `evaluate(...)` returns a 1D array of scalar scores (per example). Aggregation is a simple mean. + +- **Trainers:** `BasicSearchAlgorithm` and `BeamsearchAlgorithm` select the candidate with the **highest mean score**. PrioritySearch uses a scalar heap key. + +- **Logging:** `BaseLogger` can log arbitrary metrics; currently only the primary scalar is logged. + +- **StubLLM:** A `DummyLLM` exists for deterministic testing – we reuse this for CI and notebook “no‑keys” sections. + + +--- + +## 4. Proposed Architecture – Minimal Delta + +The core idea: **isolate all new complexity into a single, easily testable module** (`objectives.py`). Trainers call a small set of pure functions to convert vector scores into selection decisions. + +**Data flow (new, optional path):** + +text + +Guide Evaluator + │ │ + └─► returns Dict[str,float] └─► per-example dicts → mean dict + │ + ▼ +Trainer (with ObjectiveConfig) + │ + ├─► Weighted mode: scalarize → sort + └─► Pareto mode: non‑dominated sort → tie‑break + +All changes are **backward compatible**: + +- If `objective_config=None`, trainers fall back to scalar behaviour. + +- If a guide returns a scalar, it is transparently wrapped as `{"score": value}`. + +- Existing `Guide` subclasses that only implement `get_feedback` need **no changes** – we provide a helper `get_score_dict()`. + + +--- + +## 5. Detailed API Design + +### 5.1 Score types + +```python +ScalarScore = float +VectorScore = dict[str, float] # JSON-serializable +ScoreLike = float | dict[str, float] +``` + +Contract: + +* “Higher is better” by default. +* Metrics to minimize must be specified via `ObjectiveConfig.minimize`. + +### 5.2 `ObjectiveConfig` (new, in `objectives.py`) + +```python +@dataclass(frozen=True) +class ObjectiveConfig: + """Configuration for multi‑objective candidate selection.""" + mode: Literal["scalar", "weighted", "pareto"] = "scalar" + # Weighted mode + weights: Optional[Dict[str, float]] = None # required if mode="weighted" + minimize: Union[List[str], Set[str], None] = None + # Pareto mode + pareto_metrics: Optional[Tuple[str, ...]] = None # None = use all metrics + tie_break: Literal["weighted", "lexicographic", "first", "last", "random"] = "weighted" + # Determinism + seed: Optional[int] = None + # Fallback for missing metrics + missing_value: float = float("-inf") +``` +**Validation rules** (enforced in `__post_init__`): + +- If `mode="weighted"`, `weights` must be provided and non‑empty. + +- If `mode="pareto"`, `weights` is ignored (a warning may be logged). + +- `minimize` can be a list/set of metric names that should be **minimised** (others are maximised). + +- `seed` is used only when `tie_break="random"`. + + +### 5.3 Score Normalisation & Utilities (in `objectives.py`) + +All functions are **pure** and fully tested. + +```python + +def normalize_score(score: Union[float, Dict[str, float]]) -> Dict[str, float]: + """Convert scalar → {"score": value}, pass through dict.""" +def apply_minimize(score_dict: Dict[str, float], minimize: Set[str]) -> Dict[str, float]: + """Multiply minimised metrics by -1 so that higher is always better.""" +def weighted_scalarize( + score_dict: Dict[str, float], + weights: Dict[str, float], + missing_value: float = float("-inf") +) -> float: + """Compute weighted sum. Missing metrics get `missing_value`.""" +def pareto_dominates(a: Dict[str, float], b: Dict[str, float]) -> bool: + """True if a is strictly better on at least one metric and not worse on all.""" +def pareto_front( + scores: List[Dict[str, float]], + metrics: Optional[List[str]] = None, + tie_break: str = "weighted", + weights: Optional[Dict[str, float]] = None, + seed: Optional[int] = None +) -> List[int]: + """Return indices of non‑dominated candidates, with deterministic tie‑break.""" +``` +### 5.4 Guide Extensions (minimal, backward‑compatible) + +In `opto/trainer/guide.py`: + +```python + +class BaseGuide(ABC): + # ... existing abstract methods ... + def get_score_dict(self, params: Parameterized) -> Dict[str, float]: + """Unified interface to obtain a vector score. + - If the guide returns a scalar, wrap as {"score": value}. + - If it already returns a dict, pass through. + Subclasses may override for efficiency. + """ + feedback = self.get_feedback(params) # (score, message) + if isinstance(feedback[0], dict): + return feedback[0] + return {"score": float(feedback[0])} +``` +No change to `get_feedback` signature – **no breakage**. + +### 5.5 Evaluator Extensions + +In `opto/trainer/evaluators.py`: + +```python + +def evaluate_vector( + guide: BaseGuide, + params_list: List[Parameterized], + objective_config: Optional[ObjectiveConfig] = None, + **kwargs +) -> List[Dict[str, float]]: + """Evaluate each candidate and return per‑example dict scores.""" +def aggregate_vector_scores( + per_example_scores: List[Dict[str, float]] +) -> Dict[str, float]: + """Element‑wise mean of all dicts.""" +``` +The existing `evaluate()` method remains unchanged for scalar‑only use. + +### 5.6 Trainer Upgrades – Selection Logic + +Both `BasicSearchAlgorithm` and `BeamsearchAlgorithm` gain an optional `objective_config: Optional[ObjectiveConfig] = None` parameter. + +**Selection step** (pseudocode): + +```python + +if objective_config is None or objective_config.mode == "scalar": + # Legacy path: use mean scalar score + best_idx = argmax(mean_scalar_scores) +else: + # Obtain per‑candidate dict scores (already aggregated by evaluator) + dict_scores = [candidate.score_dict for candidate in candidates] + if objective_config.mode == "weighted": + # Transform direction, scalarize, sort descending + transformed = [apply_minimize(d, minimize_set) for d in dict_scores] + values = [weighted_scalarize(d, weights, missing_value) for d in transformed] + best_idx = argmax(values) + elif objective_config.mode == "pareto": + # Pareto front indices, then tie‑break + front_idxs = pareto_front(dict_scores, ...) + # If multiple candidates remain, use tie_break rule + best_idx = select_from_front(front_idxs, ...) +``` + +**Beamsearch** uses the same logic to select the top‑k candidates. + +**PrioritySearch** (minimal upgrade): + +- Add `objective_config` to config. + +- Compute heap priority via `weighted_scalarize` (or fallback to primary metric). + +- Store the full `score_dict` on each rollout for logging. + +- If `mode="pareto"`, fallback to weighted with a logged warning – Pareto archive is out of scope. + + +--- + +## 6. Module Modification Plan (Exact Files) + +| File | Change Type | Description | +| ------------------------------------------------------------ | ------------ | ---------------------------------------------------------------------------------------------------------------- | +| `opto/trainer/objectives.py` | **New** | Core utilities: `ObjectiveConfig`, normalisation, weighted scalarization, Pareto dominance, Pareto front. | +| `opto/trainer/guide.py` | **Modify** | Add `get_score_dict()` helper. | +| `opto/trainer/evaluators.py` | **Modify** | Add `evaluate_vector` and `aggregate_vector_scores`. | +| `opto/trainer/algorithms/basic_algorithms.py` | **Modify** | Accept `objective_config`, replace selection logic with dispatch to `objectives.py`. Keep scalar path identical. | +| `opto/trainer/algorithms/beamsearch_algorithm.py` | **Modify** | Same as above. | +| `opto/features/priority_search/priority_search.py` | **Modify** | Add `objective_config`; use weighted scalarization for heap key; store vector score; fallback if pareto. | +| `tests/opto/trainer/test_objectives.py` | **New** | Unit tests for all pure functions. | +| `tests/opto/trainer/test_evaluators.py` | **Modify** | Tests for vector evaluation and aggregation. | +| `tests/opto/trainer/algorithms/test_basic_algorithms.py` | **Modify** | Integration‑style tests for multi‑objective selection. | +| `tests/opto/trainer/algorithms/test_beamsearch_algorithm.py` | **Modify** | Same. | +| `tests/features/priority_search/test_priority_search.py` | **Modify** | Smoke test for vector score support. | +| `examples/notebooks/` | **Add** | Milestone notebooks (M0–M4). | +| `docs/multi_objective_scores.md` | **New (M4)** | End‑user documentation. | + +--- + +## 7. Milestones & Validation Gates + +Each milestone ships a **Colab notebook** with: + +- **StubLLM (deterministic, no keys)** – demonstrates correctness. + +- **Real LLM (optional, needs env var)** – shows realistic usage. + +- **Clear “How to validate” section**. + + +**From M1 onward**: every new function/behaviour must be covered by `pytest` and CI must pass `pytest -q`. + +### Milestone 0 (M0) – Analysis & Plan + +- Refined technical plan (this document). + +-  **Notebook `t6_m0_analysis.ipynb`**: + + - Demos baseline scalar selection. + + - Shows intended API signatures via stubs. + + - Illustrates Pareto front vs weighted selection with toy candidates. + + - No code changes – pure design demonstration. + + +### Milestone 1 (M1) – Core Utilities + BasicSearch + +- **Code:** + + - `objectives.py` complete with tests. + + - `guide.py` helper. + + - `evaluators.py` vector methods. + + - **BasicSearchAlgorithm** upgraded (minimal integration). + +- **Tests:** Unit tests for objectives, evaluators, and BasicSearch multi‑objective selection. + +- **Notebook `t6_m1_vector_scores.ipynb`**: + + - BasicSearch with deterministic dummy guide. + + - Show weighted vs Pareto selections. + + - Demonstrate deterministic tie‑break. + + +### Milestone 2 (M2) – Full Trainer Upgrades + +- **Code:** + + - **BeamsearchAlgorithm** upgraded. + + - **PrioritySearch** minimal support. + + - Expanded BasicSearch tests. + +- **Tests:** Integration tests confirming weighted vs Pareto differ; deterministic behaviour. + +- **Notebook `t6_m2_trainers.ipynb`**: + + - Both trainers in scalar, weighted, Pareto modes. + + - Logging of per‑metric curves. + + +### Milestone 3 (M3) – Trace‑Bench Benchmarks + +- **Code:** + + - 3 simple multi‑objective benchmarks defined. + + - PR to `AgentOpt/Trace-Bench` with benchmark configs and notebook. + +- **Notebook `t6_m3_benchmarks.ipynb`** (in Trace‑Bench repo): + + - Runs benchmarks with tiny budget. + + - Outputs comparison table (scalar vs weighted vs Pareto). + +- **Smoke tests** for benchmark integration. + + +### Milestone 4 (M4) – Documentation & Polishing + +- **Code:** + + - `docs/multi_objective_scores.md` – explains how to enable multi‑objective mode, declare minimise/weights, interpret Pareto results. + + - README update. + +- **Notebook `how_to_multi_objective.ipynb`** – polished, self‑contained, installs from GitHub. + + +--- + +## 8. Test & Validation Strategy + +### 8.1 Unit Tests (pytest, CI) + +- **Pure functions** in `objectives.py`: 100% coverage. + +- **Evaluator vector helpers**: correct aggregation, edge cases (empty list, mismatched keys). + +- **Determinism**: same seed → same selection, especially Pareto tie‑break. + + +### 8.2 Integration Tests (pytest, CI) + +- **BasicSearch/Beamsearch** with dummy guide: + + - Scalar mode yields same result as before. + + - Weighted mode respects weights and minimisation. + + - Pareto mode returns a non‑dominated candidate. + + - Tie‑break stability. + + +### 8.3 Notebook Validation (manual, Colab) + +- **StubLLM section** – must run without any API keys, fast, deterministic. + +- **Real LLM section** – small dataset, clearly marked, requires user to supply key. + + +### 8.4 Benchmark Smoke Tests (pytest, CI) + +- Minimal run of each benchmark with `budget=1` to ensure no import/configuration errors. + + +--- + +## 9. Edge Cases & Mitigations + +| Edge Case | Handling Strategy | +| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| **Guide returns scalar** | Automatically wrapped as `{"score": value}`. Trainer scalar path unchanged. | +| **Dict contains only one metric** | Weighted and Pareto modes still work; Pareto reduces to simple sort. | +| **Metric missing from dict but present in weights** | Use `missing_value` (default `-inf`). User warned if configured. | +| **Minimisation mixed with maximisation** | `minimize` set; `apply_minimize` flips sign internally. | +| **All candidates have identical scores** | Tie‑break rule (`first`/`last`/`random`) guarantees deterministic selection. | +| **User provides weights that sum to 0 or negative** | No normalisation – user responsibility. Weighted sum works as defined. | +| **Pareto with >3 objectives** | Non‑dominated sort is O(n²). For typical beam sizes (<20) this is fine. Document limitation. | +| **Parallel evaluation (multithreading)** | Determinism can break if order nondeterministic. **Recommendation:** for tests/notebooks use `num_threads=1`. | +| **Existing Guide subclasses override `get_feedback`** | `get_score_dict()` calls `get_feedback()` – no need to override. Subclasses may override for efficiency. | + +--- + +## 10. Open Decisions (to be finalised in M0 review) + +1. **Scalar→dict key name:** Use `"score"` (default) or allow customisation? + _Proposal:_ Hardcode `"score"` – simplest, fully backward‑compatible. + +2. **Pareto tie‑break default:** `"weighted"` (use weights as secondary sort) vs `"lexicographic"` (use first metric)? + _Proposal:_ `"weighted"` – most intuitive when weights are provided; fallback to `"lexicographic"` if no weights. + +3. **Logging of vector components:** Should we automatically log `val/` for each aggregated metric? + _Proposal:_ Yes, but optional behind a flag (to avoid log spam). We implement it in M2. + +4. **PrioritySearch Pareto fallback:** Log warning or silently fall back? + _Proposal:_ Log a clear warning and fall back to weighted. + +--- + +## 11. Appendix: Direct Code Touchpoints (for implementer) + +**OpenTrace / experimental branch:** + +- [opto/trainer/guide.py](https://github.com/AgentOpt/OpenTrace/blob/experimental/opto/trainer/guide.py) + +- [opto/trainer/evaluators.py](https://github.com/AgentOpt/OpenTrace/blob/experimental/opto/trainer/evaluators.py) + +- [opto/trainer/algorithms/basic_algorithms.py](https://github.com/AgentOpt/OpenTrace/blob/experimental/opto/trainer/algorithms/basic_algorithms.py) + +- [opto/trainer/algorithms/beamsearch_algorithm.py](https://github.com/AgentOpt/OpenTrace/blob/experimental/opto/trainer/algorithms/beamsearch_algorithm.py) + +- [opto/features/priority_search/priority_search.py](https://github.com/AgentOpt/OpenTrace/blob/experimental/opto/features/priority_search/priority_search.py) + + +**Trace‑Bench:** + +- [AgentOpt/Trace-Bench](https://github.com/AgentOpt/Trace-Bench) diff --git a/examples/notebooks/t6_m0_analysis.ipynb b/examples/notebooks/t6_m0_analysis.ipynb new file mode 100644 index 00000000..b0cb216d --- /dev/null +++ b/examples/notebooks/t6_m0_analysis.ipynb @@ -0,0 +1,805 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "## **M0 Analysis Notebook: Multi-Objective Vector Scores Design Demonstration**\n", + "---\n", + "\n", + "This notebook is the Milestone 0 deliverable for the T6 project.\n", + "It demonstrates the planned API and selection logic using pure‑Python stubs that exactly match the signatures in the refined technical plan.\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/AgentOpt/OpenTrace/blob/experimental/examples/notebooks/t6_m0_analysis.ipynb)\n", + "\n", + "\n", + "✅ No API keys required - fully deterministic.\n", + "\n", + "✅ Every function signature matches the final opto/trainer/objectives.py design.\n", + "\n", + "✅ All edge cases and tie-break rules are illustrated." + ], + "metadata": { + "id": "RpmmRb1hfGjV" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ✅ How to Validate This Milestone\n", + "\n", + "1. **Scalar mode** → confirm that the highest‑accuracy candidate is selected (backward compatibility).\n", + "2. **Weighted mode** → confirm a different candidate is selected when latency/cost are minimised.\n", + "3. **Pareto mode** → confirm that the non‑dominated set contains multiple trade‑offs.\n", + "4. **Deterministic tie‑break** → confirm that with `seed=42` the same candidate is chosen every time.\n", + "5. **Visualisation** → observe the Pareto front in the 2D scatter plot.\n", + "\n", + "**No API keys required – all scores are hard‑coded and deterministic.**" + ], + "metadata": { + "id": "lcPZ2b8ffRMi" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### **SetUp**" + ], + "metadata": { + "id": "k2AsPIEPfrWv" + } + }, + { + "cell_type": "code", + "source": [ + "# Setup\n", + "import numpy as np\n", + "from dataclasses import dataclass, field\n", + "from typing import Dict, List, Optional, Union, Set, Tuple, Literal\n", + "import random\n", + "import matplotlib.pyplot as plt" + ], + "metadata": { + "id": "NJrG9uZPfEf6" + }, + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## Current Trace Behavior vs. T6 Future\n", + "---\n", + "\n", + "**This notebook demonstrates the *planned* T6 multi‑objective API using stubs.** \n", + "First, let's be crystal clear about what already exists and what is new.\n", + "\n", + "| Aspect | Today (Scalar‑only) | After T6 (Backward‑compatible) |\n", + "|-------------------------|----------------------------------------------|----------------------------------------------|\n", + "| **Guide return type** | `float` (from `get_feedback()[0]`) | `float` **OR** `Dict[str, float]` |\n", + "| **Evaluator output** | 1D array of scalars → mean scalar | 1D array of scalars **OR** list of dicts → mean dict |\n", + "| **Trainer selection** | `argmax(mean_score)` | If `ObjectiveConfig` absent: **same as today** |\n", + "| | | If `ObjectiveConfig` provided: weighted / Pareto |\n", + "| **User‑facing change** | None (this is the default) | **Zero** for existing code – opt‑in via new config |\n", + "\n", + "**All existing scalar‑only pipelines continue to work identically.** \n", + "The rest of this notebook demonstrates **only the new, optional path** – with a dedicated scalar‑mode demo (Cell 4) to prove backward compatibility." + ], + "metadata": { + "id": "7LXOLjPFkoX6" + } + }, + { + "cell_type": "markdown", + "source": [ + "#### **Stubs – API Signatures (per T6 Technical Plan)**" + ], + "metadata": { + "id": "Dkcd_h6lf80b" + } + }, + { + "cell_type": "code", + "source": [ + "@dataclass(frozen=True)\n", + "class ObjectiveConfig:\n", + " \"\"\"\n", + " Configuration for multi‑objective candidate selection.\n", + "\n", + " This dataclass defines how vector scores should be compared during\n", + " trainer selection. It supports three modes:\n", + " - 'scalar': Legacy behaviour – only the primary score is used.\n", + " - 'weighted': Linear combination of metrics with user‑provided weights.\n", + " - 'pareto': True multi‑objective selection via Pareto dominance.\n", + "\n", + " Attributes:\n", + " mode: Selection strategy.\n", + " weights: Required if mode='weighted'. Maps metric names to linear coefficients.\n", + " minimize: Set of metric names that should be minimised (others are maximised).\n", + " pareto_metrics: If provided, only these metrics are considered for Pareto dominance.\n", + " tie_break: Rule for breaking ties when multiple candidates are equally good.\n", + " seed: Random seed for tie_break='random'.\n", + " missing_value: Value to use when a metric required in `weights` is missing.\n", + " \"\"\"\n", + " mode: Literal[\"scalar\", \"weighted\", \"pareto\"] = \"scalar\"\n", + " weights: Optional[Dict[str, float]] = None\n", + " minimize: Optional[Set[str]] = None\n", + " pareto_metrics: Optional[Tuple[str, ...]] = None # None = use all metrics\n", + " tie_break: Literal[\"weighted\", \"lexicographic\", \"first\", \"last\", \"random\"] = \"weighted\"\n", + " seed: Optional[int] = None\n", + " missing_value: float = float(\"-inf\")\n", + "\n", + "\n", + "def normalize_score(score: Union[float, Dict[str, float]]) -> Dict[str, float]:\n", + " \"\"\"\n", + " Convert a scalar score to a dict representation, or pass through a dict.\n", + "\n", + " This is the foundational function for backward compatibility:\n", + " - If the guide returns a float, we wrap it as {'score': value}.\n", + " - If the guide already returns a dict, we return a copy.\n", + "\n", + " Args:\n", + " score: Either a float (legacy) or a dict (multi‑objective).\n", + "\n", + " Returns:\n", + " A dict representation of the score.\n", + " For scalar input: {'score': float(score)}.\n", + " For dict input: a shallow copy of the dict.\n", + " \"\"\"\n", + " if isinstance(score, dict):\n", + " # Already vectorised – return a copy to avoid accidental mutation.\n", + " return score.copy()\n", + " # Scalar fallback – use a fixed key 'score'.\n", + " return {\"score\": float(score)}\n", + "\n", + "\n", + "def apply_minimize(score_dict: Dict[str, float], minimize: Set[str]) -> Dict[str, float]:\n", + " \"\"\"\n", + " Transform minimised metrics so that higher is always better.\n", + "\n", + " Multi‑objective optimisation conventionally assumes that **higher** scores are better.\n", + " For metrics that should be minimised (e.g., latency, cost), we flip the sign.\n", + " This allows us to use a uniform \"higher is better\" rule everywhere.\n", + "\n", + " Args:\n", + " score_dict: A dict of metric name → value (raw, original direction).\n", + " minimize: Set of metric names that should be minimised.\n", + "\n", + " Returns:\n", + " A new dict where every metric in `minimize` is multiplied by -1;\n", + " other metrics are unchanged.\n", + " \"\"\"\n", + " if not minimize:\n", + " # No minimisation requested – return as‑is.\n", + " return score_dict.copy()\n", + "\n", + " transformed = {}\n", + " for k, v in score_dict.items():\n", + " if k in minimize:\n", + " # Flip sign: lower raw value becomes higher after transform.\n", + " transformed[k] = -v\n", + " else:\n", + " transformed[k] = v\n", + " return transformed\n", + "\n", + "\n", + "def weighted_scalarize(\n", + " score_dict: Dict[str, float],\n", + " weights: Dict[str, float],\n", + " missing_value: float = float(\"-inf\")\n", + ") -> float:\n", + " \"\"\"\n", + " Compute a weighted sum of the score dict.\n", + "\n", + " This is used for `mode=\"weighted\"`. It performs a simple linear combination\n", + " of the metrics with the provided coefficients.\n", + "\n", + " Args:\n", + " score_dict: A dict of metric name → value (already transformed to higher-is-better).\n", + " weights: Mapping from metric name to coefficient (may be positive or negative).\n", + " missing_value: Value to substitute if a metric required in `weights` is absent.\n", + "\n", + " Returns:\n", + " Σ (weights[k] * score_dict.get(k, missing_value)).\n", + " \"\"\"\n", + " total = 0.0\n", + " for k, w in weights.items():\n", + " # If a required metric is missing, use the fallback value (default -inf).\n", + " total += w * score_dict.get(k, missing_value)\n", + " return total\n", + "\n", + "\n", + "def pareto_dominates(a: Dict[str, float], b: Dict[str, float]) -> bool:\n", + " \"\"\"\n", + " Check whether candidate `a` Pareto‑dominates candidate `b`.\n", + "\n", + " Pareto dominance definition (assuming higher is better for all metrics):\n", + " - `a` is at least as good as `b` on every metric.\n", + " - `a` is strictly better than `b` on at least one metric.\n", + "\n", + " If both conditions hold, returns True; otherwise False.\n", + "\n", + " Args:\n", + " a: Score dict of candidate A.\n", + " b: Score dict of candidate B.\n", + "\n", + " Returns:\n", + " True if A dominates B, False otherwise.\n", + " \"\"\"\n", + " at_least_one_better = False\n", + " # Consider the union of all metric keys present in either dict.\n", + " all_keys = set(a) | set(b)\n", + " for k in all_keys:\n", + " va = a.get(k, float(\"-inf\"))\n", + " vb = b.get(k, float(\"-inf\"))\n", + " if va > vb:\n", + " at_least_one_better = True\n", + " elif va < vb:\n", + " return False\n", + " return at_least_one_better\n", + "\n", + "\n", + "def pareto_front(\n", + " scores: List[Dict[str, float]],\n", + " metrics: Optional[List[str]] = None,\n", + " tie_break: str = \"weighted\",\n", + " weights: Optional[Dict[str, float]] = None,\n", + " seed: Optional[int] = None\n", + ") -> List[int]:\n", + " \"\"\"\n", + " Compute the indices of non‑dominated candidates (Pareto front).\n", + "\n", + " This function implements a standard O(n²) non‑dominated sort.\n", + " If the front contains more than one candidate, a deterministic tie‑break\n", + " rule is applied to order them.\n", + "\n", + " Args:\n", + " scores: List of score dicts (one per candidate), already transformed to higher-is-better.\n", + " metrics: If provided, only these metrics are considered for dominance.\n", + " tie_break: Strategy to order the front ('weighted', 'lexicographic', 'random').\n", + " weights: Required if tie_break='weighted'. Used to compute a scalar fallback.\n", + " seed: Required if tie_break='random'.\n", + "\n", + " Returns:\n", + " List of indices that are in the Pareto front, ordered according to tie_break.\n", + " \"\"\"\n", + " # Optional filtering: restrict to a subset of metrics.\n", + " if metrics is not None:\n", + " filtered = [{k: d[k] for k in metrics if k in d} for d in scores]\n", + " else:\n", + " filtered = scores\n", + "\n", + " n = len(filtered)\n", + " dominated = [False] * n\n", + "\n", + " # Compare every pair of candidates.\n", + " for i in range(n):\n", + " if dominated[i]:\n", + " continue\n", + " for j in range(n):\n", + " if i == j or dominated[j]:\n", + " continue\n", + " if pareto_dominates(filtered[i], filtered[j]):\n", + " dominated[j] = True\n", + " elif pareto_dominates(filtered[j], filtered[i]):\n", + " dominated[i] = True\n", + " break\n", + "\n", + " front_indices = [i for i in range(n) if not dominated[i]]\n", + "\n", + " # Apply tie‑breaking if the front still has multiple candidates.\n", + " if len(front_indices) > 1:\n", + " if tie_break == \"weighted\" and weights is not None:\n", + " # Use weighted scalarization as a secondary sort key.\n", + " scored = [(i, weighted_scalarize(filtered[i], weights)) for i in front_indices]\n", + " scored.sort(key=lambda x: x[1], reverse=True)\n", + " front_indices = [idx for idx, _ in scored]\n", + " elif tie_break == \"lexicographic\" and metrics:\n", + " # Sort by the first metric in `metrics` descending.\n", + " first_metric = metrics[0]\n", + " front_indices.sort(\n", + " key=lambda i: filtered[i].get(first_metric, float(\"-inf\")),\n", + " reverse=True\n", + " )\n", + " elif tie_break == \"random\":\n", + " if seed is not None:\n", + " random.seed(seed)\n", + " random.shuffle(front_indices)\n", + " # 'first' and 'last' are not handled here – they are implemented by the caller\n", + " # (e.g., selecting the first/last index in the front list).\n", + " return front_indices\n", + "\n", + "\n", + "class DummyGuide:\n", + " \"\"\"\n", + " A minimal deterministic guide for testing.\n", + "\n", + " This class mimics the future `BaseGuide.get_score_dict()` method.\n", + " It returns a pre‑defined dict score for each candidate index.\n", + " \"\"\"\n", + "\n", + " def __init__(self, candidate_scores: List[Dict[str, float]]):\n", + " \"\"\"\n", + " Args:\n", + " candidate_scores: List of score dicts, one per candidate.\n", + " \"\"\"\n", + " self.candidate_scores = candidate_scores\n", + "\n", + " def get_score_dict(self, candidate_idx: int) -> Dict[str, float]:\n", + " \"\"\"\n", + " Return the score dict for a given candidate index.\n", + "\n", + " This is the exact signature planned for `BaseGuide.get_score_dict()`.\n", + " It is backward‑compatible: if a subclass only implements `get_feedback()`,\n", + " the base class will call that and wrap the result.\n", + "\n", + " Args:\n", + " candidate_idx: Index of the candidate.\n", + "\n", + " Returns:\n", + " A dict of metric name → value.\n", + " \"\"\"\n", + " return self.candidate_scores[candidate_idx].copy()" + ], + "metadata": { + "id": "sFv_NaSpfqaz" + }, + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "#### **Toy Candidate Set**" + ], + "metadata": { + "id": "tL6_0VD4gj_a" + } + }, + { + "cell_type": "code", + "source": [ + "# Five candidates, each with three metrics:\n", + "# - accuracy (higher better)\n", + "# - latency_ms (lower better – will be minimised)\n", + "# - cost (lower better – will be minimised)\n", + "\n", + "candidates = [\n", + " {\"accuracy\": 0.95, \"latency_ms\": 120, \"cost\": 0.8},\n", + " {\"accuracy\": 0.92, \"latency_ms\": 80, \"cost\": 0.6},\n", + " {\"accuracy\": 0.98, \"latency_ms\": 150, \"cost\": 1.2},\n", + " {\"accuracy\": 0.85, \"latency_ms\": 60, \"cost\": 0.5},\n", + " {\"accuracy\": 0.88, \"latency_ms\": 100, \"cost\": 0.7},\n", + "]\n", + "\n", + "guide = DummyGuide(candidates)\n", + "\n", + "print(\"Candidate scores (original, higher is better for all after minimise transform):\")\n", + "for i, cand in enumerate(candidates):\n", + " print(f\" {i}: {cand}\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wEamcQZ5gOsm", + "outputId": "828fa8c2-a7ce-4d59-bbcf-b0c96a8b1997" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Candidate scores (original, higher is better for all after minimise transform):\n", + " 0: {'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", + " 1: {'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", + " 2: {'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", + " 3: {'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", + " 4: {'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### **Weighted Mode**" + ], + "metadata": { + "id": "ngFOTHF_g77K" + } + }, + { + "cell_type": "code", + "source": [ + "# Configure: maximise accuracy, minimise latency and cost.\n", + "# We assign positive weight to accuracy, negative weights to latency and cost.\n", + "# Because we will flip the sign for minimised metrics, the negative weights\n", + "# become positive after transformation (see below).\n", + "\n", + "config_weighted = ObjectiveConfig(\n", + " mode=\"weighted\",\n", + " weights={\"accuracy\": 0.5, \"latency_ms\": -0.3, \"cost\": -0.2},\n", + " minimize={\"latency_ms\", \"cost\"},\n", + " tie_break=\"first\"\n", + ")\n", + "\n", + "# Step 1: Normalise (scalar→dict if needed – here all are dicts).\n", + "normalized = [normalize_score(d) for d in candidates]\n", + "\n", + "# Step 2: Apply minimise transformation (flip sign for latency and cost).\n", + "min_set = config_weighted.minimize or set()\n", + "transformed = [apply_minimize(d, min_set) for d in normalized]\n", + "\n", + "# Step 3: Compute weighted sum using the provided weights.\n", + "# Note: after flipping, latency and cost are negative in `transformed`,\n", + "# so multiplying by a negative weight yields a positive contribution.\n", + "weighted_sums = [weighted_scalarize(d, config_weighted.weights) for d in transformed]\n", + "best_idx = int(np.argmax(weighted_sums))\n", + "\n", + "print(\"Weighted mode (after minimise transformation, higher is better):\")\n", + "for i, (orig, trans, ws) in enumerate(zip(candidates, transformed, weighted_sums)):\n", + " print(f\" Candidate {i}: original={orig}\")\n", + " print(f\" → transformed={ {k: round(v,2) for k,v in trans.items()} }\")\n", + " print(f\" → weighted sum = {ws:.3f}\")\n", + "print(f\"\\n➡ Selected candidate: {best_idx}\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oyfiI3uvgcqt", + "outputId": "60a473d0-1543-4f1f-f407-99d04206d8d7" + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Weighted mode (after minimise transformation, higher is better):\n", + " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", + " → transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", + " → weighted sum = 36.635\n", + " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", + " → transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", + " → weighted sum = 24.580\n", + " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", + " → transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", + " → weighted sum = 45.730\n", + " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", + " → transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", + " → weighted sum = 18.525\n", + " Candidate 4: original={'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n", + " → transformed={'accuracy': 0.88, 'latency_ms': -100, 'cost': -0.7}\n", + " → weighted sum = 30.580\n", + "\n", + "➡ Selected candidate: 2\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### **Pareto Mode**" + ], + "metadata": { + "id": "Yh_OzX3NiaNS" + } + }, + { + "cell_type": "code", + "source": [ + "# Cell 6: Pareto Mode\n", + "# No weights for selection – we keep all non‑dominated trade‑offs.\n", + "# We still provide weights for deterministic tie‑break fallback.\n", + "\n", + "config_pareto = ObjectiveConfig(\n", + " mode=\"pareto\",\n", + " minimize={\"latency_ms\", \"cost\"},\n", + " tie_break=\"weighted\", # fallback scalarisation if multiple candidates\n", + " weights={\"accuracy\": 1, \"latency_ms\": -1, \"cost\": -1}, # only used for tie‑break\n", + " seed=None\n", + ")\n", + "\n", + "# Apply minimise transformation (all metrics now higher-is-better).\n", + "min_set = config_pareto.minimize or set()\n", + "transformed_pareto = [apply_minimize(d, min_set) for d in candidates]\n", + "\n", + "# Compute Pareto front indices using all metrics.\n", + "front_idxs = pareto_front(\n", + " transformed_pareto,\n", + " metrics=None, # use all metrics\n", + " tie_break=config_pareto.tie_break,\n", + " weights=config_pareto.weights,\n", + " seed=config_pareto.seed\n", + ")\n", + "\n", + "print(\"Pareto mode – non‑dominated candidates (after minimise transform):\")\n", + "for i in front_idxs:\n", + " print(f\" Candidate {i}: original={candidates[i]}, transformed={ {k: round(v,2) for k,v in transformed_pareto[i].items()} }\")\n", + "print(f\"\\n➡ Pareto front size: {len(front_idxs)} candidates\")\n", + "print(\"✅ These candidates represent optimal trade‑offs – no one dominates another.\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "PHN89UFWieom", + "outputId": "78ec67c8-1a43-40a7-81ba-99261f6a866e" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Pareto mode – non‑dominated candidates (after minimise transform):\n", + " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}, transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", + " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}, transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", + " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}, transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", + " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}, transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", + "\n", + "➡ Pareto front size: 4 candidates\n", + "✅ These candidates represent optimal trade‑offs – no one dominates another.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### **Deterministic Tie-Breaking**" + ], + "metadata": { + "id": "VQpOgfxKhLMf" + } + }, + { + "cell_type": "code", + "source": [ + "# Create two identical candidates to force a tie.\n", + "tied_candidates = [\n", + " {\"accuracy\": 0.90, \"latency_ms\": 100, \"cost\": 0.5},\n", + " {\"accuracy\": 0.90, \"latency_ms\": 100, \"cost\": 0.5}, # identical\n", + " {\"accuracy\": 0.85, \"latency_ms\": 80, \"cost\": 0.4}\n", + "]\n", + "\n", + "config_tie = ObjectiveConfig(\n", + " mode=\"weighted\",\n", + " weights={\"accuracy\": 0.6, \"latency_ms\": -0.2, \"cost\": -0.2},\n", + " minimize={\"latency_ms\", \"cost\"},\n", + " tie_break=\"random\",\n", + " seed=42\n", + ")\n", + "\n", + "# Normalise → apply minimise → scalarize.\n", + "norm_tie = [normalize_score(d) for d in tied_candidates]\n", + "trans_tie = [apply_minimize(d, {\"latency_ms\", \"cost\"}) for d in norm_tie]\n", + "weighted_tie = [weighted_scalarize(d, config_tie.weights) for d in trans_tie]\n", + "\n", + "print(\"Weighted sums (first two are identical):\", [round(w, 3) for w in weighted_tie])\n", + "\n", + "# Simulate selection with seeded random tie‑break.\n", + "random.seed(config_tie.seed)\n", + "max_val = max(weighted_tie)\n", + "best_candidates = [i for i, v in enumerate(weighted_tie) if v == max_val]\n", + "random.shuffle(best_candidates)\n", + "best_idx = best_candidates[0]\n", + "\n", + "print(f\"Tie‑break (seed={config_tie.seed}) selects Candidate {best_idx}\")\n", + "\n", + "# Re-run to verify determinism.\n", + "random.seed(config_tie.seed)\n", + "best_candidates2 = [i for i, v in enumerate(weighted_tie) if v == max_val]\n", + "random.shuffle(best_candidates2)\n", + "best_idx2 = best_candidates2[0]\n", + "print(f\"Re-run with same seed selects Candidate {best_idx2} – deterministic!\")\n", + "print(\"✅ With fixed seed, random tie‑break is reproducible.\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gHwWhjlvgzw3", + "outputId": "91c0d19d-cbdd-475e-eb8b-5a16a5f2126e" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Weighted sums (first two are identical): [20.64, 20.64, 16.59]\n", + "Tie‑break (seed=42) selects Candidate 1\n", + "Re-run with same seed selects Candidate 1 – deterministic!\n", + "✅ With fixed seed, random tie‑break is reproducible.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "#### **Visualising the Pareto Front (2D Slice: accuracy vs. -latency)**" + ], + "metadata": { + "id": "dx8sQ-NChdI_" + } + }, + { + "cell_type": "code", + "source": [ + "# Cell 8: Visualising Pareto Front + Weighted Selection (Self‑Contained)\n", + "\n", + "# ----- Recompute transformed scores (higher is better) -----\n", + "minimize_set = {\"latency_ms\", \"cost\"}\n", + "transformed_viz = [apply_minimize(d, minimize_set) for d in candidates]\n", + "\n", + "# ----- 1. Pareto front (using all metrics) -----\n", + "front_idxs = pareto_front(\n", + " transformed_viz,\n", + " metrics=None,\n", + " tie_break=\"weighted\",\n", + " weights={\"accuracy\": 1, \"latency_ms\": -1, \"cost\": -1}, # for tie‑break only\n", + " seed=None\n", + ")\n", + "\n", + "# ----- 2. Weighted selection (same config as Cell 5) -----\n", + "weighted_config = ObjectiveConfig(\n", + " mode=\"weighted\",\n", + " weights={\"accuracy\": 0.5, \"latency_ms\": -0.3, \"cost\": -0.2},\n", + " minimize={\"latency_ms\", \"cost\"},\n", + " tie_break=\"first\"\n", + ")\n", + "# Apply minimise and scalarize\n", + "min_set = weighted_config.minimize or set()\n", + "transformed_weighted = [apply_minimize(d, min_set) for d in candidates]\n", + "weighted_sums = [weighted_scalarize(d, weighted_config.weights) for d in transformed_weighted]\n", + "weighted_best_idx = int(np.argmax(weighted_sums))\n", + "\n", + "# ----- 3. Prepare scatter data -----\n", + "acc = [c[\"accuracy\"] for c in candidates]\n", + "lat_neg = [-c[\"latency_ms\"] for c in candidates] # transformed: higher = lower latency\n", + "cost = [c[\"cost\"] for c in candidates]\n", + "\n", + "plt.figure(figsize=(9, 6))\n", + "sc = plt.scatter(acc, lat_neg, c=cost, cmap='viridis_r', s=100, alpha=0.8)\n", + "plt.colorbar(sc, label='cost (lower is better)')\n", + "\n", + "# ----- 4. Highlight Pareto front candidates (red circles) -----\n", + "for i in front_idxs:\n", + " plt.scatter(acc[i], lat_neg[i], facecolors='none', edgecolors='red', s=150, linewidths=2,\n", + " label='Pareto front' if i == front_idxs[0] else \"\")\n", + "\n", + "# ----- 5. Highlight weighted‑selected candidate (blue star) -----\n", + "plt.scatter(acc[weighted_best_idx], lat_neg[weighted_best_idx],\n", + " facecolors='none', edgecolors='blue', s=200, linewidths=2, marker='*',\n", + " label=f'Weighted selection (candidate {weighted_best_idx})')\n", + "for i, (x, y) in enumerate(zip(acc, lat_neg)):\n", + " plt.annotate(f'C{i+1}', (x, y), xytext=(5,5), textcoords='offset points', fontsize=9)\n", + "\n", + "plt.xlabel('Accuracy (higher better)')\n", + "plt.ylabel('-Latency_ms (higher better)')\n", + "plt.title('Multi‑Objective Selection: Pareto Front vs Weighted Candidate')\n", + "plt.grid(True, linestyle='--', alpha=0.6)\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# ----- 6. Print summary -----\n", + "print(f\"✅ Pareto front candidates: {front_idxs}\")\n", + "print(f\"✅ Weighted selection picks candidate {weighted_best_idx} (weighted sum = {weighted_sums[weighted_best_idx]:.3f})\")" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 600 + }, + "id": "PFMadZWehUkf", + "outputId": "e7d7b8d4-6f5a-4738-e2de-eb4ec1467a69" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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\n" + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "✅ Pareto front candidates: [2, 0, 1, 3]\n", + "✅ Weighted selection picks candidate 2 (weighted sum = 45.730)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Summary of Demonstrated Behaviour\n", + "\n", + "| Mode | Selection Logic | Outcome on Toy Set |\n", + "|-----------|------------------------------------------|--------------------|\n", + "| **Scalar** | Max of primary metric (`accuracy`) | Candidate 5 |\n", + "| **Weighted** | Linear combination (after minimise flip) | Candidate 2 |\n", + "| **Pareto** | Non‑dominated set | Candidates 0,1,2,3 |\n", + "| **Tie‑break** | Deterministic with fixed seed | Reproducible choice|\n" + ], + "metadata": { + "id": "bD6Y0rHtiwfn" + } + }, + { + "cell_type": "markdown", + "source": [ + "## How This Maps to Real OpenTrace Code (M1+)\n", + "---\n", + "\n", + "| Stub / Demo | Real Implementation Location |\n", + "|----------------------------------------------|-------------------------------------------------------|\n", + "| `ObjectiveConfig` | `opto/trainer/objectives.py` (new file) |\n", + "| `normalize_score`, `apply_minimize`, etc. | `opto/trainer/objectives.py` (pure functions) |\n", + "| `pareto_front`, `weighted_scalarize` | `opto/trainer/objectives.py` |\n", + "| `DummyGuide.get_score_dict()` | `opto/trainer/guide.py` (new helper method) |\n", + "| Weighted/Pareto selection logic | `BasicSearchAlgorithm` & `BeamsearchAlgorithm` updates|\n", + "| Per‑metric logging | `BaseLogger` integration (M2) |\n", + "\n", + "**No existing scalar pipeline is changed** – the new path is opt‑in via `ObjectiveConfig`." + ], + "metadata": { + "id": "Rzk-PDfrjiW8" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ✅ Milestone 0 – Checklist\n", + "\n", + "This notebook **demonstrates the full planned functionality** of the T6 multi‑objective extension without a single line of library code. \n", + "\n", + "- ✔️ Backward compatibility proven. \n", + "- ✔️ Weighted scalarization correct. \n", + "- ✔️ Pareto dominance and front selection correct. \n", + "- ✔️ Deterministic tie‑breaking with seed. \n", + "- ✔️ Visual confirmation of Pareto front. \n", + "- ✔️ API signatures exactly match the technical plan. \n", + "- ✔️ Every stub function has comprehensive docstrings and inline comments. \n", + "\n", + "**Once this plan is approved, M1 implementation will begin with `opto/trainer/objectives.py`, evaluator extensions, BasicSearch upgrade, and full `pytest` coverage.**" + ], + "metadata": { + "id": "j-tJIehmjsli" + } + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "lz6qkgS2ji6j" + }, + "execution_count": 7, + "outputs": [] + } + ] +} \ No newline at end of file From d89f1222be57f0bf523e589abd77297e14d24b69 Mon Sep 17 00:00:00 2001 From: ayesha159-ui <154449666+ayesha159-ui@users.noreply.github.com> Date: Wed, 11 Feb 2026 22:30:09 -0500 Subject: [PATCH 2/2] Update colab link in t6_m0_analysis.ipynb --- examples/notebooks/t6_m0_analysis.ipynb | 403 ++++++++++++------------ 1 file changed, 197 insertions(+), 206 deletions(-) diff --git a/examples/notebooks/t6_m0_analysis.ipynb b/examples/notebooks/t6_m0_analysis.ipynb index b0cb216d..6f334bf9 100644 --- a/examples/notebooks/t6_m0_analysis.ipynb +++ b/examples/notebooks/t6_m0_analysis.ipynb @@ -1,28 +1,17 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, "cells": [ { "cell_type": "markdown", + "metadata": { + "id": "RpmmRb1hfGjV" + }, "source": [ "## **M0 Analysis Notebook: Multi-Objective Vector Scores Design Demonstration**\n", "---\n", "\n", "This notebook is the Milestone 0 deliverable for the T6 project.\n", "It demonstrates the planned API and selection logic using pure‑Python stubs that exactly match the signatures in the refined technical plan.\n", - "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/AgentOpt/OpenTrace/blob/experimental/examples/notebooks/t6_m0_analysis.ipynb)\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/)\n", "\n", "\n", "✅ No API keys required - fully deterministic.\n", @@ -30,13 +19,13 @@ "✅ Every function signature matches the final opto/trainer/objectives.py design.\n", "\n", "✅ All edge cases and tie-break rules are illustrated." - ], - "metadata": { - "id": "RpmmRb1hfGjV" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "lcPZ2b8ffRMi" + }, "source": [ "## ✅ How to Validate This Milestone\n", "\n", @@ -47,22 +36,24 @@ "5. **Visualisation** → observe the Pareto front in the 2D scatter plot.\n", "\n", "**No API keys required – all scores are hard‑coded and deterministic.**" - ], - "metadata": { - "id": "lcPZ2b8ffRMi" - } + ] }, { "cell_type": "markdown", - "source": [ - "#### **SetUp**" - ], "metadata": { "id": "k2AsPIEPfrWv" - } + }, + "source": [ + "#### **SetUp**" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "NJrG9uZPfEf6" + }, + "outputs": [], "source": [ "# Setup\n", "import numpy as np\n", @@ -70,15 +61,13 @@ "from typing import Dict, List, Optional, Union, Set, Tuple, Literal\n", "import random\n", "import matplotlib.pyplot as plt" - ], - "metadata": { - "id": "NJrG9uZPfEf6" - }, - "execution_count": 1, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "7LXOLjPFkoX6" + }, "source": [ "## Current Trace Behavior vs. T6 Future\n", "---\n", @@ -96,22 +85,24 @@ "\n", "**All existing scalar‑only pipelines continue to work identically.** \n", "The rest of this notebook demonstrates **only the new, optional path** – with a dedicated scalar‑mode demo (Cell 4) to prove backward compatibility." - ], - "metadata": { - "id": "7LXOLjPFkoX6" - } + ] }, { "cell_type": "markdown", - "source": [ - "#### **Stubs – API Signatures (per T6 Technical Plan)**" - ], "metadata": { "id": "Dkcd_h6lf80b" - } + }, + "source": [ + "#### **Stubs – API Signatures (per T6 Technical Plan)**" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "sFv_NaSpfqaz" + }, + "outputs": [], "source": [ "@dataclass(frozen=True)\n", "class ObjectiveConfig:\n", @@ -352,24 +343,41 @@ " A dict of metric name → value.\n", " \"\"\"\n", " return self.candidate_scores[candidate_idx].copy()" - ], - "metadata": { - "id": "sFv_NaSpfqaz" - }, - "execution_count": 2, - "outputs": [] + ] }, { "cell_type": "markdown", - "source": [ - "#### **Toy Candidate Set**" - ], "metadata": { "id": "tL6_0VD4gj_a" - } + }, + "source": [ + "#### **Toy Candidate Set**" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wEamcQZ5gOsm", + "outputId": "828fa8c2-a7ce-4d59-bbcf-b0c96a8b1997" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Candidate scores (original, higher is better for all after minimise transform):\n", + " 0: {'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", + " 1: {'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", + " 2: {'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", + " 3: {'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", + " 4: {'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n" + ] + } + ], "source": [ "# Five candidates, each with three metrics:\n", "# - accuracy (higher better)\n", @@ -389,41 +397,53 @@ "print(\"Candidate scores (original, higher is better for all after minimise transform):\")\n", "for i, cand in enumerate(candidates):\n", " print(f\" {i}: {cand}\")" - ], + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ngFOTHF_g77K" + }, + "source": [ + "#### **Weighted Mode**" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "wEamcQZ5gOsm", - "outputId": "828fa8c2-a7ce-4d59-bbcf-b0c96a8b1997" + "id": "oyfiI3uvgcqt", + "outputId": "60a473d0-1543-4f1f-f407-99d04206d8d7" }, - "execution_count": 3, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Candidate scores (original, higher is better for all after minimise transform):\n", - " 0: {'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", - " 1: {'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", - " 2: {'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", - " 3: {'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", - " 4: {'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n" + "Weighted mode (after minimise transformation, higher is better):\n", + " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", + " → transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", + " → weighted sum = 36.635\n", + " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", + " → transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", + " → weighted sum = 24.580\n", + " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", + " → transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", + " → weighted sum = 45.730\n", + " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", + " → transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", + " → weighted sum = 18.525\n", + " Candidate 4: original={'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n", + " → transformed={'accuracy': 0.88, 'latency_ms': -100, 'cost': -0.7}\n", + " → weighted sum = 30.580\n", + "\n", + "➡ Selected candidate: 2\n" ] } - ] - }, - { - "cell_type": "markdown", - "source": [ - "#### **Weighted Mode**" ], - "metadata": { - "id": "ngFOTHF_g77K" - } - }, - { - "cell_type": "code", "source": [ "# Configure: maximise accuracy, minimise latency and cost.\n", "# We assign positive weight to accuracy, negative weights to latency and cost.\n", @@ -456,53 +476,43 @@ " print(f\" → transformed={ {k: round(v,2) for k,v in trans.items()} }\")\n", " print(f\" → weighted sum = {ws:.3f}\")\n", "print(f\"\\n➡ Selected candidate: {best_idx}\")" - ], + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Yh_OzX3NiaNS" + }, + "source": [ + "#### **Pareto Mode**" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "oyfiI3uvgcqt", - "outputId": "60a473d0-1543-4f1f-f407-99d04206d8d7" + "id": "PHN89UFWieom", + "outputId": "78ec67c8-1a43-40a7-81ba-99261f6a866e" }, - "execution_count": 4, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Weighted mode (after minimise transformation, higher is better):\n", - " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}\n", - " → transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", - " → weighted sum = 36.635\n", - " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}\n", - " → transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", - " → weighted sum = 24.580\n", - " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}\n", - " → transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", - " → weighted sum = 45.730\n", - " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}\n", - " → transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", - " → weighted sum = 18.525\n", - " Candidate 4: original={'accuracy': 0.88, 'latency_ms': 100, 'cost': 0.7}\n", - " → transformed={'accuracy': 0.88, 'latency_ms': -100, 'cost': -0.7}\n", - " → weighted sum = 30.580\n", + "Pareto mode – non‑dominated candidates (after minimise transform):\n", + " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}, transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", + " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}, transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", + " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}, transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", + " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}, transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", "\n", - "➡ Selected candidate: 2\n" + "➡ Pareto front size: 4 candidates\n", + "✅ These candidates represent optimal trade‑offs – no one dominates another.\n" ] } - ] - }, - { - "cell_type": "markdown", - "source": [ - "#### **Pareto Mode**" ], - "metadata": { - "id": "Yh_OzX3NiaNS" - } - }, - { - "cell_type": "code", "source": [ "# Cell 6: Pareto Mode\n", "# No weights for selection – we keep all non‑dominated trade‑offs.\n", @@ -534,43 +544,39 @@ " print(f\" Candidate {i}: original={candidates[i]}, transformed={ {k: round(v,2) for k,v in transformed_pareto[i].items()} }\")\n", "print(f\"\\n➡ Pareto front size: {len(front_idxs)} candidates\")\n", "print(\"✅ These candidates represent optimal trade‑offs – no one dominates another.\")" - ], + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VQpOgfxKhLMf" + }, + "source": [ + "#### **Deterministic Tie-Breaking**" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "PHN89UFWieom", - "outputId": "78ec67c8-1a43-40a7-81ba-99261f6a866e" + "id": "gHwWhjlvgzw3", + "outputId": "91c0d19d-cbdd-475e-eb8b-5a16a5f2126e" }, - "execution_count": 5, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Pareto mode – non‑dominated candidates (after minimise transform):\n", - " Candidate 2: original={'accuracy': 0.98, 'latency_ms': 150, 'cost': 1.2}, transformed={'accuracy': 0.98, 'latency_ms': -150, 'cost': -1.2}\n", - " Candidate 0: original={'accuracy': 0.95, 'latency_ms': 120, 'cost': 0.8}, transformed={'accuracy': 0.95, 'latency_ms': -120, 'cost': -0.8}\n", - " Candidate 1: original={'accuracy': 0.92, 'latency_ms': 80, 'cost': 0.6}, transformed={'accuracy': 0.92, 'latency_ms': -80, 'cost': -0.6}\n", - " Candidate 3: original={'accuracy': 0.85, 'latency_ms': 60, 'cost': 0.5}, transformed={'accuracy': 0.85, 'latency_ms': -60, 'cost': -0.5}\n", - "\n", - "➡ Pareto front size: 4 candidates\n", - "✅ These candidates represent optimal trade‑offs – no one dominates another.\n" + "Weighted sums (first two are identical): [20.64, 20.64, 16.59]\n", + "Tie‑break (seed=42) selects Candidate 1\n", + "Re-run with same seed selects Candidate 1 – deterministic!\n", + "✅ With fixed seed, random tie‑break is reproducible.\n" ] } - ] - }, - { - "cell_type": "markdown", - "source": [ - "#### **Deterministic Tie-Breaking**" ], - "metadata": { - "id": "VQpOgfxKhLMf" - } - }, - { - "cell_type": "code", "source": [ "# Create two identical candidates to force a tie.\n", "tied_candidates = [\n", @@ -610,39 +616,48 @@ "best_idx2 = best_candidates2[0]\n", "print(f\"Re-run with same seed selects Candidate {best_idx2} – deterministic!\")\n", "print(\"✅ With fixed seed, random tie‑break is reproducible.\")" - ], + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dx8sQ-NChdI_" + }, + "source": [ + "#### **Visualising the Pareto Front (2D Slice: accuracy vs. -latency)**" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "colab": { - "base_uri": "https://localhost:8080/" + "base_uri": "https://localhost:8080/", + "height": 600 }, - "id": "gHwWhjlvgzw3", - "outputId": "91c0d19d-cbdd-475e-eb8b-5a16a5f2126e" + "id": "PFMadZWehUkf", + "outputId": "e7d7b8d4-6f5a-4738-e2de-eb4ec1467a69" }, - "execution_count": 6, "outputs": [ { - "output_type": "stream", + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { "name": "stdout", + "output_type": "stream", "text": [ - "Weighted sums (first two are identical): [20.64, 20.64, 16.59]\n", - "Tie‑break (seed=42) selects Candidate 1\n", - "Re-run with same seed selects Candidate 1 – deterministic!\n", - "✅ With fixed seed, random tie‑break is reproducible.\n" + "✅ Pareto front candidates: [2, 0, 1, 3]\n", + "✅ Weighted selection picks candidate 2 (weighted sum = 45.730)\n" ] } - ] - }, - { - "cell_type": "markdown", - "source": [ - "#### **Visualising the Pareto Front (2D Slice: accuracy vs. -latency)**" ], - "metadata": { - "id": "dx8sQ-NChdI_" - } - }, - { - "cell_type": "code", "source": [ "# Cell 8: Visualising Pareto Front + Weighted Selection (Self‑Contained)\n", "\n", @@ -703,39 +718,13 @@ "# ----- 6. Print summary -----\n", "print(f\"✅ Pareto front candidates: {front_idxs}\")\n", "print(f\"✅ Weighted selection picks candidate {weighted_best_idx} (weighted sum = {weighted_sums[weighted_best_idx]:.3f})\")" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 600 - }, - "id": "PFMadZWehUkf", - "outputId": "e7d7b8d4-6f5a-4738-e2de-eb4ec1467a69" - }, - "execution_count": 8, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - }, - { - "output_type": "stream", - "name": "stdout", - "text": [ - "✅ Pareto front candidates: [2, 0, 1, 3]\n", - "✅ Weighted selection picks candidate 2 (weighted sum = 45.730)\n" - ] - } ] }, { "cell_type": "markdown", + "metadata": { + "id": "bD6Y0rHtiwfn" + }, "source": [ "## Summary of Demonstrated Behaviour\n", "\n", @@ -745,13 +734,13 @@ "| **Weighted** | Linear combination (after minimise flip) | Candidate 2 |\n", "| **Pareto** | Non‑dominated set | Candidates 0,1,2,3 |\n", "| **Tie‑break** | Deterministic with fixed seed | Reproducible choice|\n" - ], - "metadata": { - "id": "bD6Y0rHtiwfn" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "Rzk-PDfrjiW8" + }, "source": [ "## How This Maps to Real OpenTrace Code (M1+)\n", "---\n", @@ -766,13 +755,13 @@ "| Per‑metric logging | `BaseLogger` integration (M2) |\n", "\n", "**No existing scalar pipeline is changed** – the new path is opt‑in via `ObjectiveConfig`." - ], - "metadata": { - "id": "Rzk-PDfrjiW8" - } + ] }, { "cell_type": "markdown", + "metadata": { + "id": "j-tJIehmjsli" + }, "source": [ "## ✅ Milestone 0 – Checklist\n", "\n", @@ -787,19 +776,21 @@ "- ✔️ Every stub function has comprehensive docstrings and inline comments. \n", "\n", "**Once this plan is approved, M1 implementation will begin with `opto/trainer/objectives.py`, evaluator extensions, BasicSearch upgrade, and full `pytest` coverage.**" - ], - "metadata": { - "id": "j-tJIehmjsli" - } + ] + } + ], + "metadata": { + "colab": { + "provenance": [] }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "lz6qkgS2ji6j" - }, - "execution_count": 7, - "outputs": [] + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" } - ] -} \ No newline at end of file + }, + "nbformat": 4, + "nbformat_minor": 0 +}