6.6 kB 63 lines
fadc5c26
⋯
audits/r39_integration.md
download raw history
at main Markdown

round 39 integration #

scope #

selected upstream changes from strata 296b59d2..477ac13c; not an engine-wide upgrade. serve/tokenizer files carry the range plus local correctness hardening. PLE uses only 36381540, not the later upstream mutex change. metal adaptations are documented in astra_r39_qsa.md.

  • no cuda butterfly: score memcmp failed.
  • no batching in production qsa_merge: repeatable slowdown.
  • retained qsa_merge2 batching is test-only; the live engine does not dispatch it. qsa2.metal still belongs to the runtime-compiled shader library; the hardened service startup exercised that compile.
  • active-chunk bounds already existed. no credit assigned to this round.
  • prompt safety edits affect non-cooperative branches, not the M5 default path.
  • local image omission, model files, and sampling config unchanged.
  • upstream answer reservation remains enabled as approved: large thinking requests without a budget reserve answer space and may receive an injected wrap-up sentence in its reasoning ("I have thought about this long enough; time to give my answer."). the policy also logs its budget per request for caps <=32K. this is a behavior change; service persona evaluations need an explicit answer_room setting for comparability. CLI smoke does not run that service policy.

parent verification #

logs are under results/round39/.

  • integration ninja build: exit 0 (integration-build.log).
  • QSA_ATTN=2 qsa_parity --bitwise <baseline>/qsa2.metal: exit 0, all 40 cases bitwise equal.
  • qsa_prompt_parity, default and COOP_K4=0: exit 0, ALL PASS (mixed tolerance and explicit memcmp checks).
  • moe_mm_parity no args: exit 0, fp16-reference relative L2 2.03e-06.
  • requested IQ2_S/Q2_0 --v3 configuration: exit 0, fp16-reference relative L2 1.60e-05.
  • real local tokenizer: 18 tests, exit 0, one skip for unavailable external llama.cpp oracle vectors.
  • bias/image compatibility: 17 tests, exit 0, including same-length mutation and JSON-key equivalence.
  • final telemetry/cache hardening: 39 tests, exit 0. real M5 ctypes/ioreg probe also exits 0.
  • PLE new reuse fixture: all 10 cases x 2 cache settings x 2 worker settings pass, targeted runner exit 0. full baseline and candidate selftests both exit 1 on the same pre-existing keepalive timing assertions; thresholds unchanged. do not describe the full C++ suite as green.
  • parent full serve suite: 852 tests in 517.636s, exit 0, 11 skips (parent-serve-full.log). imports predate the last telemetry/cache-cap hardening; the 39-test final-source rerun above covers those changes. the serve owner’s separate baseline (785 tests) and candidate (852 tests) runs both hit the same existing keepawake acquire/release scheduling race; no production code or timing threshold was changed to suppress it.
  • complete scripts/strata_metal_complete.diff, including eight new serve tests: applies cleanly to isolated vendor HEAD (complete-patch-check.log).

integration smoke, not a speed comparison #

one model process at a time, existing service stopped for standalone runs and restarted afterwards. same configured 6.5 GB arena and K512 model. CPU-only fake-engine suites also running, so these measurements are not clean performance comparisons.

prompt prefill decode exit
1,984 tokens 4,941.54 ms 127 tokens / 2,991.30 ms (42.46 tok/s) 0
10,180 tokens 23,498.33 ms 31 tokens / 905.63 ms (34.23 tok/s) 0

model-smoke-plan.json records arguments and environment; full logs retained. no whole-model speedup claimed.

live HTTP roundtrip returned ready, then still ready; second request reported 18 cached tokens. final hardened service /health reports loaded=true on localhost:8080. telemetry reports the driver’s in-use memory statistic, not established free unified memory; do not enable the optional min_free_vram_mib gate based on this round. the per-sample device query is gone, but the 1 Hz ioreg subprocess remains; its serving overhead was not A/B measured.

review and limits #

parent reviewed production diff/context, metal patch, PLE fixture and local regressions; serve owner reviewed all tracked and new test files. opus independently fuzzed 38,033 real-tokenizer cases (PromptEncoder vs full encode directly), with zero mismatches; that tokenizer source is unchanged since the fuzz run. no CUDA/HIP/SYCL or M1 hardware verification this round. full evidence and source fingerprints: results/round39/; individual agent audits distinguish measured results from inferred portability.

complete patch replay reproduces all 27 changed source files exactly. vendor git diff --check flags only the pre-existing blank line at qsa.metal EOF; that file is byte-identical to the pre-round snapshot.

non-empty request logit biases remain unsupported by the Metal engine (no logit_bias=1 INFO capability); that cache was checked through unit tests, not claimed exercised by the live chat smoke.

quiet paired CLI followup #

same-day baseline reconstruction independently checked by opus: only the PLE object and regenerated archive symbol index differ in the host archive; all other linked objects match. runtime shader directories restore the exact prior versions. both arms run the same inputs/env, with service stopped and other agent suites complete. source/build provenance, frozen shaders, commands, full logs and summary: results/round39/model-ab/.

excluded one warmup per arm before the 10k case, then 10k order A/B/B/A/A/B and 2k A/B/B/A (no separate 2k warmup). every run exits 0 and all five pairs produce identical generated token IDs.

case candidate/baseline decode time, adjacent pairs candidate/baseline prefill time
10k 1.0137, 0.9643, 1.0280 1.0284, 0.9103, 1.0663
2k 1.0146, 1.0170 1.1043, 0.9660

performance remains inconclusive, not a zero-regression certificate. no consistent 10k slowdown; both 2k comparisons are ~1.5–1.7% slower, below the declared 2% material-slowdown threshold but not evidence of exact neutrality. strong temporal drift affects both arms: baseline 10k prefill rises from 23.4 to 28.5s and decode from 908 to 997ms; candidate drifts too. thermal throttling is plausible on the fanless laptop but was not measured, so no causal claim. do not treat the median 10k advantage as an improvement. the short 31-token decode further limits precision. no more repeated hot-device runs; a cooled/stationary experiment would be needed to resolve small differences. server restarted and health confirmed loaded=true.