From 4f15651257bbdc34e9df7129e97f250b7550bc30 Mon Sep 17 00:00:00 2001 From: drewOrc <36374426+drewOrc@users.noreply.github.com> Date: Tue, 29 Sep 2026 13:47:43 +0800 Subject: [PATCH 1/5] Add efficiency table, RQ5 cost, figures and generated README results Step 5 (docs/PLAN.md RQ5, AC5, AC8). No training and no API calls. - make bench-cpu: CPU batch-1 latency of both encoders with the pinned pretrained backbone and a 151-way head; stops unless the parameter count equals the trained k=100 run's. make llm-latency: Haiku per-call latency. - make cost: measured costs and assumed prices kept apart; break-even per scenario. - make figures: learning curves, risk-coverage, routers, threshold transfer. - make report: results/report.md and the README block between the generated markers; tests/test_report.py fails when either is stale. --- .github/workflows/ci.yml | 4 +- .gitignore | 7 +- DEVLOG.md | 31 + Makefile | 27 +- README.md | 107 +++- docs/OPERATIONS.md | 2 +- pyproject.toml | 5 + results/cost/cost.json | 843 +++++++++++++++++++++++++ results/efficiency/cpu_latency.json | 79 +++ results/efficiency/haiku_latency.json | 32 + results/figures/learning_curves.png | Bin 0 -> 179315 bytes results/figures/risk_coverage.png | Bin 0 -> 153979 bytes results/figures/routers.png | Bin 0 -> 110872 bytes results/figures/threshold_transfer.png | Bin 0 -> 113323 bytes results/report.md | 124 ++++ src/tinyrouter/cost.py | 247 ++++++++ src/tinyrouter/figures.py | 329 ++++++++++ src/tinyrouter/latency.py | 255 ++++++++ src/tinyrouter/report.py | 526 ++++++++++++++- tests/test_cost.py | 79 +++ tests/test_figures.py | 33 + tests/test_latency.py | 96 +++ tests/test_report.py | 133 ++++ uv.lock | 130 ++++ 24 files changed, 3054 insertions(+), 35 deletions(-) create mode 100644 results/cost/cost.json create mode 100644 results/efficiency/cpu_latency.json create mode 100644 results/efficiency/haiku_latency.json create mode 100644 results/figures/learning_curves.png create mode 100644 results/figures/risk_coverage.png create mode 100644 results/figures/routers.png create mode 100644 results/figures/threshold_transfer.png create mode 100644 results/report.md create mode 100644 src/tinyrouter/cost.py create mode 100644 src/tinyrouter/figures.py create mode 100644 src/tinyrouter/latency.py create mode 100644 tests/test_cost.py create mode 100644 tests/test_figures.py create mode 100644 tests/test_latency.py create mode 100644 tests/test_report.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9fa560..493f478 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,7 +64,9 @@ jobs: # The llm group (anthropic SDK) is installed so the Haiku runner's # retry and key-redaction tests use the SDK's real exception classes. # They run against a fake client; no key is set and no API is called. - run: uv sync --locked --group llm + # The figures group (matplotlib) lets the figure tests draw from the + # committed JSON. + run: uv sync --locked --group llm --group figures - name: make lint (ruff check, ruff format --check, em dash check) run: make lint diff --git a/.gitignore b/.gitignore index 9e19bed..0bc8d1b 100644 --- a/.gitignore +++ b/.gitignore @@ -26,11 +26,12 @@ checkpoints/ *.pt *.onnx -# Run outputs. Committed: results/runs/*.json, results/ac2.json and -# results/logits-manifest.json (SHA-256 of every logits archive). Not +# Run outputs. Committed: results/runs/*.json, results/ac2.json, +# results/logits-manifest.json (SHA-256 of every logits archive) and +# everything `make report` reads or writes (analysis, efficiency, cost, +# figures, report.md). Not # committed: the archives themselves (about 5 MB each, about 40 runs); # they are attached to a GitHub Release and checked with `make verify-logits`. -results/summary.md results/logits/ # Haiku replies: the journal and the predictions file (about 3 MB) go to the # GitHub Release like the logits; results/llm-manifest.json and diff --git a/DEVLOG.md b/DEVLOG.md index a9ff26b..3897396 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -4,6 +4,37 @@ --- +## 2026-09-29(深夜,四):步驟 5,效率表、成本、圖與 README 首屏自動產生(Tier 1 完成) + +### 本次工作 / 執行摘要 +- **CPU 延遲(AC5,`make bench-cpu`)**:曲線權重已刪,改用同架構量:鎖定 revision 的預訓練骨架 + 151 類分類頭(seed 42 隨機初始化)+ 同 tokenizer 與 max_length。延遲只取決於架構與輸入形狀,不取決於權重數值;程式比對參數量必須等於 k=100 訓練 run 記錄的值(BERT 109,598,359、ModernBERT 149,720,983),不等就停。量法:CPU、batch 1、`torch.inference_mode()`、4 個 intra-op 執行緒、interop 1、暖機 50 筆,再依序量 validation 前 500 筆;報 tokenization + forward + argmax 與 forward-only 兩種。 +- **Haiku 延遲(`make llm-latency`)**:journal 每筆的 `latency_ms` 是用戶端量的最後一次嘗試時間,含網路往返與 API 排隊,執行時最多 6 個呼叫同時進行;8,600 筆沒有任何重試。 +- **成本(RQ5,`make cost`)**:`results/cost/cost.json` 把實測(M4 訓練 wall-clock、CPU 延遲、Haiku token 與花費、各 router 在 test 的實際 Haiku 花費)與假設(accelerator 每小時 US$0.5、1、2;標註每筆 US$0.05、0.2、1;本機推論每 vCPU-hour US$0.05、滿載)分開存。不把 Mac 購買價算進 run 的成本。損益兩平 = 一次性成本 ÷(LLM-only 每筆 − router 每筆),對 ModernBERT k=10、k=100 的 small-only 與 hybrid、每個價格情境都算,標為情境敏感度。 +- **`make report`**:從 commit 的 JSON 產生 `results/report.md` 與 README 標記之間的區塊(首屏雙欄、router 表、效率表、成本表、聚合方式、圖、Limitations)。`tests/test_report.py` 在 CI 重算並比對,不一致就紅。 +- **`make figures`**:四張 PNG(學習曲線、risk-coverage、router 比較、threshold transfer),Okabe-Ito 配色加線型與標記,300 dpi,拿掉 PNG 的 Software 欄位,兩次輸出逐位元組相同(有測試)。matplotlib 3.11.2 放在新的 `figures` group,CI 的 test job 一併安裝。 +- README 另加隱私說明:Release 存的是公開 CLINC 查詢的 hash 與 LLM 回覆,這個 journal 設計不應原封不動套到含私人查詢的產品。 + +### 核心發現 / 數據 +(取自 `results/efficiency/*.json`、`results/cost/cost.json`、`results/analysis/summary.json`) +- CPU p50 / p95(Apple M4,4 執行緒,端到端):BERT 15.6 / 17.0 ms,ModernBERT 20.2 / 23.2 ms;Haiku test 669 / 916 ms(含網路)。 +- 訓練(k=100,M4 MPS):BERT 852 ± 33 s、峰值 4.31 GiB;ModernBERT 1,198 ± 1 s、峰值 6.24 GiB(MPS driver 記憶體取樣)。ECE(151 類,test)溫度校準前後:BERT 3.90 → 3.80,ModernBERT 3.95 → 2.45。 +- Haiku 每 1K test 查詢 US$0.369(約 340K 輸入、5.9K 輸出 token)。 +- 損益兩平(只算訓練,US$1/h):ModernBERT k=10 hybrid 198 筆、k=100 hybrid 915 筆。訓練算力只值幾分錢;一旦要付標註費,標註主導(k=100、每筆 US$0.2 時約 839 萬筆)。 +- k=100 的 hybrid 在三個 seed 各呼叫 Haiku 170、9、31 次(共 5,500 筆 test),8 類準確率 91.9 → 92.1,是安全與診斷槓桿,不是準確率主要來源;k=10 時 81.5 → 88.0(Haiku 呼叫 23.9%)才是 fallback 價值的主要證據。 + +### Blockers / 遇到的問題 +- (無) + +### Next +- [ ] Tier 2(步驟 6):ONNX int8 + FastAPI + Docker + 壓測,完成後把 RQ5 的本機延遲換成 ONNX 實測 + +### Files / Budget +- 新增:`src/tinyrouter/latency.py`、`cost.py`、`figures.py`;`tests/test_latency.py`、`test_cost.py`、`test_report.py`、`test_figures.py`;`results/efficiency/*.json`、`results/cost/cost.json`、`results/figures/*.png`、`results/report.md` +- 修改:`src/tinyrouter/report.py`(改寫)、`Makefile`、`README.md`、`pyproject.toml`、`uv.lock`、`.github/workflows/ci.yml`、`.gitignore`、`docs/OPERATIONS.md`、`DEVLOG.md` +- API 花費:US$0 + +--- + ## 2026-09-29(深夜,三):PR #17 複查小修(R1 到 R4) ### 本次工作 / 執行摘要 diff --git a/Makefile b/Makefile index cf174c4..f2c3498 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ .PHONY: setup lint format test test-network smoke train evaluate ac2 pilot-lr pilot-steps baselines \ - curve oos-ablation verify-logits llm-smoke llm verify-llm analysis report clean-checkpoints + curve oos-ablation verify-logits llm-smoke llm verify-llm analysis bench-cpu llm-latency cost figures report \ + clean-checkpoints CONFIG ?= configs/bert-base.yaml SEED ?= 42 @@ -141,6 +142,30 @@ verify-llm: analysis: uv run python -m tinyrouter.analysis_run --quiet +# AC5 latency. bench-cpu: both encoders on CPU, batch 1, validation rows +# 0-499, 4 threads, the pretrained backbone with a 151-way head (latency +# depends on shapes, not weight values; see src/tinyrouter/latency.py); +# downloads the two base models; writes results/efficiency/cpu_latency.json. +# llm-latency: Haiku's per-call latency from results/llm/haiku-8way.jsonl +# (Release; check it with verify-llm); writes results/efficiency/haiku_latency.json. +bench-cpu: + uv run $(UV_ENV) python -m tinyrouter.latency cpu + +llm-latency: + uv run python -m tinyrouter.latency haiku + +# RQ5 from committed JSON only: measured numbers and assumed prices kept +# apart, break-even per scenario; writes results/cost/cost.json. +cost: + uv run python -m tinyrouter.cost + +# README figures from results/analysis/*.json; writes results/figures/*.png. +figures: + uv run --group figures python -m tinyrouter.figures + +# results/report.md and the README block between the BEGIN/END GENERATED +# markers, from committed JSON. tests/test_report.py fails when either is stale. +# Order after new results: analysis, bench-cpu, llm-latency, cost, figures, report. report: uv run python -m tinyrouter.report diff --git a/README.md b/README.md index 6a5092e..96dbb22 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,101 @@ A small fine-tuned encoder that routes CLINC150 queries to 7 agents (or out-of-s ## Results -Not produced yet. Every number in this section will be generated by `make report` from `results/*.json`; nothing here is written by hand. + +Test split, 8-way routing (7 agents + out-of-scope), mean ± std over seeds 42, 43, 44. + +| What transferred | What did not transfer | +|---|---| +| ModernBERT-base fine-tuned on all 100 examples per intent routes 91.9 ± 0.1% of test queries correctly in the 8-way space (Claude Haiku 4.5 zero-shot: 82.1%). | The deferral threshold chosen on validation for 2% selective risk gives 7.34 ± 0.86% selective risk on test (ModernBERT k=100; validation: 1.50 ± 0.13%). | +| With 10 examples per intent, deferring low-confidence queries to Haiku lifts 8-way accuracy from 81.5 ± 0.7% (small model alone) to 88.0 ± 0.4%, with Haiku called on 23.9 ± 3.8% of queries. | Validation is 3.2% OOS and test 18.2%. Under this reweighting diagnostic, the OOS prior shift contributes about 87% of the observed risk gap; the remaining difference is consistent with a higher conditional error rate on test OOS queries that the model keeps (36.5 ± 3.0% vs 19.9 ± 2.9% on validation). | + +**Engineering conclusion.** A deferral threshold has to be calibrated on labelled data that represents the traffic it will see. A benchmark's validation split is not a risk guarantee for production. + +**How to read the hybrid.** With few labels the fallback is worth the most: at k=10 it is the best evidence for the cascade (numbers above). With enough labels the local model covers almost all traffic: at k=100 the hybrid sends 1.3 ± 1.6% of test queries to Haiku (170, 9, 31 of 5,500 for seeds 42, 43, 44) and moves 8-way accuracy from 91.9 ± 0.1% to 92.1 ± 0.1%. There the fallback is a small safety and diagnostic lever, not the main source of accuracy. + +### Routers (test, 8-way) + +| router | 8-way acc (%) | OOS recall (%) | high-confidence OOS misroute (%) | Haiku calls (%) | Haiku US$ per 1K queries | +|---|---|---|---|---|---| +| LLM-only (Haiku 4.5) | 82.1 | 56.8 | n/a | 100.0 | 0.369 | +| ModernBERT k=10, small-only | 81.5 ± 0.7 | 23.1 ± 3.2 | 76.9 ± 3.2 | 0.0 ± 0.0 | 0.000 ± 0.000 | +| ModernBERT k=10, hybrid (target 2%) | 88.0 ± 0.4 | 53.5 ± 1.5 | 15.4 ± 4.7 | 23.9 ± 3.8 | 0.088 ± 0.014 | +| ModernBERT k=10, oracle (upper bound) | 91.5 ± 0.2 | 61.2 ± 0.7 | 0.0 ± 0.0 | 18.5 ± 0.7 | 0.068 ± 0.003 | +| ModernBERT k=100, small-only | 91.9 ± 0.1 | 61.1 ± 0.4 | 38.9 ± 0.4 | 0.0 ± 0.0 | 0.000 ± 0.000 | +| ModernBERT k=100, hybrid (target 2%) | 92.1 ± 0.1 | 62.4 ± 1.3 | 34.5 ± 5.5 | 1.3 ± 1.6 | 0.005 ± 0.006 | +| ModernBERT k=100, oracle (upper bound) | 95.1 ± 0.1 | 75.6 ± 0.6 | 0.0 ± 0.0 | 8.1 ± 0.1 | 0.030 ± 0.000 | + +### Efficiency (AC5) + +| | BERT-base (historical baseline) | ModernBERT-base (main model) | Claude Haiku 4.5 | +|---|---|---|---| +| parameters | 109.6M | 149.7M | n/a | +| training time, k=100 (Apple M4, MPS) | 852 ± 33 s | 1,198 ± 1 s | none (zero-shot) | +| training peak memory, k=100 (MPS driver, sampled) | 4.31 ± 0.03 GiB | 6.24 ± 0.60 GiB | n/a | +| 8-way accuracy, test (%) | 91.1 ± 0.5 | 91.9 ± 0.1 | 82.1 | +| OOS recall, test (%) | 56.1 ± 2.6 | 61.1 ± 0.4 | 56.8 | +| ECE 151-way, test, before → after temperature (%) | 3.90 ± 0.34 → 3.80 ± 0.44 | 3.95 ± 0.20 → 2.45 ± 0.29 | n/a | +| latency p50 / p95, batch 1 | 15.6 / 17.0 ms | 20.2 / 23.2 ms | 669 / 916 ms (API, incl. network) | + +Encoder latency: Apple M4 CPU, batch 1, 4 threads, torch 2.14.0, `torch.inference_mode()`, 50 warm-up queries, then validation rows 0 to 499, in order; tokenization + forward + argmax. It is timed with the same architecture, not the fine-tuned weights (deleted to save disk): the pinned pretrained backbone, a 151-way head, the same tokenizer and max_length. Latency depends on shapes, not weight values, and the parameter count equals the trained run's. Haiku: client-side time per call on the 5,500 test queries, including the network round trip, with up to 6 calls in flight. Peak memory samples `torch.mps.driver_allocated_memory()` after each backward pass and optimizer step (includes the allocator cache). Accuracy, OOS recall and ECE use the 8-way aggregation chosen on validation. Values are mean ± std over seeds 42, 43, 44. + +### Cost (RQ5) + +Measured: Haiku costs US$0.369 per 1K test queries (340.2K input and 5.89K output tokens per 1K; the whole run of 8,600 calls cost US$3.18). One ModernBERT training run takes 3.3 min at k=10 and 20.0 min at k=100 on an Apple M4. + +Break-even queries against LLM-only, for **assumed** accelerator prices (training only, no labelling cost, local inference priced as below). A scenario sensitivity, not a forecast: + +| point | router | at US$0.5/h | at US$1/h | at US$2/h | +|---|---|---|---|---| +| ModernBERT k=10 | small-only | 75 | 151 | 302 | +| ModernBERT k=10 | hybrid | 99 | 198 | 396 | +| ModernBERT k=100 | small-only | 452 | 904 | 1,807 | +| ModernBERT k=100 | hybrid | 458 | 915 | 1,830 | + +Break-even compares cost only: at k=10 the small model alone is less accurate than Haiku and the hybrid is more accurate than Haiku (router table). + +Training compute costs cents; labelling dominates once it has to be paid for. CLINC150 is an existing dataset, so labelling cost is an assumed sensitivity only (break-even queries, training plus labelling): + +| hybrid, US$1/h | labelled rows | at US$0.05 per label | at US$0.2 per label | at US$1 per label | +|---|---|---|---|---| +| ModernBERT-base k=10 | 1,525 | 272,097 | 1,087,794 | 5,438,179 | +| ModernBERT-base k=100 | 15,250 | 2,097,550 | 8,387,456 | 41,933,620 | + +Local inference is assumed to cost US$0.05 per vCPU-hour at full utilisation, times the measured p50 latency and thread count. Full grid and every input: `results/cost/cost.json`. + +**8-way aggregation.** The model predicts 151 intents. Two ways map that to 8 agents: take the argmax intent and map it (`argmax`), or sum the probabilities per agent and take the largest (`summed`). Each run picks one by validation 8-way accuracy only (ties go to argmax). BERT-base: k=1 summed, k=5 summed, k=10 per seed summed/argmax/argmax, k=25 argmax, k=50 per seed summed/summed/argmax, k=100 per seed argmax/summed/argmax. ModernBERT-base: k=1 summed, k=5 summed, k=10 summed, k=25 per seed summed/argmax/summed, k=50 argmax, k=100 argmax. + +### Figures + +![Learning curves](results/figures/learning_curves.png) + +*Test 8-way accuracy and OOS recall against labelled examples per intent (log scale), small model alone, 8-way aggregation chosen on validation; bands are mean ± std over three seeds. The dash-dot line is Claude Haiku 4.5 zero-shot on the same queries. Shaded: k ≤ 10 trains for the fixed 400-step budget.* + +![Risk-coverage](results/figures/risk_coverage.png) + +*Test selective risk (8-way error among the queries the small model keeps) against coverage, for ModernBERT at k=10 and k=100, for each confidence signal; the band is the std of the temperature-scaled MSP, the main signal. The four signals nearly coincide.* + +![Router comparison](results/figures/routers.png) + +*Test 8-way accuracy and share of queries sent to Haiku for LLM-only, small-only, the hybrid (threshold chosen on validation for 2% selective risk) and the oracle, which defers exactly the small model's errors. Error bars are std over three seeds.* + +![Threshold transfer](results/figures/threshold_transfer.png) + +*Selective risk of the hybrid whose threshold was chosen on validation for 2% risk: on validation, on test, and on test reweighted to the validation OOS share (a diagnostic, not a method). Points appear where all three seeds had a feasible threshold.* + +## Limitations + +- **Hyperparameters at the edge of their grids.** The validation pilots chose values at the upper end: learning rate 5e-05 is the top of {1e-05, 2e-05, 5e-05}; S_min 400 is the top of {100, 200, 400}. A better value may lie beyond. +- **Small k is a fixed step budget.** k in {1, 5, 10} trains for S_min = 400 steps (more than 5 epochs), so those points show performance at that budget. +- **Latency uses the same architecture, not the trained weights** (see the efficiency table note). +- **Validation thresholds do not transfer** to test (headline above). +- **One benchmark.** CLINC150, English, one domain mix; BANKING77-OOS is planned for v0.2. +- Training on Apple MPS is not bit-for-bit deterministic, hence three seeds. + + +### Privacy of the stored LLM replies + +The `haiku-predictions` Release stores, for every query, a SHA-256 of the query text, Haiku's reply, token counts and latency. That is fine here because every query is public CLINC150 text. The same journal design should not be copied unchanged into a product that sees private queries: a hash of a short, guessable query can be reversed by hashing candidates, and replies can echo what the user wrote. There it needs a retention limit, a keyed hash or no query identifier at all, and access control. ## Quick start @@ -39,7 +133,11 @@ Other targets: | `make verify-llm` | check `results/llm/haiku-8way.jsonl`: every row once, SHA-256 equal in the file, the summary and the manifest | | `make verify-logits` | check every archive in `results/logits/` against `results/logits-manifest.json` | | `make analysis` | RQ2 to RQ4 from the stored logits and Haiku predictions, no training and no API calls; every temperature, aggregation, threshold and signal is chosen on validation; writes `results/analysis/{summary,curves,haiku}.json` and ends with `completed analysis (75/75 archives, 8600/8600 llm rows, 25 groups)` | -| `make report` | build `results/summary.md` from `results/runs/*.json` | +| `make bench-cpu` | CPU batch-1 latency of both encoders on validation rows 0-499 (4 threads, 50 warm-up queries), with the pinned pretrained backbone and a 151-way head; stops unless the parameter count equals the trained k=100 run's; writes `results/efficiency/cpu_latency.json` | +| `make llm-latency` | Haiku's per-call latency from `results/llm/haiku-8way.jsonl`; writes `results/efficiency/haiku_latency.json` | +| `make cost` | RQ5 from committed JSON: measured training time, latency and Haiku spend, assumed prices, break-even per scenario; writes `results/cost/cost.json` | +| `make figures` | the four README figures from `results/analysis/*.json`; writes `results/figures/*.png` (byte-identical on rerun with the same matplotlib) | +| `make report` | `results/report.md` and the generated block of this README, from committed JSON; `tests/test_report.py` fails when either is stale | | `make clean-checkpoints` | delete all trained weights | Run every target from the repository root: `checkpoint_root` and `results_root` in the configs are relative paths. @@ -94,7 +192,10 @@ src/tinyrouter/ analysis.py one archive: 8-way aggregation, OOS, signals, ECE, fallback, oracle diagnostics.py why validation thresholds miss the target on test (OOS share, reweighting) analysis_run.py `make analysis`: completion checks, label cross-checks, mean and std over seeds - report.py results/*.json -> results/summary.md + latency.py CPU batch-1 latency of the encoders; Haiku latency from the journal + cost.py RQ5: measured costs, assumed prices, break-even + figures.py README figures from results/analysis/*.json + report.py results/*.json -> results/report.md and the README's generated block smoke.py end-to-end wiring check tests/ pytest; `network` marker for Hub downloads ``` diff --git a/docs/OPERATIONS.md b/docs/OPERATIONS.md index 0512ec0..68c8d5f 100644 --- a/docs/OPERATIONS.md +++ b/docs/OPERATIONS.md @@ -8,7 +8,7 @@ TinyRouter is a research repository with no deployment target: nothing runs as a | job | runs | required to merge | |---|---|---| -| `test` | tracked-files guard, `uv sync --locked --group llm` (the SDK's exception classes for the Haiku runner tests; no key, no API call), `make lint`, `make test` (offline) | yes | +| `test` | tracked-files guard, `uv sync --locked --group llm --group figures` (the SDK's exception classes for the Haiku runner tests, no key and no API call; matplotlib for the figure tests), `make lint`, `make test` (offline) | yes | | `commit-hygiene` | rejects tool-attribution trailers in commit messages (patterns in `.github/disallowed-trailers.txt`) | yes | | `network` | `make test-network` and `make smoke` against the Hugging Face Hub | no | | `pr-text-hygiene` (`pr-text.yml`) | rejects the same patterns in the PR title and body, on open, edit, push and reopen | yes (added to the required checks once it is on `main`) | diff --git a/pyproject.toml b/pyproject.toml index 5210691..0c87a41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,11 @@ onnx = [ "onnxruntime==1.30.0", "onnxscript==0.7.2", ] +# `make figures` (results/figures/*.png). Not installed by `uv sync`; CI's +# test job installs it so the figure tests run there. +figures = [ + "matplotlib==3.11.2", +] [tool.uv] default-groups = ["dev"] diff --git a/results/cost/cost.json b/results/cost/cost.json new file mode 100644 index 0000000..ac058f0 --- /dev/null +++ b/results/cost/cost.json @@ -0,0 +1,843 @@ +{ + "format_version": 1, + "inputs_sha256": { + "analysis/summary.json": "6d108f1876514e00a6312858fef47473a34e610bd9b04617ab71fae72a149f06", + "analysis/haiku.json": "d91a1265d0f68fea2f3756a44c9d4d68ac337074982cfb738cd6330e45831acc", + "llm/haiku-8way.json": "d2423251d948f730a50cadca163327edca1ea294d6f5bfe91c334a4e8facfa99", + "efficiency/cpu_latency.json": "39ba7ebf0bb4378977be5ab8d4e3d2ea98c290ab8162d0a191d8d9c01d08ff21", + "curves/bert.json": "35b46d514e6b47728501678dd6e029fb6a670e9b57d4514d6a2e73827aa987a5", + "curves/modernbert.json": "515c153596bfb0115b39b2a6166999135014ef2ca68361a35764aa1866e9ffc4" + }, + "measured": { + "training": { + "bert": { + "1": { + "train_wall_seconds": { + "mean": 136.701333, + "std": 3.288993, + "values": [ + 133.46, + 136.608, + 140.036 + ] + }, + "train_rows": 153, + "steps": 400, + "device": "mps" + }, + "5": { + "train_wall_seconds": { + "mean": 136.528, + "std": 0.787443, + "values": [ + 136.13, + 137.435, + 136.019 + ] + }, + "train_rows": 763, + "steps": 400, + "device": "mps" + }, + "10": { + "train_wall_seconds": { + "mean": 137.411667, + "std": 0.815936, + "values": [ + 137.968, + 137.792, + 136.475 + ] + }, + "train_rows": 1525, + "steps": 400, + "device": "mps" + }, + "25": { + "train_wall_seconds": { + "mean": 206.634, + "std": 0.366004, + "values": [ + 207.001, + 206.269, + 206.632 + ] + }, + "train_rows": 3813, + "steps": 600, + "device": "mps" + }, + "50": { + "train_wall_seconds": { + "mean": 411.097333, + "std": 1.184395, + "values": [ + 412.406, + 410.787, + 410.099 + ] + }, + "train_rows": 7625, + "steps": 1195, + "device": "mps" + }, + "100": { + "train_wall_seconds": { + "mean": 851.581, + "std": 32.537189, + "values": [ + 886.184, + 846.954, + 821.605 + ] + }, + "train_rows": 15250, + "steps": 2385, + "device": "mps" + } + }, + "modernbert": { + "1": { + "train_wall_seconds": { + "mean": 196.575, + "std": 3.053313, + "values": [ + 193.341, + 196.976, + 199.408 + ] + }, + "train_rows": 153, + "steps": 400, + "device": "mps" + }, + "5": { + "train_wall_seconds": { + "mean": 199.517, + "std": 0.764402, + "values": [ + 199.008, + 199.147, + 200.396 + ] + }, + "train_rows": 763, + "steps": 400, + "device": "mps" + }, + "10": { + "train_wall_seconds": { + "mean": 199.971667, + "std": 1.186576, + "values": [ + 200.03, + 201.128, + 198.757 + ] + }, + "train_rows": 1525, + "steps": 400, + "device": "mps" + }, + "25": { + "train_wall_seconds": { + "mean": 302.031667, + "std": 1.210153, + "values": [ + 301.341, + 301.325, + 303.429 + ] + }, + "train_rows": 3813, + "steps": 600, + "device": "mps" + }, + "50": { + "train_wall_seconds": { + "mean": 600.910667, + "std": 1.226663, + "values": [ + 602.167, + 600.849, + 599.716 + ] + }, + "train_rows": 7625, + "steps": 1195, + "device": "mps" + }, + "100": { + "train_wall_seconds": { + "mean": 1198.300667, + "std": 1.482022, + "values": [ + 1199.467, + 1198.802, + 1196.633 + ] + }, + "train_rows": 15250, + "steps": 2385, + "device": "mps" + } + } + }, + "cpu_latency": { + "intra_op_threads": 4, + "hardware": "Apple M4", + "end_to_end_ms": { + "bert": { + "p50_ms": 15.634, + "p95_ms": 17.023, + "mean_ms": 15.616 + }, + "modernbert": { + "p50_ms": 20.179, + "p95_ms": 23.165, + "mean_ms": 19.878 + } + } + }, + "haiku": { + "model": "claude-haiku-4-5-20251001", + "calls": 8600, + "input_tokens": 2925596, + "output_tokens": 50630, + "cost_usd": 3.178746, + "input_tokens_per_1k_queries": 340185.581, + "output_tokens_per_1k_queries": 5887.209, + "cost_usd_per_1k_queries": { + "validation": 0.369852, + "test": 0.369492 + } + }, + "routers": { + "modernbert/k10": { + "small_only": { + "accuracy_8": 0.81503, + "llm_call_rate": 0.0, + "llm_cost_usd_per_1k": 0.0 + }, + "hybrid": { + "accuracy_8": 0.879515, + "llm_call_rate": 0.238788, + "llm_cost_usd_per_1k": 0.087936 + } + }, + "modernbert/k100": { + "small_only": { + "accuracy_8": 0.918727, + "llm_call_rate": 0.0, + "llm_cost_usd_per_1k": 0.0 + }, + "hybrid": { + "accuracy_8": 0.921273, + "llm_call_rate": 0.012727, + "llm_cost_usd_per_1k": 0.004693 + } + } + }, + "router_target_risk": 0.02 + }, + "assumptions": { + "accelerator_usd_per_hour": [ + 0.5, + 1.0, + 2.0 + ], + "label_usd_per_example": [ + 0.05, + 0.2, + 1.0 + ], + "vcpu_usd_per_hour": 0.05, + "notes": { + "training": "measured M4 wall-clock hours of one training run, priced as if billed at each accelerator-hour rate; these are assumed rates, not money spent (the runs used a Mac already owned, and its purchase price is not charged to a run)", + "labelling": "CLINC150 is an existing dataset, so no labelling was paid; cost = labelled training rows x an assumed price per label, a sensitivity only", + "local_inference": "measured CPU p50 end-to-end latency x intra-op threads (vCPUs) x an assumed price per vCPU-hour, at full utilisation; idle capacity would cost more" + } + }, + "break_even": { + "formula": "one_time_usd / (llm_only_usd_per_query - router_usd_per_query); null when the router saves nothing per query", + "label": "scenario sensitivity, not a forecast", + "rows": [ + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.0, + "one_time_usd": 0.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 75.4, + "break_even_queries_api_only": 75.2 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.05, + "one_time_usd": 76.277774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 207067.8, + "break_even_queries_api_only": 206439.6 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.2, + "one_time_usd": 305.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 828045.1, + "break_even_queries_api_only": 825532.8 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 4139924.2, + "break_even_queries_api_only": 4127363.4 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 150.8, + "break_even_queries_api_only": 150.3 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.05, + "one_time_usd": 76.305548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 207143.2, + "break_even_queries_api_only": 206514.7 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.2, + "one_time_usd": 305.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 828120.5, + "break_even_queries_api_only": 825608.0 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 4139999.6, + "break_even_queries_api_only": 4127438.6 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 301.6, + "break_even_queries_api_only": 300.7 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.05, + "one_time_usd": 76.361095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 207294.0, + "break_even_queries_api_only": 206665.1 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.2, + "one_time_usd": 305.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 828271.3, + "break_even_queries_api_only": 825758.3 + }, + { + "point": "modernbert/k10", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 4140150.4, + "break_even_queries_api_only": 4127588.9 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.0, + "one_time_usd": 0.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 99.0, + "break_even_queries_api_only": 98.6 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.05, + "one_time_usd": 76.277774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 271998.1, + "break_even_queries_api_only": 270915.1 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.2, + "one_time_usd": 305.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 1087695.3, + "break_even_queries_api_only": 1083364.5 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.027774, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 5438080.4, + "break_even_queries_api_only": 5416427.9 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 198.1, + "break_even_queries_api_only": 197.3 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.05, + "one_time_usd": 76.305548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 272097.1, + "break_even_queries_api_only": 271013.8 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.2, + "one_time_usd": 305.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 1087794.3, + "break_even_queries_api_only": 1083463.1 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.055548, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 5438179.4, + "break_even_queries_api_only": 5416526.5 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 396.2, + "break_even_queries_api_only": 394.6 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.05, + "one_time_usd": 76.361095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 272295.2, + "break_even_queries_api_only": 271211.0 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.2, + "one_time_usd": 305.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 1087992.4, + "break_even_queries_api_only": 1083660.4 + }, + { + "point": "modernbert/k10", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 1.0, + "one_time_usd": 1525.111095, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 8.7936e-05, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 5438377.5, + "break_even_queries_api_only": 5416723.8 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.0, + "one_time_usd": 0.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 451.8, + "break_even_queries_api_only": 450.4 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.05, + "one_time_usd": 762.666431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2070376.2, + "break_even_queries_api_only": 2064094.6 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8280149.3, + "break_even_queries_api_only": 8255027.0 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41398939.5, + "break_even_queries_api_only": 41273333.2 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 903.6, + "break_even_queries_api_only": 900.9 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.05, + "one_time_usd": 762.832861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2070828.0, + "break_even_queries_api_only": 2064545.0 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8280601.1, + "break_even_queries_api_only": 8255477.4 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41399391.3, + "break_even_queries_api_only": 41273783.6 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 1807.2, + "break_even_queries_api_only": 1801.7 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.05, + "one_time_usd": 763.165723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2071731.6, + "break_even_queries_api_only": 2065445.9 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8281504.7, + "break_even_queries_api_only": 8256378.3 + }, + { + "point": "modernbert/k100", + "router": "small_only", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 0.0, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41400294.9, + "break_even_queries_api_only": 41274684.5 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.0, + "one_time_usd": 0.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 457.6, + "break_even_queries_api_only": 456.2 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.05, + "one_time_usd": 762.666431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2097092.9, + "break_even_queries_api_only": 2090648.4 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8386998.7, + "break_even_queries_api_only": 8361224.8 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 0.5, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.166431, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41933162.7, + "break_even_queries_api_only": 41804298.9 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 915.3, + "break_even_queries_api_only": 912.5 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.05, + "one_time_usd": 762.832861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2097550.5, + "break_even_queries_api_only": 2091104.6 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8387456.3, + "break_even_queries_api_only": 8361681.0 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 1.0, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.332861, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41933620.4, + "break_even_queries_api_only": 41804755.1 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.0, + "one_time_usd": 0.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 1830.5, + "break_even_queries_api_only": 1824.9 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.05, + "one_time_usd": 763.165723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 2098465.8, + "break_even_queries_api_only": 2092017.0 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 0.2, + "one_time_usd": 3050.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 8388371.6, + "break_even_queries_api_only": 8362593.4 + }, + { + "point": "modernbert/k100", + "router": "hybrid", + "accelerator_usd_per_hour": 2.0, + "label_usd_per_example": 1.0, + "one_time_usd": 15250.665723, + "llm_only_usd_per_query": 0.000369492, + "router_api_usd_per_query": 4.693e-06, + "router_local_usd_per_query": 1.121e-06, + "break_even_queries": 41934535.6, + "break_even_queries_api_only": 41805667.6 + } + ] + } +} diff --git a/results/efficiency/cpu_latency.json b/results/efficiency/cpu_latency.json new file mode 100644 index 0000000..94f9926 --- /dev/null +++ b/results/efficiency/cpu_latency.json @@ -0,0 +1,79 @@ +{ + "format_version": 1, + "method": { + "device": "cpu", + "batch_size": 1, + "mode": "torch.inference_mode", + "queries": "validation rows 0 to 499, in order", + "warmup_queries": 50, + "intra_op_threads": 4, + "inter_op_threads": 1, + "percentiles": "numpy.percentile, method=linear", + "end_to_end": "tokenization + forward + argmax", + "forward": "forward pass only", + "weights": "timed with the pinned pretrained backbone and a randomly initialised 151-way head, not the fine-tuned weights (deleted after their logits were archived); latency depends on the architecture and input shapes, not on the weight values, and the parameter count equals the trained k=100 run's" + }, + "hardware": { + "cpu": "Apple M4", + "machine": "arm64", + "platform": "macOS-26.6.2-arm64-arm-64bit" + }, + "versions": { + "python": "3.12.12", + "torch": "2.14.0", + "transformers": "5.17.0" + }, + "measured_at": "2026-09-29T05:38:49+00:00", + "models": { + "bert": { + "model_name": "google-bert/bert-base-uncased", + "model_revision": "86b5e0934494bd15c9632b12f734a8a67f723594", + "num_labels": 151, + "max_length": 64, + "parameters_total": 109598359, + "parameters_match_trained_run": true, + "attention_implementation": "sdpa", + "end_to_end": { + "n": 500, + "mean_ms": 15.616, + "p50_ms": 15.634, + "p95_ms": 17.023, + "min_ms": 13.672, + "max_ms": 18.172 + }, + "forward": { + "n": 500, + "mean_ms": 15.503, + "p50_ms": 15.528, + "p95_ms": 16.916, + "min_ms": 13.551, + "max_ms": 18.084 + } + }, + "modernbert": { + "model_name": "answerdotai/ModernBERT-base", + "model_revision": "8949b909ec900327062f0ebf497f51aef5e6f0c8", + "num_labels": 151, + "max_length": 64, + "parameters_total": 149720983, + "parameters_match_trained_run": true, + "attention_implementation": "sdpa", + "end_to_end": { + "n": 500, + "mean_ms": 19.878, + "p50_ms": 20.179, + "p95_ms": 23.165, + "min_ms": 16.237, + "max_ms": 27.292 + }, + "forward": { + "n": 500, + "mean_ms": 19.763, + "p50_ms": 20.068, + "p95_ms": 23.064, + "min_ms": 16.134, + "max_ms": 27.189 + } + } + } +} diff --git a/results/efficiency/haiku_latency.json b/results/efficiency/haiku_latency.json new file mode 100644 index 0000000..0642fbe --- /dev/null +++ b/results/efficiency/haiku_latency.json @@ -0,0 +1,32 @@ +{ + "format_version": 1, + "source": "haiku-8way.jsonl", + "measures": "client-side wall time of the last attempt of each messages.create call; includes the network round trip and API queueing; up to 6 calls were in flight", + "calls_retried": 0, + "all": { + "n": 8600, + "mean_ms": 715.513, + "p50_ms": 671.0, + "p95_ms": 921.0, + "min_ms": 534.0, + "max_ms": 7453.0 + }, + "splits": { + "test": { + "n": 5500, + "mean_ms": 710.406, + "p50_ms": 669.0, + "p95_ms": 916.0, + "min_ms": 534.0, + "max_ms": 5601.0 + }, + "validation": { + "n": 3100, + "mean_ms": 724.574, + "p50_ms": 676.0, + "p95_ms": 939.05, + "min_ms": 546.0, + "max_ms": 7453.0 + } + } +} diff --git a/results/figures/learning_curves.png b/results/figures/learning_curves.png new file mode 100644 index 0000000000000000000000000000000000000000..16eec6f17f03de15c1e09e2b04ac02dad7615dbd GIT binary patch literal 179315 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

#Z4m zYqF(ir3bSkYvq*l)u_$F=fp8CKd$I*XVJ=1Qfv-P&>7LSzxgJUdLt8uj5&{ zh!uJ85IpI?BYx>@_T8QmJQK}jB~S;(;LQS@tt_^++e=ok-NH3?@Xgy>lsgJO3&-k{ zMO@6$Qq9aIYQfIy@HAAyPOXQ}cR{+%i3+T3jC1E-&SaNWnVRrZ<;N{lX$8G>%M}*M zXf`UMiE|a>Vi1qqn7_-83U6>zzBLv7L;4FWtBPVM)xyG@Xb8&shB3xvyc}D7k?rfl zrMu6zBqP}8Rk2QMNl4eNt=wyhwb4R89UAPs^ZVgYRp zqX*n)l_i|S%b6tDaTaw zj)ECx&QQ7~_VZ6x!LCb7ZOV`OW!f6%P)oA(W|rDjnY75=~y@ z11xMrbB~Od0$_4>+jp7H8f$L$g|-CO1rT9T`qh1DiIqePFYniwFTO-#O@?~~!RWaB zEe`kN6AR}w0p48#t=GJ?SzO080t%XB-&6ubkbT+L}Ei9F~h|H4adp~E&PtlD8u_%7F+gh+VbB!lItlJI9x^swl?_K z(6{Y^!hTEF7Lfd(v&v(qW-~@q@4Sd_N$>K{kZ$j)#k`11?Tfm`3;S14JN)&y?WFWL z3!eaBC?2my$XJCSW(c$&q%+;#RN%+O)<7N7|7)`M7ird%V=95feIbUiSWrSExE6|F zv%V*39wJeRf#!nF93vCic(8htN~q7+{f1k+{+=J7mB%r|9J+;yh(JKPjafKK3rH&e zyAa-uKmdSjWrbIabKd1_r7*dww{BjE?X%PX2WS${_ibWc=eF90+g)NAr+X5jcXeET zd~3U-Jbq?g9}-AUe;d8$Qz7VQcxz%vbNJYR=uLX(l*-El`SSh^rk|q~+y3UarwCkj z^f4|vUSyhYEavrjJuKYMtsw~$kOmaiR1!L?_@0~5AoxfK#%3%rjX1pBJW<4W_Wq93 zbXC4ojKbiqvsK1{c|j{jz8J#)J~e3jC(DpY?^dwS>zDc zJJ&OY3KM8*7s{pYNJ~kYk;VrOCTkll(GaYzA7->J^W8-9@!?j(4mNT@e0kZSkdD8B z_A393`v3Ezvs$=V|&z|1<~qp z+l0Yy-%)B~0KO8gjm$i|k4|g6K5F`)rPBB;{aK;T+H-DhRAno<_IY#NIzfvp0*tIG zMJwc+)sh$Vm#N=8KA@9!j4?5miO`Oe)4_@VKi`1(IQRyzaa5eq!r=j~p6R`p&6e%` zZ29m0yX&bY`WxmBay1$D0Mk)k4oV*vF>lFd=%`5(IHyL+A5AOjhn{sbK}0GYmozv> z&N&`xstDtJHNw0M&rxw%$G|-LQjjuFzAvcYeCW?64VlGyUfR=(KYLlbA-ZT;Oxx0G zJ#m)N)2qK%9bU24)Ro}(7rN1WYFToWHehAM;^TGe4Br_NToCXpDYB&!d-~a;UXU;u zH7gXtQZUEFGvdR-_ICaK;K-Bz)kwfi?#pNe3gA<3+;1Qzr-q2=yFRVL zjb9!5^lBZ~h-$O_eoxckRs!&YdGvB(qvk zvOPQD)B$<+2x1;Bje4T`#Zd&_QAUnsX;X`qfEi;Ksrl)DxkRhV{t?(^u z#i3Cx0|>GQRd#QF5vwHGhnA-nP@h*deuMa^mm^SW9Ci#dP+)XsP~oq=OiSZ~w~&++ zbyzwzNiVF{ttq8Jk0b104Cl7D0xLhp&+pR0fDt4D;JNyrJlq~-H#9W#n*s{#3ZTVy zYg>K|Ra1P4B>Pc4`@hXHsUp}5VIw0t0--@aB^B(v8~G231L2UZ*pfqgS<8bi?N3AT zxNGjHbW8cR4)J?TSzDI>f+oHAMK9culy^|6V;oZpD1Dl0aE=@bJDa3Le4yl-i9s+n zlZY_hd#RkNYJp=2Z^N-&jv!*?b&bj=i>@kZ0ux0Qol*s(XrWUy7=M~p)6Rs-S4Tg_ z|L89v<=cZU3MKKqjc`kR6X?*VPkU(^G`X+epJ?d6E43T``0+!n`L4;jj+&R9JivM$ zaM2-7KrpldEcT#IPEK)MxGNzb6hM;#Ohdun0e`&qux`(YhyFt8UzQhmD#T?~{m~vL zOZ_I9%#64`8}X&DxbZ6~za)!Q^p?K%X_`7SG3l_cxf&+~vK^i*=Ri$E$l`dTP#w}) zM<++g1G`wxvvp5iQ+%@MlE8QS`yupg7*VKntXQ(LZmI`=53qI^ORie+Y@4sV8vfm!-=N$Rz>@lmyx^3 z?hg0p?&Mx3HQiu;Ly8QXa$dsHENo{+?np}bBi+!bt&YJXu?DnZohs7glY2GL|CW$o zMyoQ@Zp;O+U_Y(g?)Crx>N2qCl!Wo4i_C-GoZIi`=jK968%|OEZs(V>nwlu&Qdknq z3BaLXMDK8sE4%%H06F|3|9Obx2o~MYx4G4-B^V>&VasA>OAmR^IIlG$4R;0=EX!<3 zxWEWvrn-e;Vi-)RBXGhD35<^wVPoy;?tFS#5trLW(1B2hJ6~wf@XOC#j2;HYeZG{S znC>v2lPBJ(6qU&e2wxr-vqJrAUfV*BTIo$;kxL|@XQ`kMIx5Q7t48v2{hel(m_BJ? z+#BDhFg(34i3zm-v{Es| zf&2TmTE&{b-v`e0iWbo@lSh3;0mN%S9*q3>5f@OwaDa@k9SC0L>hOXDL;#^5#?-%V z#qw)mfT;ms$4D&%1IEDHuER_p3#KCZxRx&e|nY-2R zhSDpcPKyl}{K~Mbe~*roYdcEZnY`9d@j1QOl|2E~q)`iF9@0+r9}G5^$&`b-di1EtBeU zWF|0^UJO2Bqca$kQgITTXflnz~V2aA6a7o=@poG--duv!`6o`)J(g{poU+L3} zA%kcY7zI59Y@anCcpX=dxw-Uuz88~?9!meYOA%Hhh!`DlNI{H&Gs*E#UEuBZQ3FE) zEezb-G;pNjTqHWSyg-1|HNT(yOqf|f?#SLq*(zkS?&-hQQG)eOoB3dESN!j2FHL+RjzV z_-zq2(=9l*V^pXH)$0H6EVh6K7wgvat$|?oTOrad0BR*cg8`724n?5O5+;P9SA7}v z{~u#t6;;(5wkx&hlI{{gX#_!fk)ot@ceixcBBYfR6bY3j-5@2MqI5`usHAiWc)p45 zz5jolb8+T{UNHvD`NjJ_?-LGP@1qC)V_2fm>EEhPpU3>}`+IX3QD^%mM+7%Vm_Ny} zlW=Rb^xADBI3iz6Vz-d0sj0M3r?xAP+7iUHzoC2 zY)*u^_IY8UQ1SYdcxV)?YEPzj<5OdSBe*vQ-q08GoCR zA|E62Q=$l?PcWBEMMD(dL%8qqmae` znFtr1y4X8?_0viAO`}5zd0vg;$=334ukxCH-?D55DVUhv=PUZb1Nf3}lNd^K7)sTy z>7PhNTgdwbb$U*WrS^ZA@qtHU+_T_ibwck3ib6Yk0y5A-@^U;`kW}B20?q`{k+C1n zS9#cZc+$ymegmb&@yu4t0_+m-vwM$Eptw2bp5MQMf0r#dzxuQ2ZG{!Tm^91%mLGOe zN5^Kan0DOpYetro$a#5rjk(P_*NK(Bd$(5Q#L7(l$-{&N;86&f%jn5i20yeJiAev` zjv<-{D+%8(zq)0xai_F}%HB#)LVgO+8)T#!_YI$#TyzmanWy{dLXyht$K7GQnVbZ8 z1f56^j<^R4ntWL6)Y_A&=60(ppn8umQF;-DYLM9^mMP|N8>jdk`=MY>V-xp}4sLI{ z?zfimhN@bmuaP(7stfwoQSfj;@yLcYylBRf@j$!^M^h7(+%nmi&Xyc5vDz zy?O=d*-U{hK0_kVuVCX2KfmRWDbQpHFCj?s5~_fp$(NR^9Q?=}3BeiQT7vi*f!r7; zSFUD;+`xq!0&f9WTh7yTdnqZ@Tro7$7%O}_((;BrU33WiW!ZNvEJR@Z(+*lAt&xW- z)oP|v@Jy=dgqBmjVBb~lbN89=x_VU<^jobKr|MlQFAO~H&mIzfW|y^_{-%=d;yzvt z!zT@g*Gk(;=$Z=Mw6O*8L$P~LB7dI z;5ezg&d3bMAQ&gDi-%N(|2(X|LsAG#W4|@lX&s2e(G3i0zZeArfOrL9=&jFKAMRu= zoWnl+n)_*5qi;|~!A0g=zXU7Rt&q-sCFr32VF8mlFIV1OYXDM4$zCVGSiCs1^3l1( zUCI&K_JL)QfW9)q^GuQV#?ZboXa4I|xMH8m7ezBZMdKx$ymm4v;m{;G9o@Jmb;;3P z*6T0bDmQPEzSRR$(Cj@srh3crRze;2q0+(5T(FV_;XikLN*$0%P9#chmtG0|v`>OR zU$zt*Gu|eD9RpN0vm7)38Mw;|&_eS7pzunAqtwmBgAlM~V5QLkWO7d+8UKb{S6a2~y(r)A+@&e+AAIF4@c_&=}(i~#VdgltEesf_A!RFdUF1 z)$ZVs=o?qOkx~AfzIFYX-bSND|K;PzB>L_<4*k1jHDp8nc0WkEZM^*FNULtk zz^rQ=l8-oUd#|WwrI~pe-I88HE1^l#+G;-;E3V&&^}+-=q1P+Q*u{2s9kjKL#NkEO@AE zpWU@(JU^TKAn)nn+)^sO`wAl6Jr5L<#>l;2zAlQ5@hV^L-CYr)%2fwM>cif}1sXUSPt%2Bz8j&EH z7}?dg8NB|Q`stH*T0>?@@9aGqG%7S6BHaTFX4CXWa+9&`jp{fo`Wxof@=Vza`&`{` zEX}R`PzXM=cYgec8dolCSrbN@jPdP8sTWjZKN%Ll2bynONSD_;>hxp*6S(+CfTD2e zXvU=nh&4I%*3`64ss1uJkspAZEvLMk2&BnNk8NyuiOz#)uJbLI;N(<%K=&{x;{aqM za7wX2BHKz4u+drNy(jx`!_34_%%$ue04RLMRC_POBrq8|1rJV@z3b6~T zuEnshti9s*mXdL6R;^X~q3kCd$4XPU+nfFd%hrh9!gLSC42>wp_+n|(?w%T%OnPn4 zYjz-0OC85!CLWK(gQ1=4--qF5h6UA2hkA|E-7JU?kyBs#ImB${pdn}o|A2?n$v^iz zcJliLQU2zqZ(z4F8?b;yJUsLmXt)L*z;>gF!ff-|_1Qp<;L1g%)88hfjI+UQV#$ zWmkKo&>POwS2Ps;y4+X&96ixftw*E+GQs>kBOn~8CiRJPA9$~lc zlo#Ci&z%L$Q%1jVzffB_HkBK9<}8}MWx#Omb58s5({1T;ndlrYbtlt?JA@_^snv~! z3X~2T1H3#oN(G*p;V1-Dw|QB{Ekl(BJ?&{trvS$Rr^-${T8e7>&%?J}4*s9udRfs##NDC@54C$0+O+oz5UhM`jyi364Gc6`elwPxt*gN*sbryg4B1%)sG@a+c2%Ci{` zN`<0CsNhy^VrD0+7RI=Z*8McMu&`>hO4r#=E5TcS{#aD|5gQ|L zWb36~kf&aUdLAF5RGf%=?%x(c0#=$RaW!i@?B2b5!a#)N2HY7|{1<-FLrLlH=^|Giy9G#@6mHCsKzqSmya9-)t4y@pL2JS4PZ+IsJ#Bq<3)I|uSgeLUdE-R{ zay`i&;*1?g1DY}(%yXXcNbqE)2K@(qd<)U#?wSPWj246Yy{E({ZD#N5ZRP1Z4}SgI zhqryRhxK1>^-quLk24B&-I!sGegJzCi3e_53x3DFDLS0qyIA0+eX{`Y0mkA|9%WlY zVgW!?S5l^7Qf0{23!z#&?d6?0u9M-tqYKIxfw;ikE{Z)}O%90TbHDmN=>VPAl$mag zy_TdC)8FftHE>8OMRK#(xsI^6mWUW%u%V#ky>b|NoKK+eV#N0W3QHOcV&-TCblj0o zryNRhcPw`p>BEPai|E+zvcb@l3G-hMC+fR=?I~hwnVO7l)ZUbo+4p7Gz7t~^b$7T~aewkOq2JS1fKF{tD+5>| zFV|{!xeIa_0B$v7+$B0D3$zU{#C#u14*-MZiaEc(-*qhbSwkK?md~Pl5gHi*_jF7T zpn-vjiZ6y5>!6A+CipZX9Tyi)P{bG{aptt}DM@t;0x7y*RJirrO_UJZ<_A=jXK9$M zto}or@3#qT0jkoMhTYspF|xZu@y5r~!gJP2_2r9*qD0P+!Pj05DhRAvDj?pstqP3f z-Rsd_{4uPNm!S8}p>-19f7i2vzSwRy)*aV+xj3)SmXwSL-=S zl2VS2<2_MKe9l6*U?e10YDIPu=0WGyRVJ&R-C~dACEw*vlq92|pciF@9EkUG%sqj$ z`$t&2#lWxBQ~b|u#k_8!_{-t<_FSWZsw5~9g}-H3-Jpz zPc&CaAywKbRanN%7Pqf6~onC5Agh*3*v1?l&aAXJLtK%C&2 zL#DKGXBnB^D6aWO86?pRpOkohc<4p;!9LJGE0EJdC{^L-)2(H!(}woh-J`VfW}b7j zfD%`2GhBsfu_B~TfEtdwh~Rv~0!e?qNJ_&9w@b;WxeDC;?GWii$+4au^+aTmDLHDrbI(*%UTWLuSqg_ zrQSedZQl2cwenHhYsF+&NRA8+)Gk2uu$;6`Ptz{<1AV=PlYNw zzQEilpd_H1aS@%Kg<#HWeeU=*{xF0*?jBIyJcQhVrxhgn+a{I4MB~6qA(rIF|yun!@oD zUg^JsHVlY6V2SiWBHeGgxy6gA@yc(@zcz5>*EQW}UqELqJ2(K|4d|c}3xoX3Aru2j zhZS=Xpmv+{oLmAn{qbjXzkxMR4+!gcwc`}M3Y^sEjc2SM5L`(x$3%hN5cJAc8wkMD z`EYoUZW1(|Ujb&MtD(`h!dRG1SisZ;X|2Svb>g0^-VFh zD+YV61&f99PONEvmM~HpmPwyx7P9PTQU(y0)DTd@SQa6Cn8K+rZuu;KR1^*hu$JCp z&C|MLON_HYJab#g`!GLT;xMniOX{~0Q>R`Ko4R?2e6-&>uDYWFH&99GR z0k%60L>>V^#nUZP;G<4It+E7l6I0m_5isWu7hbxY6-8#x2d%FtSdza_RV8r$erGgB zu>8@(;UBZbX+TI*H#Xag5I_R2o3W@-nz*rM^u~Faoy;EU#dzIM<46YWtsi;>@XFLb&pFL*^VRg#FR8%)bNhx`myW(6j zkCu*UBpmAubGh(s;$OtvQBVmr5*)C{;EIx!CKRZ5BLuYLb%!@^-kfyt1cgG*2_@-I z?mo%$Ys-zI|6+IA-~Rw|+^8H`Dm7|ceEi;0*9-)(Ls8$3JxN(Kzwg|}SNY!`d`OC@ znO0R~?MAU)mHd%m6Hu_P8si#u<+Ke!s@2RV>2BcoZ?2#<6W^QP(hs~fJHQ}sIunDS zzx#*4N2t-3f=JV$eXjQM)X2Uhi4*i#NLLJ^gga&nS`1srj=5J`GRcyDT_|P&Y4{)X z1gI_eztjmuukJS(oeZW;k{Ab>ee*GVhK`Lv(;cXfbdyclbSkf6NB&1 zG;aH}Eljq9K)_=s3VH`Tz+5kV3t*P_;96RzfsoJG$}i#?$lr!JZ@vvum5!yy-8Tm` z#1p{(cLQSJWq{#{LOFznAn2y@JdeGG{m2@~|NjGVdMAI)Rf>llZ|E%7-6skS9iyG1 zFvK2sZ9(!S)~H$@aL@qlpLZ&H9iz)rqCUJL{F>4DSHh)j)#Ii7mxp}m8hC(`{cSmq z>OJqfCt4v`Yt-v9#y^%ywTw@yoiR&a@{*9(-20dWn1gG151(3BGDBb`r6CzRRGjVT z*Sj)Jlp1ju+<->KQWh300Fje`Fpa&&-@sDkqdk;513lqVk8}je^$9oU-q~etexFL4 z+HbRsdzHHLD~oOM*-7amAy-07>Q4aZM8}gIVq89Kfc-x6UcCH@jS%4O}pXfZXF2yd;^(tClBaQUaBPF(%K=p-|+tfr0 z!EaWv2=cs$Jlg_Z_isuPw>ls<6+q%4fV9ndW(LDKtc*nQSPao<#KW#ksOWieVH28M zpX3a0YF1$?yUgR1*xN{3=)Zk&?brE0?pq-3oX9}}mO{>JOTvEfL7?(|CNF8g1h15{#-No(#&nMz_PF%O9 zqYd72%Xc#tOF+G#jE1o>eRklHp5FT%=)442Z!BQem`@bz)vp&8?G#8}U{g_1p*26h z`V_LVq$m!oB*ggFGmBukmGMKFg?W*9=v_}y=E#EEXLN<}KQV|!kNvz52~7%xb6b3T z#hi#~(c4NlRQ~46=mt~xpccL1d&`HjN$|+Q=owXEEXgdP+vdGexEs3qRb+Ke{+O#R z@|y>m`Rxm1+?I?@2F=*H+<+#A+7Q`T7c{YY2-Z&Y*%x4l2+<0`R7l)aN-nEHE0%8rq8yBs+Rf z(Q&aP$zt*<4Ywz($TYj2J-0Q)++A9kCkfpAMSE|r-8Mu)SfC3uXwWUauOaiXR=#&2 z+`&z`l7fO(P_sYdY|$H4cYAW>!|Fng$l|kfW#zt}v9WWN0k67Dc&v?AS(_@`N4Z?C zk{JsKJvqb}rrw3BH{g;XcD}Cjq5aNhvGDbEdqZH443Q+QL?c)dgu@80f~z{N`c1v5#54FTSY3SW8G7g%^PO-y ze&jK%;!Xc(5fd7*uD_>+VCl(Es4nf;)7Y7Mp6uFw@==8e?G<^-7O@hnMx$41>c?$` zcV)RcK%iJ+ueR*8xho7U?_IH-Ry1hn2Dvtg{o1VJcVrAhTRs6ksvW=@CZfGv8X8Kz zoB$Cg+%0G89JAmq?d|PN+9IX*{Ynh3WkC5%`~G+J*)D?4dGU3!%Co5KGk}(G0BTR4 ziuWXwW-YP41xEYQC&}zc`{UNS?U#sdeg=;ljtUpo)+i(pVCtgJ`bCg8pm&%PgKd@B{b`Alnjb5fnrNlsh1Y_A&9?!)S{?4K z=)2hdP2k9%$Yc82WovM=`wO!q&qIgWTG8L?TiOWbb7c=LsY%!4iO+sw1YlLFb1sY4 zBku!kSLd=3sObV`hI;1I!dxvpaO%QJd|f+ zB_z@2X1C<1A9#GAfu@F`z5ab0^YT6t!LXK^vi^N43Q251cg?c77W2=D%xuDN`*zcB z|MpRKYoA2US4IPE_j*bbc!Bf60w-rX{CVxfKv-V9TyJb-4uw7sc)~E5Lw11a z4HZBQ0gtmYG<*y*E#w;)|C3Ia_+lJ7=~T%na^} zuBeK)1P)Wf0o}&D)}oxl1qWy_r6`-zUpeeWxqh}`1&D~z$5m1^*ZBkDdLL{0xEOe? z#MF9e>(e!h#R=5POt=7Zz)rBiyp&Ndhrz9nDh%N(m274Y?CJTHypS*q6mj%K@}vQq z>A_xQKKR;DLT=HcIC5Pr3uv2$ONs#+kjohWC=)@AOQrEvsSQkpB;%;b#2FiHKGO$$ z7hPxrXveA_Ps@q<#|i^|_UIVwyoOLleU9oEZ*xPh9AEq}p$kmigqr*gp1j5W9A1Pp zTJtSg*++l%9k0o;rA@!z1|#BYC0?rEH@pHOrFJKI6D67q5|M4Tp@6n+?oDuJBdf`C z)kbZ;Y`!oEFd9Js7z|#+M(O@OO!JPju`Z&I#j$d(ZNRFiVo-xs22E~4>0T~FEY|e^ zmrj9tLCJ)^%xLvmkJnUATVd$dUD2e;RDg*2I%C|pF%jCpfm*{-&GfFU>Lv@phP4Id*7~GTM>az#aa!nA|`o z%xCjp)=j1Nd7M(RxIH`5jI%sE^L>vN-qmd<8)m{hAPF4;Y z=)$Oc`OjeGu*{5DfRXtD@XVtCThQYJ2dISVP{4AGblGyq`wBnbl@0=IDYcir*s~2N z_V%@SR35AuNzlOp5g!k`OYaV885D}w2iox+37lAPr<(~bQ|v34`Q?(0x5;lFPSoI1 zRqJY3;rH06KGVV#xeiYx9cP|lnbOqgoZ&0NDWZe`ikuY>5vwUvkl&Xf;%Ps-TIW3X zrNLMS=;CmJxBljY*I)YcFcCgAr+&3Ib)G?ixv>uH*W+SlDO4?-@kkk&9F|zfH2)I<-5We}N zu50RgSTy16yQg2R6m00@gg7Qyh@4H}1rlGo)+3uUQY9J=`PEZf?W&pPER(s2^ZF{Y z)H1Bi$RM#gwTEm(7^IYyyjWA+1w~PZb(Nga#OhDbn&OjK4B61G7PfL7=PbXx*W zrCd;n)$1ZU%=Fx(T#BXYJJ3A_4%=RGSY@G?IJ=yq;NuiWWuyL@jm@1JUEy)A>;s~H z!`|b&A-m$i!MUd6Z zh?X2XX}rUu1`YFwvKJL^wB}Mygd(vP9_Rg<8;1r0&{3`lw)%TK>VTa#OySM)4p)Ex zFK1XJv`tl5m+V!eDxvce7nm~BL!|iUJ3g7f+CQ#;*O`8rC$kzgdx(*6XfZ z>;yzXHA6#A9%v>3s>EMrxKE-pfsO#!EdU__F~jva4Z_a_s_n;HSyI9P(iL`>t$kL2(9{=Z~g|wWV@L z2epl@a|;hu&KbSL;D82-_)DyD;umC6M-r{y?3 z9|Al5Ckxy2wkIybY>A&{JWZ$+$N*-gf%Ea z{DTQz=`{E;cof3Qcaf2uGg{?Ws{<^Ms|Vj&ajx?hu+;%&qwq#?)mOKkmLxz-AR{;> zE}V~08&5z;!?+ypd`cR}6nS($bV+O@p`HmXJP$N22tJpQBwQ-cwa+++u{-P? z>-V-YjJW;ozkYtcMdv01Q%I~?nuu6=>Y}*e@iKu|;@!-&-+UhBQyazPEmGMN#^Iz; zb#+&@NPKX$);{?AvaVhjoZ}q_^+DwMd4TUZ;93zLyd@fDq?qvh5x)u=!Or*GWiGs# zOS(RSna012_I(YgH{E$64~I0YLKr`NQPZf*5#A@!_1bv{s`a`yLateVExcN7e{k%H zS7M;05Se13WxgAI{Ei$$Qf%aj3~tHZIiDWMPT5GAei=`-u$$76EbSUCew2M086K_t z!}PkSKNlo)NrJ}~Nx27y`Y2z+N00c2vZQ6hGXUK|+a#u(e%-@Jm^M;d1JB|pqkbg= zOquNth}Eikpu2^AVyu1xOg4bi%rv(da=626(_trnf~N6{l#Z<*RQL?~*Q|9L#=+p*}IzQ!J6+MWfYY?lQ z*@7x80W9E@2vKgr=c6a1`s-S2Hc=4$cbQg3Y;r{Q%@f#yT$M$CsZd^LuW{j>wrpj5 z%G+)Vkh#h)A+}(TJfJ>58Qq(k`pS(azlHY5L6$Gt`uVEVDkWoaySc#P>~p&e_atQr zHmB!gEY4Z3{Gf0Yj@Q;}Yn>XreVt011m`6=W$MutF;gJrrCT?Z55Q4(z?66eL89{G zc!r|xqWNbaAzQW&^E`-;4*KxdBQ$Tx^gbqF(osXqtJO8Pm2UilZ(yweqDGEj3NSL0 zYclp8Z@uWV*eMIHtBHr~Uha#&dCw)yxhoBWbxqOox>}ke3tchP=1HaMX}H*#iT#V3 z8{Xj%mfa3FnGAVCbIl@Zox~oi7uhQ8iN`I`|70_z*Cq6(oLs^^3>D&o`;0`_vH#Q~ zu1Dz~&gE2&UIF&gp8qMJnw)LbLg}!+jqNYJ=cirjK-LKK2+TqaTUqdhL;6FOyLa!J zgJ=|}&+*!xo%WjpW-N0OQ_{@T_U#P>&F>!3g9gt3OH_D}&xatYY^~p@VJ%*h7`2>o zuHUG5$>>K)X2?;{|G=f&%C2mp>dmIA&4i^P6Al*Jb{+l}u}n*_Zyn=Z;Tw(A@Y4Hr)O;g$R)1=fTHs0_2{{ngZ`IDYe&p*} z1Z3kjG9AO={Li{i&{aXYh5GqdHp$S>-#Y*R=&$rrq~^0TFh#lAA@z3h~E(aDO3GLHfSFF;A-`E|kQ$087Y5YU+yir@_H2S};#GGBiprGqmmVXE0N@ci z6PS_;jQt-?%W!##?GOz}>(~Jv&QVNg%rOrLeR3vKr3mX;j2Sp*(2qxei_RR;u{vI= zi@fVk{ft=an+MSxX{79V%3;$Imamw^X}f_Q!oK+>8m-alFe;MJPkr@pIiifF{IT~# zvTy=v@*F12`(=*J_cd?pW(d;D)heClyJyHX7!5<;p>uWKtO2*T+1KxMB;MSUn7Xh|6KPp8pfdhUaE*E zeEVIzPxFK(#+4n;?ggS-<6jy|bYn4GPzGEb=HBM)`{;t3rTbvIImcS4m~u+9E8iv3 zWYSEv?>M@5+8v=#Q(d)PL*jQScf*hR3m?*Jbs8!Q=$$bb@UUq{U zXBR=5Iy(84mDhnQ=H9+p!Dp+&m{%8@HkFm|ybnwef(D*pB0_3}bS^XnqL%I?O!m`Y zJ?MUb=y=Ii)B$H`GHJp3Ou=)F$z*mH?+8!$n+a@SjKnPZjxSfK&L150w7D3-dMQE} zMDoY_tOyVMEW=fwnq`9k{W_AM=F{fInufs;8^4d9-{~zo?%i=$r|Oq|Du_lt9_^7# zr;?BVfJb~=C6<`wC3(i!JjVregb0j9EB=N~yvoWpFt3RM9d+KQ&Hk4!`o2F(r>ksM zK&{sS5Tbcp1E7n#dSq_eO398Hc&MUPpIt}PNEK|fo6%h=GXUJoPebdxP4hoWNoUau z^N`GEtTHf|r|pM>m~{+*2DxIG>(EAb7h$MT9GFKHP=8oBv;LkT{eaHY4ejz%qHm#G z8=>_*x2gL@Vv>ECv3SXJw+i1(hSBB4gkn)zPAN6>(?c)Q)fJevnvNH0LEhz7?2vtE ziW5=8LrrdoNe;0kEI?h?+)(oO*Ct&U$_DNhUwCMD`hg9Ow_Jcy*c+N9V?PFItE}sO zA3u_iw^uCQMy{Q@rE58=KpGTEE}6?y2&aQ?e(8HNx}fWfXX058pP%T*VEK59(qW*R zz{T@BS>=O}5$rAQOk>kF!bA_|!9t+6g}?11$g-Drc~C{k7xU-RZ@9|ZX4Gd60BOd$ zwT@JGooAx~cR3Guq$(>bS9VF`%Bd$kdlm+U{-*5+>2UF;h1@5}$ND_Ex zAb!x8U$~JzPfnC&eGcE(aB_*A@Jh9DQfUo4i6mks+azNYO;*u8w2X*yxuRn*wIzID_a-Usu-ygjjhwb0@+w5!Ft*drXfNd=FJdg&B z=KVjXVjld#f#0~%_z+D$F@Xa25(B}R`tMCGEPtBigaYA8(^tXwI5kv5+HyJ#|837O zvvVTnJOQPXNxd|Q;Sf$ZOKhNv*zHr{G1eQ!3T8)h)xB2ryA`zo1<8Oy=|TI#solz* zpHG5CtMg*4hU_XFjwT@ zR}XYpGDhulo3{Nml3@z|Of%7C!>L3u2AKOM$Q8H-R~!s|mWdla@{44?4+&r~UyW-^ zSmVqh*U510(VPP`tH=OixxAiav_Y9gfORTyny_P8Nm z0+42RR3vZUe^>ns9lBknKMsF&|M`vou2|V{UR&rug$`d(iZ^;Wjd=n(BAzZMxgqdc zJDK|##P&=0`tT0XKm6Z3M}+`}7MBIYyyowOeE!{h$Q!{KupxT~BunRjM`gyBhS|(OiSvyCSp7NOZI-cbf>C(X z?jhx2PgO{Q-kaWd`(0#M2N;{gJ*aCfCP-|>x;opx|h;17OYdyohzpxBoB_0iXtZm)36o9 zrXrR-tf{(z_|?xnd3q%w6#VyjwJ4u5G9!wt$=V$^v#y08&DD~u;c0v_8^QvA;KL@-`U7E{AJNBLQST6USsABjX>)qOPXL*0-m{AGe2aYR&f#TW0m!}i^ z7#JA!Kk{PBZHMzRHpD>`0d(s__7m-^kNf&zdF^d$1+V4_4V1y0=Sp~*Y8IZ*Ze~<_ zCt5+18%U*c`4{~iFwCN@ExVfv)Y>n4rR@epb1bl0TYp_S|^&z^Y4-?q6?=g zAFtfUnhqxnDx2GxqG(Z#Cf%m3()$)siSg+g%COt^xQ5n`yl|*MkM1%jiu6Bc{!yA) zZ}CKNXDrzT-u>ottH|m}2IvUksVHa`mtW1u_;=6+9pCNA;#2ulUwaU6IJH^=cWRxZ z<|o=Lq^cSvjH#a&T{TeK!0u|=`Uwp1R&12ltCB)d(d6Iixw@vsmq3)df1XG;)^J%F znA4NhEkCbfMF_hnxv#$kw?J0K>m*Q!ZyMO3h<35hrtb|oRPRPx&k9A(jX?fr@?dME8-Yb zcoSQ0^nhZcN4x}KaDeX}o%;>gabGD@fPHtyz^xeOaI}SA^T+1gZ0%H%XTyn>!YtRT zrsE`mY~u=&=%Kw2a=Md3pOFL0^Bxds`IJ*vF5mlKYc;)!92Q~;SDs+XP$v!%Lkp=h zLI!{XnAf=&RNR9sAxx`Hg|Y2L0AT8h@kJ+&C^xJj1k-`$*i3mv;zhQocrNc$U}L&P za}nMUS&jq+@)r7eLiE5V`qW61PYe-Cjo5)&K>j%x=NR=~wVRFFab)xt_mB*D8FRqV z`VYfG1NtweKIyH+<`#oF*v>PA2I`UcqQUN*nr|FLhX}P58x5TQGYPY^t6{vE8%0gb z3&jYm+VQmoK}_ptmV_h*dSHnS?dg7dqCDwPTPCIii&FraSrRc(;`K|l;S0@%Kq^wN zMmn%{Sht(@RrHn?bv~S>1_bFlXCcehw)LrQU@1&F7#}w-8J*GslXEoNr~PM9OZrFG zUVNXQTkU6uB`X8hEr;8YSuhh2KomH1WHT&#bFc(Mjm&jv^b6fdxizkrzr(6$)N69n z7c6Ywe6&i5)?;u(a>$SanAN=~sK7?UvkKR3r1K-Uq{)-V8JR_tx^ap#;#a#Q^4`_B z2;7tFCN55eo9bZd2#x^*8V=X>Y9FoYsL0p&)L?wtzal$up^%)F#gVwNzRsI6>$g!- zLUI9p`d#3Rk1xLxTChJPL)i6%Ejtf^4g9HQ!z$iqlHO|8^%LKPro znb?4GSjt|3kw>k|LIR}rF}|sPi|CMym>I~xi3mIhz-Sf!^6)2Uy-BeA&3^|+9RP_tvo&W*i5!ad#DM|ZGafQ`CLf(wcz>Fjz8yOO6Px@M*P=d zi!s&r=VizESvl~L?N84$zcgXGIXUgqSIuc@Xs{%Xj*ReXMyFlR3k-D~QDo~={9Oz3 zgn+v}4;tp~?BfBhlBEQ2c-9*A<~Z4|04|WdcreIh>ez6ST)IC-)2>gHn`w@?T_=Y} zg?>~le^I5=emK9d444W~8^9^1=5>cU93-ct;aXg#m{I*b8+(&Nb#U`$C!^`I?e)4C zkq+fWZ^7IcUagA6t`{|$|1r9=*yHJQGypr18E!m4!WQ>f_S`=At(0AaA`EL3XpFe-@QQM6*IY-S^ zbH_ey+-~65-UGqR!grm%jD3;M%P%avEe3{HCEw*D5VpWGNmprRfz559B@m=HQ8c&_ zMl<7Xh*SeLTK`>mA`v6F6moaRf6J^ql#J4@xwGA2%PEGwCK-VBZlM_)3Q@8m^S>E) znw%@LZ>IL_=uO3EfLiif0+FRfVx2a-e0Qq zF5Go`C;4qFL8WfFZS>|MX4LAD;%8=ca4d|6?M{3BK??I;_gp#LgO_mea1_DIjSOq{KVAkBprituj~StT$!tAFY@(tD z^mzc7y+l(U{krx}qre>GQt|bOg7;Dpbm8ZF1|6oX>4qa+{_wHq+wWX}yCR0D$#?g* z#yveBo!=BgD<7md?0j80o2b8Glh}P#q^~Pq zorB;n9}7Mj^V`|!Hy67Ymq-yf@pGEhd^n==;ke;-bAe5^?@cJmLhtU*|Jx=E9|QD_ z%pT3Y%&x!Cq^HpbEl4z<<&Sd#wh#&GZNMOB#Rw( z0)O2UdnNItypCyG7nY1)J1vRW+5tq6ZUQzc%{zdj&VKaC{|6z(ugqCp6OAakZTpln zYF_aY-ffYp5rvfxWDBh&7++8S4rXqOKCWoK9bKS3p5Hx3YZzmV=s;vqkekWF-D6+0 zAkCA~?d20XNQG>#OfynA|J~s(?*riH-bVMb&mQxn{VWcpZ{BdPiy!bZt-t?edTAv= zR7IOfx56A_KJeHmj!u+Z$Jm!uMRZF5cyZ0m`~I{5s;TiJot2tN;|`Ff6Vu(@J%R13 zz8B1{`~I=jhMjt#6!5i4gX0lXg0!sAKFen%%;0QD-2Ws>7!gsyMrhDZ*?zLSvf?Z= zVEV=S#$C)#t*$u_syu<-cq%uX*FI&-ULROQ0w)6euXHS?4y%7!v zRBv2XK^t8a>DU;I@gTwpok=sRLy+cOh2cQ+&{Qk#WWQ6xOiP(>QiwyIHeHbTkco%f zMp-JG6(7zOr}M#csacu3(_dA>ECA-5ap(FiYqG%5KW(dR`4wjmTnl;gZ#K-P`%MFV zS+Y;<8PbY56jB>~75ZBq4==Is8QyRjl7hn4_`J6b0f9F+Hy6cw&NE#sx)09xblXG3 ztVVxn|Mcr2AO~-qJ;BYxX@{iEx#nQZT2ipTw`bY92u7FbiRuc>uDij%kAtsJ7(ktt zSbklIlm`O)go%9?h3?-g41)HWjr&#VOgLl>NQ;KN?vwWmKen!z0;rCi3gKk7(R8<+?t9i*Iia9~q{= z`&C34ZI9i-Cv`P$GJI1Y6x>o=R@P$*P8Q6aUw=qZp6QaWbK7X7Yi1JbfWagVj3ahq zd7FKj26PU>b`Q8CV_#=GWeM0_Hx9n=oEFL5l5NO{=H%i^jnb{Gtla6QaWMr^c$Bvx z`I71fFt73fBqg(|>74epA>lhV|wf+>S>#Wn=(qvy-n z&~b)mOJOh*BG5bfcn02^pVbW2SKT+X4t@_BEM))AG!;K+9ow6H_bm&5KYPgCHuB~n ziSbX!tb;^V?CB8wS$M?2YS>%4DKtZLOi-_ugDmiAmAtNlwNbZrY_{IJBmmK?G*m#p zF3S-C1tH930Q_a^Q!Ebg6QY3{bbOHn_?Wuz4}g2jy_#Bx*+Mb^$`c(z{3TllzBQ(! zJ2%3qn~Ilmkgta?!|}@aP$OzQ`TCgP7`hn0Dba|hFS`RyD~V&!g>J?@f}h$h&zwlV z6ygb(g%{z0+Dw*iCO4CKC(HGi%?kK;)47WR^~@x#R*1$;t3$<96!k8ktcjZ?{e!dQ zwf%cHU#GxY_?r6|z!$|~e`TUO@eTinBg@Ap9 z)w-mhAldZvG~i-U_LIu337oRs7VmsKuBB50!#~=div_{GeYc6ZIxQyCY-^IR$|h+% z8)s$O#HM~{d^9RybOg|DBUC@F{ z;@=m?j$E_d*)G#xB!tf_bn7ATB&M{v&|nKG-Pu*qH@b?K8ot2-prRx%PIrGJm;IE$FqW z3qb!aLmS{0^0+yznMGDBS{IH+ycn%eZH|SGs^0S>ftW?U7Y#qCp^R8R@SS7&(3*%U znpjbG_yv+dx*HSMv+k8HmT!fcwl1Bjuw{xNn&#SFRQz@&*OhQ#-&m^4ac zWu@8mn$}iQ8tmR0ZDBEBMX&y$g(*M7&o`fqmSx`!X0^P-e0hg_cW>PW)HLDvyX-JD z2`=Z>1&R6C24TC_;WcsyE>Zfpoi&th+ohJ`oXQ&ar&+rGw^_gkaBFcNouTJu)XJ@4^c3_E^9*Vz+CVa{$9l^9l*o3EHaZ=}m9@ zWewgeD?=iazCV2Ua3$eZ8u9Nr-pF^75-gc%Bc$7cpKQ+66rUEb-+xDkNv3?na zkf$((`6yv%tZ?UN(5dm`ST#m0sty)0f`?WoO--m6 z6H{=4B{mE4HY9CEbzR|2%goLD>Rfv@GEGkwK2)N+xRk_;PE3zJc0DCNEvHPCcxMh& z5{M>J_t{o#2n=LROjZ$j_t|9yTt@9`t$zz`0on-Jaa0qepyAM?nw*G?0v{KLR7Z>Q z+`M-KE21UxF9hyU6sQh#O>suyVMK?t0XyM1`}0%0it~4)dtXB%;X@G8(pAwzKf~ca z&6W=e>}8N-zda&yGx^=2$IJtCE--VPpca^F_V=FMjfo{pF`!5eGS9L-x&EIo-7he> zK=%qF08tdVlUokWv&Vxp<@8?Eano~z??621*g<=JDsdz#SMh*rDAJT@h~V`>_UwgV zi<9l;g40GvCRcs=PH+86Edmb=p}_>YlpYDI0MVtAJPRxwES=9*c$eN{$O$)eL`|Fb$Ni67PQ|WEgPXhxIR&TXRC4tPBjt$VK=%&y%R)CU1^^o@WsrOnIBfjN&O z+Za*M!VQJ{c}2&2c%9edo%^UTJ>u*JtB6q=@ATat7L05M+TY?}Sgk~Vh`k+So{0Ja zj;QXfBIFLn`sr8-IMTJ+T`q_7>Tl-|$ySG9Vx(46U#;@Q527_;c#&2^i-5M?DYOtU zx_Suuw(NjC#isMU0iVr^9*FR5juZxc*)CAp^^b~rZ6~^@z_l;T4oq(eo0ShgxXc)uj-oX)z zrCPj+FJCT}Q2z_&t*4jL6Du~Kf zMe%?myLOXiB)-$LBS6x6bCt&B46o?tBHa;VF*;jMzdbFed8##SygE zh8J@R*OQt`TDt$)W|}^zTw1u&u9(u%qU-8% zYr-o@0i2Xs*rS*B7p_IhQ`Edo%dUiJ*W@s12$& zq5BbBRC^5VU+> z?_KNn{UwN@4%#Iew4}x!j*YK+DHQlFWR_~4*Z5{Bs;BT5uobQHAlZ4z@%I&2&yjnvJ?j7-m^mea$X0q zZ&viP&c0Q7{YO}K@>v1lP7gI7`dAr}(f=yMYa_Tw6v-6iC;O0Tf^h5!P2+6-!|02S zj8tP6xZzS%w)?k)$JYjuxe}r))lQiHW~)@QP&8D_A7P0)h#R#u(?(Ghs0?=5Y3!>l zit&1PhQNRGBjhx1V2gtVRu5!Ct84!wucLjV%;bY{B;G`cLDa{OO7D+@{rna-17{Yp z{nl?8KJH`PI{@^va-bQpw6XElSJC8$n2~Dg!-o17kgcAw&>X4TM=}oW>PRA4e~jIe zcuKy!IsRqURmj*IZ0XydApr@bJxvI${6{0%G-W+J%KyBbUqspXPgM6wP0Az|e7sbZ2F2uSEAz zCGo;wR!D63$LM;M5}{~&Zz40q(l~0p@4yD7nMzxQ9*J9h71rCksW^^>*w1fbK8j0= zwn!DiaP8SM573|&r8O74U4Pb#`aPK_hr4G0_=iGV9r9Ke1FV<~vj5|fc0I{@iefdViAiSsM}0*H~=0aDH` zPL5mBSiz?QCSTW{kg#2u{sNOUuFvTyDZM>EL9n!~Q(Jk!>0@D90zA^oogqnC4)l^- zQZufpwFb3SFJMiTxHymIKh|R|@`GKN+z8EL;zz~+6)6j;O^ahHFXs9IcD1q*So+d)w=}~C2;tj%mjlq|L}8WoaK^T~m^Ing=4Yo20c|Mod)n-7^iJ#A z=$>nTis9F{wF~bmB~f8v+ukf{H8ewEzU=+Fx#r5s*+p8tDdUk&1**S$jEvx3(LZWj?af4lpSOZ`LtKJ(l0v|US6)m~H{jn<{z9M+#dPvrU5RGMlT5sx;ueSkD>Ne6YT|(i9ip z9jXdK|F7(+a2!3Uz6BpLR4&^}be4>zbxJjkZl}M(TN+)=afZj8cAXYKdZ3dCeAH?x zQu%z5cc_HnY#s%rY8o6^?hC`_8_IIak%({Kz6Bmx@6GOCr5qka0{`j0GdSbu6nr@G zhyqz^aiO(SYJBx-NKU8+)}lSzi=9fFTdRYTcNzJiq&Z8!SR=9&gKPuAjMa~{W`5>QtIza7}n z$uELFK%KO%UD?2}!Qh(VN4V0yW_a0&vGv-V33*^n!znR>8H z(AAeMi@$vnH8IJ%IgJ1CVVcn-avPc22Kaa_=56G#vO$L%JC93Vs*3@xJ@4FQOh>Eh z6VOlvFKChbu^oxMT6qogdF)Cj_EM>Ymy@ExbzXc8#l#(1&*u3f>e?3M|Fuh3qe`)E zGfI_|-O@`gAg(dM6&+g{kTXwmR#$hGj z_nyr)l_Q4{bYq0M5d1?A&@q{l?*Eh6gUaLSMLoYZsSSuXf@1E;FRu<~LQ$Jqa!Bz? zOAmGhpLK+eV)k|PB{?V9MKx7A`yoOQRGLLJ*bjTkwiRSax#;QX<3)pD?nFTCxp&5E z>?69HpaeAQ@cKk-!?&e%m@z(sl85%*6h;Onojc>ZL4UNo$$sTw#_`3rXN$@9ha{$t zYOlM{H@%256n($Q9E6x&Y9e`RcVn@LsLOtaOqx!9f4WhepbFv#M{PQmi&4_{1Y|TA zpj6~VK;EK5J2lo>7=^%123Wwb2Af*{I?n`iuuW+lpL*PQH;Dl;FC#^W2>6No?`s*% zuX7Yk&|RtVKzu5No}Nal3R53Gp+!A{iZ{+o`0DKyINu%Ds{}~3$@T;>!`?Kkhxiz{-2I?u1Ban4Xa%x3|d8cvB!L^zqEEp-f*?*LGH{d<(|v7UHL zYrS9~G65Ijtw)g!nm+S%xLm6a%kd{45*$?GUot~I_RmGO~c>Gu|1XG)R$R^XXt zpi*hvZmRQ{Cbuc$8-7Kfs1_CZX^nVC=yT@YtK(msM_@f{3<7z1frS?=0gr~0vr?WJ zXHfXwyWY3oL!u+o!(`+?&XoJDLYL>}i^CEhbZuMqY(k?~H%wFJ_gIm1bnBjx+~~lE z9P$+&>`BZOL|bj*h6(@HBF@SQ#MIps(H(B(xb^!2e_#%KoWHgsv)G%+c|XZS61GG> z66T2}jH6`$4-B66AP))DqxYxk9=k;x2rFD-{JCs+t=ep;e6giS^~>xpP$Pf;H^lOK z{WrwQz2}Nls2VRWjBK7%RtnG5$r$Xly(K0l#zH2ghqtbs&5NaBaJJGO@@-QHE-dWr z4JXBSZ=65$#6%cWc&7U68Xw|zE4{oQKC!L3OAAW*SjqLoq~JhI_n`2{P%)~p$w~K} zmQz zNjRtX1r-$)I_D*1PE*dD-DFBY5E&Tl^1ZUoL4m;EhH9Nb3g{ zfxt1ci`Xa8ryL9CqWUpr;SKpk^_dZzXj8KO-FVT|iz10C_rYGvI=49$?4HvQu4L{f zSi>&wfGoqTjdB3G_c!iqF4AuxDKS)dyQ@KnKki=?%h0x!RC&D`HvL-184q54DXs-1 zyI&-LjN*dYD(~*yxKAWk$2HJDEeGe-l|w=#tgSarojZek8>CGjrKe;AW~Z?N^!=8d zW*fgg1c3nZyfTG!E|gDxckeoP_Ul$K=H6{&mTYt#K$Qef)jG{!3eigvZNG3HzEhCQ zz6`bnTN6Gz@}GRph+qb@TYnWk^1yn-`38HRt-j}JLX?dK$CTq<{uZUuet)bbT;PwIc>#wB8B_SC+}i}- zzMFd7aZ=B{FUTXPcW5Ye3BG6?_0!PvGFC>$ofFE)liy(1#$|XO0L_La)UXZvWRBWv ztKz}Tqwc%UjRbEc!tYTW$c^ zL#*W*^c9TQP`J;Ox{{VCzgYxHT>S+)p41YYnP>N%pS3M5zX^0E0#9g|fjiD~#oe$H zIyn|2y`TkU!~u1h!Rl6)&7kvsf~Cvl#kM1C`bWQgF=ni@IeGYZKdg*C=~sbyzV+-d#g<5AL)^Ph0%#b1Tk`M9rt zfK)Cc6}61`SL7D48G-Dv@Lz6pAEUo7ee_11(aF{=jrx>RZun<&Or3QX`Ix6k>t&pi z_Tfj#JTvZ~1#?_=NCrM{iR``G|1X##`NXC9UhdE0?UACPm}u$*wt7tK%XbKhpHjjc zr!jV?zN7T%>j;gh#VGH!C?1=SafTjJTA9`XlUo5`aR}o|19s5D))flQGsBTw$vObv zv4g4c@wC*oFxmCA#EuuIG6<6O5|9F*hL;tN!NNx1gjT3SdA*#dPEJGfA(IzY&UXd& z9+_7ll{IdE*!?+T*RFq}3Ub%nb<)&r7a3}H_kpP1FxpWhJsc9qe^`3&LsI_Ek8LQGw$Epcl15MS>hstDrM6|^T#2I_W}_C;`s1wB<4bPD3a#;<(Pq7ZAlx8 z*L~gZrSaRWc5hK}0FKG!0<0J@Po4oOfUCTG+$^-&&JyaqXi#AsQtUac`OCc0W{4;P zI!=U4THs<)I|~G_G%SpTj#lXttjyxMr(Yk+W^>8Lzp}a4a#FLqyBnT*ee27`&Fu<` zv_%qqysM_u`;sgL_wa2*ko?zL2x@Xx1qdf8Up=grK_xZO+Z)!X;|<)a<}hgBJN z?wUu{xprL7DD3QVa&pSOqu}P@aRdL6FQqpW)y?+H?)QlH${OsY)=nMcNM+cwh4ZkT zN6LOd!1MC^1BG9Egn4SZXH{jN1x##&1_f+z@#Fdf#|vs2?G?}ygrx}~BB2Apb83vg zn%R^_#wU?03wO(mhg--b)D^Bb#E!@ER_~mLNign?r3h6kuWv!oyq7Z|Ruc`1Wkp@? z_}ssiNWt4hQsV&!y&%L8g&$CliCm18_WS;tkNn%>wZhyQq>u;}-*WvYBjYKn4-8I$ zC-)FTYQgf=F^HYzVR@fgt8S>!#VMURU*hjiRou3tZp5Bugmq9TSf2AEW;T@|uZsOF ztj?wp1=c53N`1|#1*+MR;SQMPCb|amr!u51B@(XahdKTf3G9pH_6wiH+{Hr(!dFCO z4w7aaFU2nwQy7{WT1Y=K>gnkV&zpC?P<3*g854-^d+klG;jP~P{bRzXiC2$<_L1wY zunMO?D&xTq=!FTolPxmVzFJz4BOJZ*`|U>wnbDr49>HcF7nRWazm)p$`i%b#6f3gF z0a(M_0KWrH?KxYSi*?d7zdS?xch`1<%^;s{& zld)Pv+hPB3&xjGoEcV6^-&Mdnuw};w`ICKtz|Sy<|3aT1I8cGaR4C-qq~)E3_O6zI zG1EfP=3Lg=d!L;ZM08Uk$|Q6EpckgQa3P8<+m=Yrwlofg&8Fg+=qT(yO#tK;VL?yY zSV3N=4}DqxozUCzvo*FIAn#ro(D~%kzl*{2&)`0CpDs|kP1Id884hovErS!A!>~N> z>rM$Z@L$g0=f=!e=Sll$1MqGTj6I1y#RHMgLU;ck0UutFl?J;V4mO-~;{`=% zqWyFb)oWvXz7yhPfTJ<7+qD&k8D!TB?Uf;2&8>YHA$tP1;& zZ4jxB2oIsRJjv_E**)?B24xN#k%C&P#Elk-Z@K>z(x5q9CEL(9&;1k&elEqwEK~cz z(^VJNKIDo}`h#5s#XZ1iFAc#F3rcLf#=@q!toTOCfS}3-%Abf`+Lv8( z0HEByw>S{WUZEf2e$>iY>GMVJl%@V$3jOPh|Kp%|12Cod_gQvUCb{h|BN_~ zipFr5T6%^;XGSZApq8m)qxxgEScinYkkqq7=gc?!DB|-(X{rK`&Gw@+v)tu0Xbj_x zTnU$g4At7ZLk)jhwh#KoVovh>*)OYUquBB+9pO{FF}uP_HcK7gOUi+N{`GA)u-KbldMBxZg?jsUE#ppTZq4cFCG4G+ka%Go#Tvf7UjD*) z>$!$+?R1!CirP|=t84uD>Q5ROIES`!n+&#ZkFEh%cPxgX`x`FXu-cdENKtv8^OQ-h zi&P)~P|W*~IljpcEj~e_t*FGn4NB#l?_B6fsn3wVVbr{)G$uv(Rz23}F;#fq`<^XE z6?IWPTK@)z;kx<_qiz!&Z?S z!8G1^k9ZQ_zCp5mbQWo4a~6UX&fxHtF4>&dVXV%Zl$VKd|M9)HAA&toQFl>)VS_qR z&eTeqBhInouM6+hueVM%G(=ZDRj)0q+uDrwX8i*cQMjnJi!|9c^+UFx^X6mCKAeF& z_{8Ts!qD4jId~>$TULz3y2HMYQz{kw$a|DN9prZ79fHO=R%vCDvkn4u*O^iJ&l2va zM4Li|`eDbR2Qj}`&Ls0$vw5EX-L-U(X}y__W?=Z~W5gxhpc!l7wP<7agZb0@JeJ{8 zT{`ktrCIu+NAJjn_Bnzk?bsLQ(#Z55Adr~_;F^G;uD;~L&kn*`z~+=3#&y+2*92c78==>P+jaW(saaa3#H`QP~*>cOM z@nTn8C@B#CBcj61G&g2gC3RurLzYZCbIlg$+7vDaWW+r8E zT4jvaKm%tNlX{HPs`jHMtCSm-D)vBnfOj9s;Lb7A;B3{B8KP7OdpK zHyEHMq@&w&N->QP;}`rFT{ z#9&(942(*M)zMGzAz%W`!KRVnN_&XwtwLw=vxf! zbd`>k6laT^OjTbxH5>1C?qle8Sq_ePlE%$4gp7P5!SDp)B3J&cIk|!lP{(QToF4VU9#fW49xZx!V1m%q$({ z%E$Sb(_*kzd)i;pQ28Dx244Z|WR<`D(aaZ_TM@&DuX< zFm;s432w#!b!TrI!)crb5$r%1yD!mio~Z-EQNQ`TcjiM`w%+zIkv%8ShQhvl6gAX} z=Oz*zdJVm^b?T(18;b0@^e8=d34s4;NwD*dS9C)8e~@ zOKNc6T=y^tR2C3hWw=8|L(Tp~-pc=R)p}iKth`%6)8F;)oT#$C^cGt2JlP!4iyfV1 z3^(2tu>m8eV>5JwI;l4P0X?PX!+zVfosKVXG_d{|D2x&X+Z{b>`U~{I86e<6CU{>e zJZdJH(38ON7(Vl|ri>0naiT~|H>4{1y z^WxfoBJwNo5?phjsD#Q4MHz%=>3!syhu4nPlqAZ~o)@akt18Z^gjwSbm5@9YBAf1v zM3gDPyz){1fJrOqQW|v2lqs`ds~c=J9?5LFOuAjDsyOmXrm5iZ>h{vw`De@DZ{^rb zB))D1V8zV`zWI-BC}dor6|E8B8K2Fmn2*zLh;@2;+S}I`!56o9@UnDgyWyM;CcwqU zP9Qo-!krwuh}p65E#4f@+%6C2wQ(uMW=m5`v-^1jFKDQ|>6o@qQ@^1OVW50zyEE~3 zsc^i&>sTtdmMP-ZM50P`ao!!W^igM>$rF{}X45yRCZDTpAowr5suF-#-!HR1lE*J9 zY0ccNl_PSW?S`>F<(R>#db?coL$$HK%}<-1kG|z_=2WD5A-^e4-NAmGtq%4PEWuqfhOOf^wHI_nu3EbB1Ot7+y*~ zc+gwB5!+zw{lUqFyiUq;_)UW2sOPIt2(5}l?0^{pgh?;iXq-FLH2GRgxdu(hB}^Y3 zu#na+a=z2qQG9VeXZf*c`2e=avZ9dJR} zd~ZC|G&GihJ##b>*Ko&^m-8-3j;~l*eRa4W&NJ#tZp1t-0|Kb1xwNsjq0z>G=r9xRJM?Ih)PZWw5~RqGURB#c5OD(NJHV z{96?M%!Zb@F1Ijn#^I4`!lPAQ3yMr-0diK`w>7FAfz`~XT60<IVHx&#iy7t4VSfUTS<04e5mH_DZ$W!L0 z%Bv@at-Ie9i-?<=%-+pq2h19aXU(IRF;~D}cw&B0Xu%S58v0qr6Jk1dx`yxlePMEq zSLKl}CmlupK^A6F-#FqwKZEc$BS3@&MR)>MFEAU9D3%6f5Z%%ZqQ{^D_p^(4`1e4- z8B_QKz-Kh%o|{x)3pft_rmUwI1F+Yp0V3HxEvia_)tG+74>z6IriMGLVwzxX>qvx4 z@!K7OS)(nlukm9<@ivh%3CimlF}vd52eh@t)Oklm`AZ+~k-7MMKZcwLDvGQ}M^V)` z2~HVr6a2g1geTjN&=V-Fe)tCC*55ixs*XI3p~Zc~TVZM(mM!{qJYXfVXDKb$F*9~j z9I9W`0gcN>LQk}GRG!8Ss8PKQUiGg0f>P_-KveC>K#l8VQ|CE@^}5%+<2CgO10v6A z9nSsqgRP|-UfE<6%qj_Hx{nnj1%pY62yW4y&G#nII06C~F<@n)BH9C2>U`&|aV#K9 zL%93YgqTHpZD5Nu}^|D@g*sb;|76tGo4t=}->|IXBz#F2fBK|6cFAt;(=o}`?zwjr>rA%^QHPyowIVwa+n``&4PUjFl{W6%JLhxvhNl&2@8zR&@Ly-*lkPoMD3%L zNieecW-49}q=?Yymukhj*OW@h*a~JFkXebEmG?p8hVhz}2KQ9WiPcg0cRrY4ORi4o z^;Xo!%*xu@%ShF;j!{8I$QWxb9ajRKZ0vR$1e8)n0~s+HI>vsN`mLM(b11_;ecsj8 z8jB8W%S?aq8hy*}dj&%~!TSO%(!<$lvSKa&rAQz1{s19{kTTdDTZ*Qp~DLoAh zjZ{Gr1MefrUmrO0hkVI77C{I&o8xll*)@mUC6 z9cJ!vix-}?wwrH&V1+3h3o&1{&dzud{_6BRxH*Gx$Vb}zo3>A_R+`wur8T$(ZcXs+ z>{YnOc>NSGiMP8bFz7=jjo6zbMZZlxZVa(-!d5v4Y&?fa*z{6VSjeGGzghOybJ!n| z$9DlJ!Z?tG4{%O13azv>H>6eReI-}VHOK#?yK9_5eL&CNVq1tRPaZCewq%);rM4}e^yJgEB7F21Ja!AjiX}aRQ!$u2_8lR4WW8@9|4Cp z*-5ZI%2Md%$MV9OojXyxqHy_h#&#nb&Lj+p&LU&w%?hf?0RkS_0YyB8ii#SI_Has% zl;#!?PmEQ8LHGutf3LaHiR5mhSzSDKTL%b-mMx z7&INIBWxf4L}U9?r8muuMdIUVRlTG%aq(L^tUbHYbyAr(R|ez&&iP`#{TdU0EcjMx zm{KKd6}_ipr$tnpYi#Mr|7q7N^&&^(KGyLU{CO0ghRXTlt(AiMjrY#ZCNF5FW^e-{ z_n)tyD0f-+TOSR-e2>hiH&p3mL|mG#5qiVr-0{e+DEK?%UqAM*)>3omsHs$Z?Y7UT zBOGFsuUQU_n>hPZAYK$CZN9QPABp(7P2_p4I{QVvm`^TTk&w7UM{RG`WmugFohG6j zi%-{>e}G|iNBUd1z5%&%J=rb4fZb`CWPa+xzy?^!^&ep{>VZEn&fq+?%?&n*>R$S$ zAY3DCjz>$HA`Itcj^CrJ_({_~CVoSPbA7Y#W8grH5m(4c>dQz1wYs&@fs4}I`hG_Z z*|vHwJmbO6xw`9T(+q&b%Cq``RQKVflXER=xnjT&JW&Qn`1$GAe=yA>{1m+6(j%Hg z5%pCIzv8w%w25<%Or*HpZdcA8x3>drE9Kd}E1Lw5;kk+JN{q3rWUct>D^Ohz=3?7^ zDn(xpVyi9@R~yW&{X!)|&P9-yqM}vG`i57CR5*5@N*Fd^&dETrNdTTa4g+T{n_x8J zyc`T$XI%BJ{A!Y;-zjEkS+5|^Q{40tMBHsgv~Kcmo_iEykQxYJNE5`0N&z)HzKTTY zd<E&lmZ-Cl_EpYs}&d1W0XmwJR`3K~R+3A!PhjskMm@KaBWMM4~%gTX>as zJlZwRPc`5^lB&9|t zhjNyZ!m=g(EH(Ac&juWR`H&mG)Uka28p}|2h+7OXa7_5jnSoH*D-zaR=V;Ow#36t) zn)0(t@uOi}^p%p5qC=}LC!6c~Pl`UY;W%>LJ?IFg(|UC#wRvpM1d%2P$5BWVpTMRm z+d=aDu9HuB-(LjIi0l#^NpOXk&7F4PdpE%vkz2vGZ%M~Tje>t;USj^|P)bb z9w}(&Lmz@)=i_~{FX+)>EUf4v2ox?PEJ={(AO(Xm1rns6nC&sVLM&yjCOfj59=4}+ z&Van~`Fc#aTG_%DUwsZ-ixP$OM2_=_&dCH?O7YWh4X?5ilk9DZdyWWb>ah5eY9nD{ z>UPDUJ4{9n#rvx#TzyLzarWrkD@8L-r12#8(YX-|H;NQWwKFlOh~!Ck@jE_AJeOj~ zbjmXYjElCG-2 zA&G#(Bu>_Fb1jLU#7}Qd`(oxa}}uvELJoRs%KQN7Bg;xxCS?vvY@E$Hs|rh@3|k(vH9WfymTXL>UGg}SPS?vRr?E# zlaKl7PmbNMhy)LB_?s?pXKi#TT!uwqO4%fg3B?RvY&3kPHt+$&0xkj(GwvOrub%y$ zc<><|5z&|@?Z!7?%UQvkY-uGvD4xT2{*^_iKlg4Iq0Z*FKPI@zACn4=vA#`* zH`LmRL08-zd*rt2K`D-Nh2JsnZ3K_HG1F7HxQ z67%W-03rcKHWhL7$HARwa@r~8ykTT~8~d_f#!yEF~>+@p@w&5Z|iJhN02;L~Hc~augn_ZL(AwN{*l?*0^@WWka4vzd!_KG_2qW*M( zNGZ|O$ZzgvCcnjcB^7*Xv_4JkPIazT{4i}slpZQG42{Ez&wC|U+hj?iKl2@upQ6xR zaFS8ClcCDdj!ZlyffBY6*SVXBLbyH{&8Kf46~Ey?)3MFgjP9>rSnzQ4S#OQ+&&(12 zKtJw}u|m{yd@HHjV1R-_@xgL?=s$NIE-f`RHNr{28MlvH=UWb^iMDQj|If`!CHG{7 zdJSE4>}rKV6S)ty)YJJ%%M@W_=Y2cPcgNcV6Qjy-6eI}hDA~MK+3+N;Ul2COaB?T3 zJko@32)NOqbLDjVS~?>htEA58yCEh0`$M8F&e#Cz5SE$=V+RLVOZ^?plB z5QbY|xmxxpc3Yj9m#LlcTC2s6W|&$N0T0Ib-`X*+f~CO@AlZ|W^T{0RM-w;%r4xV zO@6U+_N*@Z#S+3trA3)EEywOj6=)C_IbxkO9}j)Oi(ka^gZms%&7e zNRGc5+t4ua{R=r}EAPXRp4&O|ysYRrj}Q0W<|d^)THZh}v`a@P=yxU`7^X{wOldzq zCg)JT5t7*9q0{XWQN`o(y9W8@Efm^Q6z)x4zh9e@`PPptWalIFp~{;lyl__Wh7e<+ z`&%J4_}SlJTR^7K@m0il2Pv-Mq|-;v45d{Rx^_S#vR*EjxIiw86>sZKga;{p_IbcK zK^+}H-swLgQrEVAJ>Ma5*dWjuCbdJi>g1sA4`_W&5oq*QF%6iDunt59a(&z?p?$c6 zZ}dR6JvJ8zE)r4%fdzI$d8}oOOiWykI}d*irA)-bv$ndGdLQUV%BKvilr0H6?R&7Q2zZ)>qh(9gzYh0~c?#%60Hl!u07{yj z#Y2QuIO3Ne3@h77H{c>j^E6@+rK6vws?sJ=135n#~{Zh6jMxVBtrYnq{rV&Q|$F#6mEs zhAXrphYI}h6kt; zu^N~;l1$2{Ftvl#jdhi>3~&fz?;$l|YQ6P-fB__4p-SQv7h1BHu6(n@SZN|4FwxWN zsTrMZbZDijgWl($e3F@36hrjH3zFG;CQ&#krkXpS-od>tQrAsBx8)qW)GF3Dw~@ei zD-b@BwMQ`W0mEyAcgiVDto%fu(LOQ;#BCsoa0l&yTu|37q&oNWJfozByMw*&Qx2v} z(55=G4~~AHil1g^abSCGN0hPXQwnOl`b%mlQ#n=6h>(X0Yqa|2F$sgs@G$*!B2rVw zyUAWzzs3hG1|)T$=_kZZ7WM|(;cPr)-fowf|4K7bqq+bc=Mli}j4lqBU_wa;Seynx z|HAs$W-N(X7vli#_qeS2j2IS&!o^*ECYuRlYG6(o7P@%xaI@*hVJPp!B^9IgT!jvC zP}=qHr)oSQCb9L)*-IA#u&wQzFA}J2-lf@~skHQ zAEVYiCm&g{8VVeLY^{Mpn_Am5D=P?yA|sE!nGc)0%9H7rXayLgDn!1TMCn?IY5M`N ze0pcIPSSi$#@=$icnhT<8b$y1*W7o=H2}@0zWeB}r7@1^(DD4E@&e)YKmg0AQ9A`D zQ$jw)r3FOlXki@z z%JilJt*$#7dB3O6V15&Tob1&4uLn^~7gH%NLKm4|a+a_Fu&2Y4ynM9D(@eif%$v*j zgfz~2wk1J9+R=y%-=`eIYIsf^_`M3;Uk5CY@F|b~9IM>l&C4uaOPG>#5F~OoOFN?` zJ^__kW{Xc?J&_u0?O-W8E1s*p2|mC+`h~%Oq1RCIeQ=W8^X^-5oz;^+kt5eV-uh1g zJftgSjSyA0!(Y-{80utztYB0>>r7u5YT;Yh-Rf5$)>OXySiC9CUE~Ev#`>-7e=LaH zsqR>^s7V9Ad1z*K82ZenQ6LCmTlxJStS_66x=9E*%^~ib50HWDFjlysxX&XLQ%L#O z?znnZR#EZtW1h#kk8V~DN5GWfClU&7G$+{UXG=B;y{%Mm=x_(HK%SYXK$eeUfXS48 zIYI2+v=k~FQdZZ%MJh&$?x?w%DFM9fReZhVidGhH+$WoPIgJJBhf zHCJPw8o!Q(J)#A|e1H7m55bCdxwvxh2QartJah^pb0dVAxFshipKLz}M6p%wRY#vn zy%V>tzw<~@=Uz$FOz9TbQhEAB*Kd{Z7vcL?f5c#WR@kye9@_N#P2AP_fmr`?tq~(( zOs@02ts3EGl2y?yg$I#KoI(+V9Hz)1 z)!2kdw+;&yCIC!w7WL;Hyz->ux?%PmU{){$hTiLgbg)92n`vWuw zs@ZzD@1<{$^!H24NcB1vIfNk-s&ZPO_G?E(5X8m^7TJQ%4u-Z*Nu@Z9~oL zB{^LvPCbK@pA#U%#lyfVXAzdFmE}aIPm9JWHpyo$)7i;LUWg0=3F6-3&I_hq;=*qSkb+1KbZczL{pa9SzFzI z)$u8xM@xlJ_!UAConJ!>hM%wX6Kc7Q9@;q`6nBc3j~ns4kkr6ExyJrBQbgEUc99(l z4^6vgOUD;NgJx2=k5E4zYxa8eSE;2dc@IYdB_&!+CQCq7M^E(t><)s!l=OjT5{T6U z^0Pcq{VqBv4q>iyn!1i5md-d|twF`tvL0WaJXKIYG#%4P3p!J>{P(TZciaLO2!u*}Csw$2EIp(>*!+}R+6i{95yAs?f z(Ny0=e1F|;)!9o(*>Bc$Tlw6`G}fyv7;^FxVPqyonWnwYB(J5U!0#F#LBkKFpOB?4mpP@O*Tp$8WG3M+1+qK{#^+26n4eE#yK z-PrOL8!q4xpzBruU!IlRe7h5&Sc?qD(4#m3;+Wiu3T#;HCjiT^AT@XSp1>=a-RK9x z4X{(&@A#D5dt-$-tI1twH782A)3P8sjlkT{#2fn z#ZvCKE{AE_G`d+c$%-Dks;mbnGB-=7)mIQ!5e0w@r=Xx<^KkA=6#ka;4)~S^!W7z^ z7K5v$4{!tVXE2I#bNeFXMPz1QE-SsS+e&g}|1>0DNkj!N$jgQ$_P;gB90Ouxbaz=+ zfPFg+O0~Mo;tGQ4U|laVic2cgy*&{?uYLIEw|a6&=yr{JJi30jrw`EtAQPAv<|YP` z&dcihZ5Nt|K#!(N&= z*e+U$-ZXo(h-{N81e9>H2>TxhMT)%&Jc#*;WH5BqaLnC^?wL<-& zQA&_iQ||(v^;Q{=;$?b8+<`Id54&0t&^TS&l7es|DX)JyO2nimIK-N^@=T`L6a?NU zJAYZk5zRg*3V8oseT>b)R!DeJh*heK{n9iW!Moty-lwUnPCoFj295{(>R^#Px*T#5 zHl>V|YHQOM2%rjj{LCx}(bEfFkjdfha$^O=Ht5x^56i#McbhhYc?Hktu-e!I$x1s+ zI6il`nxy2}G$8R!V<0<5C`@Rw^jQ({#3WM1mlqH`z0{3}FS+c|{R_H5JuPK{zq@c1 zi^3T}W9S-&F8*~CwX%>9GUNn`?qgZgqJL?4m79-)z;Rk}+d?0i#_LE8^R-*)^dH<@ z3jF)m3Fbr~6(!MZy9}VYHUm`HQ!qj~{4}M)N+)WBhbkdx|NhFDhWy4#^%pyhv#!T# zXJ4<9Jv!(4MtlG<3e|U4yj*lVy&AdUbNS;qd&B-_=i$FA){YylF?`5f1kL`@w?qDv zu6Z&olp=CN0eK$O#Y7=koymes3iHX|TSxqEcMQ5ufvjgT@7)QQZ||>L?{`ivflRNj zZlX1tk~n-Ea#dI;s;brfGu_{Dp6m*3VTaMmaged7+(u_|t5NpSPJqV?5=)$9>%9au z$Aga({POD8!~Ws)m1kqetbOZzoo(f`1F&&28vP0!GE7mj-mMeCq(tng1O5G+Gql@# zSgxL0OVuE=qmL3j+rlyUyw?d|r zFEwbI)XR+j95`hF6m~pmBk!!*ItP)Yk(BY>-vsxcw!Olq7&Mf_WVxg85A#x}NO_vG z6aAO0WWm6*wbT*|gE+ERHPXk?#N36=Vqz9E>lXEra@>4wFH;7Z#>V(YnIh;Ny1&cVy{GSYrSiT4D9#$35~G9=6?w8#`8^*(auGGhWFs1@q8>uQcnlWX0u@y;a&l}M|goBoR zDwCOdti4h@+f=CYk3@C2zOAi^zhkXhZ!RH7u*{p$t=%($cEjPi(&FOXlXr3Xrxc#F zzi)$bC7Ro*-bTy&Jxx>xOfKTd`D();On2`VB88<=9Vy6=%b)EnaW;;|Yd;Epuov8| zsQfqnsIYp1o-uj{X7#2+6~yB?iy#OccFX+-!=W?Hrgu#3S_=*m#1$7@^jsGmEfl7w znfR)w2h7HiVdkrEPg23xe?uGzW%f_Ms32@6b~zi-%v%mneeAj+H+J^BulIv1x6PB1 z=MK;1*IIRARw@!jFL*s)xv)0c!} zcomr%%<+ah6$7TzPGRkh_ger+jX3L(2t#@srWaW?9~W|XTrvGQoSG@iTdV03tFsf1 zl*{3>&2V;cF$A`-1{$n5phK)e!c5GeN42Y43O&2zue2IxSm9@6EDFd z^YB<{k!VknuTfFV*L1}^0v-n(YVfbop$*@{!M}X)Sg?Of-yaAV8_ztnSf5M z9d~K7ep!T$^usCQBRR@tQ-GOGHGC=?VS9s3q}fzMDy+uUP3jETgEzP3Bjw>@tq>xp z6YfZZf-+o%pOoHbPv+uxG|M&2SS1*%r04EF79D&xWp=hno3F#T0sK2ZUb1HShb@2K zgO&IG=6JT%0Y;BtvzcPM0hz8HKSI!ASZVliAc!#w(UZE)G3@#W;|0$3x-fXejrbnM zpa7=B4~i)4_i4ymkTY;zJ@>m z>Bhua?~wlukF_N1(zp!qaB&GIuQtxJhJ{CW0I}}>JfhpL9*DuhOYx$r^pQ~p`ZH#| zhJ&BsZibfnLLi|QjjGQ~DQm~5bSsMc;{(94x%cs9E_mBU{*LOP4D66LSk!`T<~WAV z0`e4^6fiIjO&0vg<9*?fx7SW_cNli|I}-FqnT{i)ypocVAT(8qP!y9K7*`WpaBd=r zxV!W-*BWjP=a7+)GLkj{3sz-6AsK$x?J>QRB4a9cg-HIVya8c zhLrB=Y{LK+$&`LnPMJXe?+~Pa-s%!QP+$byu{~aN1dK9pq)8nSXkT24RQTq$1BV{d zxhx)AZB`q)f6Wua_grEsct6^Tnn&mX$Sj^_FEl1EOkytqid1*gX5=_@xX5lAzr?lS zAu&`$m@JNRVH`IC2=q-+4d?s8+hs4wi~R0c>ZB-;`^@adUy6Qj0}{3uf-jeDWrM_j zBBHy%rl1kHB?{nyGH9WysYaMux_LhZ_KQ-wE+dk!1kWdQ$W#RZR@|kz6PNw{1su0s zUeMr{I+k6AL9E%VaqGnnDLyuV5_7kT$@kY@BR?Iql$Tv;GjtycM(zU44iVN7N_G7J zUYpp!_}Syl9)yIL7-o8H1frO_Z~2_p4>cbifia~m=9I~?E9^)H6pDNpZdP1|2{7P6 zp)b6C+ws0c0OCfM>J?F4O*5gcCQ&(`7(lkYsOea-Y72u21~N?UjR(7tVOR={DP{P& zTE^D^x-UV94Xr@xA%zS)&RE()(Mg`_+l>{dJUGw#T%9O>nk*u+u?L3Bf(shC0di#m z<)vBMTdj8lvlFh@E?W_dA(Qpg9_wL#EvWwSN9cMt z2&9@3!$=F@_na9Z5*pZ*WBFO>w9j|-GCNeOiwTK=mOY!6CXPZ zKiumtJc2OB*Gai3bq!Al3^ObLQgMvG(-3t|5y^SZqToUDhR!tm-(Dj$&14Kp81qRO zWpP6ZPHuzwS-PLc6U#<2bm{42a@)Ao!C<;d!rbu;6K*ax6m5%U#5eJGUw(kV;|PmS zKKKScr+7T}3r(YGRN|qAi$3RF_P)m?q^@HsSdtY=HSgVGfEk4mKqmIiQ(5#Pfr|3; zul@5&NHj#`DsZPqB>4VIu1Z@4GkTv`K{+9((x7 z=CHMniU0^#pOcl4sFG)X`yBy^)ZtNjI=`>tFzA5I%(QClG9CSZwWHJ*@#b73UebLw zp6AbdE_@9EzSrn7`|bSb82I5P@Ljz7^yV!kH3=2`TiIQhcO8gV*{PQcWIsd%H+ms+v=s2U|B*Gw05u z17KA`TDvwSznyN4k+`Zti-{MAM`NN&!AJ>6%s}G;;%KBbG*TQDB-V#HW!?{9k6qBr zXRTDm2+iGHnsbFVu)O2q8U;%a){b5qf?tKk%FER>N&n4AZ$Qvh(jl1Ah&~;i4xQWP zjzGP7Mb1GT1`0ZIj$tJ!!++a@f_qDhJ}sS{u=GFm!#g`SY1e<>S}(J-MwrMsa)j|B>~V0a>kGv@onR(%qecqzI@W zjf5zONS6xIAq@i39U=nKVbGw`9SSJY9nu|23rKu(f%`eUIf^M@_#UTa-5#vEhJ zPx!Tz%N`wf-F2Zg8vOA{!CYIBPuWki9-Dd%HtkSTFbk$lOc()|Tk879RE3*cw@Hsy z^Dfm?v+spH9t%5FeD%zJFEyZ8TedHka)}8w?@K8AS+2>sW9ycViQRc)^~&?DZyeZs zA`T08kcGpXTwE&y>nvyW!}c{a=3!L^$;{nBO&iO`uSHjU_=XQgPGTS#L7OxL z*RGUK)T0BmG9go}jDzZU)zco&?xvH9?Me=MpL~`=n7wl3tP{#&liOZowY`Pr*-D5P zm@Xv=*PVDbAA7}$s=7#Tc)W$ov_3fPuJ+34@kB~Ag`1D>W?ai3QVcdV5u zlc;^MqYOWlV#n82;dU5bH&tGsiJ}hkyS=dE24P2olgDYZ^|IhxOM(7Ff#5?fBmxCL z;ElSO#+FBVK7Z<;6V@UOSM_Df!txd3#HUc_qa;0jb{E_QW)oq4GyFuO+0+mVa%k~v zNE;XZsTcQ2^;>ou+38@lH&6@^za3#!_hO^3Mt}Do7HF#i9NUVe9r6&^7G`E+6WBT{ zFv=>L(pfhld-e!cd~)9ta#71*N1b|w5g-MDkJ;ku`1P1z-6*P{<3Q7QvTUg0Pl^v? zzT|N^suW!zTvP~qBG+>9X_H688^VIUx2ExW23ms3jH9&TV|S=`FyvsuUNuM>r}hg+ z=HYZ9gW5M)PJ=%8Od1t1)nJf7mzAE)len zRN+&J1|EOUeq_`^71N)e`4dR$tRJqwejjqE(VY$+;j4oMG5|{XHZqpT(o_(teb_mb z`FAu&WgrLFE0;}g{>}>z#nK=7(C;Tfr)8nT$q4Lq?La!yJ@4>>h@=FXzdy< z-W2cb+CO{YQNvE?4Q*em#(xnAKCra3-@VCAq;W%HAzf3cZgD>(L2pjc^{yHrKXdCq z9`q_Rw{1y&YPa2*A+Wo51I0HrSs|KH+xQz-ARAA$W_c7wS}Xyz)z2z2mvMVcB<{lk z!i*x3AhQOnZ(PFH{0U=k^4%o8XQECi!o%4bvr=d%Mn_KM@PT}KNnk{=cEbtwk+eO& zEqv}cM6|06$#eg1RHa_wt&uYu1m+dG|3QsS?KRcFSKOT70zeKy8tX=0@eA`6bje^O zGRxozOJNIB4?R=IbB}tlQ@g;p-CY@-9D;d;F|^nf$7pj-hS05-9q&_mBS_qWkXCuA zT|sssXZJQjo~ABpy%&x)GnTgsneY-?mVUWTLiA$OKwn_`aFU*PdSNbQtm&{ZxN4m} zZ7=5YpJ(JbtH6}p25|Y2xRU5E+%c7xT(j_vR(v`RvOF#31ZsLH5;-!VG%SU zWs_b&{Y6&z+Wk3e?ePfJ+AEdgee3G>Mo=j9#i|q?oaFWEc;x`L(AmZ^pq2t^2I3s>8$I~)?oViY!{9cCY?XH z6EjLkFn~J7+2heu#VF{^Jkg7E0wLMs4+LMW_)xn zMOBu6*~2A8=x$(~XeNn<2Q`e99$;Ix4(<}mrEkJs}3Cf6*TYB`wCwphOL zHhQrPX*q_oIO$9^1UPqZ7>O_ypUcj2=3zmFH39YWzw6}*0*~d(7r%e|1{MUCmMUZC zVM6JyvX<~D8)t5uUE9>JF5#(V2CheuR4J=1o*Z{%-?y8(x24Mr_$o+FGVa{W#8P&r zze0shD4SDM9*B_xN{wuZco&f@%~_C-sthw{o&Y68%0wNFE5_R=oRceczwS~O-vqhK zaFln>1`ICSt(Kd;F}Vqk*~#C|rp|HzAvO^ivc4;|@S(qgB`l?$$*=y_nI*B# z6T3PzHV)m=Q~(W!TUvcmX(YXIsVD0rZ0H+a4~drvd6%Bv5Npl6LhvtTP5*lRM_ZHP z3m%Rz%r~;z?dhxiC1_Pc&6@>{Fv>NgwK4v?WXFejWVUq&?4})w0k8;*!C|rUE0|-V zCq)>>oF`k3b3qI-FIGB3eZ?=o0au5wWeJb>IQOPHXW1L9Kkslp={6{pv<)HLOM;)+ z!p-$-s3lk2Nv3(iK5_>~3Tb^-VjTTh{lruD7}|0m%u)g(|EcTN-<{nB!d;vWW2&U* zP^D_3DFzz!E(N^1=6Y0J5ZrRvw&b4TjY6?(+>ydBeg69JLMW6o@kJPNoz1TC$O8fb z_QCnb4j>rV;_-_g1#>aQg&yG{hf`g}FgG{%tPME}XZ-=z9mZCB=p+-jKV{C?{w{37 zw0u-9o}?4!GZslj5Tv1W<4LqBN%}sGdx3?Nu8IHDp>5BnB|Nl;ok8qDAGy!wZEVrw z3(5P6LQ{Si@%qkGh?DEMW1k9Qi0dw-DKEe3Etb~xw0Dr`9eHh?pU-2k}$WcA}%U+@ZcLE%JI!0~+g5 ziZN(mY$o-e&gL4_{aiFM!=wF98guIbCS=}T9_Y7p4H+DMluVCQY-WEfX0xx6495@{ z=V=~P4N&EKz%yKTO}ag^yc-&8)x^h|kNJ}rm5QH`N^i}*d3GnT&Fb>soS*a0roo)| zs?ud-nOy~R%Mqy$`nbJ7FFL#N%nVN zhP9iXS5nC60Z;cBTdc{AsggwRgsVE5k%9Nm9*R_v>=ZN}cgZ)b?XflX?hOsxC>t8H%*Tr}q`O{xgsLllVoHOTE@@4!YVi zL1zI1*L}AswPGfeyMp5^{<^>Ur`Je+d}+)QSI+($xAMoDDnOzQ?_K`F@F9xd7d1tL zN3sH2^+usO0qYXa8xNKzMuf8a@pbV#f{_^>EG5&H>cUbbJ2jt#h%h|584WJWX~#w2 z5U~L>&+c@H%+*q3?UsV|!kxCpN)L+0R9T6)TFKky zmowYtTWBau7WY{~%7r0;+x4_7e|$d(?;@2)+*Ax|U|DLyu;PGk=Z<^Z1%57U(ZDsI z?)MBcQ5|%VB|jtON9VE_gNeV}isuiNg>jO-bA*5P$LF`8Q{&}q9b72%;Fzx}s8~rC zT+>drQ6lp@5~A7a`v-n%j# z3cKi(rUR7Z{uh&Fm@tT*KA231kZ#%TUSi13&&a?6v*&-Ght_9|jmh;J?uMmbRK85S zyB5*#O5(xvNLpFOHtrOkX?WWglfPsv9X0~*LXm>>F85f{S^c4Q`?G0>ph^7EJfHV; z;Tcjm+{@x=& zoHzblR_H9eSK=5YLF!~XiNbTZ-Nh7a7dcJ=+%nX~B~&II7aMEF8?~I(TYmdAELhRK zpNuw1C8KYgy1gw~L-Q8QtQ+9-#klfLq5oyRg{!xUc&edZgwrn5zO-7_SE-QJ$YyyH z$tOu! z;ZgcFrJ6npZ^+d~{{7e*6Vdvw`f0fi(-)+?#wyzxY`L^0K2kFP-L)e&aB=k-AfJ@W)9V8A#d z)53LsOliEl7==t_I>ovD@R0D<&*5OPax#|BDf^}lBy*xgLmu&OXYXOgF|}H+Z`wF( z$>ItaY@GWRp1&8t+4V?wuDK`@d7IS&>O$R%ff44tXt=h*^4jsuLL+h;<+0=o86e$8Zpk-!u4e2}AZ+L+Lck z^s-#0q5l)I#kv||+rr$iYTdGftd@7&&Wa7_e@SO6>_^1CGyGrF2ytKPwGvMa`*%&q z4`*>h{?J{glP@^<*_R$#jRb~G>O{5JE%K1FUaYWTz{KZUuZ4HR=CfL5`uvCTbRi9w z>%uiA*v!{xjN0i2=S6!KWba{-ClT>R_c}yaV9KJZ!KhhF>1FooRN6a2PojfAR`Tjy zt;Kz35Oi4s_q!mi-9K{n*#Ra}tADT3@aM^x{Xb7A*9QM_7{Cs% za#8$s8U3k!?5?JlJXAk1O$z6}MZo;lu`WR$<=60JNY25xAowbDc3M|b%H@amQ;_FX zvptBl8N4Tib-znj@wZSB3m$?)#1HLMhTI=W$D&??eAZGLXIDUx+0T?m{YzJ?XVy(g zO!#PbDueRX>dK~`v*MTNJOAG-(6#fzhhAtn$3m)tN;(@mcz+kwiZ1o!d0seoJuY*v zTRB<Jjb7vXR#p z!$c;rfV3;@$809qpH^G{o}NtQ+lMV@$324paeS(Osq^2{IsK59tUEy{TOfgwz0%d_ z8>xYFW4kAgvrwDTmv(l1!jXHU$WJdJfo)gx35d;uM~8}(tFB4YSazzi=tT=3a6+!+ zk6@&P{TG)oG7A=YazhTeG4O)#k8g+Nsk~WywR`IhL+VHt7lsKHeuee7+Uw_9$+PA< zv;PuReqOFjR?#g}2--EZmqWdulSqe4W3-jvRGcz$$UkMJ5{yQh-EWS3jmzpH%>0@= z#wKDa)e)`N`6kBR3^t*EYU#^gqLoll7ZT|ZUJ>42U|accCArjq0F# zGX_7Y+w^wxL=$<=AfGQPT`1Fl+LuhZAi(j&NNn*=kmZ^qWJ-#skJ zNm+4N?-^J&NX~srkhMPC3Eo6}Ie|&qSfQ_>5dh+ykImcDc3tgX352~5`_eXkd!JSx zp8$dFm5vvTm_=9fKW~8Bq~qapH8moHd5U1QfLAMpOXMbe%Jc2fqG~RL0f4D!^#7JZ zdxoa{LB0y7wgoHNwP7r_VJwKP$@{v$aF}D~HhoX?Bd7M#9x;68c3fscrBLeo@`dAd zbM#td0y6S6@r5NjmV1P=2Z;1%rXy$sEsu`;-Ysxkz4p>)#Ih8JKob31M}MK{QNI~#Mzx5 z|Cw#V;R6czW%BZYWXI&b#PKkr$o4>Hf`6R^(eAY~p(%6blU(xb40cW*d9!D4k1Mk? zAARNvE>6~KoBBv*JYK&O@8v5)El2m)p(?j~NDKAHFYFaRPKMmDa_?t#}o zm4n_`!mlbQp!mDNvX1&S){cZL^Z|gx-L-J@JbHPXeuQ2SS$bu^`IVwvqNvLgA!UHU zyqvy19dG3vF|z*;7GV@GOW-&O0Y~0sOh?yvNA_cDYPV<-D>b(Cf01Lw!^^lQ~@!KVt}2(Iu>Bmtvc84PK4wzsc;OX(cb`!B2* zmRT-W+c7+o8fp)X=^l*$$iDKIJ^7WNj!CNLrvSh^}mRuW--0!i3EmG2#48~*Yt{^ zW$r}F5)>8*Oou?wt;;4>%}(v`V;Gm{58a$}pm+<_>B|dmcX4#`D6I6ym!lWbCS+T7 zwr9%N+QjCXCi1Q@Vnypw6_DYs6;5bl_FNcP#FN9nxmFCc8q!H%WQBi7^P)y7dMG~P zcX%z$%^RTs9q>BM%_|JOz6V{u9AeAju{rbAb-i?GpL@l`U6QfK0`2462W^4U{yq~j zKO*hBv99Zc+8F0amy>M+nM4o~S$l67f{@a+{XVeTsmnoQ2V>ZIJQziisx5Gq0b!2zv+?v~%PHtI$GxUxj#_juR7k{Gqq zbVgrP^TwriGy#;lg-v5YQ4VN$^2(^yKOvUHll2$T}@=xoYr1*Q@zIRwU!PV#EP>` zeR2Gz&&cDLAo^iFffPPlNoSm#t&wK0uE5d&4((SG;|^Xwv-OdXR9Qc5B?j&1&`7IW zq&{$jk#c5P*`S$>0I1k)IyS-9wsdj=xNEbKli;Ob2W>X>8E=Y3Zpf0&vdwN{LT>+= zI?IIK>*qKDs6p=bP5a|1^yQ(Wg@Qhv(TltQw zUc5H${>dzp+Ls6j4zG0Bb1f=Njjl~6j+5;aPzdp)b;>XF=DILFWFP9R zjsPV|S(Csp87O7KL>TV7M-mA$W`fzyQi$R!cB*(}DKqfuu3%(>GH*Ov-VPwdDe!Xo zy(i|5<1akh5)pRO>#smZN5^o5Jqt`52iJGipSxf4y=@xxwUV#s4wseP6d~Wq4bQf_ z0|=Qci%uq=3-heWmGxYfI6WXhxO_+{q)Phk*uK_es>u7;QqTS?nO!A@&FO>lfJi;Q zV+2}WoPHyR-uA)6=4|ujs&`G1(xHJ8o>X5bH0o>qO!P2)B_A)2!rRMD18e$Ka#p=k zBM(qwmxKhdKyhKrmomP}@#)e-On|JS$F;@GNk7 zmK8JGjCFY-bb_Lve)wA69%?*Tdrg>>SM|{Zg|^u{0Gc!($j-sSnC?kS3Vt9G`j*nO zy2?zQeB?`392n!VV=*+io-;Oz4yLOF< z_<(IB?)7Uj7pkaMRK=LlF0PzB<+|k4NZ9KVn3$OOHcq?RnFoVLT*z+v)>nD%fIox% zvj<-Xv?d9qW%w=7h<3QpgQC7S_22(5*Quo;hj<_7>M!5%ax)tqrIdfnSs5+m@Sxcw4ShpB1p+E| zbAE;Uy_>8BgucmoH!&`MMoaw}B{e#yEwACDFZImLc#|A(GiK^9Qhupg#YPulsM2}s zuhp#45i&BrNFsy)IEaH=vh%39d}&~6ck`t&2T@|>m&=|4x;i>HQnGITsz3EY_CAWI zKIKQpM`&|;j@*_dC^Nn!pa7oWIqfmueE=uJ`>SyYu2EJ7u4rbJ# zZvt-NE1g27{F#}1ep<_6wG-;MwFPWLYfE#>7^SE@MXyMRPwwt%>37T1h1b+Z$&7aY zbWtg_m*Ur9LAXlRofC!(M0jiIQe%x9G&U8WDgee@=V9ec;loUzXd=tr+12l#vA-a5&7l5l@zu=@+9>;g8`dc3gAL0o>rkn}5W zd^MDyW890&&m0_(z-J8fvS0jni(>hocG4nx&jA8NVM9trmQg=@mMSwFWe6}iRmOl2 zD5V~QgJpGZKnP+pQScWVkM1|4(V>+%zFI^5Q1Lt{GtNt}q%F4H{`*n*M~c}hA*pH$ zZI5}kq~C?oCj_%@_H$B{F-h1-a?(X4a$3F5!ok|%6(Ygers>!T>WkQ8; zs)_JjS8_f~?Yeu2eHdH+CFn}nzBlb#A{3XVcnv6E2pzEX#VOx8rSb9tsPP5sLjb7w|9ApFeEq4~jtjyI4MW)O-bb?x5eBiQFzo+rXJ{)z6m=5NvnS<8x40Bp>99ES z_SIdbs;9G?tqha1P6R@4@VS+0{>^4(J!hfV5GuR}R1be?j4HsiM$96*O(A%kit<>rP~^SCqI z5x44=x1H@)cXM-V38;$tM|t4XxK+Obv+jQXc=Nw&6AM6=3abvExFtnEz4PZ`$iFjO zoRdK=yZb^a``xO2qkQaSqL!-W2Znk3FRr|f3*0ZRW*ygcKL~iw_PeQcO?*5DZjqVk z98Q}$Z==1wKd$5VVU~->pXkJ&@C)@}=k?zNW6NKHC>WVHKg)1qGOy@fCK9TEujsM! zoEaHFoZPv$z4{K&FtC$oYUj}@X{)fhr!jzEE5LCl;YF9k>3D^{fdRcsCx{SSDkPvd z@h=Z@za7{dN?T4w{*tfwEH(F+Ls|A%Z?yoAI74&rFHovSe=Em4@yD7Ofx8>NnwUtv z^Yq{M06f+{xkL!^QZ=hCL&gkj*k3WkiCR-qx?zU^nz@X5JN=S0d|y(Z{dYq0Ya zICc7E%EJ>-iVscWM!B|kq>9tHOt^ip_kcBjFwlhUxB{(wTE*$d&dg8WoE3JkoUn(S zx_E>bN4EataFy;CgXc~UHqX#rW$Ajg-^stu76U`&B}izbYzljnmH#Z4X$^WM_q*bu z^w0dv2w!)dS%IM~77BE%P%M~5c!q}t-@mN{F;53&ExVvgDSz=BEikkt^ zp8D2+sA3=Ss9e^9v5VN`-roaYK(-sAo`Wi-%J=Sx+`1_&EX;iKW_7zbNre0+#4;Dx zwS>o!ie|RLA|f>!Y>%zfqNEz<5isqu3@% z$fmGdS?s#SsFg3C8WrqJXHQWWc0ZP$vI4&I*zZ%g5;;!N6~{Hijco5Tl%DgXcisR< zY|U|gLGS94lWAw&M?RU@x7NWszg|G@=#J$DTsG{2r_F(QElxH3%|`zsZSCzop|*}v zEL-hRGa0#hY^r^94g;6YhOK26Y0+bIPLI?H4kTbUC2F8}EVF8T4y6)gTnPd(VtTox zLYXy+Qx`xG;}aOjasg3@5o-GSKc}yd)Uq`LKxR44clk0BX=a zTF1<~|NVBEeuF1KNb@QuQ(l&B4d{8`{g)tDO@qLYF7oAZ9GU&E03THf2i92qm*pRz zbqZHb0=_ZFf*5{KGZx{JA;wS7KR>l9pRob?@blgxP{lWsCXX->x4xGz8!1rEU^(W| z5d?PvVsfupwF}a?0All%=r*k}8ulpHg7{V&3lv-iLGysDRU~Bi)BS`q3vq)Xd<@RX z>5JoQ=Pj_Bg=+J~EOB3ID?yW6+8S!BQ4JK~(tSo%BG#BQZi{OBje>Qx7E*QUfQ;!; z#_;~?jrN(_f+?ZQv-cdeSBTyTOZDADrJTA#-u|L6x)>N*uuG9G<0DwxFm7#clTcTK z!Z$WPo`v)h)d0@UXIU#@n)?A0za9Q>Mk1re{`0!J2{hmr`SVLE$jX{l1BwxG!Gq@5 zVF{f2GB`swwF_Z+ShFj%&;YR!L2tJDY$7laW8AJ8Z@u7X$2kn4`MHXrZpF8C{Vh1_ zF0wuL-Rc*CT=}VpSV_6|@+t1F%rhq+td%3R?3?tdIEPcNTWIQo4w8eX8B#lClYGuN zu6Btya=+&MP=pmFwP6w<^J2<_-XGdYvzfu>I0$f`Zmfo@H`&n-d-_8S*AFD z9GOq_Tz)#q(@50fr4?3HjaE1gFsJ85H)=mk2|xl8=EQC&mNob=3LD8_+&FLiR%n3F zvu6!;f7S<7_gf4?S?)dtUnL(t`Z1)uh`vgOOP{Ym$zkj++MqKY)cAP=B-hzN?a{f735y#r^4MpCSICfMoJKHj- z@F9n5u7#@&Tsm_TKdFN`f`v{KR{O_A5{sdxs;Rqu-q=|+%)f57g;?GG9f*te4F%j| z0KBzN3dRVEJ(;`(RNJ$sb@tU)0`v2)AXMsoAT?}4c%uj-=aIIyE+FCsMQ^ZL#1!l# zy^~!#S>v{S1CJU^@Pg`TkpFW<;JEgEuioPa0^NC32~3o)KNhh0O1=%t9g||XGAV{{ z{#BPy$iWxSn*B*=#UDnB8sUr~nAi=VfIVMq9IDivTR$Xak9A?vL4HN6dk74)&OhS( zk6UnOdr8VC+_}Bay77MQ*f@7t&)40V#_9`UZJ|W`h>?~-4zBrfUh(rktp33arb!8G z(^clYZ?!!*o-mFkpTUS%nXtYU`2}MH#^O_-=d$xyP4q?uTUg2_`vopt-HY;@7hMlQ2$fgy2i-az}_- z4#;m%j3ByJswgrtvgrm?f^l?RI066XlXDl;vID3Xji!C0ydc*CjgJKdHfm!zdK};H zpps?o9pOBG8z9d=sWe)Ci|#x3{RPZoGJjfkVi5Pd=!OX((tqEd6|tQNzs=xD3Q_T< zprD`~^es&mrF*02`tW~WOl{>p3sYO266Xnq`a)kia%7`@@*UNh7-xd!|DO7l?6YB6 zP^^>Q*>NiMJr3OEe*)-T?PAZ=u5 zd%gtc-``r7PNbE4KtNg2zdVn5=gsHqSF+x-g%{^Le|$s+Ws32^p&C}>{xn8M90pVG zqwjm3720=2&5X)}Ioln}f?)5SZ)_?~7zcrG0LLb=ngkv-V)nS&vjs~+F;6z5yp1Mm z+~ofTly#qPb08wxjj$69N0{B9By0sK#7FBf;r_uvM0P5igaPHs73p7OD|8 zXfZ1O%sxJoKKUiS=Zf~!h)ycMXhGrgf)(J-vQk+>FcXd>$&G6|Jg9}XrFHVIl)vDn zXq!i>&-Malab3>hSR#cZ2b~}xYaUGI#46>7Uj%0xV&cIT>TmR20?;qAm~Frl=l|!N zE!%$^eCNXl0}tQT)!kYU6?ZL$EjY;0LW+o&X=zb7d^Lp7m|U+h_|5y%^z0CM3uy%O z>Y;)&UgD#>dA`B2tc&n%e++ zJToh;VDV@Qyy#%|$GdrWV@ad)ftTYB9*s zbo4{0C?xE6_<3hrqi#Dp3-|W*MRcwENL~QwP~I|NzCHf&a_>82l~Mn?`wA@3{uwOG zTyc8x_wUpPva0d&nI|Z(7+7s#>;U?!;k5;tqelBv8eP`7k6ypLwP7BAt*caN+Es zo2Mzi9Z5Sflq7Q=RfNorpd4K%6h!PV7CKYHfF+t!+hNRHX7e+Y!oaoBECpFTJ&Ppq z3$NH!nm~Ix%zdtX%u$IzL%LmTp+w=Q4qEam%9O^He_x}|)!q#%IrPM84BTt&KiUkY zx5F-}`PkxVsMVas-Q;R)P5SA23h@n2J8aQ(Rf}4d;1}FDIy&^UcR5<-s*H_+J&z&N zJykYlqij**C6ADTzqhv|2-;&1maKQtxy`+-Ek1wKpq68)B|cZ!l#N(b03KuijV->x z;^*{_T(qSOe`UVfek?KsvZ+`|v<&Y$Mfg~eqBB^y47ZZ&FCaHuO8ONGyd=`*IajSa zjUKd=#bKcky<2=WGA=)WvU;SOQRzUK;!fYM7DSDC)EpYPI3&M09Llegxpb|b%EXUV zJAAh}1xEpvT@fQHBw4@9W_CdIN))_jV^g>pfblQH?bZPZ+$CR)T1(di=z^v*!Lrq|l?>k01AdXo1g2KE!!8t z3@dGZvymDtooJa-oU@TA`FFDu1OI%_s<2h0)I|-k_K1{`wB|fW+m0sY_NrY}H8a2N z-X%CI5QqyN-?;niR{*n<#|cPIPOh6EJ%5ukFWxKS-3K6xs@%46o?KlTV=U>q!+U|E zUr=JV#PR6fNkM?x;QK-EbAu1dz;5F5T#E(#8kp7QUiaVK^{HS&lF?v!kBMD-}Y8fFO85v0sa}z|G|Gv97@odVghsu%t;K-+&UNAw( zJf`PYy2y`|n-t)sz>nAlLOY5HN*!Joad-$l7c$MMW5E!yuAn@wrPSNzrCM zCjD`mI=H4LR(r#D#b|AvN8$5KiMW#emW^EWmq8P!e0UXV3xKlntz~CwM|>rrmr)zlQhiOojvDCgIPD`_4g802zCJc9=;kA6Jzi*4{V<42G3NJ$FJzGbaPW? zH?sFF;L4j=S%xqYDyBP0DdXkiF!+`%WPQ;j#G}UiOQzDSoAgAiSSZ|DzeHqsV)`Aq zo={I@ObKhQcL;IG4oX8xAJbGZOT0=`Hm%5&`@bKMvoNoSNcjZ@rnL9|EB4e@who@R zIGLK778P=EbGKJ4xSZ9K$FHdIWcD;5dWcwe{+Ds}o>BH@E*c+fYGXa){AKsQME8_- z%}|SHwlJ+ptBftThZAb1sl1#nB`+^;XnU?s zCL&@x(5@>hBS+RSbankM_0-hVELTRsL*AJuyeg5>HshBnE6KZw^H2z*{wqUg@8y^i z4tZZ%)g+KKD~znKeaJBHBux?(Jq*nqwv15YHgGw$I^em zG92>68jn)6#y&_8-eONC5ZfVt2R{AvbMx~cl?@FIHNc}@+Ac3R^J~4I22~MF9+QX$ zYOY0Ra-u03?h2|}Hnu;x|7dBk*Ct=^YY8@?dNEV>InU0E<0Hf54>qTI2@NJG<(N0I zic}g7NURdX$1mk2$Tmn4rZ4jl_u^bsyTkc}|Aq+OeZf^mW@;-bKbRsQCmQj|M0#aD zUYN)Lrv38OD?jLV=zvkt3|;TVywX)-!Sl59Sl)R7vm+{ zX>hzBG}p%mZhGgjU~#B^X<$eB5K%V$9f-B)7!whqWEoZsmmh-3oK960{qBmp=| zn67PY>2Y{K=kuMO+ZF3&W2*P>`{or^U82x;RC{J(b{56J!s#}?#F1SM7`D3tG8oad z@CfCpvD2c5FGR7<3ULr>^(~$mk~p;SI7QQNWqc#*b2k5%d$0TCVuj+Gk3b*um(*WD zd3@TP&1b29J3aCS=_mH7QYRv@k}F{J{D_C%6z}6yQ;0KZRm^jOD@xsB0WS=`F-ig5 zUd>SXAl=8HbPAx*78r#lZwTs^Sv9i7>-i$U$o?Z1fXFoe7k71#WGuhr{Vj&g6@(W8 zF2D5pTsoj)wEa;OM7gtz-+_fG#TX;0?URNbkz{I1 z#osQOeE$~xM-(sdt4~)MSH)9%N}5Cx%gth!RR4DNF#%q6>E7fw-8FJAVqM?al&dsx zmMJr4-ZDKgM`yo;h9bI>ods$mtKWVEw;BNbh%oA|p%DBRK0>WQ<=cXdS_KFRF|czo za;lY2^NTcJzxmxc`TdrEk)l*4Yo0*3#Iq62 zV~sJHpM8H7{pUIjw~keXkrbikb0Xv=9cP*Og_`U-#rSlK2{jB)XV1<|TL!Mjm6jY1 zGbh_yM>#)O-#HB)6V~-bfAqy*M=c^DeFSRA4fk5R8!7V9>Ck$>F3U#XXGB52)KO8O z3rl}bzy)>&A>TBo!FpWeW45sm_Q4^rbM~94kEF!KsW@F50WKP?D?d-ErQ=MpVj9y< zb~yZ-jkO9MA_c{J8xiCwI7LxoQ<34uzUV5^=gi{*vjIpgW;z552LsyCgI>5y{KP zE7jn;ri26$!@BfW>E_}G+v6S&3v>cNTq>zX3c+F;mP|CPjeI82d3gGAhfj#NW<}SeznC5?7|I->l z6ND_U;7E04Mj)ls4^>svu-!LPU^0}9`^Jw+8f&WT-)GuVwbO%|qHk)@>Z|Ik?D$<> z_>p5S-;jQbFu`1ojI@L-*u<$1d14YN2ov5$hjPlse7gDCsTpxkA6+)VY@ z%1%25mvYI<#*FISi-DIL%;buaFI#$kQzT>Ykc8j@U9`1-X%eBT2z61B2Y(&YRlj$vxRbN*lMQh6F0($ zm;0-|tN656e}v+2fYJV%yyi1C-vu5FJ#B2h%%_*Ode=C2L>bw1ulWR<@nhnFF3EHD z5MeCbXYyN*puYB9%iuTm0l=&R|23>7ILjKCfan3uA$6~Hr@LY1YgmM`%aT;U&EGYB zUkZ@fMW(EI?xlC;G=Mm4}d*i0|Yt_fQ_@wTA>0d+~oS*(YQP#wq_icp*coK_yNFs7G_tQ7*%J`U?C_NZe%~H6R1C=K_f7-mgH9!*Wm;t77*Yepc55oa zcsD~Twm)3(%2l?~&#GnSO?%XO>)@wYtm#LYc233Y8EKkw6>0N85*v^2^mQ!E7V)3F zb9Mwns-T{s@8~OgKK9RgQ?|r1#eF3w;kpC64QwG1+v%23M8^lh=>(TC;1|_zyWlLq zN&c^?Eu$Y6k&%5^3{crZaq=)qB8L6(hvMhEj9(UV@$V^0)MA;8=MN5|r3{Z}&KN2; z?b|6oTK(>DDdA>MWLBUS~3y~SXa6>$B`HqoU1V?j-*TJ z=zuvH_0;x3bbS2Ky4%jYlY9Mb_g&c&OMAYh`1im2 z-e11c{eqtPT$2*(-mgFih9R+%Svdt15GVUFGgV1cDA8z)4;Jj%%ze&UMQ&Gc z@Sz0Q+K;MYzx!JAu>Y(#0O7i7EWDZjciKO4syJ&{V_`#dy_iLb;xM&>m4097m5L`Z zc+Fzs+3EA&Ev&~F*@c6K%&&puI6r?>4!}C_jereq5kP4q45Q#{0b5uRJ-5WnD=wX+# z8YXqgXV=cSbDe67{=>9K8kvhHZPQlZm%(dH>R;y7*M?cjF@wJ4AdO+r_I$ zhYW={-u_OX$il3o^!?--5CEI)rhG7Gzy-b;CKgfC%|Wxt4xNoKy9aZ~VN{!Pj}Im~ zIyxIrc+8d#88jo?1Qr%dXE&i7pbVmYroeDS`mZ27`;l{7T>~I*RqDKqoKW*^j4Z+2 zq-HF65&}xBIv(V8d#hr|E@VLE%s6+<+u%MoJ7LSLrAl?jtdcqYMHt73y;cr-=0tt^ zO*A4M_gm3%L!+on_<5|E!>f{IHxIu5l$Fi70$yHKLGV46n4b)Xd6C zXq0^=Z8ivx#x(g!dYTXjS7KS?UL(R1!Law{s)?3h37JTI&3fX$$<+0b09XxwD)ja% zpS0>M-v?7Xznasp*&QQz1bk6b^Sc*WdtWmByp$~78TsnA4w&)6R`}~;$WhvqL3NL2 zlK2_v>v&W4BPP7GN@|zsgeXO9XbrrNooE4El^-_xOVN1dqe@mg&;)`jAE>u~`xcxj zT_E6VLHa`AW$O6D!^4ExovB7xgt3XZOdYNk-S+ajg_Hw&kUCqi&)TVePbFpX%sM5r zo?`QAwTBx0C9>U=q3jcGQtC_v?gViGQIc4~Ul?ruNS+L6n^AcRoqWFAs6Kf(eUGur zh{(tv$4jC!64!$Oe@{7X@P*G+mW*jI`>74}G3a;^Y?iJB)}+5)pyDI_gWaI^(`lHs z-_6}^f*+A*?d7>V6oT6*Y@-N)onK$f+!FFvRxFOXPLBwHuy%{(tsS@~IJh8uL^j3$ zVgF^ncV0izW4#IWcTh1;!f+Kn_s6MB zMd#S}yBkLJH!%}G5E9O6jwrbxMk@^_$_LH1va;fXd?&rHU%#G42sujJw_rLe@AmbY z<=~po-6B1H&qGHz2G@rnfBk);`!7-~#S3Fo=-K%Y2`%NosZD)8k0$d4i7-?&jAuFFBBCeaHc25abC7-loK z{~pT|+&;Dn1_SiDxw(e<(9_mb81ZJ(Yx4P0ya{ zsa}!ydjd2RAYu#aa9=U3qeYCSpjJ%JwfMV*m?AR2#6rkvC)CI{epE~GsyWz7m*6Wy zJ&%-NqD;X>zv83zzn^~v|8n5{vYRFyjN#&bcb8OZ;+bv$OU-+ni5-Ns2S7CkronSGYUv6%03OzR`Cx7Ap><{4O z?%y7&KPi=IGlKO_2{&DM@7`Eug+#+H)&)m;6WCIe1tbrP46McW0NFPJ-;j!pCL9lw zG32@rxm7}>&GUU%ih^R|Oh;?}D>G8jaYrjZGyQhE0U(Brx58)9@YY=Ut`<~oACWp7 z=9i^z)+n7cw#~^z54FD1)33R>X1Il23@d0ic7G4v?2(Z9?%x|yl8bN3i* zL50DNa&aF%tDO{@)3kzg z-u2uczLg~FoQ`2jL{cx_mn$gn^?N*by54X7N;PrXe=PM=&>(2Ja_CRcf5BQN>p*qvQc8DMhh_`PCj@OKpSAP6_s11H3bg{hnXrDnLEcG5I>t+r=QN4i>+K@Mc zyuRqk_r340H+FC-PAa25FEXJf;pqG_leB%^EeBo(L;_-C0Ur;Rq3kTBNz=wF_we~EMDr1*7$NTWe!(} zxp+Q6Wq47t+@6y5s=3%}moPKvxS)Af7nSRmA#uyt{4?p*wlW-1Z(qDtyw6R{iFU=4 zZ?HRb(G&&~WOn{n*j+Zk@q;l@CDfb$mqWsjRqp?4kJ_>SKvkQ;#d;V>z-(p3K%W3o ziJD;_H^mYe?v4_M=_PrS2O>d4;kn;hD3LzhZDzCk5=X}M-02W9 zB9K@3Dxl;!C^RfTwi5L$!L!N3z6bzBVmX?fYZdK+lMZx74aTqC>+UjVUgU+6XU!TZOvKo}nqJlRfbE>ltsjLZsaY zW0J(?XE8KyrFC}cui!BF5LyLGjQ{dkDQexeWQHaatxn-6O)83%_U6APQz#?x1%e%* z_g>ohq$Ln^y?|KhYO;dM+co2>%$c#TK6wjtU0c8SaT3N81 z@d1zD?zRWhV1DS$ha|F`B#~b^zSe)G%Uk2LHMf36*X4yy%$s7>%2}j1fcCH5CvphZ zAXbCDp&T7Hoi{>)FdOHsl;@giQkhiW56jC17St<8NPp3?{U8?hA%xtC6TTjj^b`yA> zU}c_}nW+h{#*y_ZQroX|!Jb(i-0TS5jGRwy+tPk~lyVUgC~}H|MvOsB$2%xjB*ajq z@W0X(x`(RP{ynG|DW|x_kAku3N9=a@BE{X3$Ag48tc`E|jtlb#qkTyKZfKT`1wJZj z&NhYe7FEb>%I@fXr@R^|Sn17q0s#;qv0xEojl)r7`jAdvw2{;ZabW8p?3rV|>Mb1=p-Sl&n|Z?ilvjRjg7x z6n~y>_}>G)M(edd?FzHgO~7%eIdFnA51xkRl zJe+#Q?t-O|t&7>d_(v-DNFZbLrCQKzK+RSA--kj%w`Zf`(Wd;TA0~@T1X=|t{w6}d zc-BwYj{gd8<^s45wt6`X0&6XY;r|R~=E0rPpAif3r=@?sAqDfUp&h4jFpglrm_38#9${s~AP>9qwj2r(@thWO+L+)U2-m$wtSX)HOCBkF}|U%bnUxINQ({nmM>cy;JY zvsxxvhb~Hm;7w1RF4DPoBWg?blEhT}jLa)MzVFS&J?59?tg%0*+GJ{Pt6FHon4SG@ z^01dT%-o^KM7bZ(wYa*f0z)n(1ppWSkOH`9u|8T#Dd8oS*~7W!eA5O7pIM)LzV;sT zC75Unb5R{F-}4sK;n690nE(HlJG(B4v_9_{^5e5wO3Cp~Y5DnoQwHQ(WE05u5XL^n zz}36!(z~rw=Y|sZ`}F6ufJ#ZG&5>e-L6YB}JQ7QZ{~uLv9aZJ_eGeaLDFLNJ8fig9 zL6DYII;25BB&8c9B$X~jN>Jd?-JyV#2$Ir*l!TOY_^yNA&+q%5G48ly+&?b+d7i!3 zUTdzo=2Th!+fL-I6c;Fe4L$JJ)!%TaommIXp(y{x&8qc)9+YMDzW#N^f{ZZ=M0==) zF9O_Y%5>%Fn0XSV?G>K7WyUukc?~@wW%nYeQyLEDB2W&uC8q7+dmS5ft2}@}18SUf zaT2v#W+ox(!Pm z-9A2A4iQ~Ym{g>b8v4uYZuUm{hZOUr*`t+_fD#kre*^RaIE)2{vs4UTDLg! z>}*nF>!SvQ+BXU8bqL#}el?a7{{+woh!IXP*?B8jlG{(}#iN$9ku7 zb#-+gE8HEN|ECM*7xp$35I1U+p9C5jAOllroNR2^Fs;gqViT*MH)ycP8jo6dZ3%Sq zi72XfRs89A`qg;lh!mx@UOw{|8*k*ml^o{R5o;zl?dABTVe1qQhU^csvIVyd6@PMB_ESi-SX5A<1HIO2~^Bsm(T!fx{@wV8yy5x|lYjB_7eT zKbmIndzY+2@$i`cMFvZGUfu)i*`qV|Z=-$#TU()56Yc3jL{6h<>5L|Fzo$X>QZ+#b zCrjXd3rpPE?d)%+zBezp5klTb|BJ>DiqdOa!rx0?)7Zd4vim>lGqA9D|8*Rt;n)uK zWC$uTH}X5ZiOkP``CS5RaYX2%h`HcIb)e)wQNl4`3>3h;)nkTQwYd85$R6gsJAuo6 zwghjV(b)MYeeGLQK5Oyv%S2MG1gZ*PEZAY<|K5E5XpHkI&mk{{sQcH8PueF`SZVOM z-2|)xIOz1rKCDu|m19nut-N^Kt$~0ovg9MjYntmN!kOmr2*Lda%Bb9kpJwxR!D10? zOV6PH^}@%^{~uO~8k-u>4Qs(6IH94BuFhA55%@MG>L;qu9+HN_E(o3dpe>+Jz&dr;_)h zYe8%%V-&3r*w;fjDgEB~pFQ8-BjKr3e7nR)FK}c9!&5IX{puhIXRlatMUdGL#@o=9 zVVXJ#i_*z^$RoouWve$2J9hF+cR{5Zvbw=3#Oqna1EZ(S&EtifnmDA{kA(1LSWdRNt_@ztr}zmwA|NQ}fk z?yjEI|Bc@kD)wtLmx)^0EH%vQBerBjo0z+pfI*vi-1_Yjm4Ff{&Oo}$7?$7_`CC$a zt%mz2As%$hYHUPoWTc0THhBgAdqxyNCFke6!zTbB0f#fKn|6TbqAz4gQszKB)0d3O=L)hFG<5zkU7`=T~LX zlSWIb6}0oMjE&#+UZJMR2fwP6pl<9df7}Njj zBpcs>KAA}!dhHXz9ZohP;;%d(GX5i8!sDuj59VKTwz1B@#_=U2g_HkMB0yu1L`&sI z6g^TqZkctWE^78{jt=Ld#+zKXgjv5gOW&DHs%swYN*#9)R?Y>43C;`ssMc5}d(0|e zPfUNRRw(|zTwvv8_eEfZ_56=WiK@NgO>GG)yms<6 ztvV~(>C>_~aUIR&((GB2KKsp*>zBjn+f$upye}r*uX?0$@1%6fv{Ygz5kaUN5^}>p zE9-v1)PUkD3q)lOh{|x?7CAt3{`3EsRH%LQ)-aQOyDu}qBKOEeAX}`vacYLbmc(ob zJ8Q}=u7qh=??wN?qgnmE?l1X)q5F+D915MOsM;g3ckkTj<^(f(A3V>W{n395rr(JK z%^LDgCz#{SZpT2(1N*pGF#* zOX3MqR-+SRR-RpZE2f<$SH=F!LK!>giylSL`!{IEb;|U?-s@3?3Mnu0xt5Gynp;lR zI?`Q7PGNEa8@LqZ-ofROF*fVkm@Zh(16960&^z0X3E+iNGZw07F zKk?Oz!18+%m=S_El$JD<)07i}zp^2gdFl%-XRF%_l$M0{ORJ@|#NU44XZv_uqFOsV zFgo7YYH~rUN@Q^I;BD6P37%L~5Ij)irF}%qVwuL+k~(!3{TB=1?Inc5j20wFk-)IH z_mb*4YN8K@>O_IfeDqI0@$ViNewW8lA*Ywya*3Pd*?aa$J@l9FKajup6{{(8g`h7Y zq-7~#%czGT6vsdtCmQ4XGXM9tU3O-7go|U1akaIqJH@R;hq9OG947^@c+ix{HP#qH z?syTbluGQTgi#Y+=O!hnp$zcO-~)e~$Qjy)MctIj=zrT5- zcrcu#7@ZKt;!tlreh^?*Wsxlm)c6V)$|6f-JJdl4_`@$-K0vG8r1W>h)xiIE#*c*V zM}nk}Mk8hb9anU#PosPVFyF(e{I2xIjEs;sj$QelBTTSg*kAH7>DvLH;rF)=Xs&%f z+Y3oBEPoz~>-u_4VC85^$_Jyn`z%?TzARwS=TI27wIP%;3h2BuOeR6zI$n7z)^@Y_;$OHo|h|&JGV^)x z*g)A6Bis}Ae3d;b_%G~U8~6QV#p$DI%W_iNN`K_JOs{&Fv8Pd0RW)Dje>ampruWyIxM3EwV;lZm`SmC{;00tO|M!*B)|D` zU-0v}d?W6&L{CYqK$VmZHqNRFMceW_CZK1%H+!i?PlhlI=s`l&N1yvH=OSjBUM_eC{^|P)wwKZRAnx2au)vjqLXXr8J3wtA=J3oW{ zdcJ~>)ghOfge6D%ML1Q=8&e+_xgrBr?FB`bO!d!;(t?o)gjqlZAr+XGD5QT>%|si1 zAfYJ;6XDoqpf$n|q*q#L6wh8C3~tK254W?qZ~R*#y(pz&^+C#Nd%Z`3`v@;l-|LOG zdWTmBRU<2VII%5EBQZi%6`p2ei&{@?_F32YiaYD2$CYL$h}Mi)w);-+JAP#@zcPNg zCTnJKh!p?D9C6)SiKao0%beS08uF2LuMmi5u{ZxPLTkDQ=n9;W{Z*cTIL}}LN_&(G zrbY6hTYWF`?vbSj@TOgUa{l+~_HIlT&RLINo4(K4R_uewsNrhkH08 zL||}nx2v1mmUx0WS$C!Vto1l{=g>#~VNq8* zZ$O375gJ(X5)u*$N#y^QM|5?C{zmH*<2|o(iuL=ZH7PFE81y8~GtqTq)dCeV+8^jQ ze(1GToz({wf6EkNTzYW*rvetMdVn73ZM?Q?G#sWbp~I%JNbj8Zg|W+jY7oy}B#=r3 z9_}plKo-voW&&c_O-)T5Gm46eF3$tuH7SyD>oTKEgHSq@+i~e9(mc&4j+A#?Z4?rz z|1GLtj6*u36+>93p9Y7L!dHvUbl}@!!ub15QvA9d4P|-D{)`q@#}S=4nmY<@77sQf zeIqnqd^BM!VpM$n`IEVPpw#Y3lTSqqm#r+;#i3l*o$pa-*^)O^As--q+x>aGU&F`XrH zqfThrE?#^2qSw|4H>uGNtgU=ptRQ@%K-XerE!!t?yZ6_H&5W(a3MLqmbp>S_igP@Z zf(oqbAHp$U{ByUTna%dGf_EoFkv&5H;>}v6At+cI%PT$i0DI70*&h#_3aVl zt1FlQX(iiC)|7V4th?5us&~iP=j7ec@2@*4%+8kf-LIedIS3A4MzyDV6AQq&j|LjM z1~wtejx^}*)&KUQGrn@lLEtd1Ms&-P#V`YpEs0>2dv<2tLoVtj^3m}zQ@uNS1-m`F zGb#HbM&lh<>0IfW7$(AIROuJ@KGifb#)V7sq*=vwzhTxODXDF{M#XB{m!MxS6M_eR ztBv(Ii0EMcIU~aAi9${i5fBdE2DZ|&q283Hwl?b2!WHFXI^}VqN4BBGXv!$ z(D`1qt2dV4PV}LvUf`@yoRh+0EvLXtV5~Jat$t``nW?VexEAK4gb*L;4$b(mIotZK zs;X+Vc^y~*jxYw&d6Df6y_WTwvh0*LCIM8M`ozB;8SEE^;?^c}o8(wuJ!aZUd=WEQO!u;8ONV4}-D!TZq7mzsx(BUJlC!0z4(_8*t{<;m$6S^pY4|aBT z%BQcgAs>AZLK?7x^=}pUZ)R;rKcM-QnEF?z4u{vMH}4z^@{sOt7q^w0zIWH^Bi^dR z7BL#W%b?azKdtXDqxXn}saT1*SpnCHmcO8%{ej*A2LU{?K|jhI>MJ*4q{y}$U&@cT zik{xygpm>3%20@v%Qc_>3q)Ad%~n1cXqZPs%)w%+A&=1~1pJ;BSNNRj>uZJ0Br;7S zY2jl>xCh^VdD|zhBf6t$zvt@Q?*I*%m7hfDt%*!c0VZ=Ch4Cgb57?iM&)tIe$~fzp7r$|K4DyWt1YW_MgMa9_6-_i4VWa?5V+(biN6KN|ll8HOF z?8)}S;WK(C)@Xkw$%2jTdPl}FC!PGvch7q(=_RSt)LX+pcHi{p@+Rd)q|j&4{CpGS z#N1l2^C^a^3`Db`s6}`um(Gk&KB?433riFNR4*mXY z{BaS&{uFJD{GU;y6EW__}%`3fI&h6A%z=12v-? zs3q?T3-3d-l>>;cNzlsNbMPTNUvviNr(*<({AsXdkR&E8TWg1ctlBt3?&h<{?Mhn( zX-so2A&pVES92Ax7bjzRs&Cc%s7=h1Ma>i!*N1HIysrxOg*D5Pq9@7BYhRXbn!dK( z6}-IEZ1k?PQr)!J!uXqGyDqhfdf0-C;=yb4B2Jg2LUM7)g*3w6s=9!lC5XEr1 z^2=*R%12V0cRKY*rx{Y+eWNmqTcN0ufNzRRnOwk#sj2o*mHnNNAm48J6dD4tWz4S; ze_aZECv|`j#+@Q)8=II&mKyNl6QoF9K4}ulmC9_X&as3P7{CNoAQagYH*gTA-MS9! zZx3kNwXG9oOK3h1gnobwa6!^Tccx2B0#UZpWtOTLpNBw_eIDk6M>C%TM%WE}vkZGT z;nZyy(&~!xJ9#9}va8RgoJLc32JPKdE5e_qJ&D|Th8PIM+qX@;khu++HZ&9b@G&;l zm_W}elt1Cn&)^_;C+SzATYh{eNJq%Zm-#Tnh+((TaO~S0G1EncS2{?F&$)bEd`#IL zgnsEJolDfx)B3iZugPM_isd3T%`783O%oTYp^alhX~qB-9XB88p5r*TC-nvX5P<&OFd!^ML`9)sd7;%BgjJ51}LxrpF4= zE?7n1^*-3VyOb}93+fpf*UX-xu6pRpWnN{I!z6of_t4DX=XdZzi2=!yhMq{@^WEAn z27mQ;5-!PsOC_3SWrjR9!80@K^gn4fKC6kL>qKwOd2)#+a`PCo_7fNM#@p8MD&*y| z&$RfKU*Zz4sk4_UFSKwHQjmqrCq>002N>o`USo@hArNycg?}{FWEav=IR}Vo67erD zg3?9OPM=uw=zttJ0>=YG^FFi?cXtc*s=I+no>Q`V1pMP5 zP^GxZp!@LFzp>@-3B!XE#z-6gP7<@}lkS$CKG|(g?^Cp`;bIa$MNtOy>=*Cczde)0 zVogz8d$boj8ORemSDqeyVkE+Te~>5MrTq>o_#h!E-W;mVNBbj9pZ+9dt##6!VF*0n z3(LyYz4vkk(WAb_IHFlrUE+}g6L|z8U})Xmtw=d)&1(XPjDvJFFCgd zSny3EQ*Gwl>d-RxGe)`3s_wx>5^TV};!}Ir^rOwv_J!TTtIwu|G`v+Y>g{)}Zk1}? zzY^Duv|!d7ZzwArV>)B5kPm%K8t7hj8#mkZ+ckFf&a3_26dO>6ny&`I*n-5breixF zAu%zdqQ*U4gCf7SP~xMi?=dHh&#?t<$C;u0F3|Vc9jJq)n_&z z+^;@+J5GloiFx1O6^G76Tyva`Eto4iQt`K~K2I9yjrKWTI$QU(4EuKXTF){?=A+^B4@ys6{sDAW$lDvT#P}aj!FYPk}9#@^H z;%zWTIqAvZ`z{c=Vt`07xYO;7?3StsNT3P$yf}TwyaDthGJBwP^SF&y5m_mD-EtEe zP+hH;#AtT;&+qhSY4Dl@<8Voq#U*5GS~lBrnnn3TkQhWRq|b1aiqINc#k9^Ad*=+d z65NNLz#VtXer4OOue;dAg&?lhI)Ccd8k5^PiGa#Fkw!*~Acsn2i@rd`=uDcAuhh!x zsey0563pZ}IIvjx8Z=!31V&BAqz~wrOZu4-%{cKfyuXUMaEaDSWm>dX)qIQKm6fbz5$8v z(H`qokFGry6fi8=ZfkkP_rvXd0ao$3`k8EC0aIMDi*& z;+e!{0Z^}txhn>(Uu=PNcmzXi0$_#iN{|a2z-1?y1alGT`$8?RKzU^O2(opiFV)8a zGk$+WCD6~88ymEBH<}W^xtU3&-$5;jzz<1|$Nz1D!Ta3=Luj?=dk^=-z84e%CG$!0 zUw`h)-fR{uR<=qJIr1*i;w#ZBR5QG(gd3v4Ch{49Xvx5(0;v(1^eF0EJZsKikZQzz zL3rcJAK*ZkT_0=kC`V0H9c_cWra5${8y{4=tZIR};Y9;pPR@wi8_=Kzm$13j<%CL; z*5C`g_Mli%6iF1pqWF=`_I!tQ3clF)|80KIKjX+sE|O)7eg; zdsnvmQY@m_)xq1sl0Tx-^vyTf2g3=(SY_xj3A+#e)6{-1@*IesG7c(UGJ^n_QgGUXQvJ+>f$_fbr zaLEti+@uAGxSghnwuT7{ND73SC2g{D!hPoLOsV-~J{JXC=q+x{x-V%RJI>su+y4E8 zDvl=gI|tUGYks`8Mp(I7Zt~~EAW_Jfy5g%O0zn#96BHJFkA4~kVnH@_4&ed#bc9cp z`}9NlpOeQvwG9pWSbyX>I^qZx$BV3_ zBp`J*y!ud;;kg`Kd_(U@Wz5YN5J`7c9860zQqMmZy)GQsw(AYQ9zX+zPvk4DH@X?x zacADZQM=gXal%YqyJ90jf!ernR)$n01qIYfOYw3)qxti`RI^pkLWIgogdGG#{lj)% zUk2!_7rTql)dJaZx9d8Z{2b`58Tuaf7_B^$C<*ugME&X22929Ra4H^@4Fhv&0SLcC z41pj!pbb>zv)tyE+@BiMsGj)BYQC1tnc#@e>#jJqeW$MT@FH#m7tmG~$CU%ALZa7g zn;tria+JH&)y*c2?xTI=`{82_>CKgO_deH3p=sjHO%gIpI*kvl#T+qL$;+j4U|DR{ zhqtHSk>(OidconSka@$_tr3ABy7lC=cnUP1*&)4I+u87g1)H6n9A@s}G`<4HwcQ6} z!4wv1VDYM<@*5vt6p8|ehIEJg9lQGbpa3jrX@%WBg~Xk@PG41(0rIC)9mn(c+fV-K zxTVF_ohnmBqN7W0`s=W`o3C4ho%wfzTSg7mOJR?vy!mujE?2!(B1^fFzJHbPRqRfR zyLvsu@X5LRrf{i%6`T&uTpuN4aK28PO^kQF=DjOIZ5CZ$e24*R(C9~bvu>jl)BBp2 zplAY!j|o;%Uu1)#w)D?HezpK=Lh+!bpsy|4c@G)j4>uhXjW6JQE4%$Epsm)t{fXMX zQ&pCh1x6KQqng2Ygl`)Zynpr}7lN!JhK-j>w7K#e^gXcq1b6W zZ|w@LFQxnO0NpxELrZIqO5pZX~?I);m^}mOeR1?cxh#TfvpJ_}?ST(Gcx7?ERv38tb&aMde?_%`T z4m)sCkS>Vq?{$rMc#lkoWz;UL4;73g%8T$aa=%l%~AvH9I*s|9OZ3Tg0UfDPa#otb}>Rm*RJYA!#-{`u!8#)8>3ZL@n-Dms6p7c`X>`HmIYksR>LS;(QOf? z^GARu_~x2jF>80RLR(tw&5t8SU;Xw05+MBL4-j;3e#vd{V zx+-MYfMK(4ng8fg(l~3BfJf{EE5l8=PUqanLSxi9f<>!4jCxIDO`a37ca7~$2q6%G zs=C+&+uPf}J=E3Jk>o7gxmB3R@D>>R+1-U=ayb!a3t+V3hVAeom5jwduz9;+$c7<= z)-@T0B!Gg}0>sS0LF6ija|TlOeC^NtO&X#;eBL~6e|ifu0EK!o27mQ>cb`6UL&hy1 z+9^XH&`3Ep3sTtb?JOGR>_Qq3M>lz0$YkkBAu?vqW8?SHEyb>=1OEq1s#(X7^FvE61ViCT!)J*n~s;LObocLaIj9TK9+8%5NC`>76NKu?@uPwM!oo ztZg5ZO_`D&Tj86ZX4c}nZXKb3wNxp!1#uYmv5tw0gx}xof zy5SNpXj$Lma+J(<#e~^-pXLoQ+wqFf!CWg$lniE3JX~#8I{}m0jUffdvJ5Kgu25p8 zqtk=)N6KLPblhnHx!Q^Chj2`2TTbQ~GUH30jRcD)1OQ%MS1=uip1DZOZfVR;&D7rP zuK&3m)Y+CQtm0Hg*J28P%~#2*G%e?vsw8c4U?D{%GvQFnFlxLnNmk;2+sXd?%ZGY< zG{m#%Wc*N7=Fe8H;6Ocu%9_Wl`9Fv8kEvO9(z7FD>4>5Atk^G;JQPtex9My z`3poC_h0`D`bs!`cdU4~0s)$W0r zRGi-AT|X_HROT7_tLdB1v zoXJUjp}9~d=VkHK{MEn9K+JV)dfY+7ygxU(gi4+GV(&FBHBghm6(}-QC%(SscK@Og zLCf0!EUlc-TOSSA4098)Ayk+azRqpMM3M${k<6qI-DfRN#!`DuPiRY`ff@K|Z(jSV zyf-O&`GJ9q{~nIu#(WAun_vUBJxvHreuRg2<&G^h4j9Os)@&)^_}UBzTV983;_e?o*EOA5&@|nB z0-_w5{U2anhaEM*e|K!%RS51p=XZgRB8BcLC@93%o%~(3`1?&TP^y$r0q}Y|>glKN z3--2aI9EQC+sn42?cT+gz5kfvUK?#cRIo*mus+llR;kW6_7{Gr5d3omEl?uGF7A7b zYdUXXK84acoEJ)SxU$oD&)zVY-hL!@(9gw6sk31F5t75wkyW$SQ7zWlCb* z+jbK+eX5p#<4v6uF00L{l7k5yM$%(%UFx=(5-lznsn!QMx?H&{I7kKmLeIB4oS!1P ze#L(Hv~(-GXe>2W@Z!aMQ{%GG8O;Jtie)m&)9+=vW@e@8Z$>^43tT`Lt6&hAzSF&y z8~p*WyJ9JuTh4A1iT#0MsYP29@@a9$GbERyoXBF;+u9l%p^Hl zG)Oeb>9?~1xme={uCG-HBkJ~4cjE4)@z^6}r`7gfg%32|p^hCfHd zF0@r46%x)P!}Xbs0I(SK!@_G_CB(qhsA-wv3TFGr&?X*Go8-e@Se_Pn?Cq2Cs5t0) za)k#9QUAI$rqbT>^a{o})9r2S3VpITc}V)+^}qUBFNZ+L<-Iu89$MPzLKQcGn7j>} z0R;y2Reeu-Ey@8?xQmLq-7xf?GwkP9lx0U3#Bg?KA5mwH}uCDRX&~;uMZ0GGjBZZA+p%Sr;q8(FRoJE-K5Y=sVJF zrdK!17RI>w%R1Qw@d`=cp^q~BC)N`o|5pydLz(@K)i^v#9|SV^7!dAVYQDpsh=c1p zo97=xAbL5qz7F0!HHObv`s=I&zM6xHs&Ka{Z=dagRJQ3|yf#bg_=eVEqNQx9*6C3# zA-*c?8?V~cgcWQwZ_>^NP?h3SGO%906TeC-%tG5mOW zCAC-fN#PCtA*8^2d5uk=(H;P~qalhL@Wj$`*-5y5iU(y(Lr6{o39p)(TI~Pc7m3Vs z9OvYWLUtl9NN`OK9?r@g9DmUUo{F%}b>;LUEA{UNca)hW`&-`VaV>u2*t%7)y1ViI zjcKW7zKXOx*KY+cZsnO8lQfr$v|lUbzYWdB zaN8R4@k4rRQWcgt&NQF9hf`IDvpIgfEwKJ02q262Goh7IqM^n)`xprUY{kttnc;&v$}PUGvgP8`&&h+FrQ7T5$l$VP1g>iM((1FDV!k%qdv5C3lBg|^Ge@sFZJwKzC9)EXh5 zKL15mIkWiJJO?C*owiVqKAA?y;WgVwKF9-adS%~zZcB2c*WPk{qCH*xt+MHZ$)d0U zntFWhlEHBJqaSDla5#8)63f2`E2e{vAV+c25fUYixD9w*H_+Dem0|cS8l(@kQBKe2 z*Z|aed4_+h2Z#d{ts9qTKAF#{u3sAYlGG5$LlP%?LOjQDrT^|ms;_7odybBc=H+%> zgRG@Tg>UFB?pz2odt$XOZyTrAzz*=l3vy$h!AZVb>JmAL`fg z>>x!DRoZS9rLd({?zGjLWQIPTpfl>omTJFix>T}LqB$(RZ%meA=VDxlBu>F4(|B;j z$%I8VjO`T^1r||8R1*#CwsAyWr05axm)OaSBCVpnD;;eA|Duju;tM<~=ft?U%ea>- zs;hfIHmGod6NO`MgOKm);D+!1oiWgG-W7lrn>mskZrJl5BY%V4)(8*T#<)jjIObU) z^~Y&hOd>{10xt7M(i+DY#q~YwaHtL5(QA}u*c^+eU@{xjkFwog=P>>rS9K*A??}Df z_>)-*jZmo)^W)Hi-ozl@6bLslkCVE+r}GgAW<5xbgq?2FI1Z`Gc7X{tGpZ0ljqjI% zI_YUOd}xJq9IAiIk-HUa654EHo1yEE)X4Y(6tjayzFyfWUXr+Wjw+Ko5eK4mx)Rs* zjlXbHw%llWMiE@3+rOrD0o_PJkLh=PxJ0d{Z?$%UMm%ARS?Q}@{<3d*`S7UE<`q}Z z%@5x9X=(;MrJ|;GS;f%o6|YoN;f9EK{-dX*^i6ly^2rLkP>1=k&cn1q5Z}ECx$Te3 zovie}WRNt?edpO#JoF#?)c(f)6FGgSrrEkB3mb&*ILYw0L$M$`|Ly4 zh8=OaDBGFO1(MW1$KTJdh{Bjp|u&N#yisbm7d-MlfU8$?b6*( zetsn}Y0<>Du{hkN8+M#OV30qZntF1xC)YITE*zM=Bw~p`IJbHsc&Mi5R>&bgs#8JB zrIG_U5wi>BznF#36Fka2JwkVmQrUuY?kiY`Ty?-MC`7U@X7~f5TQGci*TnfRLl61m}n4w-HAt z6QChXflIFRT7W&T=O4GncympB?^eME4(aF1#kgccJj7cbo=W-e%dcoYPff3^V?9CF zO@+2wasCyZe5*FCo2s8Zq_B6hvT?^>nC7@B3uyL10OZRbZQ{de)46QGJ#A;o)_j^VwM`H;p8sNTaM_zVdS z%%={vno>-6@YxK1FgHGayvi z*uc*dC&MBD&1oi(n8-84|Mv$Uw$(p*C(yjFZBX0tw7Si{$$ClVrok6GwvKf^V!yl1 z483(MlHce1G7@oofYIVr#9&|W03xnnIbcb5Ty8?FjGpEPGt2+(67hyS4z#ocqYk&U z!v#}zI@Vwl=G|*g+d?|1EkiOM*cy^@cdk8^c(1{y68=Vu(s21o#H&6?4bJhiTT{+} zi~QSQ;=w9+_5p!$UPb5AYvZ%?{PwfAmc^7O_ln<-qchQrVfK-32h)5cv9-%foqSfH zS$A?3(xnSjVt>S>^INQv?i>QJl&`B_G6cV?lx5f90=xojf+Fxy*5Lh@%svxXaH|e= zJC&s6+AK=pMMZhbyivb$trrm#0{w%UqoH@YGyLC~1rc68-%tiji349v`PJt{FQc>f z0@slEdM8Nm&gN6d>1y*m)$Qd+etXvkf5<|9HA8}Vb=003(Qo+gfjSL?XUS*YCkShN zhtlCdkcXVlQw(iNZ$FSC&6RJA#$?Gl|Mj(Bm>c^wQ}drMVc`XK&1wDVv?@*fE1DmSE&ZiFS5QDT&t&f0p8*;cin#v* zq`2#5wSaRF?xLFpmkxb!y-+aaL7QH^oQ;$l&Yf4dmqWX_61VyM$#7_A(VVtQvae3P zJh0lq;vf^KKOOkBV}81FlZ)`sMlo_yuv|j0sv^f0?z1jtrtmjv%b%C0Aa>zxJY@cw8++JZ7Tw(>!k)^5glfzH@ua$^Eun+I8=MS8m891aD z9a=eX?EaV~*w}1k!y^GMz}S}-`xLgc9DcxmbUL+eU4zTj9uLDqA}X!k zrsdc!M>?eN4unjsUJAmSy!&M5sGLr2`*{5Xu&p{pJdBPuDdxx3ajnyRx>c#6 z!#r~?9lzaKWew>yR5Y2YR;Ws~9uSr18$atqd(v?|dw3N(D^Q93==+k0vwm0VOkg59 zYE(AORjOQ;?$yHjssRGgKp-zIp+V~LQA3MQ1(#L}qTZDVp~EORb0lDJ{WlIg^M#B& z)NKll_8LwQ9$Dzu=^=9}dy|CFpi5NAT!N*EQKTE=wI;0m5$|m7lxhwKaggbRhlF)W z7w_B5?^6%FMUuIr*%E6^1=zgjpp>TO4;>lGJaqhdw^d!Oy@iW4kEcZO3D0?vrG@dY z5I{(q9W=~M)M$uUqi3S^)g8_i8_{n0PQw|z{vuRXJs*jY8i=(x$snwhAql{y3f}`I zSMp*FvYn%oI#UVtdL!M&rUI+5e(F{m@=~Gpl7-G2isK7Ec2nl~XJ`!CjdN-EnwVKM z@!x2bqatt*2rD2EWt9KhN20(m{~0Y_f*Ih}`Y~CL`r6sz{ka)kw#0yKXpVQR<@LFs z0z2PQ(mOLY_SpPh>Rg@vwLQi9zNFzyG$~B;0v}jSlq3Lk1hJ&$A-_UHyS7R z&E_P7wDXf~la(*rF--55FPFVBk&Bz)?WHR&(*J(rB-R!`LJB{nd{jlk{;tvRwaVVK z3u3?cE-Nm~H3q+D&UnQ4%1k;&9XE9inm1-Sn)mgjPcPr$s=hWH5i7`lWORzss2Yy= z7ysL&pW_Saiwg2s7n*&-GwlwWiAn{eyRGryQ5ajCsP;+WONUf8{s>{y=6{E)UYD_r zietI=P6QKn)LYe=6?yqi`caFRnDz&ydUNESXbAeLlf(LbnNv=$zO;@UPt}2YkVt|q zLBs#TZuH2|1K*7!OcZvvh?9viTxKk;WC1rQiJoT0sXsKoxL8_$=(=2Z^k*rya!?Yvwzg8H zb^pZ^m)DNr?OLMpGs>8FHVHr4vyb{8ZSsK#%K>@<9R00>(}%ui#xcIHn zE_ze^#Z@wk!-730bz~3A@-!RH4zyh?cbV-|Cq7#kwA1&|9SfrX*L=#FQ~&St=}QgD znt_D>orq`n3)bVzX~Ry=87;sUUL_B6pYTl8Iu%vxZ;3TxT|D830(EsEO3;8*;yErF zDIRNhZAJjoD{MYs{gYKISGj8NY(BPB3=+@HU{bpNOvV50NXN&Q-2BzBs8PYyXCD#; ziM5Uc;)COpj_Fp1=shgMl0WcKSe4wQCrKVRdrBtQ*PVuYJz0I|n3uOIKKI z$D*glMS$+KGQW3-ZJsL*U`%&Fop^?^VJcFm|Lv%J-NDyyu|d5PkR$_&U1L+B09W3$ z6_$j?O}V%X2|c|OeUF6%N0`A0@A&a^Yrm|FzZM!F3qhA3ER!gp6uTBeuKF%JHF1do zW}pBLRYg@*H?T5T!7auieQ;=axJ#Zbl^KT0f=&SZ9a!7LQCkpF2+OkWxs*khB;-oc2<@No`;?u8u+=76%3qk6FKv#4(Ecj$)u50ylgC zDx^!Nw!kw;_&J!<19YEVXOPs50cNe-UEm$`3!rd^cZx~j?UE1K{yvWxU&Q@_g-7kW zH&tzhZ<<2U?j-R%`8Ekr1U zI%wVE0|L;V*w_qZ1^_&&AA$wQ3R3SH*TXVtWgt3F^Z=T{QomlMSG@BFoOg0KujW2O ziR~>wT@eTRal%jfF8zIEIRSOw+HWBbMxd`*)1q6|m|WnhCF1#*Vqoqf2Hxwb^DuUm zLj^l$SkOxn<_1fQA+~NEkf@h3^x0j6B(yz1-=H?5h4S#RJE=&`;a2Nt*tEmA!KA`%lYO|1uK5qo-21P2m>8yt>=>jH%Kd)F z*!O;dC07A!3zza6Ds+oKhpL;RfJ6UK75J4O42S8>B?6W29!jUD!$e+VFurg-l&$mN z8ybV^WwEK)*Zq87!Vs9Dnsu-1U6LV(wvkWexx=QO>)$Vfkkh6sHhL|3cWk^!moeAU zKZY(7%`5V5ly|ZTOx&Tvg8`bZu$>1Uq*S*Z9BT=Q zyi1X)(}oQXM+B-A^E-HXQXU4A-JX|yq-Zw28Bl|XA1@gKpoUO8RR_Sc(Hy?5yb;v5 zx^Jb7z(1qiYrWRL4^Mvh^0r65DcLW4y4e0(=hCG)Bo;d!)#r3Eqx5v>ZK~ccey^@c z6tAO8pZi3!-*_0Qd8)7W-y_)DqAITA?5-b|tNYT&Rs6ZxRPyK}Gtp!;&2@Ch3p9vs z+uKC_3T@SSsKoe4(aFqI7B5JiR7l>IEkhE+D~f9cK~~*bbV3@t6eQj=1XqN^2T}%77F& zd%%Q@s@NCT3EP~$YMU{V9sYlnp181@?9MGHXy*4;oYH5NC30KFz8=w^Wui5kbcP>Q z*>V%D=>Fc79=5pFSJ~C}fSc$Op+i_JRr*qF5e-?n9rR?ra=?TLs1BC|IzV@XF^695Sw4>#uz`iPy;D?7SfL{qR&`jQ-Bs zW{?>GG6COCy%2)_M zUujRSu18R<*6C~iAzYlGQL}VY$n0frKHN4p$fVc$C82x1k>}=2A2$0og1nG6yt?Yp z!Tg^AU;#qr!h&(LP)#TK8;SbA%IoyiidY*_jtE&blh58&xzQXqeSnx<8e_IUoUTFt;{I2Km$6#Rx9WFIXr=L%O{ey8y z%V@YlhVJ3-W?!+H5Nwn4?ErUwMj#f-bV@@a5NvG3oBLPpAEL}^!4(How|^f3I~BX( z^S`HwRzb1^bny1tkzU6+*-U$*A_3>mEmwT(+uBc@D;1q5bruhGMj2r&R^w4;=__-| zhx95LoMiC}3NhCGSM~@v|4V$!>REs&?x4ZqZ|sFeOL84;DV5hAkM#EmVfpYN>&rA( z%GZ|<5nEf&-!)L^bmLdo!Gp3e{d9#l>OTI+M4 z7YUr&D^C)jxB2PxFRcQubMeE|d-OWr_kQkdwm-wB;=sYcB_ZW_>UCP?u5Nuz2VmP2 z(b#KD5pVeOy!A?qp^V@Ptk9LXP3qwa!F|w_0?}_h?62}PLtT#EUFe{C8c7)RW6xt@ zr;fDF0EQ-Vt;$0Q4v>IJTsQGGjOM`UurpQ(vL z=bANPv*a}uefC;G+2X-V6|X-S7g|M^WuUC{SZ+-|4LmsY75a0svjDWM#Prj($7SFI zBk$|m1X5z%kl%4eiJjGeqZZrI-3}V37pS}O4D5|iNOg9frd;MNP$!B-q5d%CTTqOe zXML~&lUCUK1je5JTeqrr*OVI>F|V#s`X8X$_A zw96zU%S^X3zWDHAV4J>M^d2kF_7eH@FRSwNg$VHLGVCj`(ZcpeWEJP}}3Sfv8p&{y}tqGOHM%;Etmqa?-mflheXhY!2fR z%dd>64uLtavW_$i3<_uBtw)OzP&aN*!@Wov`M>Ob1mejDGr>LPE-TVpwcxY)5)^_P&{I54_c?z8B9Z;B0%Pu5j7JLk{H0mCAF{Xg zDRozKR8s26Cs!{G4yJ-s_)DYbIYZ>6O7eqBSrtIa?QZHF?Y@~q?R~AA za!)3AV8k>=$Z0W%fZ`g*S5$_rpsAT~cO7V!b?X6dB{5g7MAj9z4>aHUZy52nTZeeL zo+i(xg1VOoWco`!Q^M``LT-jEN zonLZ0vnHnN|Hs^0hE>%@ZGcFNk^%-2ii*-AARQv2BF&*o1eI30QxIO1Qb0lA&~S)D zBQ1(j(i}Qex}_x!%-X#1eKXhmnQMN`@Z){2BeC~>_VcW`*IM@tbC->HCqjaaq@m=z zgJvypbWMGPFKvan?8O|a+eOJvIn`zEwfPs(dThCtV<~lQ9|YW=?BFNy>|@4(B$Z^8 z^g`IXvH|K(@;^vea-5CSPs?F?#d9^v-Vzbtg%PIs!Ap-6 z4aHRX3%O~yA$ySLPJYz{eh#X+bln6Iv=1fl#*NZ%{H*+jiTVS29Ctm!7yQ;g?U%JZ z8r~N_lpGmPi!~2%8Wd~8hMQNd4sUNrPsA!ou_dF(er0#{T-oON!;RS@sX1$`bHy%K zw{v1EkkYBh?yEEHiqBLS*?qs!Y_6+WzJ7U0s1u)`>)GtS7)Y=7i>6>20WJyquMFBv z&}YkwbOr%6>RmOp$Oj2xs4%hltIf^LbM~w#oCydiA5BsN83oUQQOhf(cl@%pRZBn& z`;Tp>!;CJx$=H(lgdUw)@X7iVb1F+S;)kkVhh5X!uJC*9e(rT)VwlQhLb9k}Hq|^f zZOax1v%L$vh5Fx*dsNqB{&Bdc1_+8`#3*WUGhM^0QZBwOixJd@;g&O=FA_E-r^hY4 zN3kx0Kgaf{4(gwJEoiwtoZ8-9>-hHIwX2{{N{O3fk=eo(Lp77_?w_=+dpUh%mNT`O z{Lc54br^5@x$*O;5Onc{MG=_fTt3@FxhH)Sv>WLH0?FWypQJ*75X=%0ad9Q|M zWok!LX_^zE3X$SaEYdJI%*DxR2DMAXGG2aW@o!~D51blDCtY%dWG9DcnW}8TrtB{{ zlKWmc9K8oJC~lpCLU}#OLT-l*1Q}b&(t;R+(}4fd%T(f1%}_o4ed{HCg-(Y|+3y{^ zm@0zV+szhnriOpt2)}$oPJDq?UqF#}{HJf4 zFVNthtz)$>o?xod;(xkTX>OyKda{-0q{rd$Ky&+hZQi?{*0S%Zs2wvuQ|t&UWL@?j zjS{ZH(#n3TQwNUW*c%-ZH*lfH!49|3aro!D38CPWRUNe$CHPq1bdJo|RU3+WBQBFS!TA685iXq3~Ph5FM zDvjphuH^J)hC%_Swc9BTeV$Kk+xKlX=UA%tk6p6M*BzK}Mn$uo!*I%Oqh)^|MEaBN z2xoqfdK}AAF3ugJDo)HGz#pIG_%=j9>YrqUfFR_@Dk;pEYQ$^HpLjJZMJ&v~86UYi z169iP{DKE&s2}#(?AqT>$H-gzbSC`8HtmGb`%$7E$ieiRhvuKNAy)ElLD2Xe`+f13 z6!r}TqHpLpAq_U~y2HRZz{ou?@ataFqiklv)X)T|@lh~7;OvP0DL)@9hha#I!&%2f z%2PGFfS7QE?a43XFUU2`{goLghP;R=NOP8PCwKL6Ka3Thw6^9<&qw%SHCi*|FpbS` zFF+%Vi>pzj$agJ^ZI7yv+KpyO z_hSsB8B=Y@Kev9SS3EH82pNeR@~{YjwyB3s;D!zEonXkCQs<$bws{)k=HzEmPaUs! zS@tVMTBk+VLw}P36Hkk<$swK)H~tNMzb~9ny)aFeB#B@I{4RoxhV%FRstzX9BW48G z!RJ|a{;=(-_g&UBN5~2oE}hX=K|HBvq{^~#dGz3jZ%EK}a{JET(=+DGj+Ujr+i-$Q*%LI=BjFt%`yM>}~93~1caXU_r zKE$2$Pt=!E=qnd)VyXpbT7Z=8gs?A<=PQNh;XWQR*d>lG0| z&gQ(IWUa%iKa!_z<`S3?OF_EvSWV7QvvqB~u&PybVk<&jA^#oe0BN&%>AW*J#?lXC z!r!@b!GTurpLZSM1-;lR=*zc?8!xehvO{Jmty;*Yn@pGvd_U{rL#*Gil$t!Mtuf@n zq4&xqv*xm(^+1$Dss^gN%q--j6#lV9GcS(&-ga=&wPnf~0|GdHwK z74#StNG_1bup~{uW1R!fi&@_qu)sJ_Y$$te>Ll>k4CQ_~Sw(k*$>urf*V%EhPY!htY#PvhLxWh%IqtzqwIs4( z)+~q6YX=vEGQVQvNJxY;Cx?OgNCx{qZ~pF;H}WHlnSwh@-LvKQLI*G0iSih*vs`tw z@GE%wD5u2jlt!LRbVrhE47-pyv`knAs4f;=o-CxP;FLw5^P^yJq@>H5Cw?1A8r7IX zNFsK(Qw?mDfFEH)yjav>1;hAe7AN`^S-X2*jUOu{q&2saDL*>(qa$u zfX3uPhh_gyLR7`4hYvx#Yr^oKJe_UnJrE%c+TXTTwh$6^DnNHxK|81MZRV!f7k{nW zCK<_ZT|vLl4tcXA7hgB#&j7tN2ZretFx64|x zuX1PYD-}|#;NqJGo~R2!5@lvF2DM*~JXj z@rRKi7(H2q0vW@0hu`Zq7vIaHE|8aqsN%>qFN1ZGL0v_|vsB8+qDTG86&Hx8VWsOo z>^j+Z9U3h@-z&n&@xi=>`~7570o;o zhn$-i!qcgO#`7C43z=i^vTQp1xvI?f&K#;Y1tg$QmkZuGx}rUDh@7a{oc4n#=!riQ zLt|v4xywlf|3|;qn1XWcY)+yssfzD*40)Fai_fD}(KqK0x@Ol8l;X|HyMJESzCo_O z9g=~O^}(#u&zksYBt@+YLXvsUxoNF?s)dBtoOPYvnW($vQ!&2ca|&sFeD8YzrN9+bG+IA`t#h938PiWn zw#{DQa)$`EXM^lZQiLS4No0(kyej+ribGXPo#R!WjtywpbS~rald~*O)gF>;8okzR zdu+B`hL$ZHO%EXR)3{fcbGD%hBb$#Kqvd{f*Y?9O4?)8Jn67saciocZ10)QO#_C-V zEb{=P6`Nf zV3W+UsiZhXtj|n5#NwJhI-~SVDXv~_sY$D<{*?g?tYx?lW|}$ayQ2$4aXnoPs@vI z7-$5Jt7QIJM* zUMC2V`8V~IIg}&8Q2Kvm+>(OI1lnFUUOP^5HSbbEI*x07fzZ#t0^&$?KE%Z#*{^;S zyfgD0EW1y_X`&j(bWrhVxGN?>pNTktcz)!uaA5%PT@6lEnyd$4_IzbzTO7wCnZwt1 zL+F(Dj!pGYwwf7z3F0l!{(av@|BbC3O?#H|(g`vBE(2Da0E@b$a#;r-Wr;)+PYkV_ zd{mEuj6e)clMLqUZHy)Q^XVPomvHwjB+e(QTqE79Py7=D-v;W;^`>P1AIhY-e3?=X z==3S)lM+8b3B6zyE)C*j_?}}GQ~G-OMUDFxit_@6fKx2pH>eaMbjRLD_bJV=`B6O1 zny13tI)*y#yD`0-rHsy@cMSlK`0M6V_Xu9Gm8NACH@vIHO1Nlz|9rw8hO@pU!`;iR z|H79kYH?P&)dNcopKY{X$~42Zr~HEDs$>J6qhm?)wOyo?zpfeKPF89QsU8b9!4WbD zpe>Je|4*qk;TB1PKZ)843bAtTfg_~b*RQ-W{1C6!zu4!8#P3LXlF`PRww&*}c#XaF zhhh5^JFv18&gz8jg&nsz7XT+?tldTg%0irVh{ zavYCjwsFJX9vT_rzESI1+qiT&ET8ANsf|xTQH9agRVLc4TH#{(D~wvfoF8bi?jkR* zU*c5Wz;aYSwUo!Fbv3nb67g~`DZu%sHAS9^og$(Ow1dVlk=P?AGcR>X7J4NsAE4Q8IPtZPYrEkOexLQ$?Jq)U3EEJhI7IAS zUjsVEu;m?{Px$;DPxn}!p>L&+;L@pG3X<;5>!N5qH#_p*4E$ z0xiY)7}Y%@Cn-ov?3WnN=Aw>Udl4VkL=obM&dE%xiihZX`C*9Xs|^Dw_Kj9|@KGx& zqg~5)J)wM}DdcJ~Wl#ao<=0UjZhndKtEQbYc#rE6HIAd+Ge*fY-rHjMV&tVP@!*I(jU-R?;8A{g&SFT4wM#w`| zSteGXE22)<)GOnMc|en^j1Ie~J%b;-!d{$n_C<~*+E%}3gsnAx!MyITrHet0n$3sH z7XoxJ6j>%Ru=R_ov!zTsO*D-PCCWNf%*>1;Cx<^oE#dq%3&4o>&M?AQAiMZ~3ojt4 z`9pOEqb}>|y{r*ULdZi~EoSy3JQ>;$ujCGOvp_)2$q2pPZ-^PVU>>C}%#y_KucHXt zqHUS=w^BW{zxWf^|3y6i0YfY^tv=i-16=`Jr)DWgr0lTbao1gQ&N}8>s{VS`JhDq! zxl}(C6Qt_#N}GB&P;;98MZ#flb&8Rl_WECU?3SoGKkRfbIw@3RM@^%fzeY#p+2;yh zTLihjq4U{B=h-g&7aP8(P<>2 z-9l||qKBvi-G|b;MtP0CaOA|5zo2}dRaaB!?w4yl);(c|!N{he>kB^IDt!07()5lG z=eb3cu=?WTP^$A;ePo!a&n7k`=z~!zEp9M@P*Es*`uWGLe~tWIxtM)>+EAejh@s5C zQcl4L2-8pngXsAm>r6$twL+TNG6`7Ar?I!QTgqE+GjLu#@q*&p$>-*6%3CHVLI%hf zj%!*4$b=FV>u6Gw6P&e^UuUfO;ub?Y-+^BQ9?ibqDdDQ-i+AV`>2rbcZPS^7@tu~iz@itf{dclxU{R4i zNr2K4Pd9|3)#M7lRwT@_q$ss`b5ImEyv*E9rBwOCO1}T=v4E!PV}}L_iDnkMkllcW z8#@x)#=`;-*2Q)4TO=6pW;d@xeYYy$xH*(x9&ootMxEF1)4W`uTM19}$(NZ9Hjsj^ z$Nv1}DeTXFujPPP+|qm{#hH=9-#65%Som1VwV|_|7Qm`*fM@d(oh_c_tjp;9C`g`g zdVly#3Twz)7r$v4KHPDp*a|8up7F&Bou6#}T#9R#$Bf>wOUb)mAoo0-elQ^!L%b`2 zb?wx;LatDHg|k33t#i41CUWewOxXl<3Lbr#T}Nfhl**}c;JQD}KEehLiunYLM?tSlERc>H7i7^!$^j}{53gc$#i6NX#! zt=={3{R`XM6%OUafGfLsjo$LwDWMg=_x{Gs;~gf?G_cwQn=)*IomU_gTGUi$UagJw z+====R8rZvL)g( z%lv}aPx-%dV)1F==H$}X_^CNjrpcFWHr

_wo^DPmo{>W3Znch{|$lxVaERZe&=B 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

{cNI<|J^j8(wxLPh)1Pt*-c^Fj@3WN(h>8Ft7L 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 e{~TUFK;56#i#PiP0sHf8 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 z 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 Ah5!Hn literal 0 HcmV?d00001 diff --git a/results/report.md b/results/report.md new file mode 100644 index 0000000..d3bb23e --- /dev/null +++ b/results/report.md @@ -0,0 +1,124 @@ +# TinyRouter results + +Generated by `make report` from `results/*.json`. Do not edit by hand. + + +Test split, 8-way routing (7 agents + out-of-scope), mean ± std over seeds 42, 43, 44. + +| What transferred | What did not transfer | +|---|---| +| ModernBERT-base fine-tuned on all 100 examples per intent routes 91.9 ± 0.1% of test queries correctly in the 8-way space (Claude Haiku 4.5 zero-shot: 82.1%). | The deferral threshold chosen on validation for 2% selective risk gives 7.34 ± 0.86% selective risk on test (ModernBERT k=100; validation: 1.50 ± 0.13%). | +| With 10 examples per intent, deferring low-confidence queries to Haiku lifts 8-way accuracy from 81.5 ± 0.7% (small model alone) to 88.0 ± 0.4%, with Haiku called on 23.9 ± 3.8% of queries. | Validation is 3.2% OOS and test 18.2%. Under this reweighting diagnostic, the OOS prior shift contributes about 87% of the observed risk gap; the remaining difference is consistent with a higher conditional error rate on test OOS queries that the model keeps (36.5 ± 3.0% vs 19.9 ± 2.9% on validation). | + +**Engineering conclusion.** A deferral threshold has to be calibrated on labelled data that represents the traffic it will see. A benchmark's validation split is not a risk guarantee for production. + +**How to read the hybrid.** With few labels the fallback is worth the most: at k=10 it is the best evidence for the cascade (numbers above). With enough labels the local model covers almost all traffic: at k=100 the hybrid sends 1.3 ± 1.6% of test queries to Haiku (170, 9, 31 of 5,500 for seeds 42, 43, 44) and moves 8-way accuracy from 91.9 ± 0.1% to 92.1 ± 0.1%. There the fallback is a small safety and diagnostic lever, not the main source of accuracy. + +### Routers (test, 8-way) + +| router | 8-way acc (%) | OOS recall (%) | high-confidence OOS misroute (%) | Haiku calls (%) | Haiku US$ per 1K queries | +|---|---|---|---|---|---| +| LLM-only (Haiku 4.5) | 82.1 | 56.8 | n/a | 100.0 | 0.369 | +| ModernBERT k=10, small-only | 81.5 ± 0.7 | 23.1 ± 3.2 | 76.9 ± 3.2 | 0.0 ± 0.0 | 0.000 ± 0.000 | +| ModernBERT k=10, hybrid (target 2%) | 88.0 ± 0.4 | 53.5 ± 1.5 | 15.4 ± 4.7 | 23.9 ± 3.8 | 0.088 ± 0.014 | +| ModernBERT k=10, oracle (upper bound) | 91.5 ± 0.2 | 61.2 ± 0.7 | 0.0 ± 0.0 | 18.5 ± 0.7 | 0.068 ± 0.003 | +| ModernBERT k=100, small-only | 91.9 ± 0.1 | 61.1 ± 0.4 | 38.9 ± 0.4 | 0.0 ± 0.0 | 0.000 ± 0.000 | +| ModernBERT k=100, hybrid (target 2%) | 92.1 ± 0.1 | 62.4 ± 1.3 | 34.5 ± 5.5 | 1.3 ± 1.6 | 0.005 ± 0.006 | +| ModernBERT k=100, oracle (upper bound) | 95.1 ± 0.1 | 75.6 ± 0.6 | 0.0 ± 0.0 | 8.1 ± 0.1 | 0.030 ± 0.000 | + +### Efficiency (AC5) + +| | BERT-base (historical baseline) | ModernBERT-base (main model) | Claude Haiku 4.5 | +|---|---|---|---| +| parameters | 109.6M | 149.7M | n/a | +| training time, k=100 (Apple M4, MPS) | 852 ± 33 s | 1,198 ± 1 s | none (zero-shot) | +| training peak memory, k=100 (MPS driver, sampled) | 4.31 ± 0.03 GiB | 6.24 ± 0.60 GiB | n/a | +| 8-way accuracy, test (%) | 91.1 ± 0.5 | 91.9 ± 0.1 | 82.1 | +| OOS recall, test (%) | 56.1 ± 2.6 | 61.1 ± 0.4 | 56.8 | +| ECE 151-way, test, before → after temperature (%) | 3.90 ± 0.34 → 3.80 ± 0.44 | 3.95 ± 0.20 → 2.45 ± 0.29 | n/a | +| latency p50 / p95, batch 1 | 15.6 / 17.0 ms | 20.2 / 23.2 ms | 669 / 916 ms (API, incl. network) | + +Encoder latency: Apple M4 CPU, batch 1, 4 threads, torch 2.14.0, `torch.inference_mode()`, 50 warm-up queries, then validation rows 0 to 499, in order; tokenization + forward + argmax. It is timed with the same architecture, not the fine-tuned weights (deleted to save disk): the pinned pretrained backbone, a 151-way head, the same tokenizer and max_length. Latency depends on shapes, not weight values, and the parameter count equals the trained run's. Haiku: client-side time per call on the 5,500 test queries, including the network round trip, with up to 6 calls in flight. Peak memory samples `torch.mps.driver_allocated_memory()` after each backward pass and optimizer step (includes the allocator cache). Accuracy, OOS recall and ECE use the 8-way aggregation chosen on validation. Values are mean ± std over seeds 42, 43, 44. + +### Cost (RQ5) + +Measured: Haiku costs US$0.369 per 1K test queries (340.2K input and 5.89K output tokens per 1K; the whole run of 8,600 calls cost US$3.18). One ModernBERT training run takes 3.3 min at k=10 and 20.0 min at k=100 on an Apple M4. + +Break-even queries against LLM-only, for **assumed** accelerator prices (training only, no labelling cost, local inference priced as below). A scenario sensitivity, not a forecast: + +| point | router | at US$0.5/h | at US$1/h | at US$2/h | +|---|---|---|---|---| +| ModernBERT k=10 | small-only | 75 | 151 | 302 | +| ModernBERT k=10 | hybrid | 99 | 198 | 396 | +| ModernBERT k=100 | small-only | 452 | 904 | 1,807 | +| ModernBERT k=100 | hybrid | 458 | 915 | 1,830 | + +Break-even compares cost only: at k=10 the small model alone is less accurate than Haiku and the hybrid is more accurate than Haiku (router table). + +Training compute costs cents; labelling dominates once it has to be paid for. CLINC150 is an existing dataset, so labelling cost is an assumed sensitivity only (break-even queries, training plus labelling): + +| hybrid, US$1/h | labelled rows | at US$0.05 per label | at US$0.2 per label | at US$1 per label | +|---|---|---|---|---| +| ModernBERT-base k=10 | 1,525 | 272,097 | 1,087,794 | 5,438,179 | +| ModernBERT-base k=100 | 15,250 | 2,097,550 | 8,387,456 | 41,933,620 | + +Local inference is assumed to cost US$0.05 per vCPU-hour at full utilisation, times the measured p50 latency and thread count. Full grid and every input: `results/cost/cost.json`. + +**8-way aggregation.** The model predicts 151 intents. Two ways map that to 8 agents: take the argmax intent and map it (`argmax`), or sum the probabilities per agent and take the largest (`summed`). Each run picks one by validation 8-way accuracy only (ties go to argmax). BERT-base: k=1 summed, k=5 summed, k=10 per seed summed/argmax/argmax, k=25 argmax, k=50 per seed summed/summed/argmax, k=100 per seed argmax/summed/argmax. ModernBERT-base: k=1 summed, k=5 summed, k=10 summed, k=25 per seed summed/argmax/summed, k=50 argmax, k=100 argmax. + +### Figures + +![Learning curves](figures/learning_curves.png) + +*Test 8-way accuracy and OOS recall against labelled examples per intent (log scale), small model alone, 8-way aggregation chosen on validation; bands are mean ± std over three seeds. The dash-dot line is Claude Haiku 4.5 zero-shot on the same queries. Shaded: k ≤ 10 trains for the fixed 400-step budget.* + +![Risk-coverage](figures/risk_coverage.png) + +*Test selective risk (8-way error among the queries the small model keeps) against coverage, for ModernBERT at k=10 and k=100, for each confidence signal; the band is the std of the temperature-scaled MSP, the main signal. The four signals nearly coincide.* + +![Router comparison](figures/routers.png) + +*Test 8-way accuracy and share of queries sent to Haiku for LLM-only, small-only, the hybrid (threshold chosen on validation for 2% selective risk) and the oracle, which defers exactly the small model's errors. Error bars are std over three seeds.* + +![Threshold transfer](figures/threshold_transfer.png) + +*Selective risk of the hybrid whose threshold was chosen on validation for 2% risk: on validation, on test, and on test reweighted to the validation OOS share (a diagnostic, not a method). Points appear where all three seeds had a feasible threshold.* + +## Limitations + +- **Hyperparameters at the edge of their grids.** The validation pilots chose values at the upper end: learning rate 5e-05 is the top of {1e-05, 2e-05, 5e-05}; S_min 400 is the top of {100, 200, 400}. A better value may lie beyond. +- **Small k is a fixed step budget.** k in {1, 5, 10} trains for S_min = 400 steps (more than 5 epochs), so those points show performance at that budget. +- **Latency uses the same architecture, not the trained weights** (see the efficiency table note). +- **Validation thresholds do not transfer** to test (headline above). +- **One benchmark.** CLINC150, English, one domain mix; BANKING77-OOS is planned for v0.2. +- Training on Apple MPS is not bit-for-bit deterministic, hence three seeds. + + +## Learning curves (test, target 2% for the hybrid) + +| model | k | 8-way acc (%) | OOS recall (%) | hybrid acc (%) | hybrid Haiku calls (%) | +|---|---|---|---|---|---| +| modernbert | 1 | 41.7 ± 2.5 | 1.7 ± 0.7 | 82.1 ± 0.0 | 100.0 ± 0.0 | +| modernbert | 5 | 71.0 ± 3.4 | 11.0 ± 4.3 | 84.4 ± 0.9 | 60.0 ± 6.7 | +| modernbert | 10 | 81.5 ± 0.7 | 23.1 ± 3.2 | 88.0 ± 0.4 | 23.9 ± 3.8 | +| modernbert | 25 | 86.3 ± 0.5 | 36.4 ± 3.0 | 89.7 ± 0.4 | 14.3 ± 1.3 | +| modernbert | 50 | 90.4 ± 0.4 | 53.9 ± 2.3 | 91.2 ± 0.5 | 3.9 ± 1.7 | +| modernbert | 100 | 91.9 ± 0.1 | 61.1 ± 0.4 | 92.1 ± 0.1 | 1.3 ± 1.6 | +| bert | 1 | 54.9 ± 1.3 | 9.9 ± 6.2 | 82.1 ± 0.0 | 98.4 ± 2.7 | +| bert | 5 | 79.0 ± 1.6 | 19.1 ± 7.0 | 86.4 ± 0.7 | 41.8 ± 0.9 | +| bert | 10 | 81.9 ± 1.2 | 24.1 ± 4.2 | 86.9 ± 0.3 | 41.5 ± 9.5 | +| bert | 25 | 86.5 ± 0.6 | 38.0 ± 3.2 | 89.7 ± 0.3 | 16.7 ± 3.8 | +| bert | 50 | 88.8 ± 0.3 | 44.8 ± 1.6 | 90.8 ± 0.2 | 8.5 ± 1.6 | +| bert | 100 | 91.1 ± 0.5 | 56.1 ± 2.6 | 91.9 ± 0.4 | 4.8 ± 1.0 | +| tfidf-centroid | 1 | 49.8 ± 1.2 | 0.1 ± 0.1 | 82.1 ± 0.0 | 100.0 ± 0.0 | +| tfidf-centroid | 5 | 68.3 ± 0.5 | 0.7 ± 1.1 | 83.6 ± 0.3 | 75.9 ± 1.9 | +| tfidf-centroid | 10 | 73.0 ± 0.6 | 1.8 ± 1.9 | 84.1 ± 0.3 | 70.5 ± 3.9 | +| tfidf-centroid | 25 | 75.3 ± 0.9 | 3.4 ± 4.4 | 85.6 ± 0.4 | 53.3 ± 6.5 | +| tfidf-centroid | 50 | 76.5 ± 0.4 | 6.2 ± 1.9 | 85.4 ± 0.5 | 57.7 ± 5.7 | +| tfidf-centroid | 100 | 77.6 ± 0.0 | 9.6 ± 0.0 | 86.0 ± 0.0 | 54.8 ± 0.0 | +| majority | 1 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | +| majority | 5 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | +| majority | 10 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | +| majority | 25 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | +| majority | 50 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | +| majority | 100 | 20.7 ± 0.0 | 0.0 ± 0.0 | n/a | n/a | diff --git a/src/tinyrouter/cost.py b/src/tinyrouter/cost.py new file mode 100644 index 0000000..4a960bb --- /dev/null +++ b/src/tinyrouter/cost.py @@ -0,0 +1,247 @@ +"""RQ5 cost: measured numbers and assumed prices, kept apart (docs/PLAN.md section 3, RQ5). + +``make cost`` reads committed JSON only and writes ``results/cost/cost.json``: + +- ``measured``: M4 (MPS) training wall-clock per encoder and k, CPU latency + (``results/efficiency/cpu_latency.json``), Haiku's real tokens and spend + (``results/llm/haiku-8way.json``, ``results/analysis/haiku.json``) and each + router's real Haiku spend on test (``results/analysis/summary.json``). +- ``assumptions``: prices nobody paid. Training is priced as if the measured + M4 wall-clock hours were billed at a few accelerator-hour rates; the Mac's + purchase price is not used. Labelling cost is a sensitivity only (CLINC150 + is an existing dataset). Local inference is priced per vCPU-hour. +- ``break_even``: queries after which a one-time cost (training, optionally + labelling) is paid back by the per-query saving against LLM-only: + ``one_time_usd / (llm_only_per_query - router_per_query)``. A scenario + sensitivity, not a forecast. + +Every number is a mean over seeds 42, 43, 44 where seeds exist. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path + +import numpy as np + +ACCELERATOR_USD_PER_HOUR = (0.5, 1.0, 2.0) +LABEL_USD_PER_EXAMPLE = (0.05, 0.2, 1.0) +VCPU_USD_PER_HOUR = 0.05 +TARGET = "0.02" +MODELS = ("bert", "modernbert") +KS = (1, 5, 10, 25, 50, 100) +POINTS = (("modernbert", 10), ("modernbert", 100)) +ROUTERS = ("small_only", "hybrid") +INPUTS = ( + "analysis/summary.json", + "analysis/haiku.json", + "llm/haiku-8way.json", + "efficiency/cpu_latency.json", + "curves/bert.json", + "curves/modernbert.json", +) +ASSUMPTION_NOTES = { + "training": ( + "measured M4 wall-clock hours of one training run, priced as if billed at each " + "accelerator-hour rate; these are assumed rates, not money spent (the runs used a Mac " + "already owned, and its purchase price is not charged to a run)" + ), + "labelling": ( + "CLINC150 is an existing dataset, so no labelling was paid; cost = labelled training " + "rows x an assumed price per label, a sensitivity only" + ), + "local_inference": ( + "measured CPU p50 end-to-end latency x intra-op threads (vCPUs) x an assumed price per " + "vCPU-hour, at full utilisation; idle capacity would cost more" + ), +} + + +def training_cost_usd(wall_seconds: float, usd_per_hour: float) -> float: + return wall_seconds / 3600.0 * usd_per_hour + + +def local_inference_usd_per_query(latency_ms: float, vcpus: int, usd_per_vcpu_hour: float) -> float: + return latency_ms / 1000.0 / 3600.0 * vcpus * usd_per_vcpu_hour + + +def break_even_queries( + one_time_usd: float, llm_only_per_query: float, router_per_query: float +) -> float | None: + """Queries until the one-time cost is repaid; None when the router saves nothing per query.""" + saving = llm_only_per_query - router_per_query + if saving <= 0: + return None + return one_time_usd / saving + + +def mean_std(values: list[float]) -> dict[str, object]: + arr = np.asarray(values, dtype=np.float64) + return { + "mean": round(float(arr.mean()), 6), + "std": round(float(arr.std(ddof=1)), 6) if arr.size > 1 else None, + "values": [round(float(v), 6) for v in values], + } + + +def load(root: Path, name: str) -> dict: + return json.loads((root / name).read_text(encoding="utf-8")) + + +def training_runs(root: Path, model: str) -> dict[int, list[dict]]: + """Each k's run JSON ``training`` blocks, from the curve index (BERT k=100 is AC2).""" + index = load(root, f"curves/{model}.json") + runs: dict[int, list[dict]] = {} + for point in sorted(index["points"], key=lambda p: (p["k"], p["seed"])): + run = load(root, f"runs/{point['run_name']}.json") + runs.setdefault(point["k"], []).append(run["training"]) + return runs + + +def measured_training(root: Path) -> dict[str, dict[str, object]]: + out: dict[str, dict[str, object]] = {} + for model in MODELS: + out[model] = {} + for k, blocks in training_runs(root, model).items(): + devices = {b["device"] for b in blocks} + out[model][str(k)] = { + "train_wall_seconds": mean_std([b["train_wall_seconds"] for b in blocks]), + "train_rows": blocks[0]["train_rows"], + "steps": blocks[0]["global_step"], + "device": devices.pop() if len(devices) == 1 else sorted(devices), + } + return out + + +def measured_haiku(root: Path) -> dict[str, object]: + totals = load(root, "llm/haiku-8way.json")["totals"] + splits = load(root, "analysis/haiku.json")["splits"] + calls = totals["calls"] + return { + "model": load(root, "llm/haiku-8way.json")["identity"]["model"], + "calls": calls, + "input_tokens": totals["input_tokens"], + "output_tokens": totals["output_tokens"], + "cost_usd": totals["cost_usd"], + "input_tokens_per_1k_queries": round(1000 * totals["input_tokens"] / calls, 3), + "output_tokens_per_1k_queries": round(1000 * totals["output_tokens"] / calls, 3), + "cost_usd_per_1k_queries": {s: splits[s]["cost_usd_per_1k_queries"] for s in splits}, + } + + +def router_block(summary: dict, model: str, k: int) -> dict[str, dict[str, object]]: + final = summary["groups"][f"{model}/k{k}"]["result"]["final"] + blocks = {"small_only": final["small_only"], "hybrid": final["fallback"][TARGET]["hybrid"]} + out = {} + for name, block in blocks.items(): + metrics = block if name == "small_only" else block["test"] + out[name] = { + key: metrics[key]["mean"] + for key in ("accuracy_8", "llm_call_rate", "llm_cost_usd_per_1k") + } + return out + + +def cpu_latency(root: Path) -> dict[str, object]: + bench = load(root, "efficiency/cpu_latency.json") + return { + "intra_op_threads": bench["method"]["intra_op_threads"], + "hardware": bench["hardware"]["cpu"], + "end_to_end_ms": { + m: {q: bench["models"][m]["end_to_end"][q] for q in ("p50_ms", "p95_ms", "mean_ms")} + for m in MODELS + }, + } + + +def break_even_rows(measured: dict[str, object]) -> list[dict[str, object]]: + llm_only = measured["haiku"]["cost_usd_per_1k_queries"]["test"] / 1000.0 # type: ignore[index] + latency = measured["cpu_latency"] # type: ignore[assignment] + rows = [] + for model, k in POINTS: + training = measured["training"][model][str(k)] # type: ignore[index] + seconds = training["train_wall_seconds"]["mean"] + local = local_inference_usd_per_query( + latency["end_to_end_ms"][model]["p50_ms"], + latency["intra_op_threads"], + VCPU_USD_PER_HOUR, + ) + for router in ROUTERS: + api = measured["routers"][f"{model}/k{k}"][router]["llm_cost_usd_per_1k"] / 1000.0 # type: ignore[index] + for price in ACCELERATOR_USD_PER_HOUR: + for label in (0.0, *LABEL_USD_PER_EXAMPLE): + one_time = training_cost_usd(seconds, price) + label * training["train_rows"] + rows.append( + { + "point": f"{model}/k{k}", + "router": router, + "accelerator_usd_per_hour": price, + "label_usd_per_example": label, + "one_time_usd": round(one_time, 6), + "llm_only_usd_per_query": round(llm_only, 9), + "router_api_usd_per_query": round(api, 9), + "router_local_usd_per_query": round(local, 9), + "break_even_queries": rounded( + break_even_queries(one_time, llm_only, api + local) + ), + "break_even_queries_api_only": rounded( + break_even_queries(one_time, llm_only, api) + ), + } + ) + return rows + + +def rounded(value: float | None) -> float | None: + return None if value is None else round(value, 1) + + +def input_hashes(root: Path) -> dict[str, str]: + return {name: hashlib.sha256((root / name).read_bytes()).hexdigest() for name in INPUTS} + + +def build(root: Path) -> dict[str, object]: + summary = load(root, "analysis/summary.json") + measured = { + "training": measured_training(root), + "cpu_latency": cpu_latency(root), + "haiku": measured_haiku(root), + "routers": {f"{m}/k{k}": router_block(summary, m, k) for m, k in POINTS}, + "router_target_risk": float(TARGET), + } + assumptions = { + "accelerator_usd_per_hour": list(ACCELERATOR_USD_PER_HOUR), + "label_usd_per_example": list(LABEL_USD_PER_EXAMPLE), + "vcpu_usd_per_hour": VCPU_USD_PER_HOUR, + "notes": ASSUMPTION_NOTES, + } + return { + "format_version": 1, + "inputs_sha256": input_hashes(root), + "measured": measured, + "assumptions": assumptions, + "break_even": { + "formula": "one_time_usd / (llm_only_usd_per_query - router_usd_per_query); " + "null when the router saves nothing per query", + "label": "scenario sensitivity, not a forecast", + "rows": break_even_rows(measured), + }, + } + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("--results-root", default="results") + args = parser.parse_args(argv) + root = Path(args.results_root) + out = root / "cost" / "cost.json" + out.parent.mkdir(parents=True, exist_ok=True) + out.write_text(json.dumps(build(root), indent=2) + "\n", encoding="utf-8") + print(f"wrote {out}") + + +if __name__ == "__main__": + main() diff --git a/src/tinyrouter/figures.py b/src/tinyrouter/figures.py new file mode 100644 index 0000000..a5c2b1c --- /dev/null +++ b/src/tinyrouter/figures.py @@ -0,0 +1,329 @@ +"""``make figures``: the four README figures, drawn from committed JSON only. + +Reads ``results/analysis/summary.json`` and ``curves.json`` and writes PNGs +(300 dpi) to ``results/figures/``. Nothing is random, and the PNG +``Software`` tag (the matplotlib version) is dropped, so two runs with the +same matplotlib give byte-identical files. Colours are the Okabe-Ito +palette, which stays distinguishable under the common colour-vision +deficiencies; line styles and markers differ too, so the figures also work +in greyscale. Bands and error bars are mean ± sample std over seeds 42, 43, 44. +""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +KS = (1, 5, 10, 25, 50, 100) +TARGET = "0.02" +OKABE_ITO = { + "black": "#000000", + "orange": "#E69F00", + "sky": "#56B4E9", + "green": "#009E73", + "blue": "#0072B2", + "vermillion": "#D55E00", + "purple": "#CC79A7", + "grey": "#999999", +} +STYLE = { + "font.size": 9, + "font.family": "serif", + "axes.labelsize": 9, + "axes.titlesize": 10, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "legend.fontsize": 8, + "figure.dpi": 300, + "savefig.dpi": 300, + "savefig.bbox": "tight", + "axes.spines.top": False, + "axes.spines.right": False, +} +MODELS = { + "modernbert": ("ModernBERT-base", OKABE_ITO["blue"], "-", "o"), + "bert": ("BERT-base", OKABE_ITO["vermillion"], "--", "s"), + "tfidf-centroid": ("TF-IDF centroid", OKABE_ITO["green"], ":", "^"), +} +SIGNALS = { + "msp_t": ("MSP, temperature-scaled", OKABE_ITO["blue"], "-", 1.8), + "msp": ("MSP", OKABE_ITO["sky"], "--", 1.0), + "entropy": ("negative entropy", OKABE_ITO["orange"], "-.", 1.0), + "margin": ("top-2 margin", OKABE_ITO["purple"], ":", 1.2), +} + + +def load(root: Path, name: str) -> dict: + return json.loads((root / name).read_text(encoding="utf-8")) + + +def pyplot(): + import matplotlib + + matplotlib.use("Agg") + import matplotlib.pyplot as plt + + plt.rcParams.update(STYLE) + return plt + + +def final(summary: dict, group: str) -> dict: + return summary["groups"][group]["result"]["final"] + + +def series(summary: dict, model: str, metric: str) -> tuple[list[float], list[float]]: + """Per-k (mean, std) in percent of the small-only ``metric``.""" + stats = [final(summary, f"{model}/k{k}")["small_only"][metric] for k in KS] + return [100 * s["mean"] for s in stats], [100 * (s["std"] or 0.0) for s in stats] + + +def log_k_axis(ax) -> None: # noqa: ANN001 + ax.set_xscale("log") + ax.set_xticks(KS, [str(k) for k in KS]) + ax.minorticks_off() + ax.set_xlabel("labelled examples per intent, k (log scale)") + + +def learning_curves(summary: dict, plt) -> object: # noqa: ANN001 + fig, axes = plt.subplots(1, 2, figsize=(6.8, 3.0), layout="constrained") + haiku = summary["llm_only_test"] + panels = ( + ("accuracy_8", "8-way routing accuracy (%)", haiku["accuracy_8"]), + ("oos_recall", "OOS recall (%)", haiku["oos"]["recall"]), + ) + for ax, (metric, ylabel, haiku_value) in zip(axes, panels, strict=True): + ax.axvspan(0.85, 10 * 1.2, color=OKABE_ITO["grey"], alpha=0.15, lw=0) + for model, (label, colour, style, marker) in MODELS.items(): + mean, std = series(summary, model, metric) + ax.plot(KS, mean, style, color=colour, marker=marker, ms=3.5, lw=1.4, label=label) + ax.fill_between( + KS, + [m - s for m, s in zip(mean, std, strict=True)], + [m + s for m, s in zip(mean, std, strict=True)], + color=colour, + alpha=0.2, + lw=0, + ) + ax.axhline( + 100 * haiku_value, + color=OKABE_ITO["black"], + ls="-.", + lw=1.0, + label="Claude Haiku 4.5, zero-shot", + ) + ax.text( + 1.0, + 0.98 if metric == "accuracy_8" else 0.9, + "k ≤ 10: fixed\n400-step budget", + transform=ax.get_xaxis_transform(), + fontsize=7, + va="top", + ) + log_k_axis(ax) + ax.set_ylabel(ylabel) + ax.set_ylim(0, 100) + axes[0].set_title("(a) 8-way accuracy, test") + axes[1].set_title("(b) OOS recall, test") + fig.legend( + *axes[0].get_legend_handles_labels(), loc="outside lower center", ncol=4, frameon=False + ) + return fig + + +def selected_aggregation(summary: dict, group: str) -> str: + chosen = summary["groups"][group]["result"]["selected_aggregation"] + if not isinstance(chosen, str): + raise ValueError(f"{group}: seeds chose different aggregations {chosen}; pick one first") + return chosen + + +def risk_coverage(summary: dict, curves: dict, plt) -> object: # noqa: ANN001 + fig, axes = plt.subplots(1, 2, figsize=(6.8, 3.0), sharey=True, layout="constrained") + grid = [100 * c for c in curves["coverage_grid"]] + for ax, k in zip(axes, (10, 100), strict=True): + group = f"modernbert/k{k}" + aggregation = selected_aggregation(summary, group) + block = curves["groups"][group]["result"][aggregation] + for signal, (label, colour, style, width) in SIGNALS.items(): + points = block[signal]["risk_coverage"] + mean = [100 * p["mean"] for p in points] + ax.plot(grid, mean, style, color=colour, lw=width, label=label) + if signal == "msp_t": + std = [100 * (p["std"] or 0.0) for p in points] + ax.fill_between( + grid, + [m - s for m, s in zip(mean, std, strict=True)], + [m + s for m, s in zip(mean, std, strict=True)], + color=colour, + alpha=0.2, + lw=0, + ) + ax.axhline( + 100 * float(TARGET), + color=OKABE_ITO["grey"], + ls="--", + lw=0.9, + label=f"{100 * float(TARGET):.0f}% target risk", + ) + ax.set_title(f"({'ab'[k == 100]}) ModernBERT k={k} ({aggregation})") + ax.set_xlabel("coverage: queries kept by the small model (%)") + ax.set_xlim(0, 100) + axes[0].set_ylabel("selective risk on test (%)") + fig.legend( + *axes[0].get_legend_handles_labels(), loc="outside lower center", ncol=5, frameon=False + ) + return fig + + +def router_stats(summary: dict, k: int) -> dict[str, tuple[float, float, float, float]]: + """Router -> (accuracy mean, std, call-rate mean, std) in percent.""" + haiku = summary["llm_only_test"] + block = final(summary, f"modernbert/k{k}") + metrics = { + "small-only": block["small_only"], + f"hybrid ({100 * float(TARGET):.0f}% target)": block["fallback"][TARGET]["hybrid"]["test"], + "oracle": block["oracle"], + } + out = {"LLM-only (Haiku)": (100 * haiku["accuracy_8"], 0.0, 100.0, 0.0)} + for name, m in metrics.items(): + acc, calls = m["accuracy_8"], m["llm_call_rate"] + out[name] = ( + 100 * acc["mean"], + 100 * (acc["std"] or 0.0), + 100 * calls["mean"], + 100 * (calls["std"] or 0.0), + ) + return out + + +def routers(summary: dict, plt) -> object: # noqa: ANN001 + fig, axes = plt.subplots(1, 2, figsize=(6.8, 3.0), layout="constrained") + stats = {k: router_stats(summary, k) for k in (10, 100)} + names = list(stats[10]) + colours = [OKABE_ITO["grey"], OKABE_ITO["sky"], OKABE_ITO["blue"], OKABE_ITO["orange"]] + hatches = ["", "//", "", ".."] + width = 0.2 + for ax, (column, ylabel) in zip( + axes, ((0, "8-way accuracy on test (%)"), (2, "queries sent to Haiku (%)")), strict=True + ): + for i, name in enumerate(names): + xs = [j + (i - 1.5) * width for j in range(2)] + heights = [stats[k][name][column] for k in (10, 100)] + errors = [stats[k][name][column + 1] for k in (10, 100)] + bars = ax.bar( + xs, + heights, + width, + yerr=errors, + capsize=2, + color=colours[i], + hatch=hatches[i], + edgecolor="black", + lw=0.5, + label=name, + ) + ax.bar_label(bars, fmt="%.1f", fontsize=6, padding=1) + ax.set_xticks([0, 1], ["ModernBERT k=10", "ModernBERT k=100"]) + ax.set_ylabel(ylabel) + axes[0].set_ylim(70, 100) + axes[1].set_ylim(0, 110) + axes[0].set_title("(a) accuracy") + axes[1].set_title("(b) LLM call rate") + fig.legend( + *axes[0].get_legend_handles_labels(), loc="outside lower center", ncol=4, frameon=False + ) + return fig + + +def transfer_series(summary: dict, model: str) -> dict[str, list[tuple[int, float, float]]]: + """Per feasible k: (k, mean, std) in percent of val, test and reweighted-test risk.""" + keys = { + "validation": ("validation", "selective_risk"), + "test": ("test", "selective_risk"), + "reweighted": ("test_reweighted_to_validation_oos_share", "selective_risk"), + } + out: dict[str, list[tuple[int, float, float]]] = {name: [] for name in keys} + for k in KS: + diag = summary["groups"][f"{model}/k{k}"]["result"]["diagnostics"][TARGET] + if diag is None: + continue + for name, (block, metric) in keys.items(): + stat = diag[block][metric] + if stat is None or stat.get("n") is not None: + continue + out[name].append((k, 100 * stat["mean"], 100 * (stat["std"] or 0.0))) + return out + + +def threshold_transfer(summary: dict, plt) -> object: # noqa: ANN001 + fig, axes = plt.subplots(1, 2, figsize=(6.8, 3.0), sharey=True, layout="constrained") + lines = { + "validation": ("validation (where the threshold was chosen)", OKABE_ITO["sky"], "--", "o"), + "test": ("test", OKABE_ITO["vermillion"], "-", "s"), + "reweighted": ("test reweighted to the validation OOS share", OKABE_ITO["green"], ":", "^"), + } + for ax, model in zip(axes, ("modernbert", "bert"), strict=True): + for name, points in transfer_series(summary, model).items(): + label, colour, style, marker = lines[name] + ks, mean, std = zip(*points, strict=True) + ax.errorbar( + ks, + mean, + yerr=std, + fmt=style, + color=colour, + marker=marker, + ms=3.5, + lw=1.3, + capsize=2, + label=label, + ) + ax.axhline( + 100 * float(TARGET), + color=OKABE_ITO["black"], + ls="-.", + lw=0.9, + label=f"{100 * float(TARGET):.0f}% target", + ) + log_k_axis(ax) + ax.set_title(f"({'ab'[model == 'bert']}) {MODELS[model][0]}") + axes[0].set_ylabel("selective risk of the hybrid (%)") + fig.legend( + *axes[0].get_legend_handles_labels(), loc="outside lower center", ncol=2, frameon=False + ) + return fig + + +def build(root: Path, out: Path) -> list[Path]: + plt = pyplot() + summary = load(root, "analysis/summary.json") + curves = load(root, "analysis/curves.json") + figures = { + "learning_curves.png": learning_curves(summary, plt), + "risk_coverage.png": risk_coverage(summary, curves, plt), + "routers.png": routers(summary, plt), + "threshold_transfer.png": threshold_transfer(summary, plt), + } + out.mkdir(parents=True, exist_ok=True) + written = [] + for name, fig in figures.items(): + path = out / name + fig.savefig(path, format="png", metadata={"Software": None}) + plt.close(fig) + written.append(path) + return written + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("--results-root", default="results") + parser.add_argument("--out", default=None, help="default: /figures") + args = parser.parse_args(argv) + root = Path(args.results_root) + for path in build(root, Path(args.out) if args.out else root / "figures"): + print(f"wrote {path}") + + +if __name__ == "__main__": + main() diff --git a/src/tinyrouter/latency.py b/src/tinyrouter/latency.py new file mode 100644 index 0000000..3029559 --- /dev/null +++ b/src/tinyrouter/latency.py @@ -0,0 +1,255 @@ +"""CPU batch-1 inference latency of the two encoders, and Haiku's measured latency (AC5). + +The curve weights were deleted after their logits were archived (disk, +docs/PLAN.md section 6). Latency does not depend on the weight values, +only on the architecture and the input shapes, so each encoder is timed +with the same architecture it was fine-tuned from: the pinned pretrained +checkpoint (``model_name`` at ``model_revision`` from its config), a +151-way classification head (randomly initialised, seed 42), and the same +tokenizer and ``max_length``. Fine-tuning changes values, not shapes. To +show the timed model is the trained one in structure, its parameter count +must equal the one the k=100 run recorded, or the benchmark stops. + +Method: CPU, batch 1, ``torch.inference_mode()``, a fixed number of +intra-op threads (recorded), ``WARMUP`` untimed queries, then the first +``N`` validation queries in order. Each query is timed twice from the same +pass: ``end_to_end_ms`` is tokenization plus forward plus argmax (what a +router pays per request) and ``forward_ms`` is the forward pass alone. +Percentiles use numpy's default linear interpolation. + +Haiku: ``latency_ms`` in the journal is the client-side wall time of the +last attempt of each ``messages.create`` call. It includes the network +round trip and any API queueing, and the run kept up to 6 calls in flight. +""" + +from __future__ import annotations + +import argparse +import json +import platform +import subprocess +import time +from collections.abc import Sequence +from pathlib import Path + +import numpy as np + +from tinyrouter.archive import utc_now +from tinyrouter.config import RunConfig, load_config +from tinyrouter.data import load_split +from tinyrouter.labels import load_label_space + +ENCODERS = {"bert": "configs/bert-base.yaml", "modernbert": "configs/modernbert-base.yaml"} +DEFAULT_QUERIES = 500 +WARMUP = 50 +DEFAULT_THREADS = 4 +HEAD_SEED = 42 +PERCENTILE_METHOD = "linear" +WEIGHTS_NOTE = ( + "timed with the pinned pretrained backbone and a randomly initialised 151-way head, not the " + "fine-tuned weights (deleted after their logits were archived); latency depends on the " + "architecture and input shapes, not on the weight values, and the parameter count equals " + "the trained k=100 run's" +) +HAIKU_NOTE = ( + "client-side wall time of the last attempt of each messages.create call; includes the " + "network round trip and API queueing; up to 6 calls were in flight" +) + + +class ArchitectureMismatchError(RuntimeError): + """The timed model does not have the parameter count of the trained run.""" + + +def latency_summary(values_ms: Sequence[float]) -> dict[str, float | int]: + """n, mean, p50, p95, min and max of per-query latencies in milliseconds.""" + values = np.asarray(values_ms, dtype=np.float64) + if values.ndim != 1 or values.size == 0: + raise ValueError(f"need a non-empty 1-d list of latencies, got shape {values.shape}") + p50, p95 = np.percentile(values, [50, 95], method=PERCENTILE_METHOD) + return { + "n": int(values.size), + "mean_ms": round(float(values.mean()), 3), + "p50_ms": round(float(p50), 3), + "p95_ms": round(float(p95), 3), + "min_ms": round(float(values.min()), 3), + "max_ms": round(float(values.max()), 3), + } + + +def haiku_latency(journal: Path) -> dict[str, object]: + """Latency summary of the stored Haiku calls, per split and over both.""" + by_split: dict[str, list[float]] = {} + retried = 0 + for line in journal.read_text(encoding="utf-8").splitlines(): + row = json.loads(line) + by_split.setdefault(row["split"], []).append(float(row["latency_ms"])) + retried += int(row["attempts"]) > 1 + every = [v for split in sorted(by_split) for v in by_split[split]] + return { + "source": journal.name, + "measures": HAIKU_NOTE, + "calls_retried": retried, + "all": latency_summary(every), + "splits": {split: latency_summary(v) for split, v in sorted(by_split.items())}, + } + + +def cpu_name() -> str: + if platform.system() == "Darwin": + out = subprocess.run( + ["sysctl", "-n", "machdep.cpu.brand_string"], capture_output=True, text=True + ) + if out.returncode == 0 and out.stdout.strip(): + return out.stdout.strip() + cpuinfo = Path("/proc/cpuinfo") + if cpuinfo.is_file(): + for line in cpuinfo.read_text().splitlines(): + if line.startswith("model name"): + return line.split(":", 1)[1].strip() + return platform.processor() or "unknown" + + +def trained_parameter_count(results_root: Path, model: str) -> int: + """Parameter total recorded by the k=100 seed-42 run of ``model``'s curve.""" + index = json.loads((results_root / "curves" / f"{model}.json").read_text(encoding="utf-8")) + point = next(p for p in index["points"] if p["k"] == 100 and p["seed"] == 42) + run = json.loads((results_root / "runs" / f"{point['run_name']}.json").read_text("utf-8")) + return int(run["training"]["parameters"]["total"]) + + +def load_timed_model(config: RunConfig) -> tuple[object, object]: + import torch + from transformers import AutoModelForSequenceClassification, AutoTokenizer + + labels = load_label_space() + torch.manual_seed(HEAD_SEED) + tokenizer = AutoTokenizer.from_pretrained(config.model_name, revision=config.model_revision) + model = AutoModelForSequenceClassification.from_pretrained( + config.model_name, + revision=config.model_revision, + num_labels=labels.num_intents, + id2label=dict(enumerate(labels.intent_names)), + label2id={name: i for i, name in enumerate(labels.intent_names)}, + ) + return model.to("cpu").eval(), tokenizer + + +def time_queries( + model: object, tokenizer: object, texts: Sequence[str], max_length: int +) -> tuple[list[float], list[float]]: + """(end-to-end ms, forward-only ms) per query, batch 1, in order.""" + import torch + + end_to_end, forward = [], [] + with torch.inference_mode(): + for text in texts: + started = time.perf_counter_ns() + batch = tokenizer( # type: ignore[operator] + [text], truncation=True, max_length=max_length, return_tensors="pt" + ) + forward_started = time.perf_counter_ns() + logits = model(**batch).logits # type: ignore[operator] + forward_done = time.perf_counter_ns() + int(logits.argmax(dim=-1)[0]) + finished = time.perf_counter_ns() + end_to_end.append((finished - started) / 1e6) + forward.append((forward_done - forward_started) / 1e6) + return end_to_end, forward + + +def benchmark_encoder( + name: str, results_root: Path, texts: Sequence[str], threads: int +) -> dict[str, object]: + import torch + + config = load_config(ENCODERS[name]) + model, tokenizer = load_timed_model(config) + total = sum(p.numel() for p in model.parameters()) # type: ignore[attr-defined] + trained = trained_parameter_count(results_root, name) + if total != trained: + raise ArchitectureMismatchError( + f"{name}: timed model has {total} parameters, the trained k=100 run {trained}" + ) + torch.set_num_threads(threads) + time_queries(model, tokenizer, texts[:WARMUP], config.max_length) + end_to_end, forward = time_queries(model, tokenizer, texts, config.max_length) + return { + "model_name": config.model_name, + "model_revision": config.model_revision, + "num_labels": load_label_space().num_intents, + "max_length": config.max_length, + "parameters_total": total, + "parameters_match_trained_run": True, + "attention_implementation": getattr(model.config, "_attn_implementation", None), # type: ignore[attr-defined] + "end_to_end": latency_summary(end_to_end), + "forward": latency_summary(forward), + } + + +def run_cpu_benchmark(results_root: Path, queries: int, threads: int) -> dict[str, object]: + import torch + import transformers + + texts = load_split("validation").texts[:queries] + torch.set_num_interop_threads(1) + models = {name: benchmark_encoder(name, results_root, texts, threads) for name in ENCODERS} + return { + "format_version": 1, + "method": { + "device": "cpu", + "batch_size": 1, + "mode": "torch.inference_mode", + "queries": f"validation rows 0 to {queries - 1}, in order", + "warmup_queries": WARMUP, + "intra_op_threads": threads, + "inter_op_threads": 1, + "percentiles": f"numpy.percentile, method={PERCENTILE_METHOD}", + "end_to_end": "tokenization + forward + argmax", + "forward": "forward pass only", + "weights": WEIGHTS_NOTE, + }, + "hardware": { + "cpu": cpu_name(), + "machine": platform.machine(), + "platform": platform.platform(), + }, + "versions": { + "python": platform.python_version(), + "torch": torch.__version__, + "transformers": transformers.__version__, + }, + "measured_at": utc_now(), + "models": models, + } + + +def write_json(path: Path, body: dict[str, object]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(json.dumps(body, indent=2) + "\n", encoding="utf-8") + + +def main(argv: list[str] | None = None) -> None: + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + parser.add_argument("target", choices=("cpu", "haiku")) + parser.add_argument("--results-root", default="results") + parser.add_argument("--queries", type=int, default=DEFAULT_QUERIES) + parser.add_argument("--threads", type=int, default=DEFAULT_THREADS) + parser.add_argument( + "--out", default=None, help="output file (default under results/efficiency)" + ) + args = parser.parse_args(argv) + root = Path(args.results_root) + if args.target == "cpu": + body = run_cpu_benchmark(root, args.queries, args.threads) + out = root / "efficiency" / "cpu_latency.json" + else: + body = {"format_version": 1, **haiku_latency(root / "llm" / "haiku-8way.jsonl")} + out = root / "efficiency" / "haiku_latency.json" + out = Path(args.out) if args.out else out + write_json(out, body) + print(f"wrote {out}") + + +if __name__ == "__main__": + main() diff --git a/src/tinyrouter/report.py b/src/tinyrouter/report.py index cd7aa64..14a0706 100644 --- a/src/tinyrouter/report.py +++ b/src/tinyrouter/report.py @@ -1,45 +1,519 @@ -"""Build results/summary.md from results/runs/*.json. Minimal for now. +"""``make report``: results/report.md and the README's generated block, from committed JSON. -Tables are generated, never typed by hand (docs/PLAN.md AC7). With no -results yet this says so and exits 0; the README section it will feed is -not wired up until the first real run exists. +No number in the README's first screen is typed by hand (docs/PLAN.md AC8). +Everything between ``BEGIN`` and ``END`` in README.md is rewritten from: +``results/analysis/{summary,haiku}.json``, ``results/llm/haiku-8way.json``, +``results/efficiency/*.json``, ``results/cost/cost.json``, the curve indexes, +the pilots and the run JSONs. ``--check`` rewrites nothing and exits 1 when +either file differs from what the JSON gives; tests/test_report.py runs the +same comparison in CI. """ from __future__ import annotations import argparse import json +import sys +from dataclasses import dataclass from pathlib import Path -COLUMNS = ("accuracy_8", "in_scope_accuracy_150", "oos_recall_151", "ece_151") +from tinyrouter.cost import training_runs +BEGIN = "" +END = "" +TARGET = "0.02" +MODEL_LABEL = {"bert": "BERT-base", "modernbert": "ModernBERT-base"} +FIGURES = ( + ( + "learning_curves.png", + "Learning curves", + "Test 8-way accuracy and OOS recall against labelled examples per intent (log scale), " + "small model alone, 8-way aggregation chosen on validation; bands are mean ± std over " + "three seeds. The dash-dot line is Claude Haiku 4.5 zero-shot on the same queries. " + "Shaded: k ≤ 10 trains for the fixed 400-step budget.", + ), + ( + "risk_coverage.png", + "Risk-coverage", + "Test selective risk (8-way error among the queries the small model keeps) against " + "coverage, for ModernBERT at k=10 and k=100, for each confidence signal; the band is " + "the std of the temperature-scaled MSP, the main signal. The four signals nearly " + "coincide.", + ), + ( + "routers.png", + "Router comparison", + "Test 8-way accuracy and share of queries sent to Haiku for LLM-only, small-only, the " + "hybrid (threshold chosen on validation for 2% selective risk) and the oracle, which " + "defers exactly the small model's errors. Error bars are std over three seeds.", + ), + ( + "threshold_transfer.png", + "Threshold transfer", + "Selective risk of the hybrid whose threshold was chosen on validation for 2% risk: on " + "validation, on test, and on test reweighted to the validation OOS share (a diagnostic, " + "not a method). Points appear where all three seeds had a feasible threshold.", + ), +) -def render(records: list[dict[str, object]]) -> str: - header = "| run | T | " + " | ".join(f"test {c}" for c in COLUMNS) + " |" - lines = [header, "|" + "---|" * (len(COLUMNS) + 2)] - for record in sorted(records, key=lambda r: str(r["run_name"])): - metrics = record["metrics"] - assert isinstance(metrics, dict) - calibrated = metrics["test"]["calibrated"] - cells = " | ".join(f"{calibrated[c]:.4f}" for c in COLUMNS) - lines.append(f"| {record['run_name']} | {metrics['temperature']:.3f} | {cells} |") - return "\n".join(lines) + "\n" + +@dataclass(frozen=True) +class Results: + summary: dict + haiku: dict + llm: dict + cpu: dict + haiku_latency: dict + cost: dict + indexes: dict[str, dict] + pilots: dict[str, dict] + k100_training: dict[str, list[dict]] + + @classmethod + def load(cls, root: Path) -> Results: + def read(name: str) -> dict: + return json.loads((root / name).read_text(encoding="utf-8")) + + return cls( + summary=read("analysis/summary.json"), + haiku=read("analysis/haiku.json"), + llm=read("llm/haiku-8way.json"), + cpu=read("efficiency/cpu_latency.json"), + haiku_latency=read("efficiency/haiku_latency.json"), + cost=read("cost/cost.json"), + indexes={m: read(f"curves/{m}.json") for m in MODEL_LABEL}, + pilots={p: read(f"pilots/{p}.json") for p in ("lr", "steps")}, + k100_training={m: training_runs(root, m)[100] for m in MODEL_LABEL}, + ) + + def group(self, name: str) -> dict: + return self.summary["groups"][name]["result"] + + def hybrid(self, name: str) -> dict: + return self.group(name)["final"]["fallback"][TARGET]["hybrid"] + + @property + def test_n(self) -> int: + return int(self.summary["llm_only_test"]["n"]) + + +def pct(value: float, digits: int = 1) -> str: + return f"{100 * value:.{digits}f}" + + +def pm(stat: dict, digits: int = 1, scale: float = 100.0) -> str: + """``mean ± std`` of a combined statistic; std shown only when there is one.""" + mean = f"{scale * stat['mean']:.{digits}f}" + if stat.get("std") is None: + return mean + return f"{mean} ± {scale * stat['std']:.{digits}f}" + + +def usd(value: float, digits: int = 3) -> str: + return f"US${value:,.{digits}f}" + + +def queries(value: float | None) -> str: + return "never" if value is None else f"{value:,.0f}" + + +def headline(r: Results) -> list[str]: + main = r.group("modernbert/k100") + small10 = r.group("modernbert/k10")["final"]["small_only"] + hybrid10 = r.hybrid("modernbert/k10")["test"] + diag = main["diagnostics"][TARGET] + haiku = r.summary["llm_only_test"] + target = pct(float(TARGET), 0) + transferred = ( + f"ModernBERT-base fine-tuned on all 100 examples per intent routes " + f"{pm(main['final']['small_only']['accuracy_8'])}% of test queries correctly in the " + f"8-way space (Claude Haiku 4.5 zero-shot: {pct(haiku['accuracy_8'])}%).", + f"With 10 examples per intent, deferring low-confidence queries to Haiku lifts 8-way " + f"accuracy from {pm(small10['accuracy_8'])}% (small model alone) to " + f"{pm(hybrid10['accuracy_8'])}%, with Haiku called on " + f"{pm(hybrid10['llm_call_rate'])}% of queries.", + ) + missed = ( + f"The deferral threshold chosen on validation for {target}% selective risk gives " + f"{pm(diag['test']['selective_risk'], 2)}% selective risk on test (ModernBERT k=100; " + f"validation: {pm(diag['validation']['selective_risk'], 2)}%).", + f"Validation is {pct(diag['validation_oos_share']['mean'])}% OOS and test " + f"{pct(diag['test_oos_share']['mean'])}%. Under this reweighting diagnostic, the OOS " + f"prior shift contributes about " + f"{round(100 * diag['share_of_gap_explained_by_oos_share']['mean'])}% of the observed " + f"risk gap; the remaining difference is consistent with a higher conditional error rate " + f"on test OOS queries that the model keeps ({pm(diag['test']['kept_oos_error_rate'])}% " + f"vs {pm(diag['validation']['kept_oos_error_rate'])}% on validation).", + ) + return [ + "Test split, 8-way routing (7 agents + out-of-scope), mean ± std over seeds 42, 43, 44.", + "", + "| What transferred | What did not transfer |", + "|---|---|", + *(f"| {a} | {b} |" for a, b in zip(transferred, missed, strict=True)), + "", + "**Engineering conclusion.** A deferral threshold has to be calibrated on labelled data " + "that represents the traffic it will see. A benchmark's validation split is not a risk " + "guarantee for production.", + ] + + +def hybrid_reading(r: Results) -> list[str]: + main = r.group("modernbert/k100")["final"] + hybrid = r.hybrid("modernbert/k100")["test"] + calls = ", ".join(str(round(v * r.test_n)) for v in hybrid["llm_call_rate"]["values"]) + return [ + "**How to read the hybrid.** With few labels the fallback is worth the most: at k=10 it " + "is the best evidence for the cascade (numbers above). With enough labels the local model " + f"covers almost all traffic: at k=100 the hybrid sends {pm(hybrid['llm_call_rate'])}% of " + f"test queries to Haiku ({calls} of {r.test_n:,} for seeds 42, 43, 44) and moves 8-way " + f"accuracy from {pm(main['small_only']['accuracy_8'])}% to {pm(hybrid['accuracy_8'])}%. " + "There the fallback is a small safety and diagnostic lever, not the main source of " + "accuracy.", + ] + + +def router_row(label: str, metrics: dict, llm: str | None = None) -> str: + misroute = metrics["high_conf_oos_misroute_rate"] + cells = [ + pm(metrics["accuracy_8"]), + pm(metrics["oos_recall"]), + "n/a" if misroute is None else pm(misroute), + pm(metrics["llm_call_rate"]), + llm if llm is not None else pm(metrics["llm_cost_usd_per_1k"], 3, 1.0), + ] + return f"| {label} | " + " | ".join(cells) + " |" + + +def routers_table(r: Results) -> list[str]: + haiku = r.summary["llm_only_test"] + rows = [ + "| router | 8-way acc (%) | OOS recall (%) | high-confidence OOS misroute (%) " + "| Haiku calls (%) | Haiku US$ per 1K queries |", + "|---|---|---|---|---|---|", + f"| LLM-only (Haiku 4.5) | {pct(haiku['accuracy_8'])} | {pct(haiku['oos']['recall'])} " + f"| n/a | 100.0 | {haiku['llm_cost_usd_per_1k']:.3f} |", + ] + for k in (10, 100): + final = r.group(f"modernbert/k{k}")["final"] + rows += [ + router_row(f"ModernBERT k={k}, small-only", final["small_only"]), + router_row( + f"ModernBERT k={k}, hybrid (target {pct(float(TARGET), 0)}%)", + r.hybrid(f"modernbert/k{k}")["test"], + ), + router_row(f"ModernBERT k={k}, oracle (upper bound)", final["oracle"]), + ] + return rows + + +def efficiency_cells(r: Results, model: str) -> list[str]: + result = r.group(f"{model}/k100") + runs = r.k100_training[model] + seconds = [b["train_wall_seconds"] for b in runs] + memory = [b["peak_memory"]["driver_allocated_bytes"] / 2**30 for b in runs] + ece = result["calibration"]["test_ece"] + latency = r.cpu["models"][model]["end_to_end"] + return [ + f"{runs[0]['parameters']['total'] / 1e6:.1f}M", + f"{stat_line(seconds, 0)} s", + f"{stat_line(memory, 2)} GiB", + pm(result["final"]["small_only"]["accuracy_8"]), + pm(result["final"]["small_only"]["oos_recall"]), + f"{pm(ece['uncalibrated']['ece_151'], 2)} → {pm(ece['calibrated']['ece_151'], 2)}", + f"{latency['p50_ms']:.1f} / {latency['p95_ms']:.1f} ms", + ] + + +def stat_line(values: list[float], digits: int) -> str: + n = len(values) + mean = sum(values) / n + std = (sum((v - mean) ** 2 for v in values) / (n - 1)) ** 0.5 + return f"{mean:,.{digits}f} ± {std:,.{digits}f}" + + +def efficiency_table(r: Results) -> list[str]: + bert, modern = efficiency_cells(r, "bert"), efficiency_cells(r, "modernbert") + haiku = r.summary["llm_only_test"] + lat = r.haiku_latency["splits"]["test"] + haiku_cells = [ + "n/a", + "none (zero-shot)", + "n/a", + pct(haiku["accuracy_8"]), + pct(haiku["oos"]["recall"]), + "n/a", + f"{lat['p50_ms']:.0f} / {lat['p95_ms']:.0f} ms (API, incl. network)", + ] + names = ( + "parameters", + "training time, k=100 (Apple M4, MPS)", + "training peak memory, k=100 (MPS driver, sampled)", + "8-way accuracy, test (%)", + "OOS recall, test (%)", + "ECE 151-way, test, before → after temperature (%)", + "latency p50 / p95, batch 1", + ) + cpu = r.cpu + return [ + "| | BERT-base (historical baseline) | ModernBERT-base (main model) | Claude Haiku 4.5 |", + "|---|---|---|---|", + *( + f"| {n} | {a} | {b} | {c} |" + for n, a, b, c in zip(names, bert, modern, haiku_cells, strict=True) + ), + "", + f"Encoder latency: {cpu['hardware']['cpu']} CPU, batch 1, " + f"{cpu['method']['intra_op_threads']} threads, torch {cpu['versions']['torch']}, " + f"`torch.inference_mode()`, {cpu['method']['warmup_queries']} warm-up queries, then " + f"{cpu['method']['queries']}; tokenization + forward + argmax. It is timed with the " + "same architecture, not the fine-tuned weights (deleted to save disk): the pinned " + "pretrained backbone, a 151-way head, the same tokenizer and max_length. Latency " + "depends on shapes, not weight values, and the parameter count equals the trained " + f"run's. Haiku: client-side time per call on the {lat['n']:,} test queries, including " + "the network round trip, with up to 6 calls in flight. Peak memory samples " + "`torch.mps.driver_allocated_memory()` after each backward pass and optimizer step " + "(includes the allocator cache). Accuracy, OOS recall and ECE use the 8-way aggregation " + "chosen on validation. Values are mean ± std over seeds 42, 43, 44.", + ] + + +def cost_lines(r: Results) -> list[str]: + measured = r.cost["measured"] + rows = [x for x in r.cost["break_even"]["rows"] if x["label_usd_per_example"] == 0.0] + prices = r.cost["assumptions"]["accelerator_usd_per_hour"] + out = [ + f"Measured: Haiku costs {usd(measured['haiku']['cost_usd_per_1k_queries']['test'])} per " + f"1K test queries ({measured['haiku']['input_tokens_per_1k_queries'] / 1000:,.1f}K input " + f"and {measured['haiku']['output_tokens_per_1k_queries'] / 1000:,.2f}K output tokens per " + f"1K; the whole run of {measured['haiku']['calls']:,} calls cost " + f"{usd(measured['haiku']['cost_usd'], 2)}). One ModernBERT training run takes " + f"{measured['training']['modernbert']['10']['train_wall_seconds']['mean'] / 60:.1f} min " + f"at k=10 and " + f"{measured['training']['modernbert']['100']['train_wall_seconds']['mean'] / 60:.1f} min " + "at k=100 on an Apple M4.", + "", + "Break-even queries against LLM-only, for **assumed** accelerator prices (training only, " + "no labelling cost, local inference priced as below). A scenario sensitivity, not " + "a forecast:", + "", + "| point | router | " + " | ".join(f"at US${p:g}/h" for p in prices) + " |", + "|---|---|" + "---|" * len(prices), + ] + for point, router in dict.fromkeys((x["point"], x["router"]) for x in rows): + cells = [ + queries(x["break_even_queries"]) + for x in rows + if (x["point"], x["router"]) == (point, router) + ] + name = point.replace("modernbert/", "ModernBERT ").replace("k", "k=") + out.append(f"| {name} | {router.replace('_', '-')} | " + " | ".join(cells) + " |") + return out + label_lines(r) + + +def more_or_less(value: float, reference: float) -> str: + """How ``value`` compares with ``reference``, as a phrase that ends before the reference.""" + if value == reference: + return "as accurate as" + return "more accurate than" if value > reference else "less accurate than" + + +def label_lines(r: Results) -> list[str]: + assumptions = r.cost["assumptions"] + middle = assumptions["accelerator_usd_per_hour"][1] + labels = assumptions["label_usd_per_example"] + rows = [ + x + for x in r.cost["break_even"]["rows"] + if x["router"] == "hybrid" and x["accelerator_usd_per_hour"] == middle + ] + table = [ + f"| hybrid, US${middle:g}/h | labelled rows | " + + " | ".join(f"at US${p:g} per label" for p in labels) + + " |", + "|---|---|" + "---|" * len(labels), + ] + for point in dict.fromkeys(x["point"] for x in rows): + model, k = point.split("/") + cells = [ + queries(x["break_even_queries"]) + for x in rows + if x["point"] == point and x["label_usd_per_example"] > 0 + ] + n = r.cost["measured"]["training"][model][k[1:]]["train_rows"] + table.append( + f"| {MODEL_LABEL[model]} {k.replace('k', 'k=')} | {n:,} | " + " | ".join(cells) + " |" + ) + haiku = r.summary["llm_only_test"]["accuracy_8"] + k10 = r.group("modernbert/k10")["final"] + k10_small = more_or_less(k10["small_only"]["accuracy_8"]["mean"], haiku) + k10_hybrid = more_or_less(r.hybrid("modernbert/k10")["test"]["accuracy_8"]["mean"], haiku) + return [ + "", + f"Break-even compares cost only: at k=10 the small model alone is {k10_small} Haiku " + f"and the hybrid is {k10_hybrid} Haiku (router table).", + "", + "Training compute costs cents; labelling dominates once it has to be paid for. CLINC150 " + "is an existing dataset, so labelling cost is an assumed sensitivity only (break-even " + "queries, training plus labelling):", + "", + *table, + "", + f"Local inference is assumed to cost US${assumptions['vcpu_usd_per_hour']:g} per " + "vCPU-hour at full utilisation, times the measured p50 latency and thread count. " + "Full grid and every input: `results/cost/cost.json`.", + ] + + +def aggregation_line(r: Results) -> list[str]: + parts = [] + for model, label in MODEL_LABEL.items(): + picks = [] + for k in (1, 5, 10, 25, 50, 100): + chosen = r.group(f"{model}/k{k}")["selected_aggregation"] + text = chosen if isinstance(chosen, str) else f"per seed {'/'.join(chosen)}" + picks.append(f"k={k} {text}") + parts.append(f"{label}: " + ", ".join(picks)) + return [ + "**8-way aggregation.** The model predicts 151 intents. Two ways map that to 8 agents: " + "take the argmax intent and map it (`argmax`), or sum the probabilities per agent and " + "take the largest (`summed`). Each run picks one by validation 8-way accuracy only " + "(ties go to argmax). " + ". ".join(parts) + ".", + ] + + +def limitations(r: Results) -> list[str]: + lr, steps = r.pilots["lr"], r.pilots["steps"] + chosen_lr = {r.indexes[m]["learning_rate"] for m in MODEL_LABEL} + s_min = {r.indexes[m]["min_train_steps"] for m in MODEL_LABEL} + budget = sorted( + { + p["k"] + for m in MODEL_LABEL + for p in r.indexes[m]["points"] + if p["decided_by"] == "min_train_steps" + } + ) + at_top = [ + f"learning rate {'/'.join(f'{v:g}' for v in sorted(chosen_lr))} is the top of " + f"{{{', '.join(f'{v:g}' for v in lr['grid'])}}}" + if max(chosen_lr) == max(lr["grid"]) + else "", + f"S_min {'/'.join(str(v) for v in sorted(s_min))} is the top of " + f"{{{', '.join(str(v) for v in steps['grid'])}}}" + if max(s_min) == max(steps["grid"]) + else "", + ] + return [ + "## Limitations", + "", + "- **Hyperparameters at the edge of their grids.** The validation pilots chose values at " + f"the upper end: {'; '.join(t for t in at_top if t)}. A better value may lie beyond.", + f"- **Small k is a fixed step budget.** k in {{{', '.join(map(str, budget))}}} trains for " + f"S_min = {max(s_min)} steps (more than 5 epochs), so those points show performance at " + "that budget.", + "- **Latency uses the same architecture, not the trained weights** (see the efficiency " + "table note).", + "- **Validation thresholds do not transfer** to test (headline above).", + "- **One benchmark.** CLINC150, English, one domain mix; BANKING77-OOS is planned for " + "v0.2.", + "- Training on Apple MPS is not bit-for-bit deterministic, hence three seeds.", + ] + + +def figure_lines() -> list[str]: + lines: list[str] = [] + for name, alt, caption in FIGURES: + lines += [f"![{alt}](results/figures/{name})", "", f"*{caption}*", ""] + return lines[:-1] + + +def readme_block(r: Results) -> str: + sections = [ + headline(r), + hybrid_reading(r), + ["### Routers (test, 8-way)", "", *routers_table(r)], + ["### Efficiency (AC5)", "", *efficiency_table(r)], + ["### Cost (RQ5)", "", *cost_lines(r)], + aggregation_line(r), + ["### Figures", "", *figure_lines()], + limitations(r), + ] + body = "\n\n".join("\n".join(s) for s in sections) + return f"{BEGIN}\n{body}\n{END}" + + +def curve_table(r: Results) -> list[str]: + rows = [ + "| model | k | 8-way acc (%) | OOS recall (%) | hybrid acc (%) | hybrid Haiku calls (%) |", + "|---|---|---|---|---|---|", + ] + for model in ("modernbert", "bert", "tfidf-centroid", "majority"): + for k in (1, 5, 10, 25, 50, 100): + final = r.group(f"{model}/k{k}")["final"] + hybrid = final["fallback"][TARGET]["hybrid"] + tail = ( + ("n/a", "n/a") + if hybrid is None + else (pm(hybrid["test"]["accuracy_8"]), pm(hybrid["test"]["llm_call_rate"])) + ) + rows.append( + f"| {model} | {k} | {pm(final['small_only']['accuracy_8'])} | " + f"{pm(final['small_only']['oos_recall'])} | {tail[0]} | {tail[1]} |" + ) + return rows + + +def report_md(r: Results) -> str: + block = readme_block(r).replace("](results/figures/", "](figures/") + parts = [ + "# TinyRouter results", + "", + "Generated by `make report` from `results/*.json`. Do not edit by hand.", + "", + block, + "", + f"## Learning curves (test, target {pct(float(TARGET), 0)}% for the hybrid)", + "", + *curve_table(r), + ] + return "\n".join(parts) + "\n" + + +def replace_block(readme: str, block: str) -> str: + start, end = readme.find(BEGIN), readme.find(END) + if start < 0 or end < start: + raise ValueError("README.md has no generated block (BEGIN ... END markers)") + return readme[:start] + block + readme[end + len(END) :] + + +def outputs(root: Path, repo: Path) -> dict[Path, str]: + r = Results.load(root) + readme = repo / "README.md" + return { + root / "report.md": report_md(r), + readme: replace_block(readme.read_text(encoding="utf-8"), readme_block(r)), + } def main(argv: list[str] | None = None) -> None: - parser = argparse.ArgumentParser(description=__doc__) + parser = argparse.ArgumentParser(description=__doc__.splitlines()[0]) parser.add_argument("--results-dir", default="results") + parser.add_argument("--repo", default=".") + parser.add_argument("--check", action="store_true", help="compare only; exit 1 if stale") args = parser.parse_args(argv) - results_dir = Path(args.results_dir) - runs_dir = results_dir / "runs" - paths = sorted(runs_dir.glob("*.json")) if runs_dir.is_dir() else [] - if not paths: - print(f"no results in {runs_dir}/ yet; run `make train evaluate` first") - return - records = [json.loads(p.read_text(encoding="utf-8")) for p in paths] - out = results_dir / "summary.md" - out.write_text(render(records), encoding="utf-8") - print(f"wrote {out} ({len(records)} runs)") + stale = [] + for path, text in outputs(Path(args.results_dir), Path(args.repo)).items(): + current = path.read_text(encoding="utf-8") if path.is_file() else None + if args.check: + if current != text: + stale.append(str(path)) + else: + path.write_text(text, encoding="utf-8") + print(f"wrote {path}") + if stale: + print(f"stale, run `make report`: {', '.join(stale)}", file=sys.stderr) + sys.exit(1) if __name__ == "__main__": diff --git a/tests/test_cost.py b/tests/test_cost.py new file mode 100644 index 0000000..55a88d8 --- /dev/null +++ b/tests/test_cost.py @@ -0,0 +1,79 @@ +import json +from pathlib import Path + +import pytest + +from tinyrouter import cost +from tinyrouter.cost import break_even_queries, local_inference_usd_per_query, training_cost_usd + +RESULTS = Path("results") + + +def test_training_cost_prices_wall_clock_hours(): + assert training_cost_usd(3600, 2.0) == pytest.approx(2.0) + assert training_cost_usd(1800, 0.5) == pytest.approx(0.25) + + +def test_local_inference_cost_scales_with_latency_threads_and_price(): + # 1 s on 4 vCPUs at US$0.05 per vCPU-hour + assert local_inference_usd_per_query(1000, 4, 0.05) == pytest.approx(4 * 0.05 / 3600) + + +def test_break_even_divides_one_time_cost_by_the_per_query_saving(): + assert break_even_queries(10.0, 0.001, 0.0005) == pytest.approx(20_000) + + +@pytest.mark.parametrize("router_cost", [0.001, 0.002]) +def test_break_even_is_none_when_the_router_saves_nothing(router_cost): + assert break_even_queries(10.0, 0.001, router_cost) is None + + +def test_committed_cost_json_is_what_make_cost_writes(): + committed = json.loads((RESULTS / "cost" / "cost.json").read_text()) + assert cost.build(RESULTS) == committed + + +def test_measured_and_assumed_numbers_live_in_separate_blocks(): + body = cost.build(RESULTS) + assert "accelerator_usd_per_hour" in body["assumptions"] + assert "usd_per_hour" not in json.dumps(body["measured"]) + assert body["assumptions"]["accelerator_usd_per_hour"] == [0.5, 1.0, 2.0] + assert body["assumptions"]["label_usd_per_example"] == [0.05, 0.2, 1.0] + assert "not a forecast" in body["break_even"]["label"] + + +def test_break_even_row_matches_a_hand_computation_from_the_raw_inputs(): + """ModernBERT k=10 hybrid at US$1/h with labels at US$0.2, from the files, not cost.py.""" + runs = [ + json.loads((RESULTS / "runs" / f"ModernBERT-base-k10-seed{s}.json").read_text()) + for s in (42, 43, 44) + ] + seconds = sum(r["training"]["train_wall_seconds"] for r in runs) / 3 + rows_labelled = runs[0]["training"]["train_rows"] + summary = json.loads((RESULTS / "analysis" / "summary.json").read_text()) + hybrid = summary["groups"]["modernbert/k10"]["result"]["final"]["fallback"]["0.02"] + api = hybrid["hybrid"]["test"]["llm_cost_usd_per_1k"]["mean"] / 1000 + haiku = json.loads((RESULTS / "analysis" / "haiku.json").read_text()) + llm_only = haiku["splits"]["test"]["cost_usd_per_1k_queries"] / 1000 + bench = json.loads((RESULTS / "efficiency" / "cpu_latency.json").read_text()) + p50 = bench["models"]["modernbert"]["end_to_end"]["p50_ms"] + local = p50 / 1000 / 3600 * bench["method"]["intra_op_threads"] * 0.05 + expected = (seconds / 3600 * 1.0 + 0.2 * rows_labelled) / (llm_only - api - local) + + row = next( + r + for r in cost.build(RESULTS)["break_even"]["rows"] + if (r["point"], r["router"], r["accelerator_usd_per_hour"], r["label_usd_per_example"]) + == ("modernbert/k10", "hybrid", 1.0, 0.2) + ) + assert row["break_even_queries"] == pytest.approx(expected, abs=0.1) + assert rows_labelled == 1525 + + +def test_every_break_even_scenario_is_present_once(): + rows = cost.build(RESULTS)["break_even"]["rows"] + keys = { + (r["point"], r["router"], r["accelerator_usd_per_hour"], r["label_usd_per_example"]) + for r in rows + } + assert len(keys) == len(rows) == 2 * 2 * 3 * 4 diff --git a/tests/test_figures.py b/tests/test_figures.py new file mode 100644 index 0000000..63a9cde --- /dev/null +++ b/tests/test_figures.py @@ -0,0 +1,33 @@ +from pathlib import Path + +import pytest + +pytest.importorskip("matplotlib") + +from tinyrouter import figures # noqa: E402 + +EXPECTED = {"learning_curves.png", "risk_coverage.png", "routers.png", "threshold_transfer.png"} + + +def test_figures_are_drawn_from_json_and_are_byte_identical_on_rerun(tmp_path): + first = figures.build(Path("results"), tmp_path / "a") + second = figures.build(Path("results"), tmp_path / "b") + assert {p.name for p in first} == EXPECTED + for a, b in zip(first, second, strict=True): + assert a.read_bytes() == b.read_bytes(), a.name + assert b"Matplotlib version" not in a.read_bytes() + + +def test_risk_coverage_refuses_a_point_whose_seeds_chose_different_aggregations(): + summary = {"groups": {"x": {"result": {"selected_aggregation": ["argmax", "summed"]}}}} + with pytest.raises(ValueError, match="different aggregations"): + figures.selected_aggregation(summary, "x") + + +def test_threshold_transfer_skips_points_without_a_feasible_threshold_on_every_seed(): + summary = figures.load(Path("results"), "analysis/summary.json") + series = figures.transfer_series(summary, "modernbert") + ks = [k for k, _, _ in series["test"]] + assert 1 not in ks + assert ks == sorted(ks) + assert series["test"][-1][0] == 100 diff --git a/tests/test_latency.py b/tests/test_latency.py new file mode 100644 index 0000000..6132074 --- /dev/null +++ b/tests/test_latency.py @@ -0,0 +1,96 @@ +import json + +import pytest +import torch + +from tinyrouter import latency +from tinyrouter.latency import ( + ArchitectureMismatchError, + haiku_latency, + latency_summary, + time_queries, + trained_parameter_count, +) + + +def test_latency_summary_uses_linear_percentiles(): + stats = latency_summary([1.0, 2.0, 3.0, 4.0]) + assert stats["n"] == 4 + assert stats["mean_ms"] == 2.5 + assert stats["p50_ms"] == 2.5 + # linear: rank 0.95 * 3 = 2.85 between 3 and 4 + assert stats["p95_ms"] == pytest.approx(3.85) + assert (stats["min_ms"], stats["max_ms"]) == (1.0, 4.0) + + +def test_latency_summary_p95_is_not_the_max_on_a_long_list(): + stats = latency_summary([float(v) for v in range(1, 101)]) + assert stats["p50_ms"] == pytest.approx(50.5) + assert stats["p95_ms"] == pytest.approx(95.05) + + +def test_latency_summary_refuses_an_empty_list(): + with pytest.raises(ValueError, match="non-empty"): + latency_summary([]) + + +def test_haiku_latency_splits_rows_and_counts_retries(tmp_path): + rows = [ + {"split": "validation", "latency_ms": 100, "attempts": 1}, + {"split": "validation", "latency_ms": 300, "attempts": 2}, + {"split": "test", "latency_ms": 200, "attempts": 1}, + ] + journal = tmp_path / "haiku.jsonl" + journal.write_text("\n".join(json.dumps(r) for r in rows) + "\n") + out = haiku_latency(journal) + assert out["calls_retried"] == 1 + assert out["all"]["n"] == 3 + assert out["all"]["mean_ms"] == 200.0 + assert out["splits"]["validation"]["p50_ms"] == 200.0 + assert out["splits"]["test"]["n"] == 1 + assert "network" in out["measures"] + + +def test_trained_parameter_count_reads_the_k100_seed42_run(): + assert trained_parameter_count(latency.Path("results"), "modernbert") == 149_720_983 + assert trained_parameter_count(latency.Path("results"), "bert") == 109_598_359 + + +class FakeTokenizer: + def __call__(self, texts, truncation, max_length, return_tensors): + assert truncation and return_tensors == "pt" + ids = torch.tensor([[len(t) % 7 for t in texts[0][:max_length]]]) + return {"input_ids": ids} + + +class FakeModel(torch.nn.Module): + def __init__(self): + super().__init__() + self.linear = torch.nn.Linear(1, 151) + + def forward(self, input_ids): + return type("Out", (), {"logits": self.linear(input_ids.float().mean(1, keepdim=True))}) + + +def test_time_queries_times_every_query_in_order_and_forward_is_not_longer(): + end_to_end, forward = time_queries(FakeModel(), FakeTokenizer(), ["ab", "cde", "f"], 8) + assert len(end_to_end) == len(forward) == 3 + assert all(e >= f > 0 for e, f in zip(end_to_end, forward, strict=True)) + + +def test_benchmark_stops_when_the_timed_model_is_not_the_trained_architecture(monkeypatch): + monkeypatch.setattr(latency, "load_timed_model", lambda config: (FakeModel(), FakeTokenizer())) + with pytest.raises(ArchitectureMismatchError, match="parameters"): + latency.benchmark_encoder("bert", latency.Path("results"), ["a"], threads=1) + + +def test_committed_cpu_latency_records_method_hardware_and_matching_parameters(): + body = json.loads(latency.Path("results/efficiency/cpu_latency.json").read_text()) + assert body["method"]["batch_size"] == 1 + assert body["method"]["device"] == "cpu" + assert body["hardware"]["cpu"] + for name in ("bert", "modernbert"): + model = body["models"][name] + assert model["parameters_match_trained_run"] is True + assert model["parameters_total"] == trained_parameter_count(latency.Path("results"), name) + assert model["end_to_end"]["n"] == 500 diff --git a/tests/test_report.py b/tests/test_report.py new file mode 100644 index 0000000..b7f9a88 --- /dev/null +++ b/tests/test_report.py @@ -0,0 +1,133 @@ +import copy +import shutil +import subprocess +from pathlib import Path + +import pytest + +from tinyrouter import report +from tinyrouter.report import BEGIN, END, Results, pm, readme_block, replace_block + +RESULTS = Path("results") +EM_DASH = chr(0x2014) + + +@pytest.fixture(scope="module") +def results(): + return Results.load(RESULTS) + + +def generated_block(text: str) -> str: + return text[text.index(BEGIN) : text.index(END) + len(END)] + + +def test_readme_generated_block_matches_the_committed_json(results): + """AC8: every first-screen number comes from make report; run it if this fails.""" + readme = Path("README.md").read_text(encoding="utf-8") + assert generated_block(readme) == readme_block(results) + + +def test_results_report_md_matches_the_committed_json(results): + assert (RESULTS / "report.md").read_text(encoding="utf-8") == report.report_md(results) + + +def test_check_mode_exits_1_on_a_stale_readme_and_0_on_a_fresh_one(tmp_path, results): + shutil.copytree( + RESULTS, tmp_path / "results", ignore=shutil.ignore_patterns("logits", "*.jsonl") + ) + readme = tmp_path / "README.md" + readme.write_text(f"# x\n\n{BEGIN}\n91.9 typed by hand\n{END}\n", encoding="utf-8") + argv = ["--results-dir", str(tmp_path / "results"), "--repo", str(tmp_path), "--check"] + with pytest.raises(SystemExit) as stale: + report.main(argv) + assert stale.value.code == 1 + report.main(argv[:-1]) + report.main(argv) # no SystemExit: fresh + assert "typed by hand" not in readme.read_text() + assert readme.read_text().startswith("# x\n\n") + + +def test_a_changed_number_in_the_json_changes_the_block(results): + summary = copy.deepcopy(results.summary) + stat = summary["groups"]["modernbert/k100"]["result"]["final"]["small_only"]["accuracy_8"] + stat["mean"] = 0.5 + changed = Results(**{**results.__dict__, "summary": summary}) + assert "50.0 ± 0.1%" in readme_block(changed) + assert readme_block(changed) != readme_block(results) + + +def test_replace_block_refuses_a_readme_without_markers(): + with pytest.raises(ValueError, match="markers"): + replace_block("# no block here\n", f"{BEGIN}\n{END}") + + +def test_pm_shows_std_only_when_there_is_one(): + assert pm({"mean": 0.9187, "std": 0.0013}) == "91.9 ± 0.1" + assert pm({"mean": 0.9187, "std": None}) == "91.9" + assert pm({"mean": 0.07345, "std": 0.00857}, 2) == "7.34 ± 0.86" + + +def test_headline_numbers_and_wording(results): + block = readme_block(results) + diag = results.group("modernbert/k100")["diagnostics"]["0.02"] + assert f"{100 * diag['test']['selective_risk']['mean']:.2f}" in block + share = round(100 * diag["share_of_gap_explained_by_oos_share"]["mean"]) + assert f"contributes about {share}% of the observed risk gap" in block + assert "Under this reweighting diagnostic" in block + for causal in ("caused", "causes", "because of the OOS"): + assert causal not in block + assert "not a risk guarantee for production" in block + + +def test_hybrid_call_counts_are_reported_per_seed_as_absolute_numbers(results): + hybrid = results.hybrid("modernbert/k100")["test"]["llm_call_rate"]["values"] + counts = ", ".join(str(round(v * results.test_n)) for v in hybrid) + assert f"({counts} of {results.test_n:,} for seeds 42, 43, 44)" in readme_block(results) + + +def test_generated_text_has_no_em_dash(results): + assert EM_DASH not in readme_block(results) + assert EM_DASH not in report.report_md(results) + + +def test_every_referenced_figure_is_committed(): + for name, _, _ in report.FIGURES: + assert (RESULTS / "figures" / name).is_file(), name + + +def test_efficiency_table_has_both_encoders_and_haiku_latency(results): + block = readme_block(results) + assert "BERT-base (historical baseline)" in block + assert "ModernBERT-base (main model)" in block + lat = results.haiku_latency["splits"]["test"] + assert f"{lat['p50_ms']:.0f} / {lat['p95_ms']:.0f} ms (API, incl. network)" in block + + +def test_limitations_name_the_grid_edges_and_the_step_budget(results): + block = readme_block(results) + assert "is the top of {1e-05, 2e-05, 5e-05}" in block + assert "S_min 400 is the top of {100, 200, 400}" in block + assert "k in {1, 5, 10} trains for S_min = 400 steps" in block + + +def test_every_file_report_reads_is_tracked_in_git(): + """The README check runs in CI from a plain checkout, so no input may be a Release download.""" + tracked = set( + subprocess.run( + ["git", "ls-files", "results"], capture_output=True, text=True, check=True + ).stdout.split() + ) + for name in ( + "analysis/summary.json", + "analysis/haiku.json", + "llm/haiku-8way.json", + "efficiency/cpu_latency.json", + "efficiency/haiku_latency.json", + "cost/cost.json", + "curves/bert.json", + "curves/modernbert.json", + "pilots/lr.json", + "pilots/steps.json", + "report.md", + ): + assert f"results/{name}" in tracked, name diff --git a/uv.lock b/uv.lock index 8136178..bbdf04d 100644 --- a/uv.lock +++ b/uv.lock @@ -220,6 +220,37 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "contourpy" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/5a/a55177dd22553a277388e8a1b3220e92de91bacb28356cdc73caa240121d/contourpy-1.4.0.tar.gz", hash = "sha256:20156f5a1ac4f8ce02656e39a61e82164a3d359796dc8026f75b062783d500e1", size = 13323726, upload-time = "2026-09-11T19:05:05.808Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/ba/01bde9753bdbba04a6da9d2bff3881f021bc708f654655e95fae26d3b3a3/contourpy-1.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:186ba929df36d61b6127da2e89cd1357e4cb79aca647381ab1a6feb0b152877b", size = 297302, upload-time = "2026-09-11T19:02:45.103Z" }, + { url = "https://files.pythonhosted.org/packages/dd/f5/c5bf67522d49a2222f3154fe46879451d26f0e35ece41770758a64ea78cb/contourpy-1.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c76f3a5318164db7d9401132fc1b5364b784c613c93fa506e3b5e6d1bf353ec8", size = 284921, upload-time = "2026-09-11T19:02:48.049Z" }, + { url = "https://files.pythonhosted.org/packages/0f/cc/cb989599eec12fda312e127eb8e04a8b21a7a6c94bf7ff1bc68273334a42/contourpy-1.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:43c3ccbb32c6294b183dcc8e8c46dacf5ecef809497e3d48a5be298eef185ad0", size = 356332, upload-time = "2026-09-11T19:02:51.408Z" }, + { url = "https://files.pythonhosted.org/packages/47/fb/6f620d7602507817b0b4c21dd790ed68688f1f4ae9c29aacf21f08db5cf1/contourpy-1.4.0-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:86d05cec773c9507a3950122e0e40ce77c23c75ceeb2fc189514e71893cbb34b", size = 405878, upload-time = "2026-09-11T19:02:54.093Z" }, + { url = "https://files.pythonhosted.org/packages/32/4e/693c6d6bdece679f0953775eef3a1b66d56be55478d936e7deb1f3004422/contourpy-1.4.0-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2deb580178ca19437a84bd77e4bc2cd91a8ccad212413a83c273900868b5978c", size = 408296, upload-time = "2026-09-11T19:02:56.528Z" }, + { url = "https://files.pythonhosted.org/packages/78/f9/b6831508960d559581c448532ba4df312217072975486dbf2b24fcc5b76f/contourpy-1.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:875f42444c9cf48d56f724f2637e60d0f73b3b12c9041e1484580a233edf9591", size = 383243, upload-time = "2026-09-11T19:02:58.638Z" }, + { url = "https://files.pythonhosted.org/packages/f2/21/52903825a0ae7bb625e8bd30a09816d4c3c5d6174a469c10a616166cf780/contourpy-1.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f863c6100bf926cf47d13f3cd75f9bb8ebd98aaab230eeb4468b91f98f39a6b3", size = 1357306, upload-time = "2026-09-11T19:03:01.036Z" }, + { url = "https://files.pythonhosted.org/packages/d8/79/d68b1ce8539e4071518fed9523f558398f34dcd078b8927b109c72dad2ef/contourpy-1.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3863ef2e2b13fe93f8c0ebb08ee400cb07153b8b0e91c5acb26e4537f283634f", size = 1427243, upload-time = "2026-09-11T19:03:03.866Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f0/b75a10e9d0616b97a30de277b6dfe83f1879880854c7330337309530eb48/contourpy-1.4.0-cp312-cp312-win32.whl", hash = "sha256:5450f091ac1be0be3ad3a2a3b3f23b5e443e78c670ced4fd347d626f92a28fd2", size = 347345, upload-time = "2026-09-11T19:03:06.192Z" }, + { url = "https://files.pythonhosted.org/packages/50/a9/dab08786bb4d77ef9a046b3c1be923be4e73c5d07d91f5a54e8ea9b09e41/contourpy-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:6e697d94e69f499ff6bebb899cae97a58d5d14f0e1fe9568b43a0248d2f9af8c", size = 234083, upload-time = "2026-09-11T19:03:08.122Z" }, + { url = "https://files.pythonhosted.org/packages/47/b9/3ba509755a970dbde5948e7142ac21f266be72f38017cc4087a05fdceee1/contourpy-1.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:0c7a4c2716a4e98342221954416a836cca77c996c14ddbf22b5f01d5d93ca09c", size = 559521, upload-time = "2026-09-11T19:03:10.047Z" }, +] + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, +] + [[package]] name = "datasets" version = "5.0.1" @@ -280,6 +311,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e8/2d/d2a548598be01649e2d46231d151a6c56d10b964d94043a335ae56ea2d92/flatbuffers-25.12.19-py2.py3-none-any.whl", hash = "sha256:7634f50c427838bb021c2d66a3d1168e9d199b0607e6329399f04846d42e20b4", size = 26661, upload-time = "2025-12-19T23:16:13.622Z" }, ] +[[package]] +name = "fonttools" +version = "4.66.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/24/86f9930b930b97fc82266083320f3c34643ef67261c32651e893db525aca/fonttools-4.66.0.tar.gz", hash = "sha256:ef0610dfe7bb5bf574d9bdad6f597403ebc9807d124ac6f148d7604b2609be98", size = 3692007, upload-time = "2026-09-23T17:59:14.345Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/c1/25821e3bddd0644df229cfdc2e8b4101d28e4da15ffbe6e6b563ea6f3acd/fonttools-4.66.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:67ea5af3ca60e1e5c9b2841b1f6dba5ef16aab581bf463abb68515447154ab61", size = 3096788, upload-time = "2026-09-23T17:57:08.302Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3d/d16b4cb63710abd91f1aaa482f2848d8b0c402502de5b8a72ba9d2613cb0/fonttools-4.66.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dbee639a23c4e067aedfbcf84d2e466a71a1a1156ad04d6d09023791ed167495", size = 2586926, upload-time = "2026-09-23T17:57:10.678Z" }, + { url = "https://files.pythonhosted.org/packages/e2/f0/dffa4fa83ec6780464e8484fa2f30ccc252d480137c8e4d3fc6ac510b3eb/fonttools-4.66.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:35684b562df7154d7a0ebfa512db9199c7fb0a93b5abfb59dac9d022dbee7aaa", size = 5415821, upload-time = "2026-09-23T17:57:13.174Z" }, + { url = "https://files.pythonhosted.org/packages/6d/56/3c862bdd297a272a37e2ba1149da01446fd3f387ee80855699bb939bf5b2/fonttools-4.66.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:aea0cc5609a5f2a2500f91bd6e1989fdd22da0f225be00dc1c4cec775838a7d0", size = 5396689, upload-time = "2026-09-23T17:57:15.987Z" }, + { url = "https://files.pythonhosted.org/packages/93/d7/f4b7c81a7a6b316b7226d11f8e8659f023babf1e0957f8e7ddcc4e155a82/fonttools-4.66.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8af85dfc2ad564f95b3e650024578bb2268bc4d827d418aab9650bbde4b6926a", size = 5353218, upload-time = "2026-09-23T17:57:18.803Z" }, + { url = "https://files.pythonhosted.org/packages/70/1e/f12bc535f3da359a4d29d5e7442ab2d7d67579d1516b9c7e1a38890168bd/fonttools-4.66.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b278e2abe596872b3c9fe611f956ded85588537974e48e2adbe2d6ee159e099", size = 5516965, upload-time = "2026-09-23T17:57:21.077Z" }, + { url = "https://files.pythonhosted.org/packages/14/25/a1df66888c8b5f63c14e089400f2353da0c1ff9d09683cc0bf85afea348e/fonttools-4.66.0-cp312-cp312-win32.whl", hash = "sha256:ee7b9f6c835ea1a9beb5a35c8eb0c62b6a3290f8105d3d0c29a0a18c90f9b8ba", size = 2434425, upload-time = "2026-09-23T17:57:23.463Z" }, + { url = "https://files.pythonhosted.org/packages/b5/f2/fd490f1ddf2e430289c13059982771e6b02a2bf37504401d2a5c53307892/fonttools-4.66.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d120ea0f5260b04e9b5ac0d9239efde4c23d990347d5d5889cdd37221726fec", size = 2486335, upload-time = "2026-09-23T17:57:25.561Z" }, + { url = "https://files.pythonhosted.org/packages/83/65/826290863c9df6041f2e36a5ae5d604cd8247fffc8ec7b45581fd2473e4d/fonttools-4.66.0-py3-none-any.whl", hash = "sha256:bc7b7ddc1a1f46c363354304e9a8dd93722e4a6a24f785015650898dacf40df9", size = 1201583, upload-time = "2026-09-23T17:59:12.104Z" }, +] + [[package]] name = "frozenlist" version = "1.8.0" @@ -499,6 +547,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl", hash = "sha256:3dbbf9f6e4b592a2357b854608e980fe6390d131d7a82f011a377ef2ebef7aba", size = 306115, upload-time = "2026-08-31T09:39:02.298Z" }, ] +[[package]] +name = "kiwisolver" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/07/bd78e6a8fae171ea041ef5bba3ed21a003522fa088834b069b1909981f30/kiwisolver-1.5.1.tar.gz", hash = "sha256:f1303ef2eec81262a4b708c3e858afe58d7c75ad91c1c05266eda7673369859a", size = 104395, upload-time = "2026-08-28T10:28:27.153Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/9b/65b302742389c6f96f2956bef5decf26011309feb2fc5d79613af18adea4/kiwisolver-1.5.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63fb7294b768f444eb4b068965f2662f28c2fd4161e23bd60fcf3ff27b74c046", size = 123876, upload-time = "2026-08-28T10:25:27.44Z" }, + { url = "https://files.pythonhosted.org/packages/71/74/c21f339956f6f691b2ed7e31d5f3ae767304df6c460192739fc830853051/kiwisolver-1.5.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ebdef3eae5336568147c39a55be6a2036ffde53faa9ca2d978989ae7c2da12c", size = 66487, upload-time = "2026-08-28T10:25:28.728Z" }, + { url = "https://files.pythonhosted.org/packages/84/e5/bdb34e21523e01dceda064d63713f3bdec91388af24fba1eca7ea5e85864/kiwisolver-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1798e83840c3f627246104c4d8a9639c60fa068adf9ce92b61791781fa8a68c1", size = 64660, upload-time = "2026-08-28T10:25:30.071Z" }, + { url = "https://files.pythonhosted.org/packages/fc/f4/dadfec469313c7f428efa7e84b4aba9732f813c13ea7131a24b7b008ef57/kiwisolver-1.5.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:34633ecf50d16187ab8e5528b7a2530f2feb4e23f300db4672538b51cfc5cd38", size = 1477929, upload-time = "2026-08-28T10:25:31.495Z" }, + { url = "https://files.pythonhosted.org/packages/6f/35/09c58daac34e6f6ea5c6dee0094b422118e5a7c265586008a95fd135ac5f/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d27c2123977cb9269c30a49ba45f03a4323017ef693e19db4ec9dbe1299a3002", size = 1278499, upload-time = "2026-08-28T10:25:33.375Z" }, + { url = "https://files.pythonhosted.org/packages/19/32/739765e24fbad29d13f83e546ea4abc215a78cea9d677ca09025b027724d/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6a797a1cefc8b9c93170db580337e1fe3d011ad18b1299943231279406342048", size = 1296677, upload-time = "2026-08-28T10:25:35.059Z" }, + { url = "https://files.pythonhosted.org/packages/df/32/03304d1010e2cc45e5b3b52cef7e43fed3a2a5cd6c87a89b4a88e1d85b5d/kiwisolver-1.5.1-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2551cf9917af48ee7c4b29cc82320489508cf96fd26a51f6fc124de661cd44c7", size = 1346037, upload-time = "2026-08-28T10:25:36.705Z" }, + { url = "https://files.pythonhosted.org/packages/3e/57/4c49377bfd274450dd72ecaa13eaac32ea804a03363e4d1db0c5aa999ceb/kiwisolver-1.5.1-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:38f6e0deb4d0a4615efe0c4efc5990b06ae450ab50a0b321c0b078b6d238c083", size = 988248, upload-time = "2026-08-28T10:25:38.299Z" }, + { url = "https://files.pythonhosted.org/packages/cb/c3/38df144a08b6c5d75ca4504e5cc3141bb3bfef64c04f4ef48204f42711b6/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bfd1de989b3330420e29de39352f5c049905c9e3ee67233a50d550e3d652c148", size = 2228722, upload-time = "2026-08-28T10:25:40.038Z" }, + { url = "https://files.pythonhosted.org/packages/e7/11/3221838a89cd64d9b386353e000cd8a296069a20fbe3584507fdfd5bebae/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1209042a623ddfda5497e4066c7b77651dde8e1d3a9dd97599dc7e97f3b9b78c", size = 2325216, upload-time = "2026-08-28T10:25:41.699Z" }, + { url = "https://files.pythonhosted.org/packages/83/d4/075c219230697bb5db910d37262b9bacf880f92b4811a02ab81ed073a253/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:26e8268480be5061d509e29669d59103c067a26377a56491630ece11762e3858", size = 1977689, upload-time = "2026-08-28T10:25:43.559Z" }, + { url = "https://files.pythonhosted.org/packages/bb/08/1d219c3c2dd960983d0d4da623d916e9de6385df2b0bab3d1af0e9b8fccc/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d79308fa689fac89cbcfbd4dbfc80b5f95c54c5a7fd4d194be221f9d33d026e6", size = 2491443, upload-time = "2026-08-28T10:25:45.242Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d3/024208ec1079d273f1047468d1bdffbf38bb75b7b268090fd3a0301b9d9a/kiwisolver-1.5.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b03af77d77e50edba2030fd5f7c352ff209314b09030a3cba7c14edf9a09a444", size = 2295200, upload-time = "2026-08-28T10:25:46.984Z" }, + { url = "https://files.pythonhosted.org/packages/6e/7c/7b210498f9f92e1cd7855f260fa69ef056881087b199ee20c208f0e4189a/kiwisolver-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:06a6917674de9e0fe3f66f5430787f59a9f2ddb64af9b714eaec547e29ef5c19", size = 70748, upload-time = "2026-08-28T10:25:48.444Z" }, + { url = "https://files.pythonhosted.org/packages/94/61/ef0daa157c8bb23672f7423e0d14c39db1dc6ef8ed47e6bc54c9c1bef3bf/kiwisolver-1.5.1-cp312-cp312-win_arm64.whl", hash = "sha256:ad8b9671348d7c8716715652ae11f85ed0eb99e265a2df2ca490577d69860b2c", size = 68324, upload-time = "2026-08-28T10:25:49.81Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c4/1407df7512a5b36cc79840e01710dc575733c461b13ab866cae77eaf87f3/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:482676e5bd48d70ac99d9fc78863469845421e01184fa83f1f9366dc49f7e974", size = 134002, upload-time = "2026-08-28T10:28:08.881Z" }, + { url = "https://files.pythonhosted.org/packages/16/45/c37a21ad5c0ab581a93c55ad544721aaa1f0ae94edb29c6a678a23d013e6/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:072bdb15a3c19a5b5dbc8f8fb1f4e1884bf4f3507eeb4cc6334401274d37a5c0", size = 194292, upload-time = "2026-08-28T10:28:11.06Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c1/69f00d627949580e43d57af0aa465df46868d7c29801c137a55374101294/kiwisolver-1.5.1-graalpy312-graalpy250_312_native-win_amd64.whl", hash = "sha256:a5a00665d1a0e26763a7338d7e911d4598fbc1d50dd0d6b7919b7dc6c5d6569f", size = 73362, upload-time = "2026-08-28T10:28:12.449Z" }, +] + [[package]] name = "markdown-it-py" version = "4.2.0" @@ -530,6 +604,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, ] +[[package]] +name = "matplotlib" +version = "3.11.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/c8/9aa712a0afb882649424dd8de8ad9aa6235e796e84c6052e8f6dc1598d0d/matplotlib-3.11.2.tar.gz", hash = "sha256:cec596316640f2b394b8f0daa0ea61a8eae82d017b620b9f202befb972a59ea4", size = 32660610, upload-time = "2026-09-11T19:05:31.214Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/ce/1bfcc4873b121597791ad74032943b123218c0613af0b97e8dd05e916fb1/matplotlib-3.11.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef752769cd962f39ea0b6ffc82d1ea43a0012c5a6157c7a075212fa509cfcff2", size = 9476466, upload-time = "2026-09-11T19:03:19.45Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c4/7f5f3601ee69baf072c0c7d3ce60c03e0618621c5a56c34a62a460e29d11/matplotlib-3.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ef31985c4dedb5f1424e1aec6849a47dd37689cb7fa3c20b1b82187f26806261", size = 9305583, upload-time = "2026-09-11T19:03:22.39Z" }, + { url = "https://files.pythonhosted.org/packages/b8/90/2b3fd67ee273163faeda6d514be70b5596eaa0fd77b60ffc294ad0b34f5f/matplotlib-3.11.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df4f7784aca81a94f254c0a2767d592ee25f407e488f5fa7203e51093fb6ca27", size = 9860353, upload-time = "2026-09-11T19:03:25.049Z" }, + { url = "https://files.pythonhosted.org/packages/f4/84/32549e7a462dc311aed2ab62e5d2538028840b5c53a8be0195c789937c3d/matplotlib-3.11.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b9a7ad579856284135e401ecc918c5f8a017ee30539298862a109f51b971710", size = 10670348, upload-time = "2026-09-11T19:03:28.108Z" }, + { url = "https://files.pythonhosted.org/packages/84/39/02e21b74f7439bd643d717ea846006d46e309e6d29b632b57751265311d6/matplotlib-3.11.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3aa4b8516fd26659e4363abbf317c703d9116496c5db2e9d0609a2866dd39dd2", size = 10810580, upload-time = "2026-09-11T19:03:31.402Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/0d239bde12b308262265c2d98909b2f0ecad2b5deeae96241642e822e9c7/matplotlib-3.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:c5c1c68ee401fc98271263410f0e5ce88285abacf7627132914e8adf3d70ff43", size = 9349409, upload-time = "2026-09-11T19:03:34.195Z" }, + { url = "https://files.pythonhosted.org/packages/49/a8/06baf901c02246c8a222b655cc4540ef9c15e1549a04e07927f9cde716c3/matplotlib-3.11.2-cp312-cp312-win_arm64.whl", hash = "sha256:643ff850d8e0f5b8319337f87ed3cb59506afb3df3cc48de777d85871233be7b", size = 9028084, upload-time = "2026-09-11T19:03:37.032Z" }, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -748,6 +848,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3b/11/3d580a604a1e35d69f6676847bd12db7d14344bc677b717f4413e79c5d0d/pandas-3.0.6-cp312-cp312-win_arm64.whl", hash = "sha256:f4e7c52eb108d752e7592268108fd3e98efd76d83a3125cdd06c621c2e44359b", size = 8959806, upload-time = "2026-09-17T23:21:13.851Z" }, ] +[[package]] +name = "pillow" +version = "12.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/3d/bb7fca845737cf9d7dbde16ed1843984665ff2e0a518f5db43e77ec540b9/pillow-12.3.0.tar.gz", hash = "sha256:3b8182a766685eaa002637e28b4ec8d6b18819a0c71f579bf0dbaa5830297cce", size = 47025035, upload-time = "2026-07-01T11:56:38.965Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/bf/fb3ebff8ddcb76aac5a01389251bbbb9519922a9b520d8247c1ca864a25d/pillow-12.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ba09209fbe443b4acccebe845d8a138b89a8f4fbaeedd44953490b5315d5e965", size = 5345969, upload-time = "2026-07-01T11:54:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/66/9a386a92561f402389a4fc70c18838bf6d35eb5eb5c6850b4b2dc64f5048/pillow-12.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ffd0c5368496f41b0944be820fcb7a838aa6e623d250b01acf2643939c3f99d7", size = 4780323, upload-time = "2026-07-01T11:54:09.351Z" }, + { url = "https://files.pythonhosted.org/packages/25/27/ac8f99618ffd3dde21db0f4d4b1d2ab00c0880595bfd17df103f7f39fd0c/pillow-12.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9c7f76c0673154f044e9d78c8655fb4213f6ca31a836df48b40fe5d187717b9", size = 6266838, upload-time = "2026-07-01T11:54:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/84/21/a35af28dcc61f37ed850a2d64c65c701321dfbf25085e469d5559360cbbf/pillow-12.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78cb2c6865a35ab8ff8b75fd122f6033b92a62c82801110e48ddd6c936a45d91", size = 6940830, upload-time = "2026-07-01T11:54:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/eb/51/8b08617af3ad95e33ce6d7dd2c99ed6c8298f7fb131636303956be022e25/pillow-12.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e491916b378fba47242221bb9ead245211b70d504f495d105d17b14a24b4907c", size = 6344383, upload-time = "2026-07-01T11:54:15.756Z" }, + { url = "https://files.pythonhosted.org/packages/1d/72/cf78ac9780bb93c28328f408973845a309d4d145041665f734572ced1b52/pillow-12.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0dd2064cbc55aaec028ef5fbb60fa47bb6c3e7918e07ff17935284b227a9d2df", size = 7052934, upload-time = "2026-07-01T11:54:17.721Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/25e0f4dc178a6bc0696793720055519a0de89e7661dae886992decbd2f81/pillow-12.3.0-cp312-cp312-win32.whl", hash = "sha256:dbce0b29841537a2fa4a214c2bbf14de3587c9680caa9b4e217568472490b28f", size = 6472684, upload-time = "2026-07-01T11:54:19.839Z" }, + { url = "https://files.pythonhosted.org/packages/45/89/da2f7971a317f83d807fdd4065c0af40208e59e692cc43d315a71a0e96d1/pillow-12.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a2b55dd6b2a4c4b7d87ffa56bdb33fdc5fdb9a462173861a7bc097f17d91cb09", size = 7227137, upload-time = "2026-07-01T11:54:22.025Z" }, + { url = "https://files.pythonhosted.org/packages/de/47/4845a0a6c0dbf1db8456bd9fc791f13c5ced7ced20606d08a0aacfd25b49/pillow-12.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:331b624368d4f1d069149002f25f44bc61c8919ce8ddb3c45bdad8f6e2d89510", size = 2568267, upload-time = "2026-07-01T11:54:24.051Z" }, +] + [[package]] name = "pluggy" version = "1.6.0" @@ -883,6 +1000,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl", hash = "sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9", size = 1250147, upload-time = "2026-08-17T08:02:44.912Z" }, ] +[[package]] +name = "pyparsing" +version = "3.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/11/b213bebff182584360cb8d17c72c1677fec5c5c228de439e63bcf8ab1c8f/pyparsing-3.3.3.tar.gz", hash = "sha256:928ae7e20211f3b6f3915a72f06a0cfd29ab9d24279dd6346b6b1a7146397d36", size = 1050487, upload-time = "2026-09-20T20:59:05.609Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/bb/d215ee7c73b61497b28a5503f9f53523f294fcc936762b7caf90e0c1c2b5/pyparsing-3.3.3-py3-none-any.whl", hash = "sha256:ece8c00a69cf01b45d0b1dedabb469c90d8caf996d4fda40f147627a122849a4", size = 126420, upload-time = "2026-09-20T20:59:04.025Z" }, +] + [[package]] name = "pytest" version = "9.1.1" @@ -1152,6 +1278,9 @@ dev = [ { name = "ruff" }, { name = "scipy" }, ] +figures = [ + { name = "matplotlib" }, +] llm = [ { name = "anthropic" }, ] @@ -1181,6 +1310,7 @@ dev = [ { name = "ruff", specifier = "==0.16.8" }, { name = "scipy", specifier = "==1.18.1" }, ] +figures = [{ name = "matplotlib", specifier = "==3.11.2" }] llm = [{ name = "anthropic", specifier = "==1.8.0" }] onnx = [ { name = "onnx", specifier = "==1.23.0" }, From 5e39901f95b513c898e11895f4585b83d5a47577 Mon Sep 17 00:00:00 2001 From: drewOrc <36374426+drewOrc@users.noreply.github.com> Date: Tue, 29 Sep 2026 13:49:23 +0800 Subject: [PATCH 2/5] Test that a threshold-transfer point feasible on only some seeds is dropped --- tests/test_figures.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/test_figures.py b/tests/test_figures.py index 63a9cde..20ebf53 100644 --- a/tests/test_figures.py +++ b/tests/test_figures.py @@ -31,3 +31,12 @@ def test_threshold_transfer_skips_points_without_a_feasible_threshold_on_every_s assert 1 not in ks assert ks == sorted(ks) assert series["test"][-1][0] == 100 + + +def test_threshold_transfer_drops_a_point_where_only_some_seeds_were_feasible(): + """BERT k=1 has a feasible 2% threshold on one seed of three; a mean of one is not plotted.""" + summary = figures.load(Path("results"), "analysis/summary.json") + stat = summary["groups"]["bert/k1"]["result"]["diagnostics"]["0.02"]["test"]["selective_risk"] + assert stat["n"] == 1 + for name, points in figures.transfer_series(summary, "bert").items(): + assert 1 not in [k for k, _, _ in points], name From 41385694182169cbe54ebc351f904e35c200ca44 Mon Sep 17 00:00:00 2001 From: drewOrc <36374426+drewOrc@users.noreply.github.com> Date: Tue, 29 Sep 2026 14:15:52 +0800 Subject: [PATCH 3/5] Tie first-screen numbers to their JSON fields; point plot for router accuracy Review fixes for step 5: table-driven tests map every first-screen number to its field in summary.json; k=10 hybrid call counts per seed; router accuracy drawn as points instead of bars on a truncated axis; latency model built by the training loader and checked against the trained run. --- DEVLOG.md | 30 ++++- README.md | 14 +- results/cost/cost.json | 194 ++++++++++++++-------------- results/efficiency/cpu_latency.json | 58 ++++++--- results/figures/routers.png | Bin 110872 -> 110740 bytes results/report.md | 14 +- src/tinyrouter/figures.py | 102 ++++++++++----- src/tinyrouter/latency.py | 68 +++++++--- src/tinyrouter/report.py | 45 ++++--- tests/test_figures.py | 13 ++ tests/test_latency.py | 23 ++++ tests/test_report.py | 94 +++++++++++++- 12 files changed, 459 insertions(+), 196 deletions(-) diff --git a/DEVLOG.md b/DEVLOG.md index 3897396..14e487d 100644 --- a/DEVLOG.md +++ b/DEVLOG.md @@ -4,7 +4,35 @@ --- -## 2026-09-29(深夜,四):步驟 5,效率表、成本、圖與 README 首屏自動產生(Tier 1 完成) +## 2026-09-29(深夜,五):PR #18 審查修正(R1 到 R6) + +### 本次工作 / 執行摘要 +- 狀態措辭:Tier 1 研究問題(RQ1 到 RQ5)完成;AC1 尚未達成(待決定拆成 AC1a 從 Release artifacts 重現、AC1b 完整重訓)。AC1 的實作不在 PR #18。 +- **R1**:原本「README 與重算一致」只守一致性,欄位接錯後重生 README,CI 仍綠(審查突變 X3、X4 存活)。新增表格驅動測試:首屏 12 個數字各自對應 `summary.json` 的明確路徑,測試自己格式化,不經 report.py,斷言渲染字串等於該欄位的值。 +- **R2**:k=10 hybrid 補上三個 seed 的絕對呼叫次數:1,235、1,157、1,548(test 共 5,500 筆),並納入 R1 的測試。 +- **R3**:routers 圖 (a) 原本是長條圖且 y 軸截斷在 70,會放大 91.9 對 92.1 的差距。改成點圖加誤差棒,y 軸從 75% 起,圖說寫明「看點的距離,不看長條長度」;(b) 仍是從 0 開始的長條圖。 +- R4:「約 87%」改寫為「把 test 加權到 validation 的 OOS 比例後,validation 與 test 的 risk 差距縮小約 87%」,屬描述性寫法。R5:效率表註腳改為「準確率與 OOS recall 用 validation 選的 8 類聚合,ECE 是 151 類」。R6:Haiku 延遲註明不是同條件比較(不同機器,中間有網路)。 +- 延遲的同架構比對:計時模型改用訓練時同一個 loader(`train.load_model_and_tokenizer`)建立;model revision、max_length、torch 與 transformers 版本必須等於訓練 run 的記錄,否則停止。另記錄 `attention_implementation`(兩個模型都是 sdpa;訓練 run 沒有記錄這個欄位,因為 loader 與 transformers 版本相同,選法一致)。 +- 因為延遲改了程式,重跑 `make bench-cpu`,接著重生 cost、report、figures。 + +### 核心發現 / 數據 +- 重量後 CPU p50 / p95:BERT 15.5 / 18.4 ms,ModernBERT 20.9 / 28.5 ms(上一則是 15.6 / 17.0 與 20.2 / 23.2)。p50 差不到 1 ms,p95 對同機其他負載較敏感,重量時差了約 5 ms;這是同一台機器兩次量測的差異,不是程式造成的。 +- 損益兩平只有 ModernBERT k=100 hybrid 在 US$2/h 時從 1,830 變成 1,831,其他格不變。 + +### Blockers / 遇到的問題 +- (無) + +### Next +- [ ] 決定 AC1 是否拆成 AC1a(從 Release artifacts 重現)與 AC1b(完整重訓) +- [ ] Tier 2(步驟 6) + +### Files / Budget +- `src/tinyrouter/report.py`、`figures.py`、`latency.py`;`tests/test_report.py`、`test_latency.py`;`results/efficiency/cpu_latency.json`、`results/cost/cost.json`、`results/figures/*.png`、`results/report.md`;`README.md`;`DEVLOG.md` +- API 花費:US$0 + +--- + +## 2026-09-29(深夜,四):步驟 5,效率表、成本、圖與 README 首屏自動產生 ### 本次工作 / 執行摘要 - **CPU 延遲(AC5,`make bench-cpu`)**:曲線權重已刪,改用同架構量:鎖定 revision 的預訓練骨架 + 151 類分類頭(seed 42 隨機初始化)+ 同 tokenizer 與 max_length。延遲只取決於架構與輸入形狀,不取決於權重數值;程式比對參數量必須等於 k=100 訓練 run 記錄的值(BERT 109,598,359、ModernBERT 149,720,983),不等就停。量法:CPU、batch 1、`torch.inference_mode()`、4 個 intra-op 執行緒、interop 1、暖機 50 筆,再依序量 validation 前 500 筆;報 tokenization + forward + argmax 與 forward-only 兩種。 diff --git a/README.md b/README.md index 96dbb22..eb90c9a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Test split, 8-way routing (7 agents + out-of-scope), mean ± std over seeds 42, | What transferred | What did not transfer | |---|---| | ModernBERT-base fine-tuned on all 100 examples per intent routes 91.9 ± 0.1% of test queries correctly in the 8-way space (Claude Haiku 4.5 zero-shot: 82.1%). | The deferral threshold chosen on validation for 2% selective risk gives 7.34 ± 0.86% selective risk on test (ModernBERT k=100; validation: 1.50 ± 0.13%). | -| With 10 examples per intent, deferring low-confidence queries to Haiku lifts 8-way accuracy from 81.5 ± 0.7% (small model alone) to 88.0 ± 0.4%, with Haiku called on 23.9 ± 3.8% of queries. | Validation is 3.2% OOS and test 18.2%. Under this reweighting diagnostic, the OOS prior shift contributes about 87% of the observed risk gap; the remaining difference is consistent with a higher conditional error rate on test OOS queries that the model keeps (36.5 ± 3.0% vs 19.9 ± 2.9% on validation). | +| With 10 examples per intent, deferring low-confidence queries to Haiku lifts 8-way accuracy from 81.5 ± 0.7% (small model alone) to 88.0 ± 0.4%, with Haiku called on 23.9 ± 3.8% of queries (1,235, 1,157, 1,548 of 5,500 for seeds 42, 43, 44). | Validation is 3.2% OOS and test 18.2%. In a reweighting diagnostic, weighting test to the validation OOS share closes about 87% of the gap between validation and test risk; the remaining difference is consistent with a higher conditional error rate on test OOS queries that the model keeps (36.5 ± 3.0% vs 19.9 ± 2.9% on validation). | **Engineering conclusion.** A deferral threshold has to be calibrated on labelled data that represents the traffic it will see. A benchmark's validation split is not a risk guarantee for production. @@ -40,9 +40,9 @@ Test split, 8-way routing (7 agents + out-of-scope), mean ± std over seeds 42, | 8-way accuracy, test (%) | 91.1 ± 0.5 | 91.9 ± 0.1 | 82.1 | | OOS recall, test (%) | 56.1 ± 2.6 | 61.1 ± 0.4 | 56.8 | | ECE 151-way, test, before → after temperature (%) | 3.90 ± 0.34 → 3.80 ± 0.44 | 3.95 ± 0.20 → 2.45 ± 0.29 | n/a | -| latency p50 / p95, batch 1 | 15.6 / 17.0 ms | 20.2 / 23.2 ms | 669 / 916 ms (API, incl. network) | +| latency p50 / p95, batch 1 | 15.5 / 18.4 ms | 20.9 / 28.5 ms | 669 / 916 ms (API, incl. network) | -Encoder latency: Apple M4 CPU, batch 1, 4 threads, torch 2.14.0, `torch.inference_mode()`, 50 warm-up queries, then validation rows 0 to 499, in order; tokenization + forward + argmax. It is timed with the same architecture, not the fine-tuned weights (deleted to save disk): the pinned pretrained backbone, a 151-way head, the same tokenizer and max_length. Latency depends on shapes, not weight values, and the parameter count equals the trained run's. Haiku: client-side time per call on the 5,500 test queries, including the network round trip, with up to 6 calls in flight. Peak memory samples `torch.mps.driver_allocated_memory()` after each backward pass and optimizer step (includes the allocator cache). Accuracy, OOS recall and ECE use the 8-way aggregation chosen on validation. Values are mean ± std over seeds 42, 43, 44. +Encoder latency: Apple M4 CPU, batch 1, 4 threads, torch 2.14.0, `torch.inference_mode()`, 50 warm-up queries, then validation rows 0 to 499, in order; tokenization + forward + argmax. It is timed with the same architecture, not the fine-tuned weights (deleted to save disk): the pinned pretrained backbone, a 151-way head, the same tokenizer and max_length. Latency depends on shapes, not weight values. The timed model is built by the training loader with the model revision, max_length and torch and transformers versions of the trained run, and its parameter count equals the trained run's. Haiku: client-side time per call on the 5,500 test queries, including the network round trip, with up to 6 calls in flight; it is not a like-for-like comparison with the encoders (different machine, a network in between). Peak memory samples `torch.mps.driver_allocated_memory()` after each backward pass and optimizer step (includes the allocator cache). Accuracy and OOS recall use the 8-way aggregation chosen on validation; ECE is over the 151 intents. Values are mean ± std over seeds 42, 43, 44. ### Cost (RQ5) @@ -55,7 +55,7 @@ Break-even queries against LLM-only, for **assumed** accelerator prices (trainin | ModernBERT k=10 | small-only | 75 | 151 | 302 | | ModernBERT k=10 | hybrid | 99 | 198 | 396 | | ModernBERT k=100 | small-only | 452 | 904 | 1,807 | -| ModernBERT k=100 | hybrid | 458 | 915 | 1,830 | +| ModernBERT k=100 | hybrid | 458 | 915 | 1,831 | Break-even compares cost only: at k=10 the small model alone is less accurate than Haiku and the hybrid is more accurate than Haiku (router table). @@ -63,8 +63,8 @@ Training compute costs cents; labelling dominates once it has to be paid for. CL | hybrid, US$1/h | labelled rows | at US$0.05 per label | at US$0.2 per label | at US$1 per label | |---|---|---|---|---| -| ModernBERT-base k=10 | 1,525 | 272,097 | 1,087,794 | 5,438,179 | -| ModernBERT-base k=100 | 15,250 | 2,097,550 | 8,387,456 | 41,933,620 | +| ModernBERT-base k=10 | 1,525 | 272,134 | 1,087,942 | 5,438,918 | +| ModernBERT-base k=100 | 15,250 | 2,097,770 | 8,388,334 | 41,938,009 | Local inference is assumed to cost US$0.05 per vCPU-hour at full utilisation, times the measured p50 latency and thread count. Full grid and every input: `results/cost/cost.json`. @@ -82,7 +82,7 @@ Local inference is assumed to cost US$0.05 per vCPU-hour at full utilisation, ti ![Router comparison](results/figures/routers.png) -*Test 8-way accuracy and share of queries sent to Haiku for LLM-only, small-only, the hybrid (threshold chosen on validation for 2% selective risk) and the oracle, which defers exactly the small model's errors. Error bars are std over three seeds.* +*Test 8-way accuracy (a) and share of queries sent to Haiku (b) for LLM-only, small-only, the hybrid (threshold chosen on validation for 2% selective risk) and the oracle, which defers exactly the small model's errors. Panel (a) uses points, not bars, and its axis starts at 75%, so vertical distance is the difference in accuracy points and nothing is read from bar length; panel (b) starts at 0. Error bars are std over three seeds.* ![Threshold transfer](results/figures/threshold_transfer.png) diff --git a/results/cost/cost.json b/results/cost/cost.json index ac058f0..bd3740f 100644 --- a/results/cost/cost.json +++ b/results/cost/cost.json @@ -4,7 +4,7 @@ "analysis/summary.json": "6d108f1876514e00a6312858fef47473a34e610bd9b04617ab71fae72a149f06", "analysis/haiku.json": "d91a1265d0f68fea2f3756a44c9d4d68ac337074982cfb738cd6330e45831acc", "llm/haiku-8way.json": "d2423251d948f730a50cadca163327edca1ea294d6f5bfe91c334a4e8facfa99", - "efficiency/cpu_latency.json": "39ba7ebf0bb4378977be5ab8d4e3d2ea98c290ab8162d0a191d8d9c01d08ff21", + "efficiency/cpu_latency.json": "894d7f1d3ec6bf3c5e63798342bf16a788f4c104bc7c3eb30b635ba7b8c304f9", "curves/bert.json": "35b46d514e6b47728501678dd6e029fb6a670e9b57d4514d6a2e73827aa987a5", "curves/modernbert.json": "515c153596bfb0115b39b2a6166999135014ef2ca68361a35764aa1866e9ffc4" }, @@ -188,14 +188,14 @@ "hardware": "Apple M4", "end_to_end_ms": { "bert": { - "p50_ms": 15.634, - "p95_ms": 17.023, - "mean_ms": 15.616 + "p50_ms": 15.501, + "p95_ms": 18.379, + "mean_ms": 15.652 }, "modernbert": { - "p50_ms": 20.179, - "p95_ms": 23.165, - "mean_ms": 19.878 + "p50_ms": 20.864, + "p95_ms": 28.504, + "mean_ms": 21.543 } } }, @@ -270,7 +270,7 @@ "one_time_usd": 0.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 75.4, "break_even_queries_api_only": 75.2 }, @@ -282,8 +282,8 @@ "one_time_usd": 76.277774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 207067.8, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 207089.2, "break_even_queries_api_only": 206439.6 }, { @@ -294,8 +294,8 @@ "one_time_usd": 305.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 828045.1, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 828130.7, "break_even_queries_api_only": 825532.8 }, { @@ -306,8 +306,8 @@ "one_time_usd": 1525.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 4139924.2, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 4140351.9, "break_even_queries_api_only": 4127363.4 }, { @@ -318,7 +318,7 @@ "one_time_usd": 0.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 150.8, "break_even_queries_api_only": 150.3 }, @@ -330,8 +330,8 @@ "one_time_usd": 76.305548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 207143.2, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 207164.6, "break_even_queries_api_only": 206514.7 }, { @@ -342,8 +342,8 @@ "one_time_usd": 305.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 828120.5, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 828206.1, "break_even_queries_api_only": 825608.0 }, { @@ -354,8 +354,8 @@ "one_time_usd": 1525.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 4139999.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 4140427.3, "break_even_queries_api_only": 4127438.6 }, { @@ -366,7 +366,7 @@ "one_time_usd": 0.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 301.6, "break_even_queries_api_only": 300.7 }, @@ -378,8 +378,8 @@ "one_time_usd": 76.361095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 207294.0, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 207315.4, "break_even_queries_api_only": 206665.1 }, { @@ -390,8 +390,8 @@ "one_time_usd": 305.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 828271.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 828356.9, "break_even_queries_api_only": 825758.3 }, { @@ -402,8 +402,8 @@ "one_time_usd": 1525.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 4140150.4, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 4140578.1, "break_even_queries_api_only": 4127588.9 }, { @@ -414,8 +414,8 @@ "one_time_usd": 0.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 99.0, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 99.1, "break_even_queries_api_only": 98.6 }, { @@ -426,8 +426,8 @@ "one_time_usd": 76.277774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 271998.1, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 272035.0, "break_even_queries_api_only": 270915.1 }, { @@ -438,8 +438,8 @@ "one_time_usd": 305.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 1087695.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 1087842.9, "break_even_queries_api_only": 1083364.5 }, { @@ -450,8 +450,8 @@ "one_time_usd": 1525.027774, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 5438080.4, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 5438818.5, "break_even_queries_api_only": 5416427.9 }, { @@ -462,7 +462,7 @@ "one_time_usd": 0.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 198.1, "break_even_queries_api_only": 197.3 }, @@ -474,8 +474,8 @@ "one_time_usd": 76.305548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 272097.1, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 272134.1, "break_even_queries_api_only": 271013.8 }, { @@ -486,8 +486,8 @@ "one_time_usd": 305.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 1087794.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 1087942.0, "break_even_queries_api_only": 1083463.1 }, { @@ -498,8 +498,8 @@ "one_time_usd": 1525.055548, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 5438179.4, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 5438917.5, "break_even_queries_api_only": 5416526.5 }, { @@ -510,7 +510,7 @@ "one_time_usd": 0.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 396.2, "break_even_queries_api_only": 394.6 }, @@ -522,8 +522,8 @@ "one_time_usd": 76.361095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 272295.2, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 272332.2, "break_even_queries_api_only": 271211.0 }, { @@ -534,8 +534,8 @@ "one_time_usd": 305.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 1087992.4, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 1088140.1, "break_even_queries_api_only": 1083660.4 }, { @@ -546,8 +546,8 @@ "one_time_usd": 1525.111095, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 8.7936e-05, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 5438377.5, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 5439115.6, "break_even_queries_api_only": 5416723.8 }, { @@ -558,7 +558,7 @@ "one_time_usd": 0.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, + "router_local_usd_per_query": 1.159e-06, "break_even_queries": 451.8, "break_even_queries_api_only": 450.4 }, @@ -570,8 +570,8 @@ "one_time_usd": 762.666431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2070376.2, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2070590.1, "break_even_queries_api_only": 2064094.6 }, { @@ -582,8 +582,8 @@ "one_time_usd": 3050.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8280149.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8281004.8, "break_even_queries_api_only": 8255027.0 }, { @@ -594,8 +594,8 @@ "one_time_usd": 15250.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41398939.5, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41403216.7, "break_even_queries_api_only": 41273333.2 }, { @@ -606,8 +606,8 @@ "one_time_usd": 0.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 903.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 903.7, "break_even_queries_api_only": 900.9 }, { @@ -618,8 +618,8 @@ "one_time_usd": 762.832861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2070828.0, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2071041.9, "break_even_queries_api_only": 2064545.0 }, { @@ -630,8 +630,8 @@ "one_time_usd": 3050.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8280601.1, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8281456.7, "break_even_queries_api_only": 8255477.4 }, { @@ -642,8 +642,8 @@ "one_time_usd": 15250.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41399391.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41403668.6, "break_even_queries_api_only": 41273783.6 }, { @@ -654,8 +654,8 @@ "one_time_usd": 0.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 1807.2, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 1807.4, "break_even_queries_api_only": 1801.7 }, { @@ -666,8 +666,8 @@ "one_time_usd": 763.165723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2071731.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2071945.6, "break_even_queries_api_only": 2065445.9 }, { @@ -678,8 +678,8 @@ "one_time_usd": 3050.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8281504.7, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8282360.4, "break_even_queries_api_only": 8256378.3 }, { @@ -690,8 +690,8 @@ "one_time_usd": 15250.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 0.0, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41400294.9, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41404572.3, "break_even_queries_api_only": 41274684.5 }, { @@ -702,8 +702,8 @@ "one_time_usd": 0.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 457.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 457.7, "break_even_queries_api_only": 456.2 }, { @@ -714,8 +714,8 @@ "one_time_usd": 762.666431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2097092.9, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2097312.4, "break_even_queries_api_only": 2090648.4 }, { @@ -726,8 +726,8 @@ "one_time_usd": 3050.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8386998.7, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8387876.4, "break_even_queries_api_only": 8361224.8 }, { @@ -738,8 +738,8 @@ "one_time_usd": 15250.166431, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41933162.7, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41937551.1, "break_even_queries_api_only": 41804298.9 }, { @@ -750,8 +750,8 @@ "one_time_usd": 0.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 915.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 915.4, "break_even_queries_api_only": 912.5 }, { @@ -762,8 +762,8 @@ "one_time_usd": 762.832861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2097550.5, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2097770.0, "break_even_queries_api_only": 2091104.6 }, { @@ -774,8 +774,8 @@ "one_time_usd": 3050.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8387456.3, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8388334.0, "break_even_queries_api_only": 8361681.0 }, { @@ -786,8 +786,8 @@ "one_time_usd": 15250.332861, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41933620.4, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41938008.8, "break_even_queries_api_only": 41804755.1 }, { @@ -798,8 +798,8 @@ "one_time_usd": 0.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 1830.5, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 1830.7, "break_even_queries_api_only": 1824.9 }, { @@ -810,8 +810,8 @@ "one_time_usd": 763.165723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 2098465.8, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 2098685.4, "break_even_queries_api_only": 2092017.0 }, { @@ -822,8 +822,8 @@ "one_time_usd": 3050.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 8388371.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 8389249.4, "break_even_queries_api_only": 8362593.4 }, { @@ -834,8 +834,8 @@ "one_time_usd": 15250.665723, "llm_only_usd_per_query": 0.000369492, "router_api_usd_per_query": 4.693e-06, - "router_local_usd_per_query": 1.121e-06, - "break_even_queries": 41934535.6, + "router_local_usd_per_query": 1.159e-06, + "break_even_queries": 41938924.2, "break_even_queries_api_only": 41805667.6 } ] diff --git a/results/efficiency/cpu_latency.json b/results/efficiency/cpu_latency.json index 94f9926..991c985 100644 --- a/results/efficiency/cpu_latency.json +++ b/results/efficiency/cpu_latency.json @@ -23,7 +23,7 @@ "torch": "2.14.0", "transformers": "5.17.0" }, - "measured_at": "2026-09-29T05:38:49+00:00", + "measured_at": "2026-09-29T06:13:26+00:00", "models": { "bert": { "model_name": "google-bert/bert-base-uncased", @@ -32,22 +32,30 @@ "max_length": 64, "parameters_total": 109598359, "parameters_match_trained_run": true, + "matches_trained_run": { + "model_name": "google-bert/bert-base-uncased", + "model_revision": "86b5e0934494bd15c9632b12f734a8a67f723594", + "max_length": "64", + "torch": "2.14.0", + "transformers": "5.17.0" + }, + "loader": "tinyrouter.train.load_model_and_tokenizer (the training loader)", "attention_implementation": "sdpa", "end_to_end": { "n": 500, - "mean_ms": 15.616, - "p50_ms": 15.634, - "p95_ms": 17.023, - "min_ms": 13.672, - "max_ms": 18.172 + "mean_ms": 15.652, + "p50_ms": 15.501, + "p95_ms": 18.379, + "min_ms": 12.606, + "max_ms": 45.588 }, "forward": { "n": 500, - "mean_ms": 15.503, - "p50_ms": 15.528, - "p95_ms": 16.916, - "min_ms": 13.551, - "max_ms": 18.084 + "mean_ms": 15.523, + "p50_ms": 15.377, + "p95_ms": 18.246, + "min_ms": 12.481, + "max_ms": 45.461 } }, "modernbert": { @@ -57,22 +65,30 @@ "max_length": 64, "parameters_total": 149720983, "parameters_match_trained_run": true, + "matches_trained_run": { + "model_name": "answerdotai/ModernBERT-base", + "model_revision": "8949b909ec900327062f0ebf497f51aef5e6f0c8", + "max_length": "64", + "torch": "2.14.0", + "transformers": "5.17.0" + }, + "loader": "tinyrouter.train.load_model_and_tokenizer (the training loader)", "attention_implementation": "sdpa", "end_to_end": { "n": 500, - "mean_ms": 19.878, - "p50_ms": 20.179, - "p95_ms": 23.165, - "min_ms": 16.237, - "max_ms": 27.292 + "mean_ms": 21.543, + "p50_ms": 20.864, + "p95_ms": 28.504, + "min_ms": 15.711, + "max_ms": 66.021 }, "forward": { "n": 500, - "mean_ms": 19.763, - "p50_ms": 20.068, - "p95_ms": 23.064, - "min_ms": 16.134, - "max_ms": 27.189 + "mean_ms": 21.409, + "p50_ms": 20.738, + "p95_ms": 28.335, + "min_ms": 15.608, + "max_ms": 65.883 } } } diff --git a/results/figures/routers.png b/results/figures/routers.png index b2383b655338cbb5aeb72ac03a5e71d4f87f447d..bd048d4368a491e90bb2523394de22ba698038c5 100644 GIT binary patch literal 110740 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