Skip to content

Prove GGUF quantized runtime capabilities - #661

Merged
justinchuby merged 4 commits into
mainfrom
justinchuby-prove-gguf-quantization-runtime
Aug 27, 2026
Merged

Prove GGUF quantized runtime capabilities#661
justinchuby merged 4 commits into
mainfrom
justinchuby-prove-gguf-quantization-runtime

Conversation

@justinchuby

@justinchuby justinchuby commented Aug 26, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to merged #659 and rebased onto current main (cc3647ea).

  • generate testdata/evidence/gguf_quantization_capabilities.json for all 25 stored qtypes and every projection, affine-only, output, embedding, expert-major, and non-MatMul route
  • separate parse/dequantization capability, packed target storage, source fidelity, operator ABI, compute capability, and real runtime evidence
  • retain Q4_K/Q6_K as supported lossy affine INT4 target-storage routes while reporting source_fidelity=false; dequantize/requantize is never labeled preserved
  • retain qtype-level runtime support only for the exact Q8_0 projection/output/embedding CPU route
  • keep all IQ/MXFP4 pkg.nxrt::BlockQuantizedMatMul/v1 execution deferred; byte ABI compatibility is not execution evidence
  • strictly parse runtime import routes as duplicate-free JSON and require top-level preserve_quantization to be exactly boolean true
  • persist and hash-verify quantization_report.json in every evidenced graph/runtime package

Pinned artifacts

Selected total: 1,763,532,768 bytes (1.64 GiB), below the 16 GiB policy.

Artifact Bytes SHA-256 Result
Qwen/Qwen2.5-0.5B-Instruct-GGUF@9217f5db79a29953eb74d5343926648285ec7e67/qwen2.5-0.5b-instruct-q8_0.gguf 675,710,816 ca59ca7f13d0e15a8cfa77bd17e65d24f6844b554a7b6c12e07a5f89ff76844e Q8_0 source-faithful packed target; full logits, prefill + 20 decode steps, replay, rollback, reorder, deterministic generation; ORT 1.29.0 CPU and ORT GenAI 0.15.2 passed
unsloth/SmolLM2-135M-Instruct-GGUF@9e6855bc4be717fca1ef21360a1db4b29d5c559a/SmolLM2-135M-Instruct-Q4_K_M.gguf 105,454,144 ed5fa30c487b282ec156c29062f1222e5c20875a944ac98289dbd242e947f747 lossy INT4 affine block-32 target storage succeeds with source_fidelity=false; explicit float import passed same-artifact full-logit prefill/decode and deterministic generation; runtime support remains deferred
neopolita/smollm-135m-gguf@22cca988936eafe92908e7558907c3964e10bba7/ggml-model-f16.gguf 270,885,504 ec8c775c16944a7e4b5251f97b3f848500dcc3e701b0d492ce9055cea42138a2 float package/runtime evidence retained and regenerated post-#668
LiquidAI/LFM2-350M-GGUF@8fdc9d526b7ed346b19257551b05816c7912ecc2/LFM2-350M-F16.gguf 711,482,304 379ffdcbf08147c0313f6f1ce7ff558a2bc935eda633f4b46c52347032419c42 heterogeneous convolution/KV state package/runtime evidence retained and regenerated post-#668

Post-#668 package identities

Route Graph SHA-256 Runtime package SHA-256
SmolLM F16 / ONNX runtime 4b608b099fb17471f342c925c20173f297abd0f8456c9e96a11b1d044272d1ad 57038e28e83a2b4251e334b6098f59b4344c7e526746e29d9fa42eeaebfcbddc
SmolLM F16 / ORT GenAI same graph 15d0218a4b326648d514a98c4f073251c674312b1faa83bec9022cc91daa0a53
Qwen2.5 Q8_0 / ORT GenAI 240e5e374803c94efdb17eee39c09b0d3e9aed10b6d8b4e1c92e39918ea2155e 5029bbfcdd8d1ae1d2b0ed9587cc288a68cb38bb7f92b9e10f9bf64a436b1762
LFM2 F16 / ORT GenAI 27e4ebb4c0c8b6c01ee57fa7825f34c5ddadc8ca5dc0c75d989e4507d4dcdfdb ef3816d4f93c7061fd4653248629f0439d6ad1c623bdd0f27d31fe0349cb3505

Every graph and runtime identity includes validated quantization_report.json; tests assert exact report save/load equality.

Validation

  • 394 focused capability/registry/report/repacker/evidence/doc tests passed
  • 8,488 broad serial tests passed, 62 skipped, 12 deselected, 1 subtest passed
  • all 3 pinned real runtime-evidence routes passed together with zero process exit
  • pinned Q4_K_M lossy-target + explicit-float qualification passed
  • initialized pinned Ruff/format linters passed
  • strict changed-source mypy passed
  • final GPT-5.6 Sol medium independent review: no findings
  • all 17 prior lint review threads replied to and resolved

Limitations

  • Native IQ/MXFP4 execution remains deferred pending pinned real-artifact full-logit and deterministic native-runtime proof.
  • ORT GenAI is optional downstream evidence and pinned here to 0.15.2; direct ORT evidence is pinned to 1.29.0 CPU.

Do not merge directly.

Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
Comment thread src/mobius/integrations/gguf/_quant_capabilities.py Fixed
@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

🏗️ Architecture Diff

Comparing cc3647e4c4d0bd

Model Sub-model Changes Status

No architecture changes detected.


Legend: ⚪ No change · 🔵 Minor (attrs/inits) · 🟡 Moderate (nodes added/removed) · 🔴 Major (interface changed)

@github-actions

github-actions Bot commented Aug 26, 2026

Copy link
Copy Markdown

Performance Comparison

Comparing cc3647e4c4d0bd

Model Metric Baseline Current Delta
bert (feature-extraction) model_size_bytes 359 KB 359 KB +0.0%
bert (feature-extraction) num_nodes 68 68 +0.0%
falcon model_size_bytes 364 KB 364 KB +0.0%
falcon num_nodes 66 66 +0.0%
gemma2 model_size_bytes 428 KB 428 KB +0.0%
gemma2 num_nodes 105 105 +0.0%
gpt2 model_size_bytes 324 KB 324 KB +0.0%
gpt2 num_nodes 54 54 +0.0%
llama model_size_bytes 425 KB 425 KB +0.0%
llama num_nodes 60 60 +0.0%
llama (static-cache) model_size_bytes 425 KB 425 KB +0.0%
llama (static-cache) num_nodes 56 56 +0.0%
mamba (ssm-text-generation) model_size_bytes 296 KB 296 KB +0.0%
mamba (ssm-text-generation) num_nodes 94 94 +0.0%
phi3 model_size_bytes 421 KB 421 KB +0.0%
phi3 num_nodes 58 58 +0.0%
phi3 (static-cache) model_size_bytes 421 KB 421 KB +0.0%
phi3 (static-cache) num_nodes 54 54 +0.0%
qwen2 model_size_bytes 425 KB 425 KB +0.0%
qwen2 num_nodes 60 60 +0.0%
qwen2 (static-cache) model_size_bytes 425 KB 425 KB +0.0%
qwen2 (static-cache) num_nodes 56 56 +0.0%
qwen3_5_moe (hybrid-text-generation) model_size_bytes 506 KB 506 KB +0.0%
qwen3_5_moe (hybrid-text-generation) num_nodes 265 265 +0.0%
qwen3_5_text (hybrid-text-generation) model_size_bytes 458 KB 458 KB +0.0%
qwen3_5_text (hybrid-text-generation) num_nodes 127 127 +0.0%
qwen3_5_vl (hybrid-qwen-vl) model_size_bytes 977 KB 977 KB +0.0%
qwen3_5_vl (hybrid-qwen-vl) num_nodes 450 450 +0.0%
t5 (seq2seq) model_size_bytes 836 KB 836 KB +0.0%
t5 (seq2seq) num_nodes 176 176 +0.0%
whisper (speech-to-text) model_size_bytes 1008 KB 1008 KB +0.0%
whisper (speech-to-text) num_nodes 128 128 +0.0%

No performance regressions.

@justinchuby
justinchuby force-pushed the justinchuby-audit-remaining-dense-gguf branch from 0037a86 to ab69b56 Compare August 27, 2026 05:20
Base automatically changed from justinchuby-audit-remaining-dense-gguf to main August 27, 2026 05:22
@justinchuby
justinchuby requested a review from a team August 27, 2026 05:22
justinchuby and others added 4 commits August 26, 2026 22:36
Generate an exhaustive qtype-by-role capability matrix that separates parsing, exact dequantization, affine conversion, byte preservation, and evidenced execution. Reclassify Q4_K and Q6_K as lossy dequantize/requantize routes, retain runtime support only for the pinned Q8_0 CPU ABI, and add synthetic ORT kernel, transform, package, and real-artifact evidence gates.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Separate supported packed target storage from source fidelity for lossy GGUF routes, retain Q4_K and Q6_K as affine target conversions, and parse runtime import routes as strict duplicate-free JSON before accepting preservation evidence.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: da8e7ec7-2747-41aa-99eb-05a1c5227ce2
Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Bind every pinned graph and runtime package to its post-#668 quantization_report.json identity. Validate report save/load equality, qualify lossy Q4_K_M-derived INT4 target storage separately from source fidelity, and retain exact Q8/full-state runtime evidence.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: da8e7ec7-2747-41aa-99eb-05a1c5227ce2
Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Release ORT GenAI objects before interpreter teardown so the complete pinned runtime-evidence group exits cleanly, and retain the generated-document size guard after the latest tokenizer census landed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: da8e7ec7-2747-41aa-99eb-05a1c5227ce2
Signed-off-by: Justin Chu <justinchuby@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 27, 2026 05:47
@justinchuby
justinchuby force-pushed the justinchuby-prove-gguf-quantization-runtime branch from b29986c to 4c4d0bd Compare August 27, 2026 05:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR strengthens Mobius’ GGUF quantization claims by (1) introducing a machine-readable capability/evidence matrix for all stored qtypes and tensor roles, and (2) tightening the definition of “runtime supported” to require concrete, preserved-quantization, full-stateful, CPU execution evidence. It fits into the mobius.integrations.gguf subsystem by making quantization support and runtime proof auditable, reproducible, and test-closed.

Changes:

  • Add a generated, canonical JSON capability matrix (testdata/evidence/gguf_quantization_capabilities.json) and closure tests to ensure it exactly matches live registries/evidence.
  • Introduce qtype-level runtime evidence IDs (currently only Q8_0) plus stricter validation of preserve_quantization routes (duplicate-free JSON + boolean true).
  • Persist and validate quantization_report.json in evidenced graph/runtime packages; update docs generation and CI runtime pinning accordingly.

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tests/gguf_small_model_runtime_integration_test.py Extends integration assertions to require persisted quantization_report.json and validates lossy INT4 target-storage reporting vs explicit-float parity.
testdata/evidence/gguf_quantization_capabilities.json Adds the generated, machine-readable stored-qtype capability/evidence matrix (large canonical JSON).
src/mobius/integrations/gguf/_spec.py Adds runtime_evidence_ids to quant specs and validates they only accompany runtime=SUPPORTED.
src/mobius/integrations/gguf/_runtime_evidence.py Expands evidence records (EP/ORT version/result), adds iter_runtime_evidence(), and enforces strict preserved-quantization evidence requirements for qtype support.
src/mobius/integrations/gguf/_runtime_evidence_test.py Adds coverage for quantized runtime evidence validation and strict import-route JSON requirements.
src/mobius/integrations/gguf/_repacker_test.py Adds ORT round-trip + execution checks for exact affine ABI routes (MatMulNBits) using profiling evidence.
src/mobius/integrations/gguf/_quant_registry.py Introduces qtype-level runtime support mapping (Q8_0 only) and updates the rendered quantization matrix columns/content.
src/mobius/integrations/gguf/_quant_registry_test.py Tightens runtime support expectations and asserts lossy target-storage routes are never treated as source-preserving.
src/mobius/integrations/gguf/_quant_capabilities.py New: renders/checks the canonical capability matrix JSON derived from live registries + runtime evidence.
src/mobius/integrations/gguf/_quant_capabilities_test.py New: closure tests ensuring the committed matrix is current, role-complete, budget-bounded, and consistent.
src/mobius/integrations/gguf/_docs.py Enhances runtime evidence table with ORT/EP/result fields and links the new machine-readable capability matrix.
src/mobius/integrations/gguf/_docs_test.py Ensures docs + capability matrix are both current; adjusts doc length constraint.
scripts/generate_gguf_support_docs.py Updates generator/check to also emit/verify gguf_quantization_capabilities.json.
docs/api/build_from_gguf.md Regenerates docs to include updated runtime-evidence table and the expanded stored-qtype matrix.
.github/workflows/ort_genai_e2e.yml Pins onnxruntime==1.29.0 alongside onnxruntime-genai==0.15.2 for the e2e workflow.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@justinchuby
justinchuby merged commit 27c24d3 into main Aug 27, 2026
24 of 26 checks passed
@justinchuby
justinchuby deleted the justinchuby-prove-gguf-quantization-runtime branch August 27, 2026 05:52
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.

3 participants