Skip to content

benchmarks: Mac M4 Pro and Galaxy S26 README numbers - #725

Closed
ncylich wants to merge 1 commit into
mainfrom
readme-benchmark-numbers
Closed

ncylich wants to merge 1 commit into
mainfrom
readme-benchmark-numbers

Conversation

@ncylich

@ncylich ncylich commented Jun 15, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fills the README benchmark table for the two devices measured so far — Mac M4 Pro and Galaxy S26. README-only change; numbers come from the existing cactus test engine suites (no new tooling).

Device Gemma4 Text (pf/dec tps) Gemma4 Vision (lat/dec) Parakeet (lat) RAM
Mac M4 Pro 324 / 39 1.2s / 48 (NPU) 1.2s 1385 MB
Galaxy S26 248 / 21 17s / 16 4.2s 4024 MB

How the numbers were produced

All via existing suites on CQ4 bundles (cactus download apple bundle on Mac for the NPU vision encoder):

cactus test --component engine --suite llm --model google/gemma-4-E2B-it   # Gemma4 Text (test_1k_context: ~1k prefill / 100 decode)
cactus test --component engine --suite vlm --model google/gemma-4-E2B-it   # Gemma4 Vision (256px)
cactus test --component engine --suite stt --transcription-model <parakeet bundle>  # Parakeet (20s test.wav)

Notes for reviewers

  • NPU vs CPU. Per the table preamble, VLM/Transcribe are meant to use NPU prefill. NPU (Apple ANE) is Mac-only.
    • Mac Gemma4 Vision is NPU — the cactus download apple bundle ships vision_encoder.mlpackage; prefill jumps to ~240 tps / ~1.2s latency vs ~84 tps / ~3.3s on CPU.
    • Mac Parakeet is CPU. There is no published Parakeet-TDT apple bundle, and a local --npu transpile fails — coremltools can't convert the TDT audio encoder (Unsupported fx node _assert_tensor_metadata). So this cell is CPU until that conversion is supported.
    • Galaxy S26 is CPU for all three (no ANE path on Android).
  • Parakeet is a TDT transducer, so decode_tps isn't meaningful — the Parakeet column reports latency for 20s of audio (RTF ≈ 16× on Mac, ≈ 4.8× on Samsung).
  • LLM number uses the existing test_1k_context suite (≈1221 prefill tokens, 100 decode) rather than a new exact-1000 fixture, per the request to reuse existing tests.
  • Device label "Galaxy S26" follows the existing table; the connected unit reports model SM-S942U1.
  • The "Parakeet 1.1B" column header still reads 1.1B while the model is 0.6B (pre-existing; left untouched).

@ncylich
ncylich force-pushed the readme-benchmark-numbers branch from 66c91c4 to 899afb5 Compare June 15, 2026 23:28
Fill the README benchmark table for Mac M4 Pro and Galaxy S26, measured
with the existing cactus test engine suites (test_1k_context for LLM,
test_vlm for 256px vision, test_stt for 20s transcribe) on CQ4 bundles.
Mac vision runs the Apple NPU vision encoder for prefill; all other
figures are CPU.

Signed-off-by: Noah Cylich <noahcylich@gmail.com>
@ncylich
ncylich force-pushed the readme-benchmark-numbers branch 2 times, most recently from 520a3c7 to be7ee32 Compare June 16, 2026 02:39
@ncylich

ncylich commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator Author

Consolidated into #729, which records these Mac M4 Pro and Galaxy S26 numbers alongside the Parakeet NPU work — Parakeet transcription on Mac now runs on the Neural Engine (1.2s CPU → 0.2s NPU).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant