general by Ryan Caldwell

M5 Max vs M3 Max: What the llama.cpp Data Shows

The community llama.cpp benchmark has full M3 Max numbers but no M5 Max results yet, only projected memory bandwidth figures.

M5 Max vs M3 Max: What the llama.cpp Data Shows

People comparing Apple Silicon chips for running local language models often turn to the long-running community benchmark thread in the llama.cpp repository. As of this writing, that thread has complete results for the M3 Max but does not yet have measured throughput for the M5 Max, so a head-to-head comparison based on real numbers is not possible. This article describes only what the source actually reports.

The Benchmark Setup

The reference benchmark lives in the GitHub discussion “Performance of llama.cpp on Apple Silicon M-series” (https://github.com/ggml-org/llama.cpp/discussions/4167). It uses the LLaMA 7B v2 model and reports two metrics in tokens per second: prompt processing (PP), measured at a batch size of 512, and text generation (TG), measured at a batch size of 1. Results are collected across F16, Q8_0, and Q4_0 quantizations. To keep results comparable across the many contributors, the thread asks people to run a fixed build commit so that performance factors stay consistent.

What the M3 Max Numbers Look Like

The M3 Max has full data in the summary table, reported for two GPU configurations.

The 40-GPU-core M3 Max, with 400 GB/s of memory bandwidth, records 779.17 t/s prompt processing and 25.09 t/s text generation in F16, and 759.7 t/s prompt processing with 66.31 t/s text generation in Q4_0.

The 30-GPU-core M3 Max, with 300 GB/s of bandwidth, records 589.41 t/s prompt processing and 19.54 t/s text generation in F16, and 567.59 t/s prompt processing with 56.58 t/s text generation in Q4_0.

These figures show the expected pattern for local inference on this hardware: more aggressive quantization (Q4_0) raises text-generation throughput, and the higher-bandwidth configuration leads on both metrics.

The M5 Max Gap

The summary table includes rows for the M5 series, but they are marked as having no data collected. What the thread does list for the M5 Max are projected memory bandwidth specifications: 460 GB/s for a 32-core variant and 614 GB/s for a 40-core variant. No prompt-processing or text-generation tokens-per-second numbers are populated for the M5 Max.

Memory bandwidth matters for local inference because text generation is often limited by how fast the model weights can be read from memory rather than by raw compute. On that basis, the higher projected bandwidth of the M5 Max suggests room for improvement over the M3 Max. One commenter in the thread pointed to a Geekbench result and speculated about roughly a 30 percent increase, but that is community speculation, not a measured llama.cpp result.

What to Take Away

Anyone wanting a real M5 Max versus M3 Max comparison for local language models should wait for contributors to add measured M5 Max results to the discussion. Until then, the only solid data point is the M3 Max baseline, alongside projected bandwidth figures that hint at, but do not prove, a performance gain. Checking the live thread is the most reliable way to see whether measured M5 Max numbers have been added.

Source: github.com