Skip to content

bench: tiled vocab head so the decode roofline measures on every ANE family (+ re-run landed machines) #181

Description

@sbryngelson

The headline Decode @b1 (tok/s) roofline is measurable only on A16+ (M5) today, and reads n/a on every older family (M1/M2/M1 Max). Root cause: bench/decode_measurement.py builds the vocab head as a single untiled matmul h @ Wvocab.T -> [B, 32000], and 32000 exceeds the 16384 max matmul dimension on the A13-A15 families, which raises NotImplementedError for the ANE decode row. Only A16 (max-dim 65536) fits it untiled.

Fix (in progress): tile the vocab head along the output axis so no single matmul output dim exceeds 16384 (a 32000 vocab -> two chunks of 16384 + 15616). Tiling the same way on every chip keeps the number comparable across generations. Verified on M5: the tiled result is bit-identical to the untiled one (relerr 0.00 vs untiled, same fp16 accuracy vs numpy), so it changes nothing except making the head fit the cap.

What remains after the code lands (this issue tracks it): the committed datapoints predate the tiled head, so they need a re-run to populate decode on the older families:

Until then, Peak fp16 GEMM (TF/s) is the headline performance metric (measured on every machine, no dim-cap issue), and the decode column is footnoted as migrating.

Related: the roofline_analysis.py KeyError: 'ane' crash visible in the older JSONs is already fixed by #147; those JSONs are just stale, and a re-run picks up the fix.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions