Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 06 Aug 23:55
· 35 commits to main since this release

Install

Install this release from PyPI: axquant 1.4.0.

Fixed

  • campaign-overlap normalization now tokenizes non-ASCII scripts
    (axquant-token-5gram-v2): ASCII word runs stay whole tokens and every
    other letter (CJK, Kana, Hangul, accented Latin) becomes a
    single-character token, so shingles exist for unspaced scripts. The v1
    normalizer dropped every non-[a-z0-9_] character, which made any
    CJK-only record — including the shipped reference calibration
    dataset's multilingual rows — fail closed with "normalizes to empty
    text" and blocked flagship campaign freezes. ASCII-only inputs produce
    byte-identical reports under v2; CampaignOverlapReport now records
    the v2 algorithm id. The Qwen3-Next coding-suite normalizer is
    unchanged.

Changed

  • Quantized MTP sidecars now emit AX Engine's executable MLX-packed layout
    (mlx-affine-packed-u32): mx.quantize uint32-packed codes plus BF16 group
    scales/biases under the engine's <base>.scales / <base>.biases key
    convention, each tensor verified by an mx.dequantize round trip against
    the BF16-cast source. This replaces the 1.3.0 axquant-portable-affine-u8
    format, which no runtime could execute (the capability gate always refused,
    so no artifact was ever produced in it). Reading the engine's
    mtp_take_weight loader showed the executable contract already exists —
    AXQuant now targets it instead of inventing a second layout.

Added

  • quantize-mtp-sidecar --runtime-json stamps mtp_sidecar_bits into
    mtplx_runtime.json (via annotate_mtp_runtime_sidecar_bits) so the engine
    dequantizes packed projections at the declared width instead of the 4-bit
    default; sidecar bits are restricted to the engine runtime contract
    (2/4/6/8).
  • The capability probe records the engine's reported supported_bits and
    packing when present (ax-engine mtp-capability output), and sidecar
    quantization fails closed when the requested bits or emitted packing fall
    outside the reported capability.
  • benchmark-kernels --from-ax-engine ingests the engine's
    ax-engine.kernel-latency-raw.v1 document (emitted by the new
    axquant-kernel-latency-probe microbench) into a host-scoped
    axquant.kernel-latency.v1 table with runtime=ax-engine entries; the
    planner's latency provider now infers the runtime from single-runtime
    tables, so engine tables plug into plan --latency-table directly.

Fixed

  • Quantized MTP sidecar bits are restricted to {4, 6, 8} — the intersection
    of the engine loader's tolerance with AXQuant's own mtp_sidecar_bits
    runtime contract. Previously a 2-bit sidecar could be produced that
    AXQuant's inspector and runtime validators would then reject.
  • benchmark-kernels --from-ax-engine refuses documents reporting packing
    methods the toolkit does not recognize instead of silently relabeling them
    as affine measurements.
  • annotate_mtp_runtime_sidecar_bits (and --runtime-json help) now states
    that stamping rewrites the file and therefore invalidates any recorded
    sha256 binding to the original — stamp packaging copies, not validated
    bundles.
  • KV serving-quality reports reject a boolean quantized_layers_active in
    the execution summary instead of counting true as one active layer.
  • The flagship M7 MTP-admissibility helper guards its own evidence loads
    (unreadable files become named gate issues if reached), and a regression
    test pins the audit-level contract: a damaged benchmark bundle aborts the
    whole audit with a named checksum error rather than emitting gate verdicts
    against a tampered evidence set.