{
  "schemaVersion": 1,
  "editionId": "m1-pro-engine-2026-09-30",
  "title": "M1 Pro engine microbenchmarks — 30 September 2026",
  "measurementKind": "historical_synthetic_engine_microbenchmark",
  "measurementDate": "2026-09-30",
  "provenanceVerifiedAt": "2026-10-30T20:53:40.293080+00:00",
  "scope": "Three Q4_K_M GGUF models measured with llama-bench on one Apple M1 Pro machine.",
  "customerTelemetry": false,
  "lociAppBenchmark": false,
  "machine": {
    "chip": "Apple M1 Pro",
    "cpuCores": 10,
    "gpuCores": 16,
    "unifiedMemoryGiB": 32,
    "osVersion": null,
    "productIdentifier": null,
    "powerMode": null,
    "thermalState": null,
    "configurationSource": "Retained environment receipt; CPU and GPU identities also appear in each benchmark result."
  },
  "runtime": {
    "name": "llama.cpp",
    "executable": "llama-bench",
    "commit": "7fe450e19305b828c199d602c23a8337aaa1f03b",
    "commitUrl": "https://github.com/ggml-org/llama.cpp/commit/7fe450e19305b828c199d602c23a8337aaa1f03b",
    "benchmarkSourceUrl": "https://github.com/ggml-org/llama.cpp/blob/7fe450e19305b828c199d602c23a8337aaa1f03b/tools/llama-bench/llama-bench.cpp",
    "benchmarkSourceSha256": "1944ab22165852d502c47d943b46353d7c05b48caa0b56246da051fc6a062ec0",
    "recordedExecutableSha256": "58570044544019f61c4f6f68f504c7f4304579faa6ffdc783d8ddab74974c563",
    "executableFreshlyRehashed": false,
    "backends": [
      "MTL",
      "BLAS"
    ]
  },
  "protocol": {
    "threads": 6,
    "batchSize": 512,
    "microBatchSize": 128,
    "requestedGpuLayers": 99,
    "flashAttention": true,
    "keyCacheType": "f16",
    "valueCacheType": "f16",
    "kvOffloadDisabled": false,
    "repetitionsPerTest": 3,
    "priorContextTokens": 0,
    "warmup": "Default warmup: one full prompt-processing pass before pp512; one single-token generation step before tg128.",
    "cacheReset": "The runtime clears sequence memory before each timed repetition.",
    "requestedContextRule": "promptTokens + generatedTokens + priorContextTokens; requested context is not a measurement of allocated context.",
    "timing": "Per-repetition wall-clock nanoseconds around synthetic llama_decode work and backend synchronization; model loading is outside this interval.",
    "summary": "Mean and sample standard deviation of repetition token rates. Each repetition rate is token count × 1,000,000,000 / elapsed nanoseconds.",
    "syntheticTokens": true,
    "naturalLanguagePrompts": false
  },
  "models": [
    {
      "id": "minicpm5-2b",
      "name": "MiniCPM5-2B",
      "quantization": "Q4_K_M",
      "artifact": {
        "format": "GGUF",
        "repository": "openbmb/MiniCPM5-2B-GGUF",
        "revision": "2079a22f3beaa4e306449978533478fe0522f4b3",
        "filename": "MiniCPM5-2B-Q4_K_M.gguf",
        "fileBytes": 1561318368,
        "sha256": "ec2d5801640099e97d8d7e8003ad4d81f336e757811f03a26173dddf386602fd",
        "url": "https://huggingface.co/openbmb/MiniCPM5-2B-GGUF/blob/2079a22f3beaa4e306449978533478fe0522f4b3/MiniCPM5-2B-Q4_K_M.gguf",
        "checksumReceiptMatchedUpstream": true
      },
      "commandStartedAt": "2026-09-30T16:53:24.549684+00:00",
      "loadAverageBefore": {
        "oneMinute": 32.86572265625,
        "fiveMinutes": 25.07080078125,
        "fifteenMinutes": 24.49462890625
      },
      "errorsAndWarningsInRetainedBenchmarkLog": [],
      "processExitStatus": null,
      "tests": [
        {
          "id": "pp512",
          "kind": "prompt_processing",
          "measuredAt": "2026-09-30T16:53:25Z",
          "promptTokens": 512,
          "generatedTokens": 0,
          "priorContextTokens": 0,
          "requestedContextTokens": 512,
          "allocatedContextTokens": null,
          "samplesNs": [
            641562875,
            645963167,
            641383125
          ],
          "samplesTokensPerSecond": [
            798.0511652891387,
            792.6148519858253,
            798.2748220885917
          ],
          "meanTokensPerSecond": 796.313613,
          "sampleStddevTokensPerSecond": 3.205173,
          "meanElapsedNs": 642969722,
          "minTokensPerSecond": 792.6148519858253,
          "maxTokensPerSecond": 798.2748220885917,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        },
        {
          "id": "tg128",
          "kind": "single_token_generation",
          "measuredAt": "2026-09-30T16:53:28Z",
          "promptTokens": 0,
          "generatedTokens": 128,
          "priorContextTokens": 0,
          "requestedContextTokens": 128,
          "allocatedContextTokens": null,
          "samplesNs": [
            1689188958,
            1686516833,
            1687589041
          ],
          "samplesTokensPerSecond": [
            75.77601037100789,
            75.89607022914309,
            75.84784973725128
          ],
          "meanTokensPerSecond": 75.839977,
          "sampleStddevTokensPerSecond": 0.060416,
          "meanElapsedNs": 1687764944,
          "minTokensPerSecond": 75.77601037100789,
          "maxTokensPerSecond": 75.89607022914309,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        }
      ]
    },
    {
      "id": "spark-1.7b",
      "name": "Spark-X2.5-1.7B",
      "quantization": "Q4_K_M",
      "artifact": {
        "format": "GGUF",
        "repository": "XHToken/Spark-X2.5-1.7B-GGUF",
        "revision": "1f7fa33b1245c14730da39e125714ad3a327901b",
        "filename": "Spark-X2.5-1.7B-Q4_K_M.gguf",
        "fileBytes": 1107457856,
        "sha256": "902bde2522394954ac17821b3e5fd0df02defbc6944f122253f2580acf0503f4",
        "url": "https://huggingface.co/XHToken/Spark-X2.5-1.7B-GGUF/blob/1f7fa33b1245c14730da39e125714ad3a327901b/Spark-X2.5-1.7B-Q4_K_M.gguf",
        "checksumReceiptMatchedUpstream": true
      },
      "commandStartedAt": "2026-09-30T16:53:33.142614+00:00",
      "loadAverageBefore": {
        "oneMinute": 31.69775390625,
        "fiveMinutes": 25.0830078125,
        "fifteenMinutes": 24.505859375
      },
      "errorsAndWarningsInRetainedBenchmarkLog": [],
      "processExitStatus": null,
      "tests": [
        {
          "id": "pp512",
          "kind": "prompt_processing",
          "measuredAt": "2026-09-30T16:53:33Z",
          "promptTokens": 512,
          "generatedTokens": 0,
          "priorContextTokens": 0,
          "requestedContextTokens": 512,
          "allocatedContextTokens": null,
          "samplesNs": [
            464548542,
            464428666,
            468941875
          ],
          "samplesTokensPerSecond": [
            1102.1453168181508,
            1102.42979704444,
            1091.8197484496345
          ],
          "meanTokensPerSecond": 1098.798287,
          "sampleStddevTokensPerSecond": 6.045266,
          "meanElapsedNs": 465973027,
          "minTokensPerSecond": 1091.8197484496345,
          "maxTokensPerSecond": 1102.42979704444,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        },
        {
          "id": "tg128",
          "kind": "single_token_generation",
          "measuredAt": "2026-09-30T16:53:35Z",
          "promptTokens": 0,
          "generatedTokens": 128,
          "priorContextTokens": 0,
          "requestedContextTokens": 128,
          "allocatedContextTokens": null,
          "samplesNs": [
            1296611500,
            1298268250,
            1301578500
          ],
          "samplesTokensPerSecond": [
            98.71885294862803,
            98.59287554786926,
            98.34212842329525
          ],
          "meanTokensPerSecond": 98.551286,
          "sampleStddevTokensPerSecond": 0.191775,
          "meanElapsedNs": 1298819416,
          "minTokensPerSecond": 98.34212842329525,
          "maxTokensPerSecond": 98.71885294862803,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        }
      ]
    },
    {
      "id": "spark-4b",
      "name": "Spark-X2.5-4B",
      "quantization": "Q4_K_M",
      "artifact": {
        "format": "GGUF",
        "repository": "XHToken/Spark-X2.5-4B-GGUF",
        "revision": "9826e0be84e6e6e8b9668abc91421109a1df1e2d",
        "filename": "Spark-X2.5-4B-Q4_K_M.gguf",
        "fileBytes": 2600224352,
        "sha256": "adfcfa19a4ed6a5985da8bf565fe15f8e1a7e131d79bae2d19d48d1c40109428",
        "url": "https://huggingface.co/XHToken/Spark-X2.5-4B-GGUF/blob/9826e0be84e6e6e8b9668abc91421109a1df1e2d/Spark-X2.5-4B-Q4_K_M.gguf",
        "checksumReceiptMatchedUpstream": true
      },
      "commandStartedAt": "2026-09-30T16:53:39.654764+00:00",
      "loadAverageBefore": {
        "oneMinute": 31.0810546875,
        "fiveMinutes": 25.06494140625,
        "fifteenMinutes": 24.50244140625
      },
      "errorsAndWarningsInRetainedBenchmarkLog": [],
      "processExitStatus": null,
      "tests": [
        {
          "id": "pp512",
          "kind": "prompt_processing",
          "measuredAt": "2026-09-30T16:53:40Z",
          "promptTokens": 512,
          "generatedTokens": 0,
          "priorContextTokens": 0,
          "requestedContextTokens": 512,
          "allocatedContextTokens": null,
          "samplesNs": [
            1188076958,
            1186304584,
            1186505333
          ],
          "samplesTokensPerSecond": [
            430.9485143638313,
            431.59236414111336,
            431.519341514835
          ],
          "meanTokensPerSecond": 431.353407,
          "sampleStddevTokensPerSecond": 0.352543,
          "meanElapsedNs": 1186962291,
          "minTokensPerSecond": 430.9485143638313,
          "maxTokensPerSecond": 431.59236414111336,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        },
        {
          "id": "tg128",
          "kind": "single_token_generation",
          "measuredAt": "2026-09-30T16:53:44Z",
          "promptTokens": 0,
          "generatedTokens": 128,
          "priorContextTokens": 0,
          "requestedContextTokens": 128,
          "allocatedContextTokens": null,
          "samplesNs": [
            2859482042,
            2854946458,
            2859785166
          ],
          "samplesTokensPerSecond": [
            44.76335158603524,
            44.83446603396861,
            44.75860687781468
          ],
          "meanTokensPerSecond": 44.785475,
          "sampleStddevTokensPerSecond": 0.042494,
          "meanElapsedNs": 2858071222,
          "minTokensPerSecond": 44.75860687781468,
          "maxTokensPerSecond": 44.83446603396861,
          "timeToFirstTokenMs": null,
          "peakMemoryBytes": null
        }
      ]
    }
  ],
  "limitations": [
    "These are historical llama.cpp engine microbenchmarks on one recorded hardware configuration. They do not measure Loci app performance or customer usage.",
    "The host was under substantial concurrent load: the recorded one-minute load averages before the three commands were approximately 31 to 33 on a 10-core CPU. Background work, thermal state and power mode were not controlled in the retained evidence.",
    "Each test has three sequential repetitions from one session on 30 September 2026. Variation across those repetitions does not describe variation across machines, people or future runs.",
    "The benchmark feeds synthetic token IDs. The generation test performs 128 single-token decode steps without a preceding prompt; it is not a 128-token natural-language answer or a quality test.",
    "Requested context was 512 tokens for prompt processing and 128 tokens for generation. Actual allocated context, OS version, exact Mac product identifier and peak process memory were not retained.",
    "The timings exclude model loading and include no app interface, time-to-first-token, tools, retrieval or conversation history. No phone or tablet was measured.",
    "Original timing and checksum receipts are retained. The original executable and model cache are no longer available for a fresh local hash check. The runtime commit and immutable model artifact hashes and sizes were independently checked against the upstream sources on 30 October 2026.",
    "No memory-fit threshold, Loci compatibility claim, device-wide speed estimate or cross-model quality conclusion follows from these measurements."
  ],
  "reuse": {
    "license": null,
    "statement": "No dataset reuse license is specified. Model licenses apply separately to the model artifacts."
  },
  "sourceReceipts": [
    {
      "name": "environment.json",
      "sha256": "1df1fe3bafee35cfd8a5e9e5718f10cea3b9a65262f22cd97dbd3946dcaa76f1"
    },
    {
      "name": "runtime-sha256.json",
      "sha256": "f026b2793066f219a22170f6001970e1f64a1dc5ccf43b4672696e1a73f61eb6"
    },
    {
      "name": "MiniCPM5-2B-Q4_K_M.gguf.receipt.json",
      "sha256": "83a911f30e24b2742885e4ade9840cf06be0b5247968e4d66acb15018a856b7f"
    },
    {
      "name": "minicpm5-2b-bench-command.json",
      "sha256": "c9c7969bc79756e5037fc5d14bf9dd580f0b0c35a5770702dc965061d8251209"
    },
    {
      "name": "minicpm5-2b-bench.json",
      "sha256": "517297e24050af4a67c9b35117699192a07bd732d47cd69a999365bbb14607a9"
    },
    {
      "name": "minicpm5-2b-bench.log",
      "sha256": "aed4cb1995a3e564a3c0a8def3b867e491af13177466808a4d81cab3bf2f452c"
    },
    {
      "name": "Spark-X2.5-1.7B-Q4_K_M.gguf.receipt.json",
      "sha256": "82d048c9d97104508b77b327222f79330dbb73f73e67cbacffc18cc0789e90d2"
    },
    {
      "name": "spark-1.7b-bench-command.json",
      "sha256": "ce0063e120fdd50c5ed80c2335e981b998bf02d7eb959227401e6280e846bfa8"
    },
    {
      "name": "spark-1.7b-bench.json",
      "sha256": "e63ae4a0a91a45fb0cd67ddffc584c84d4abb253fea23a9f5a85f246c6b51313"
    },
    {
      "name": "spark-1.7b-bench.log",
      "sha256": "e594b6e921d0a57bf749f06824a2bf2d1918de1d580504bf27a3417b0410188e"
    },
    {
      "name": "Spark-X2.5-4B-Q4_K_M.gguf.receipt.json",
      "sha256": "1007bf2fbff77ff28aa22fcb3d61fd8e99eff88a2ada8902f0ef8932d6e355cb"
    },
    {
      "name": "spark-4b-bench-command.json",
      "sha256": "72f246e69c80804fe59d831e3751041e0fc7401e13cb7648819f050dbce6504e"
    },
    {
      "name": "spark-4b-bench.json",
      "sha256": "426a3f12e7edd304081a65061a5f42413ef10ae2171fec8876eae55fe99ed0a0"
    },
    {
      "name": "spark-4b-bench.log",
      "sha256": "e68a437b0f7d0b182e43516afe436ab0e417e4cbd9b03346d2edd709bd7093c7"
    }
  ]
}
