Repository navigation
hyperloom custom: keep each measurement's raw logs (they overwrote each other) - #974
Conversation
…ch other) serve.log, llama-bench.log and kld.log were written to fixed names inside RESULT_DIR, which does not include RESULT_FILENAME, so any two measurements sharing a RESULT_DIR collided on all three: the result JSONs stayed distinct while the legs that produced them were silently replaced by the later run's text. Measured 2026-11-02: the 19:01 arm destroyed the 18:45 baseline's raw logs, and an HL_PAIR A/B pair would have collided the same way, with the A half's evidence gone before B finished. log_dir_for(out_dir, name) puts one directory per RESULT_FILENAME under RESULT_DIR and the three writers (serve_measure, run, kld) take it instead of the result directory. Result JSONs, the levers, the KLD gate and the score are untouched. closes #892 # Conflicts: # tools/hyperloom/custom/benchmark.py
|
Preparing review... |
…asurement-logs-rebased
…asurement-logs-rebased
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY
Own diff at 20b3be64b: tools/hyperloom/custom/benchmark.py +38/-9 (plus the docs line), one idea — one log directory per
measurement — applied to all three raw logs.
The mechanism, exercised by me (imported the module at this head and called the helper, since the fix is the path
arithmetic and not the measurement):
log_dir_for(out, "inferencex_result") -> /…/result/logs-inferencex_result
log_dir_for(out, "inferencex_result-B") -> /…/result/logs-inferencex_result-B
collide on serve.log: False ; wrote "baseline arm" and "second arm" -> both survive
Every call site moved, not just serve.log: llama-bench (main:565), serve_measure (:576 -> serve.log),
kld/kld-record (:482), and the two error strings that point a reader at serve.log now name the per-measurement
path (:414). log_dir is created once at :507 from RESULT_FILENAME, so a pair's two halves (A, B) cannot collide
either — which was the second half of the report in the issue.
One nit: nothing in inferencex_result.json names the log directory. The convention (logs-<RESULT_FILENAME>) makes it
derivable, but a reader holding only the JSON has to know the convention; one field ("logs": str(log_dir)) would make
the raw evidence findable from the artifact, which is the point of keeping it.
Not re-run by me: the measurement itself (an HRX serve + llama-bench + KL pass needs the device and the 27B file); the
serve.log/kld.log/llama-bench.log triplet is verified by the paths above, not by a run.
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT: READY at eaa954a4e — merge-only update, own content byte-identical.
Checked with a hash of the PR's own diff at both heads rather than by eyeballing the file list: git diff <merge-base> <head> | sha256sum is the same at 20b3be64b and at eaa954a4e, so nothing of this PR's moved. The branch is MERGEABLE/BLOCKED; the whole delta is main advancing (#1007, #1002, and the console-TUI/prefix-cache work that landed with them).
Evidence from the review at 20b3be64b stands: tools/hyperloom/custom/benchmark.py +38/-9 — one logs-<RESULT_FILENAME> directory per measurement, verified by calling log_dir_for (two names in one RESULT_DIR do not collide).
CI at this head: red/pending: build, pr_agent, Analyze (rust) — pr_agent failures on engine PRs are superseded-run cancellations ("Canceling since a higher priority waiting request exists"), not findings.
PR Reviewer Guide 🔍(Review updated until commit 2660fac)Here are some key observations to aid the review process:
|
|
Persistent review updated to latest commit 15548f9 |
|
Persistent review updated to latest commit 2660fac |
closes #892. Replacement for #893, which went
CONFLICTINGagainst main ateda7542; this is the same single commit rebased by pi-prs onto that main (conflict was only intools/hyperloom/custom/benchmark.py, where main's newgate_reference()sits on the same line as this PR'skld(…, log_dir)rename — both kept: the function verbatim from main, the parameter renamed as this PR intends).Root cause
tools/hyperloom/custom/benchmark.pywrote its three raw logs to fixed names insideRESULT_DIR, and those names do not include the measurement's ownRESULT_FILENAME:serve.log,llama-bench.log,kld.log/kld-record.log. Two measurements that share aRESULT_DIRtherefore collide on all three. The result JSONs are distinct (<RESULT_FILENAME>.json), so the numbers survive and the legs that produced them do not — silently.Before / after
Pre-fix, two measurements in one
RESULT_DIRleave onellama-bench.logholding the second arm's text. Post-fix,log_dir_for(out_dir, name)givesRESULT_DIR/logs-<RESULT_FILENAME>/and all three writers use it. Measured on the box 2026-11-02 19:03, the 19:01 arm had overwritten the 18:45 baseline'sserve.log,llama-bench.logandkld.log.Verification on the rebased head (
b6492e8)grep -rn "serve\.log\|llama-bench\.log\|kld\.log"outsidebenchmark.pyfinds no consumer of the old flat paths, so nothing else reads the moved files. Untouched: the result JSON path, the levers,HL_CTX/HL_LONGCTX/HL_LONGTOK, the KLD gate, the greedy-text gate and the score.