Skip to content

Hyperloom v1.0.0a3

Choose a tag to compare

@chaojhou chaojhou released this 05 Aug 03:51
· 3454 commits to main since this release
b8ad6c9

Highlights

Kernel source resolution & patch materialization

Kernel sources now resolve against the installed tree instead of a table captured at build time: the resolver reverse-looks-up the demangled device kernel name against indexed __global__ / @triton.jit definitions in the on-disk sglang/aiter sources, refusing ambiguous names rather than routing a rewrite at an arbitrary file. The same pass recognizes hipGraphLaunch so graph-internal kernels are attributed instead of unlinked. On the patch side, aiter sources shipped in the sibling aiter_meta split wheel are now recognized for JIT rebuild — the gates keyed only on /aiter/csrc/, so a KEPT .cu was deployed against a stale .so and then reverted — and fusion-patch roots resolve consistently for non-git frameworks.

Measurement integrity: what counts as a gain

Candidates are launched with current_best's recipe but several dispatch paths still graded them against the bare baseline, so a regression against the established recipe read as a win. The grading anchor is now resolved in one place and re-resolved at execution time, _lift_to_current_best refuses a winner that does not beat the anchor it was composed on and reports whether the lift landed (so callers stop advancing cumulative gain for refused work), and GEAK 2b refuses to promote a rebench when GEAK shipped no material product. baseline itself retires once the session has an anchor, with the queued backlog drained rather than re-measuring a reference the run already has.

Attribution by proposal ownership

integrate_patch applies late, so the phase active at completion says nothing about who owns the work. Proposal phase, domain, and provenance now travel through execution, promotion, and resume replay; timeline guessing is gone, an ownerless gain is reported as unattributed rather than credited to whichever phase was active, and the session breakdown gains one unified optimization projection with an explicit unattributed bucket.

Accuracy: a zero explains itself, and a runaway eval is bounded

A baseline that genuinely scored gsm8k=0.0 was indistinguishable from one whose eval never ran; a measured zero is now classified as below-floor with its score and source on record, without becoming the "no baseline, skip the check" sentinel. Separately, lm-eval runs with max_tokens=min(16384, ctx-4096), so a model that never emits EOS burns ~21.6M decode tokens against ~0.26M for a healthy one with nothing bounding it — a probe injected into InferenceX's own sitecustomize.py now short-circuits the remaining generate requests once the sample is decisive, reaching the same verdict in minutes. The kernel integrate KEEP is gated on accuracy too.

Multi-node PD disaggregation

RayJob gains prefill/decode disaggregation. Leg liveness is judged by /health and each leg's own log rather than a PID, since the decode leader runs on another node where os.kill fails for a healthy leg; per-rank logs move to a shared filesystem so the driver can read the decode crash trace; and a published-service gate waits for the ClusterIP endpoint the benchmark actually dials, closing the window where a ready head address green-lit a benchmark that got ECONNREFUSED on every request.

Knowledge base, security & hygiene

The remote Cortex KB and its cortex_kb MCP surface are removed end-to-end with cortex_* renamed to recipe_*, and forge-loop receives an explicit --framework so it reuses Arena's KB under the producer's kernel identity. Control-plane credentials are kept out of benchmark subprocess environments and redacted before diagnostics are persisted. Alongside that: gates that never fired are deleted, retired compatibility paths removed, 538 stale comments and contract claims corrected against the code, and the FRAMEWORK executor registered under the kind the phase actually enqueues — it had been on a stale key, so every discovered PR candidate was stamped no_result_failed instead of benchmarked.

What's included

Kernel / Forge

  • Kernel source resolution + shape recovery for graph/Triton kernels - #1049
  • Recognize aiter_meta split-wheel .cu for JIT rebuild on integrate - #1077
  • Fusion patch base materialized from disk / root resolved for non-git frameworks - #1065, #1050
  • Gate the kernel integrate KEEP on accuracy - #1084
  • Default integrate base_tput to current_best, not the raw baseline - #1074
  • GEAK 2b: gate promote on a material candidate; fix the resume revalidation escape hatch - #1086, #1088
  • Kernel-only Forge enablement for Qwen3-14B-FP8 (vLLM, superset of sglang) - #1043
  • Install kernel_agents; install rocprof-compute + pin pandas<3 - #1044, #1051

Enablement

  • Baseline accuracy failure becomes a self-healing enablement trigger - #1054
  • Seal the baseline anchor, dedupe proposals, gate enablement behind --enablement - #1071
  • Fix pre-baseline enablement attribution - #1073

Orchestration, budgets, and resume

  • Grade against the live anchor, retire the baseline, make a zero accuracy explain itself - #1079
  • Preserve integrate-patch proposal attribution across delayed execution and resume - #1085
  • Unify session breakdown optimization data - #1070
  • Make resource and plateau gates actionable - #1069
  • Delete gates that never fired; show the planner what it was blind to - #1056
  • lean-5: remove dead code and retired compatibility paths - #1039
  • Register the framework executor under the kind the phase enqueues - #1087
  • Scope the overtime kill to the throughput phase - #1063

Ray and multi-node

  • PD disaggregation, /health leg liveness, shared rank logs, published-service readiness gate - #1076
  • RayJob external address resolution - #1053
  • Add --extra-env to the multi-node skill - #1082

Serving and inference

  • Integrate SemiAnalysis AgentX (aiperf agentic-trace) into the Magpie benchmark path - #1062
  • Preserve JSON across server-argument removal - #1064
  • Add an sglang graph-capture flag - #1066
  • Treat clean SWEEP completions as successful exit codes - #1055

Knowledge base

  • Resolve and pass an explicit --framework so forge-loop reuses Arena's KB - #1060
  • Remove the remote Cortex KB end-to-end; rename cortex_* to recipe_* - #1048, #1059
  • Widen the PR-query allowlist to what PR Monitor indexes - #1078

Security

  • Prevent API key leakage into session artifacts - #1072

Evaluation and install

  • Stop xDiT quality deps from clobbering the ROCm torch - #1057

CI and documentation

  • Pin E2E workloads to the PR commit - #1045
  • Fix 538 stale comments and contract claims found by a repo-wide audit - #1083
  • Bump actions/stale from 10 to 11 - #1081

TraceLens

  • Update the TraceLens SHA for v1.0.1; update the Agent skill path and CODEOWNERS - #1090, #1061, #1068

Requirements

(unchanged from v1.0.0a2) ROCm platform with a supported AMD Instinct GPU (MI355X / MI325X / MI300X; MI308X detection); Docker with AMD ROCm support, Kubernetes with AMD GPU nodes, or the supported bare-metal setup; Cursor IDE with Remote SSH; an Anthropic API key or compatible Anthropic gateway; tmux, jq, Node.js >= 18, and Claude CLI. Install from the GitHub Release wheel (hyperloom_inference_optimizer).

Alpha notice

v1.0.0a3 is an alpha release. Configuration surfaces, orchestration policies, and installation workflows may continue to evolve before the final v1.0.0 release.