v1.1.1
AXQuant v1.1.1 is a stability release for the AWQ/GPTQ calibration path introduced in v1.1.0 — no new quantization algorithms. Certification remains evidence-gated; this release does not claim certified public model releases.
Fixed
- BF16 capture crash:
capture-activationsfailed on every real BF16 checkpoint becausenp.asarrayrejects bfloat16 MLX buffers at the PEP 3118 check. Activations are now cast inside MLX before numpy export. Found by a real-model smoke on Mac Studio M2 Ultra; tiny fp32 fixtures never exercised it. Regression tests cover both the conversion and its premise. - GPTQ peak memory: Hessian accumulated in float32 (float64 only on factorization retry), diagonal damping without materializing identity matrices, group-level (not full-width) static grids, and prompt freeing of intermediates — measured 6.7 GB → 4.7 GB peak RSS at in = 8192 (−30%), identical numerical output.
Added
- Resumable activation capture: segmented replay (
--segment-batches) with a binding-verifiedcapture_progress.json; an interrupted capture resumes byte-identically instead of starting over. Final artifacts are deflate-compressed, can be grouped into shard archives (--modules-per-shard), andload_capture_activationsnow fails closed without thecompletion.jsonmarker. - Real-hardware integration tests:
tests/test_integration_mac.py(markerintegration, Apple Silicon only) drives tokenize → capture → measured AWQ/GPTQ probe → GPTQ plan → realmlx_lm.convertend to end, plus a resume byte-equality smoke. Run withpytest -m integration. - CI:
macos-14job runs the full MLX test suite on Apple Silicon; Ubuntu job runs ruff + mypy. README badge added. - Signed release artifacts: a
v*tag workflow builds sdist/wheel, emitsSHA256SUMS.txt, and signs dists with keyless Sigstore build-provenance attestation. Note: this workflow ships in v1.1.1 itself, so attestations begin with the next tag. - Docs:
docs/migration-v1.1.md(v1.0.x → v1.1.x renames and state invalidation),docs/compatibility.md(environment matrix),docs/known-issues.md.
Verification
- 528 tests passing locally (macOS arm64, Python 3.13, mlx 0.32.0) and on Mac Studio M2 Ultra (Python 3.12), including the new integration tests; ruff and strict mypy clean.
- Real-model smoke on Mac Studio M2 Ultra (MiniCPM5-1B BF16, 168 modules): tokenized cache → activation capture → measured probe — mean task-loss delta at 4-bit: GPTQ 0.0000 vs affine 0.0015, the first real-model confirmation that the GPTQ refinement materially reduces measured degradation.
Known limitations carried forward
- Measured probing through the CLI still defaults
capture_pointsto("output", "hidden"); plain dense backbones (non-multimodal layouts such as MiniCPM5/Qwen3-dense) only expose logits, so CLI measured probing on those families fails closed today. The library API acceptscapture_points=("output",)and works (used by the smoke above). A CLI escape hatch is planned for a follow-up. - The
v*release workflow ships in this tag, so signed dist attestations begin with the next release; v1.1.1 itself carries source artifacts only.