MiniMax-H3-Image-mlx / docs /VALIDATION.md
devin-lai's picture
Prepare inference-only v0.5.0 runtime cleanup
63e9703 verified
|
Raw History Blame
3.9 kB
# GitHub release validation
Version **0.5.0** separates inference from the private conversion workspace.
Its model catalog pins the existing **v0.4.1** Hub components. The historical
warm performance campaigns in [BENCHMARKS.md](../BENCHMARKS.md) are separate
from release-package correctness checks.
## Software and artifact checks
All **61 tests pass** in an isolated environment on the local M5 Pro / 64 GiB with Python
3.12.14, MLX 0.32.4 and the dependency snapshot in
[requirements-macos.lock](../requirements-macos.lock). It covers native/Qwen
normalization, BF16 bias epilogues/SiLU, RoPE, causal GQA, QKV ordering,
binary BF16 loading, exact vocabulary-row reads, packed decoding, prequantized
Q4/Q8 inference, reference padding, VAE tiling/blending, output truncation,
exact M5 kernels, native fallbacks, selective Hub downloads, immutable
revisions, SHA-256 rejection and protection of existing model directories.
The suite also checks that conversion options are rejected, the conversion
module is absent, a missing packed block cannot create weights, and Q8/Q4
inference does not invoke online quantization. Read-only synthetic format
fixtures exercise BF16 special-value payloads and packed/quantized matrices.
No model-conversion implementation is included in the tests.
`tools/check_release.py` audits source, wheel and sdist for unreviewed runtime
modules, conversion operations and checkpoint artifacts. Lint, formatting,
portable tests and package checks also run in GitHub Actions on Python 3.10
and 3.12 without model weights or an Apple GPU. Those portable checks are not
evidence of hardware inference correctness.
## Installed-wheel inference
Release receipts are recorded in [validation](validation). Full-image runs
use the built wheel installed into an isolated environment, from outside the
checkout. Import paths and version are checked before running. Model files
are existing local components; package validation does not claim a fresh
network download on another machine.
The recorded product prompt, seed 731, 2048 × 2048 canvas, six original heads,
CPU PyTorch noise are held fixed. BF16 and packed12 use the exact tuning
profile (compiled DiT/VAE, VAE batch four); Q8/Q4 reproduce their recorded
native DiT and uncompiled VAE batch-eight configurations. PNG and available
saved trajectory identities are checked against the previous recorded outputs.
Fresh-process wall times are retained for transparency and are not pooled
with historical warm performance measurements.
Actual software-check and image-reproduction results are listed in the
machine-readable release receipt. Image files remain in local validation
storage and the access-reviewed Hub sample gallery; receipts contain hashes
and measurements.
## Results
| Variant | Fresh v0.5.0 image | Saved trajectory | Evidence |
|---|---|---|---|
| BF16 | Exact PNG hash | All 16 tensors bit-identical | [Receipt](validation/bf16-receipt.json) |
| packed12 | Exact PNG hash | All 16 tensors bit-identical | [Receipt](validation/packed12-receipt.json) |
| Q8 | Exact PNG hash | All 16 tensors bit-identical | [Receipt](validation/q8-receipt.json) |
| Q4 | Not rerun | Loader regression tests; historical image check retained | [Historical v0.4.0 receipt](validation/historical-v040-q4-receipt.json) |
BF16 uses the original full transformer plus existing published shared
components; packed12/Q8 use the existing assembled published variants without
accessing the original transformer. Online quantization is forbidden during
all three full-image checks. Each run imports the installed wheel and verifies
that `h3_mlx.convert` is absent.
The old local Q4 weight files are no longer present. Its pinned Hub file
metadata is checked against `files.json`, separately from its historical
full-image evidence; this is not a fresh Q4 image reproduction.
[Release receipt](validation/release-receipt.json).