Commit 00bfd4e
Fix the five merge blockers and the minors from the 7.2 review
MAJOR-1 (crash). jepa_ac_context_update/_trim allocated a fresh ggml_view_3d
into a pool sized for four tensor overheads, so the third _update walked off the
end and aborted inside ggml_new_object() — in Release, with no error path. The
documented receding-horizon loop was exactly what crashed. The handle now creates
the view once, immediately after the backend buffer exists, and afterwards only
moves its extents (ne[1], nb[2], nb[3]); nothing allocates per frame.
MANDATORY regression, tests/test-predictor.cpp::run_ac_context_loop:
six _updates (1 -> 6 frames) then a _trim, each step checked against
jepa_ac_rollout_ex over the same frames — max|d| 0.000e+00 at every step,
bit-identical, on a handle whose capacity is 32.
tests/forge-gguf.h raises the forged jepa.pred.n_frames 3 -> 5 so the capacity
guard no longer masks the object budget in test-errors either.
MAJOR-2. gen_benchmarks_md.py keyed the GPU->CPU cross-reference on the raw
jepa-bench shape string while runs_from_results_json feeds back the rendered
label, so the join missed for video models at one frame. Both sides now key on
shape_label(); vjepa2_1-vitb-384 f16 and q4_k have their cpu_f16_t32_ms and
speedup cells back (60.335 ms, 13.77x and 17.52x).
MAJOR-3. results.svg and results-latency.svg were stale after benchmarks.json
grew; regenerated with --split. All four figures --check green.
MAJOR-4 (published false claim). vjepa2-ac-vitg-q4_k.gguf does NOT report q4_0:
it is file_type 12 (q4_k), 121 q4_0 / 137 q4_K, because the AC predictor's 24
blocks are 1024-wide and keep the K-quant. Only the encoder-only ViT-g file goes
the other way (158/52, file_type 2). docs/quantization.md now tabulates both and
says why they differ; both hub cards corrected.
MAJOR-5. python bindings: added jepa_ac_cem_default_params and jepa_ac_plan plus
the jepa_ac_cem_params ctypes struct, and restored header order (the new binds
had been appended). 92 declared prototypes, 92 bound, none extra. Full python
suite green against a wheel built from this branch: 52 passed, 1 skipped.
MINORs. 1: the churn accounting was wrong — measured against main it is 26
document cells (not 16), each at most one unit in the last printed digit, and
tokens_per_s in the JSON moves by up to 1.5 at its 0.1 resolution; the bound
describes the rendered document, not the JSON, and CHANGELOG + the generator now
say so. 2/3: the planning table is re-taken FROM tests/results/benchmarks-gpu.json
(the grid gained a K:H syntax so H=4 rows are measured and recorded rather than
quoted ad hoc), and cached-vs-explicit is re-measured back-to-back in ONE session:
+0.11 / +0.07 / +0.14 / -0.18 / -0.20 % across K=16..256 and H=2..4 — plus or
minus 0.2 %, straddling zero. The earlier "0.3-1.3 %" compared two sessions; the
conclusion "not a speed-up" survives and is now properly evidenced, and every
mention of the K=64 row traces to the artifact. 4: dead parity anchor fixed.
5: 118 -> 126 cases. 6: the rollout no longer allocates a tail buffer at
horizon 1 (144 MiB at the CEM defaults). 7: generated_from_dir is relative again
and the GPU artifact's ambiguous top-level device_index is dropped — the
per-row device field is authoritative and the protocol block says so.
NITs. 1: the 11 611.1 MiB figure is quoted as the library prints it. 2: the
encoder-cosine sentence is scoped, and the global max |d| (4.18e-2 on
enc.blk.31.attn_qkv.bias, values to 8.2) is given. My reproducible count below
0.999 is 38, not 39 — nothing sits within 4e-6 of the boundary, so it is not a
rounding artefact; the doc now states the mapping method so the difference can be
resolved. 3: the CEM label says "final <= initial", which is what is checked.
4: rollout failures name the entry point the caller used. 5: TODO left for a
strided jepa_ac_energy.
Also: jepa.h notes that axis={} and close_gripper=None are reference defaults the
struct cannot express.
ctest 16/16 on build/ and build-cuda/, test-errors 126/0, python 52 passed,
all five --check generators green, mkdocs strict, README 3 tables.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JzdJ2iSxVUKxBkkJ1By1nm1 parent d53ab48 commit 00bfd4e
19 files changed
Lines changed: 2608 additions & 1353 deletions
File tree
- docs
- assets
- include
- python/src/jepa_cpp
- scripts
- src
- tests
- results
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
38 | | - | |
39 | | - | |
40 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
57 | 63 | | |
58 | | - | |
| 64 | + | |
59 | 65 | | |
60 | 66 | | |
61 | 67 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
365 | | - | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
366 | 370 | | |
367 | 371 | | |
368 | 372 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
333 | 333 | | |
334 | 334 | | |
335 | 335 | | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
345 | 347 | | |
346 | 348 | | |
347 | 349 | | |
348 | 350 | | |
349 | 351 | | |
350 | 352 | | |
351 | | - | |
| 353 | + | |
352 | 354 | | |
353 | 355 | | |
354 | 356 | | |
| |||
0 commit comments