devin-lai commited on
Commit
63e9703
·
verified ·
1 Parent(s): 9cb13f7

Prepare inference-only v0.5.0 runtime cleanup

Browse files

Prepare the current Hub runtime branch for the inference-only GitHub release v0.5.0.

- Replace the runtime, CLI, tests and docs with the audited GitHub release.
- Remove conversion, packing encoders, online quantization, Core ML export experiments and private model-publishing/preparation tooling.
- Replace the development report trees with the curated benchmark data and validation receipts already published on GitHub.
- Retain Hub card metadata, licensing, component metadata and the immutable v0.4.1 model catalog; refresh files.json for the resulting tree.

Validation: 61 local tests and portable GitHub CI on Python 3.10/3.12 pass for the source release. Installed-wheel BF16, packed12 and Q8 reproduce their prior PNGs and all 16 trajectory tensors. Q4 has loader tests, pinned remote manifest checks and separately labeled historical image evidence. The staged runtime bytes match the GitHub release, and the inference-only source audit passes.

This pull request is prepared for review and has not been merged. It changes the runtime repository only. Weight/shared/gallery repositories, gating, existing tags and model revisions are unchanged. Removing files from main does not remove them from old public revisions or prior copies. No history rewrite is included.

Source release: https://github.com/devin-lai/MiniMax-H3-Image-MLX/releases/tag/v0.5.0

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +7 -3
  2. BENCHMARKS.md +118 -67
  3. CHANGELOG.md +14 -0
  4. CONTRIBUTING.md +37 -0
  5. MANIFEST.in +10 -0
  6. MODEL_INDEX.md +0 -51
  7. README.md +139 -120
  8. README.zh-CN.md +66 -33
  9. RELEASE.md +0 -51
  10. USAGE.md +128 -69
  11. assets/banner.svg +30 -0
  12. assets/benchmarks.svg +473 -0
  13. {reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/comparison.json +0 -0
  14. benchmarks/data/bf16/context.json +10 -0
  15. {reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/quality-audit.json +0 -0
  16. {reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/summary.json +0 -0
  17. comparisons/product-cuda/metrics.json → benchmarks/data/cuda-product.json +0 -0
  18. {reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/comparison.json +0 -0
  19. benchmarks/data/packed12/context.json +10 -0
  20. {reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/quality-audit.json +0 -0
  21. {reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/summary.json +0 -0
  22. reports/tradeoffs.json → benchmarks/data/precision.json +0 -36
  23. benchmarks/data/provenance.json +41 -0
  24. comparisons/README.md +0 -32
  25. comparisons/cuda-reference/native-4k.json +0 -63
  26. comparisons/cuda-reference/portrait.json +0 -63
  27. comparisons/cuda-reference/product.json +0 -63
  28. comparisons/edit-example/record.json +0 -120
  29. comparisons/native-4k-cuda/metrics.json +0 -75
  30. comparisons/optimization-r3-compact/edit/qk-fc2-native-norm/metrics.json +0 -85
  31. comparisons/optimization-r3-compact/holdout-detail/qk-fc2-native-norm/metrics.json +0 -85
  32. comparisons/optimization-r3-compact/portrait/qk-fc2-native-norm/metrics.json +0 -85
  33. comparisons/optimization-r3-compact/product/qk-fc2-native-norm/metrics.json +0 -85
  34. comparisons/optimization-r3-deployment/edit/qk-fc2/metrics.json +0 -85
  35. comparisons/optimization-r3-deployment/holdout-detail/qk-fc2/metrics.json +0 -85
  36. comparisons/optimization-r3-deployment/portrait/qk-fc2/metrics.json +0 -85
  37. comparisons/optimization-r3-deployment/product/qk-fc2/metrics.json +0 -85
  38. comparisons/optimization-r3-qk/edit/qk-fc2-native-norm/metrics.json +0 -85
  39. comparisons/optimization-r3-qk/holdout-detail/qk-fc2-native-norm/metrics.json +0 -85
  40. comparisons/optimization-r3-qk/portrait/qk-fc2-native-norm/metrics.json +0 -85
  41. comparisons/optimization-r3-qk/product/qk-fc2-native-norm/metrics.json +0 -85
  42. comparisons/optimization-r3/edit/qk-fc2/metrics.json +0 -85
  43. comparisons/optimization-r3/gallery.json +0 -98
  44. comparisons/optimization-r3/holdout-detail/qk-fc2/metrics.json +0 -85
  45. comparisons/optimization-r3/portrait/qk-fc2/metrics.json +0 -85
  46. comparisons/optimization-r3/product/qk-fc2/metrics.json +0 -85
  47. comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/comparison/metrics.json +0 -76
  48. comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/image.json +0 -68
  49. comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/comparison/metrics.json +0 -76
  50. comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/image.json +0 -68
.gitignore CHANGED
@@ -1,5 +1,4 @@
1
- .venv/
2
- .venv-coreml/
3
  __pycache__/
4
  .pytest_cache/
5
  .ruff_cache/
@@ -10,5 +9,10 @@ dist/
10
  models/
11
  cache/
12
  outputs/
 
 
 
 
13
  *.metaltrace
14
- .release/
 
 
1
+ .venv*/
 
2
  __pycache__/
3
  .pytest_cache/
4
  .ruff_cache/
 
9
  models/
10
  cache/
11
  outputs/
12
+ benchmark-runs/
13
+ *.safetensors
14
+ *.gguf
15
+ *.mlpackage/
16
  *.metaltrace
17
+ .env
18
+ .env.*
BENCHMARKS.md CHANGED
@@ -1,71 +1,122 @@
1
- # Measurements and their scope
2
 
3
- These are recorded local measurements, not a comparison with CUDA or a
4
- promise for another Mac. Test machine: **Apple M5 Pro, 16 GPU cores, 64 GiB,
5
- macOS 27.0.1, MLX 0.32.4**. The default retains BF16 transformer weights,
6
- FP32 precision islands, dense attention, all six PDD heads and BF16 VAE
7
- arithmetic following the inspected source path.
8
 
9
- ## Exact-tuning results
10
 
11
- | Storage | Paired warm control | Tuned warm latency | Reduction | Maximum sampled parent footprint across four candidate cases |
12
  |---|---:|---:|---:|---:|
13
- | Dense BF16 | 65.83 s | 62.49 s | 5.07% | 40.50 GiB |
14
- | Lossless packed BF16 | 66.42 s | 64.05 s | 3.57% | 32.56 GiB |
15
-
16
- Latencies are equal-weight geometric means of product and portrait medians,
17
- three alternating paired repeats per case, 2048 × 2048. Conditioning is cached
18
- and model weights are resident. Trace and PNG save are included; interpreter
19
- startup, downloads and external image scoring are excluded. First-load runs
20
- are retained separately. Each storage mode has its own paired campaign:
21
- these numbers do not isolate the speed effect of compression.
22
-
23
- The four quality cases include product, portrait, fine detail and one
24
- reference-image edit. Within the recorded exact-tuning campaigns, every
25
- output pixel and saved denoising tensor agrees with its matched control.
26
- This establishes agreement with the stated MLX reference on these cases,
27
- not CUDA byte identity, ground-truth image quality or general superiority.
28
-
29
- Physical footprint is sampled every 100 ms for the parent process and can
30
- miss short peaks. It includes Metal, excludes compiler XPC services, and is
31
- different from MLX allocator counters. Do not add overlapping counters. These
32
- measurements do not establish a minimum supported Mac memory capacity.
33
-
34
- To run the measured tuning profile, use the flags in the
35
- [usage guide](USAGE.md#measured-exact-tuning). They are optional and are not all
36
- enabled in the default quick start. These warm timings use a resident pipeline;
37
- a new CLI process includes loading and is not directly comparable.
38
-
39
- ## Historical Q8 and Q4 measurements
40
-
41
- | Online precision | Denoising only | Peak MLX allocation |
42
- |---|---:|---:|
43
- | BF16 reference | 67.87 s | 38.31 GiB |
44
- | Q8 | 72.28 s | 21.48 GiB |
45
- | Q4 | 67.71 s | 12.51 GiB |
46
-
47
- This is **one** historical 2048 × 2048 product case per profile, with six
48
- steps, cached conditioning and resident weights on the same M5 Pro / 64 GiB.
49
- The Q8/Q4 trials quantized weights online; they are not fresh end-to-end
50
- benchmarks of the downloadable exports. Denoising excludes other stages, and
51
- MLX allocation is **not** total process or system memory. These figures do not
52
- establish minimum memory or a speed advantage. They should not be compared as
53
- equivalent measurements with the physical-footprint table above.
54
- [Trial details and image-quality comparisons](reports/RESULTS.md#matched-2k-product-trials).
55
-
56
- **Q8/Q4 change images.** Historical trials include lettering and detail drift;
57
- quantization was sometimes slower at real token counts. No speed claim or
58
- quality ranking is made for the new downloadable packaging. Fewer-step
59
- previews and the experimental Core ML/ANE decoder are not model variants in
60
- this release. ANE decoder artifacts are documented, not promoted as a feature.
61
-
62
- - [Full exact-tuning report](reports/optimization-r3/RESULTS.md)
63
- - [Dense receipt and pixel/tensor audit](reports/optimization-r3/qk-deployment/quality-audit.json)
64
- - [Packed receipt and audit](reports/optimization-r3/compact-deployment/quality-audit.json)
65
- - [Historical precision and backend comparisons](reports/optimization-v2/RESULTS.md)
66
- - [Native / Q8 / Q4 image comparison](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/stack.png)
67
- - [Fresh release validation](docs/VALIDATION.md)
68
-
69
- The provenance files pin upstream sources and record the inspected source
70
- hashes. Packaging tests and fresh portable-weight inference are reported
71
- separately from historical performance measurements.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Performance and precision
2
 
3
+ All reported measurements are real recorded runs on **Apple M5 Pro, 16 GPU
4
+ cores, 64 GiB unified memory, macOS 27.0.1, MLX/MLX Metal 0.32.4**. They describe
5
+ this machine and these inputs. The GitHub release does not introduce a new
6
+ cross-hardware performance campaign.
 
7
 
8
+ ## Paired warm, complete-image measurements
9
 
10
+ | Storage | Control | Tuned | Latency reduction | Candidate max sampled physical footprint¹ |
11
  |---|---:|---:|---:|---:|
12
+ | BF16 | 65.83 s | **62.49 s** | **5.07%** | 40.50 GiB |
13
+ | Lossless packed BF16 | 66.42 s | **64.05 s** | **3.57%** | 32.56 GiB |
14
+
15
+ ![Every paired warm timing sample, with case medians](assets/benchmarks.svg)
16
+
17
+ Each headline latency is the equal-weight geometric mean of product and
18
+ portrait medians at **2048 × 2048**, all six PDD steps. Each case has three
19
+ alternating paired repeats (AB, BA, AB) after shape warmup. Conditioning is
20
+ cached, weights and VAE are resident, and CPU PyTorch supplies original noise.
21
+ Trace and PNG save are included; interpreter startup, downloads and external
22
+ quality scoring are excluded. First-load and warmup runs are excluded from
23
+ the timing population. A new CLI process should not be expected to match
24
+ these warm results.
25
+
26
+ | Case | BF16 control samples (s) | BF16 tuned samples (s) | Packed control samples (s) | Packed tuned samples (s) |
27
+ |---|---|---|---|---|
28
+ | Product | 67.02, 66.80, 64.56 | 63.90, 64.24, 61.27 | 66.74, 67.70, 66.52 | 64.86, 65.30, 63.02 |
29
+ | Portrait | 64.23, 64.86, 65.15 | 60.65, 61.11, 62.01 | 66.77, 66.11, 65.95 | 63.44, 62.98, 63.26 |
30
+
31
+ Full precision values are in the [BF16 summary](benchmarks/data/bf16/summary.json)
32
+ and [packed summary](benchmarks/data/packed12/summary.json). The corresponding
33
+ [BF16 comparison](benchmarks/data/bf16/comparison.json) and
34
+ [packed comparison](benchmarks/data/packed12/comparison.json) contain the
35
+ geometric means and descriptive range screen. Three repeats are not a
36
+ statistical confidence interval.
37
+
38
+ ¹ Maximum sampled parent physical footprint across four candidate cases,
39
+ including the fine-detail and edit validation cases. The timing-only maxima
40
+ are 39.74 GiB BF16 and 31.83 GiB packed; those are different populations from
41
+ the four-case maxima. Sampling every 100 ms can miss short peaks. Parent
42
+ footprint includes Metal but excludes compiler XPC services. MLX allocator
43
+ peaks and process lifetime high water are separate overlapping counters;
44
+ they are not added. These numbers are not minimum RAM requirements.
45
+
46
+ BF16 and packed results are separate campaigns, each with its own control.
47
+ They do not isolate the speed effect of compression. The tuned profile uses
48
+ compiled DiT/VAE blocks, VAE tile batch four, prefetch four, exact Q/K fusion
49
+ and shape-qualified M5 FC2 tiling. [Tested options](USAGE.md#measured-exact-tuning).
50
+
51
+ ## What “exact” means here
52
+
53
+ The four declared cases are product, portrait, fine detail and a one-reference
54
+ edit. Every output pixel and saved conditioning/denoising tensor matched the
55
+ corresponding MLX control in both campaigns:
56
+
57
+ - [BF16 pixel/tensor audit](benchmarks/data/bf16/quality-audit.json)
58
+ - [Packed pixel/tensor audit](benchmarks/data/packed12/quality-audit.json)
59
+
60
+ This is agreement with the stated MLX reference on those cases. It does not
61
+ establish CUDA byte identity, ground-truth quality, general superiority, or
62
+ unchanged behavior for every prompt/device. Fine-detail and edit validation
63
+ cases were reused during tuning, rather than serving as new blind holdouts.
64
+
65
+ ## Historical Q8/Q4 tradeoffs
66
+
67
+ | Precision | Denoising only | Peak MLX allocation | RGB SSIM vs native | RGB MAE / 255 |
68
+ |---|---:|---:|---:|---:|
69
+ | BF16 reference | 67.87 s | 38.31 GiB | 1.0000 | 0.000 |
70
+ | Q8 | 72.28 s | 21.48 GiB | 0.9318 | 5.793 |
71
+ | Q4 | 67.71 s | 12.51 GiB | 0.7799 | 22.925 |
72
+
73
+ These are **one historical resident product sample per profile**, with online
74
+ quantization performed before the timed denoising stage. They are not fresh
75
+ end-to-end benchmarks of the downloadable exports. The public runtime loads
76
+ those exports and does not quantize. [Recorded values](benchmarks/data/precision.json).
77
+ Denoising-only timings and allocator peaks are not comparable to the
78
+ complete-image/physical-footprint table above.
79
+
80
+ Q8/Q4 reduce weight storage, change image details and have no established
81
+ generation-speed advantage here. Inspect [lettering and matched detail crops](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/details.png)
82
+ and the [full comparison stack](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/stack.png).
83
+ RGB SSIM uses scikit-image's default 7×7 per-channel window; PSNR uses RGB MSE
84
+ with data range 255. Neither measures prompt adherence or aesthetic quality.
85
+
86
+ ## CUDA visual context
87
+
88
+ The historical RTX 5090 BF16 reference uses the same prompt, seed and canvas
89
+ but upstream `quality=lossless` VAE settings, differing from this port's native
90
+ tile recipe. The 2048² product comparison records 0.9196 RGB SSIM, 21.15 dB
91
+ PSNR and 7.448/255 MAE. This does not isolate backend arithmetic error.
92
+ [Raw metrics](benchmarks/data/cuda-product.json) ·
93
+ [Matched visual comparison](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product-cuda/stack.png).
94
+
95
+ No CUDA-versus-MLX speedup is claimed: hardware, decoder settings and timing
96
+ boundaries differ. A 4096² native run also completed historically, but the
97
+ headline performance cohort is 2048².
98
+
99
+ ## Measure your own Mac
100
+
101
+ Use the same prompt, seed, canvas, variant and software for each profile.
102
+ Run one GPU workload at a time, and retain warmup records separately:
103
+
104
+ ```bash
105
+ python -m h3_mlx.benchmark \
106
+ --model models/packed12 --text-encoder models/packed12/text_encoder \
107
+ --prompt 'An editorial photograph of a cobalt perfume bottle on pale stone' \
108
+ --seed 731 --profile tuned --warmup 1 --repeats 3 \
109
+ --output benchmark-runs/packed-tuned
110
+ ```
111
+
112
+ Run again with `--profile control` and a new output directory. This public
113
+ runner measures **one resident profile at a time**, using synchronized outer
114
+ wall time including trace, PNG and JSON save. It is useful for new hardware
115
+ results; it does not recreate the historical alternating AB/BA harness or
116
+ 100 ms physical-footprint sampler. Every run retains output images, traces,
117
+ inference JSON and a summary containing all samples, median/range, hardware
118
+ and cache state. Use [the complete recorded prompts](examples/catalog.json)
119
+ when comparing with historical examples.
120
+
121
+ [Raw-record provenance](benchmarks/data/provenance.json) ·
122
+ [Release package validation](docs/VALIDATION.md)
CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Changelog
2
+
3
+ ## 0.5.0 — GitHub inference release
4
+
5
+ - Publish the MLX/Metal runtime for text-to-image generation and reference-image editing.
6
+ - Load the collection's pinned BF16, lossless packed BF16, Q8 and Q4 components with shared-file reuse and optional SHA-256 verification.
7
+ - Retain exact M5 tuning, native fallbacks, resident pipelines, JSON inference records and trace output.
8
+ - Add an inference-only benchmark runner, raw historical comparisons, sample catalog/reproduction commands and English/Chinese documentation.
9
+ - Remove conversion, online quantization, packing encoders, Core ML development paths and private model-publishing tools from the public package.
10
+ - Add portable CI, hardware regression checks and source/wheel/sdist boundary audits.
11
+
12
+ Model component revisions remain the existing Hub **v0.4.1** files. Historical
13
+ performance results retain their original scope; package validation is
14
+ reported separately in [VALIDATION.md](docs/VALIDATION.md).
CONTRIBUTING.md ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Contributing
2
+
3
+ Reports and measured improvements from more Apple silicon configurations are
4
+ welcome. Open an issue with the command, variant, chip/GPU-core count, unified
5
+ memory, macOS version and generated JSON record. Remove private prompt or
6
+ reference-image content before sharing it.
7
+
8
+ For a local development environment:
9
+
10
+ ```bash
11
+ uv venv --python 3.12
12
+ source .venv/bin/activate
13
+ uv pip install -e '.[dev]'
14
+ python -m pytest -q
15
+ ruff check .
16
+ ruff format --check .
17
+ python -m build
18
+ python tools/check_release.py dist/*.whl dist/*.tar.gz
19
+ ```
20
+
21
+ The full numerical suite needs an Apple GPU. Portable tests run on Linux in
22
+ CI; exact M5-kernel tests skip on other hardware. The tested macOS dependency
23
+ snapshot is [requirements-macos.lock](requirements-macos.lock).
24
+
25
+ For arithmetic or loading changes, compare matching prompt, seed, canvas,
26
+ noise stream and variant, and retain image/trace hashes. Distinguish warm
27
+ resident timings from first-load timings, and MLX allocations from process
28
+ physical footprint. [Benchmark method](BENCHMARKS.md).
29
+
30
+ Keep this repository inference-only. Do not submit training, model conversion,
31
+ packing encoders, online quantization, weight exporters, checkpoints, private
32
+ publishing tools or credentials. The source and distribution audit checks
33
+ reviewed module names and conversion operations. Public sample images remain
34
+ in the existing access-reviewed Hub gallery under the model terms.
35
+
36
+ Changes to the CLI, model catalog or numerical behavior should update the
37
+ usage/validation documents and include a focused regression test where useful.
MANIFEST.in ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ include LICENSE NOTICE LICENSE-model LICENSE-text-encoder
2
+ include README.md README.zh-CN.md USAGE.md BENCHMARKS.md CONTRIBUTING.md CHANGELOG.md
3
+ include requirements-macos.lock
4
+ recursive-include docs *.md *.json
5
+ recursive-include benchmarks *.json
6
+ recursive-include examples *.md *.json *.py
7
+ recursive-include assets *.svg
8
+ recursive-include tests *.py
9
+ recursive-include tools *.py
10
+ global-exclude *.pyc .DS_Store
MODEL_INDEX.md DELETED
@@ -1,51 +0,0 @@
1
- # Model and repository index
2
-
3
- The Hugging Face Hub uses sibling repositories grouped by a collection.
4
- The main repository links them; it does not contain nested Git repositories
5
- or any model weights. Each download selects one variant and shared components.
6
-
7
- | Repository under `devin-lai/` | Contents | Selection |
8
- |---|---|---|
9
- | `MiniMax-H3-Image-mlx` | Inference source, documentation, tests and comparison records | Install once |
10
- | `MiniMax-H3-Image-mlx-packed12` | Fifty losslessly packed main DiT blocks | Recommended exact storage choice |
11
- | `MiniMax-H3-Image-mlx-bf16` | Original complete BF16/FP32 transformer | Unmodified storage control |
12
- | `MiniMax-H3-Image-mlx-q8` | Q8 main blocks and token refiners, group 64 | Smaller weights, image changes |
13
- | `MiniMax-H3-Image-mlx-q4` | Q4 main blocks and token refiners, group 64 | Smallest core, larger image changes |
14
- | `MiniMax-H3-Image-mlx-shared` | VAE, PDD heads, native support, configs and modulation tables | Fetched as needed, reused across variants |
15
- | `MiniMax-H3-Image-mlx-examples` | Generated images and visual comparisons | Optional gallery, with manual access review |
16
-
17
- The unchanged encoder is fetched from
18
- [`MiniMaxAI/MiniMax-H3`](https://huggingface.co/MiniMaxAI/MiniMax-H3/tree/0919fb684102ef115126612f3fbb84d1027e7317/text_encoder)
19
- at revision `0919fb684102ef115126612f3fbb84d1027e7317`. Only its `text_encoder/`
20
- directory and license are selected. This is about **62.14 GiB** of weights and
21
- tokenizer files; it is a substantial first download. An existing copy can be
22
- reused with `--text-encoder-path`.
23
-
24
- The image source is `MiniMaxAI/MiniMax-H3-Image` at revision
25
- `6534ea1c979a5f8cb00c2bd1025d5ca4ee8d8901`. All uploaded model files receive
26
- SHA-256 manifests; the runtime catalog pins each component repository to a
27
- full commit ID. A `v0.4.1` tag provides a human-readable
28
- release name. Runtime options such as compiled execution, VAE tile batches
29
- and reduced steps do not create additional model repositories.
30
-
31
- ## Layout after downloading
32
-
33
- ```text
34
- models/packed12/
35
- release.json
36
- transformer/ # Native constants, norms, refiners and config
37
- core/ # Only the chosen variant
38
- modulation/ # Six-step generation and editing tables
39
- vae/
40
- pdd_config.json
41
- pdd_fused_heads.safetensors
42
- text_encoder/ # Link to the one shared upstream cache
43
- licenses/
44
- ```
45
-
46
- Files are linked to Hugging Face's cache rather than copied. Keep that cache
47
- while using the assembled directory. `--local-files-only` supports cached,
48
- offline assembly. `--verify` rehashes all selected image-model files; the
49
- encoder download uses the Hub's pinned, content-addressed download mechanism.
50
- Download size is different from runtime memory. The prepared release's exact
51
- file sizes are recorded in each repository's `files.json` manifest.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md CHANGED
@@ -20,155 +20,174 @@ tags:
20
  inference: false
21
  ---
22
 
23
- # MiniMax H3 Image on Apple silicon
 
 
24
 
25
- **Generate and edit images locally with MLX. Choose one weight variant; reuse the shared components.**
 
 
 
 
 
26
 
27
- **Measured on M5 Pro / 64 GiB:** tuned warm 2048 × 2048 generation took
28
- **62.49 s with BF16** or **64.05 s with lossless packed BF16**. These are
29
- historical tests with cached conditioning and resident weights; see the
30
- [measurement details](#measured-on-m5-pro--64-gib).
31
 
32
- [View the generated showcase and comparisons](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples)
33
 
34
- *The gallery contains AI-generated images from recorded local runs. It uses
35
- manual access review under the model license. [Prompts, seeds and precision
36
- settings](examples/README.md) are also documented here.*
 
37
 
38
- A community port of [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image)
39
- by [Devin Lai](https://huggingface.co/devin-lai). Native MLX/Metal inference,
40
- all six distilled PDD steps, reference-image editing, lossless BF16 packing
41
- and optional Q8/Q4 weights. Model operators run locally on your Mac.
42
 
43
- [Quick start](#quick-start) · [Choose weights](#choose-your-download) ·
44
- [Usage](USAGE.md) · [Benchmarks](BENCHMARKS.md) ·
45
- [Collection](https://huggingface.co/collections/devin-lai/minimax-h3-image-apple-silicon-mlx-6af64fcd11d7d7a3b17e11d8) · [Repository map](MODEL_INDEX.md) · [简体中文](README.zh-CN.md)
 
46
 
47
- **Start with packed12 on a sufficiently large Mac.** It reconstructs the
48
- original BF16 weight bits before computation. It is storage compression,
49
- not quantization. The tested machine is an **M5 Pro with 64 GiB**;
50
- smaller-memory Macs have not been qualified.
51
-
52
- ## Choose your download
53
-
54
- The main repository contains inference code, documentation and comparison
55
- records. Generated images are in the separately gated example gallery. Each
56
- linked model repository contains one weight choice.
57
- The downloader fetches that choice and its required shared files, then reuses
58
- the same pinned upstream text encoder across variants.
59
-
60
- | Variant | Variant weights¹ | Choose it for |
61
- |---|---:|---|
62
- | **[Lossless packed BF16](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-packed12)** | **27.23 GiB** | Recommended exact storage choice; original BF16 payloads |
63
- | [Original BF16](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-bf16) | 61.73 GiB | Unmodified complete transformer storage |
64
- | [Q8](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-q8) | 19.83 GiB | Smaller core; image and detail changes |
65
- | [Q4](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-q4) | 10.50 GiB | Smallest core; stronger fidelity tradeoffs |
66
-
67
- ¹ Excludes [shared VAE, support tensors, heads and tables](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-shared),
68
- the separate **roughly 62 GiB text encoder**, Python dependencies and runtime
69
- memory. BF16 already includes native support; the downloader omits its redundant
70
- shared copy.
71
- Download sizes are not RAM requirements. Q8/Q4 quantize main and refiner
72
- attention/MLP weights with MLX affine groups of 64; FP32 precision islands stay
73
- native. Quantization has not established a generation-speed advantage here.
74
-
75
- **License and access:** model weights retain MiniMax's community agreements,
76
- including territory and commercial restrictions; they are not unrestricted
77
- open-source weights. Model components use manual access review.
78
- [Status and license details](RELEASE.md).
79
 
80
  ## Quick start
81
 
82
- Use an Apple silicon Mac, native arm64 Python 3.12 and
83
- [uv](https://docs.astral.sh/uv/getting-started/installation/). Request access
84
- on the selected model and shared-component pages before downloading weights:
85
 
86
  ```bash
87
- uv venv --python 3.12 .venv
 
 
88
  source .venv/bin/activate
89
- uv pip install huggingface-hub==0.36.2
90
- hf auth login
91
-
92
- hf download devin-lai/MiniMax-H3-Image-mlx --revision v0.4.1 \
93
- --include 'h3_mlx/*' config.json pyproject.toml LICENSE NOTICE \
94
- --local-dir h3-runtime
95
- uv pip install './h3-runtime[native]'
96
  h3-mlx doctor
 
97
 
 
 
 
 
 
 
98
  h3-mlx download --variant packed12 --model-dir models/packed12
 
99
  h3-mlx generate --model models/packed12 \
100
  --text-encoder models/packed12/text_encoder \
101
  'An editorial photograph of a cobalt perfume bottle on pale stone' \
102
  --width 2048 --height 2048 --seed 731 --output outputs/bottle.png
103
  ```
104
 
105
- The first download is large because the native text encoder is separate.
106
- Reuse an existing encoder with `--text-encoder-path /path/to/text_encoder`.
107
- Use `--variant q8`, `q4` or `bf16` to select another weight repository.
108
- Each output includes a JSON record with the prompt, seed, schedule, hardware,
109
- precision, timings and memory. [Offline use, tuning and Python API](USAGE.md).
 
 
 
 
110
 
111
- For reference-image editing, add `--image bottle.png` and describe the edit
112
- using `<Picture 1>`. The implementation accepts up to sixteen ordered inputs;
113
- the recorded edit cohort validates one reference. Detailed English prompts are
114
- recommended; the runtime does not silently expand them.
 
 
 
 
115
 
116
- ## Measured on M5 Pro / 64 GiB
 
 
 
117
 
118
- | Weight storage | Warm control | Warm tuned | Latency reduction | Max sampled parent footprint¹ |
 
 
 
 
 
 
 
 
119
  |---|---:|---:|---:|---:|
120
  | BF16 | 65.83 s | **62.49 s** | **5.07%** | 40.50 GiB |
121
  | Lossless packed BF16 | 66.42 s | **64.05 s** | **3.57%** | **32.56 GiB** |
122
 
123
- Results are for **2048 × 2048**, all six steps, on an M5 Pro with 16 GPU
124
- cores, 64 GiB unified memory and MLX 0.32.4. Each time is the geometric mean
125
- of product and portrait medians, with three alternating repeats per case.
126
- Conditioning was cached and weights resident; startup and downloads are
127
- excluded. A fresh CLI process includes loading and should not be expected to
128
- match these warm timings.
129
-
130
- ¹ Maximum sampled parent-process physical footprint over four candidate cases,
131
- including one edit; it is not the minimum required RAM. The BF16 and packed
132
- figures come from separate campaigns. Every output pixel and saved denoising
133
- tensor matched its corresponding MLX control in those four-case suites.
134
- These results do not establish CUDA pixel identity or a universal speed claim.
135
-
136
- The tuned profiles use compiled blocks and VAE, bounded prefetch, an exact
137
- Q/K kernel and an M5-specific matrix tile. The default quick start does not
138
- enable all of these options. [Copy the tested tuning flags](USAGE.md#measured-exact-tuning)
139
- and see the [method, raw receipts and limitations](BENCHMARKS.md). Q8 and Q4
140
- reduce weight storage but change images; their downloadable exports have no
141
- established generation-speed advantage.
142
-
143
- ## Inspect, reproduce, contribute
144
-
145
- - [Original examples and provenance](examples/README.md): authentic outputs,
146
- prompts, seeds and reference images, clearly identified as AI-generated.
147
- - [Native / Q8 / Q4 comparisons](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/stack.png): inspect the
148
- lettering and detail changes before choosing compact weights.
149
- - [Technical guide](docs/TECHNICAL.md): precision rules, resident Python
150
- pipelines, reference-image processing and experiment reproduction.
151
- - [Validation](docs/VALIDATION.md): release software checks and fresh inference.
152
- - [Community discussions](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx/discussions):
153
- share a reproducible issue or result with your variant, prompt, seed, canvas,
154
- Mac configuration and generated JSON record.
155
-
156
- If the project helps you, like the variant you use and
157
- [follow devin-lai](https://huggingface.co/devin-lai) for future Mac releases.
158
- Measured contributions and examples from more Apple silicon configurations
159
- are welcome. No hosted inference service is bundled.
160
-
161
- ## Attribution and terms
162
-
163
- Independent community MLX adaptation by Devin Lai, based on MiniMax's released
164
- weights and the inspected SGLang/Transformers inference contracts. This is not
165
- an official MiniMax release or endorsement. Powered by MiniMax-H3-Image.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
166
 
167
  **Runtime code:** [Apache-2.0](LICENSE).
168
- **Image weights and derivatives:** [MiniMax-H3-Image Community License Agreement](LICENSE-model).
169
  **Separate text encoder:** [MiniMax H3 Community License Agreement](LICENSE-text-encoder).
170
- The published agreements exclude the EU, UK, Republic of Korea and US absent
171
- separate permission and include commercial, redistribution and acceptable-use
172
- conditions. Access review does not grant additional rights.
173
- [Modifications](docs/MODIFICATIONS.md) · [NOTICE](NOTICE) ·
174
- [Pinned source provenance](provenance/sources.json).
 
 
 
 
 
20
  inference: false
21
  ---
22
 
23
+ <p align="center">
24
+ <img src="assets/banner.svg" alt="MiniMax H3 Image — local image generation and editing on Apple silicon" width="100%">
25
+ </p>
26
 
27
+ <p align="center">
28
+ <a href="LICENSE"><img src="https://img.shields.io/badge/code-Apache--2.0-blue" alt="Code: Apache 2.0"></a>
29
+ <a href="https://github.com/devin-lai/MiniMax-H3-Image-MLX/actions/workflows/ci.yml"><img src="https://github.com/devin-lai/MiniMax-H3-Image-MLX/actions/workflows/ci.yml/badge.svg" alt="Portable checks"></a>
30
+ <img src="https://img.shields.io/badge/Apple_silicon-MLX_0.32.4-black" alt="Apple silicon, MLX 0.32.4">
31
+ <a href="https://huggingface.co/collections/devin-lai/minimax-h3-image-apple-silicon-mlx"><img src="https://img.shields.io/badge/🤗-model_collection-yellow" alt="Hugging Face model collection"></a>
32
+ </p>
33
 
34
+ # MiniMax H3 Image · MLX
 
 
 
35
 
36
+ **Generate and edit images locally on your Mac. Six distilled steps. Four weight choices. Native MLX and Metal.**
37
 
38
+ A community inference port of [MiniMax-H3-Image](https://huggingface.co/MiniMaxAI/MiniMax-H3-Image)
39
+ by [Devin Lai](https://github.com/devin-lai). Use the preconverted models in the
40
+ [Apple silicon collection](https://huggingface.co/collections/devin-lai/minimax-h3-image-apple-silicon-mlx)
41
+ for text-to-image generation and reference-image editing.
42
 
43
+ [Quick start](#quick-start) · [Sample gallery](examples/README.md) ·
44
+ [Benchmarks](BENCHMARKS.md) · [Usage & Python API](USAGE.md) · [简体中文](README.zh-CN.md)
 
 
45
 
46
+ - **Local inference:** text encoder, diffusion transformer, reference encoder and VAE run with MLX on Metal.
47
+ - **Lossless packed BF16:** 27.23 GiB variant payload, reconstructing the original BF16 bits before matrix multiplication.
48
+ - **Reproducible outputs:** every image gets a JSON record with prompt, seed, schedule, precision, hardware and timings.
49
+ - **Measured tuning:** optional compiled blocks and exact M5 kernels; native fallback on unsupported shapes and devices.
50
 
51
+ **Inference code is Apache-2.0. Model conversion, packing encoders and weight export tools are closed and are not included.**
52
+ This runtime loads the collection's existing BF16, packed12, Q8 and Q4 files.
53
+ Weights and generated outputs retain the upstream model terms; see [licenses and access](#licenses-and-access).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  ## Quick start
56
 
57
+ Use an **Apple silicon Mac** and native arm64 Python 3.12. The tested machine is
58
+ an **M5 Pro with 64 GiB unified memory**; smaller-memory Macs have not been qualified.
59
+ Install [uv](https://docs.astral.sh/uv/getting-started/installation/), then:
60
 
61
  ```bash
62
+ git clone https://github.com/devin-lai/MiniMax-H3-Image-MLX.git
63
+ cd MiniMax-H3-Image-MLX
64
+ uv venv --python 3.12
65
  source .venv/bin/activate
66
+ uv pip install '.[native]'
 
 
 
 
 
 
67
  h3-mlx doctor
68
+ ```
69
 
70
+ Request access to your chosen variant and the
71
+ [shared components](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-shared)
72
+ on Hugging Face, read their terms, and sign in:
73
+
74
+ ```bash
75
+ hf auth login
76
  h3-mlx download --variant packed12 --model-dir models/packed12
77
+
78
  h3-mlx generate --model models/packed12 \
79
  --text-encoder models/packed12/text_encoder \
80
  'An editorial photograph of a cobalt perfume bottle on pale stone' \
81
  --width 2048 --height 2048 --seed 731 --output outputs/bottle.png
82
  ```
83
 
84
+ The first download includes a **separate roughly 62 GiB text encoder**, shared
85
+ components and your selected weights. Download size is not a RAM requirement.
86
+ Reuse an encoder with `--text-encoder-path /path/to/text_encoder`.
87
+ The `native` extra supplies PyTorch for the original CPU random-noise stream;
88
+ model computation runs in MLX.
89
+
90
+ For editing, add `--image outputs/bottle.png` and use a prompt such as
91
+ `'Change the bottle in <Picture 1> to emerald green glass, preserving the label'`.
92
+ [More commands, offline use and resident pipelines →](USAGE.md)
93
 
94
+ ## Choose your weights
95
+
96
+ | Variant | Variant payload¹ | Intended use |
97
+ |---|---:|---|
98
+ | **[packed12](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-packed12)** | **27.23 GiB** | Recommended exact storage choice; lossless BF16 |
99
+ | [BF16](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-bf16) | 61.73 GiB | Original complete transformer storage |
100
+ | [Q8](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-q8) | 19.83 GiB | Smaller core, with image/detail changes |
101
+ | [Q4](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-q4) | 10.50 GiB | Smallest core, with stronger fidelity tradeoffs |
102
 
103
+ ¹ Excludes shared VAE/support/heads/tables (up to 3.86 GiB), the text encoder,
104
+ dependencies and runtime memory. BF16 includes native support, so the downloader
105
+ omits the redundant shared copy. One variant is downloaded at a time; shared
106
+ files and the encoder are reused. [Pinned model catalog](h3_mlx/model_index.json).
107
 
108
+ Q8/Q4 use affine groups of 64 for attention/MLP weights and preserve FP32
109
+ precision islands. They reduce storage; an inference-speed advantage has not
110
+ been established. **packed12 is storage compression, not quantization.**
111
+
112
+ ## Performance you can inspect
113
+
114
+ **2048 × 2048 · all six steps · M5 Pro / 16 GPU cores / 64 GiB · MLX 0.32.4**
115
+
116
+ | Weight storage | Warm control | Warm tuned | Latency reduction | Max sampled parent footprint² |
117
  |---|---:|---:|---:|---:|
118
  | BF16 | 65.83 s | **62.49 s** | **5.07%** | 40.50 GiB |
119
  | Lossless packed BF16 | 66.42 s | **64.05 s** | **3.57%** | **32.56 GiB** |
120
 
121
+ ![Paired warm generation measurements: individual samples and medians](assets/benchmarks.svg)
122
+
123
+ These are historical warm measurements with cached conditioning and resident
124
+ weights. Each headline latency is the geometric mean of product and portrait
125
+ medians, three alternating repeats per case. Timings include trace/PNG save;
126
+ downloads and interpreter startup are excluded. A fresh CLI process includes
127
+ loading and should not be expected to match them.
128
+
129
+ ² Maximum sampled parent-process physical footprint across four candidate
130
+ cases, including an edit; **not minimum required RAM**. BF16 and packed12 are
131
+ separate campaigns. Each tuned configuration matched every output pixel and
132
+ saved trajectory tensor of its own MLX control across those four cases.
133
+ CUDA pixel identity and broad image-quality superiority are not claimed.
134
+
135
+ [Method, raw samples, Q8/Q4 tradeoffs and CUDA comparison scope →](BENCHMARKS.md)
136
+
137
+ To enable the measured tuning, add:
138
+
139
+ ```bash
140
+ --compile-blocks --eval-every 0 --prefetch-blocks 4 \
141
+ --compile-vae --vae-batch 4 --kernel metal-qk-exact --tune-matmul
142
+ ```
143
+
144
+ ## Real samples and comparisons
145
+
146
+ The [recorded sample gallery](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples)
147
+ contains **AI-generated** product, portrait, fine-detail and editing images,
148
+ along with full-resolution crops and native/Q8/Q4 comparisons. It retains its
149
+ existing access review under the model terms.
150
+
151
+ | Sample | Inspect the recorded image | Reproduction details |
152
+ |---|---|---|
153
+ | Product lettering & glass | [NIGHT TIDE perfume bottle](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/examples/product.png) | packed12 · seed 731 · 2048² |
154
+ | Portrait & skin detail | [Conservatory portrait](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/examples/portrait.png) | packed12 · seed 1234 · 2048² |
155
+ | Fine mechanical detail | [Watchmaker's bench](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/examples/holdout-detail.png) | packed12 · seed 928417 · 2048² |
156
+ | Reference-image editing | [Cobalt → emerald glass](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/edit-example/before-after.png) | one reference · seed 42 · 1024² output |
157
+
158
+ [Full prompts, input identities, hashes and sample runner →](examples/README.md)
159
+
160
+ ## Development and contributions
161
+
162
+ ```bash
163
+ uv pip install -e '.[dev]'
164
+ python -m pytest -q
165
+ ruff check .
166
+ python -m build
167
+ python tools/check_release.py dist/*.whl dist/*.tar.gz
168
+ ```
169
+
170
+ Hardware tests require a local Apple GPU. GitHub Actions checks portable Hub
171
+ logic, CLI boundaries, lint, packaging and the inference-only artifact audit.
172
+ [Validation evidence](docs/VALIDATION.md) · [Contributing](CONTRIBUTING.md) ·
173
+ [Technical notes](docs/TECHNICAL.md) · [Release notes](CHANGELOG.md).
174
+
175
+ Results from more Apple silicon chips are welcome. Include the inference JSON,
176
+ chip, memory, macOS version, command and variant when
177
+ [reporting an issue](https://github.com/devin-lai/MiniMax-H3-Image-MLX/issues).
178
+ If this is useful, star the project and share a reproducible result.
179
+
180
+ ## Licenses and access
181
 
182
  **Runtime code:** [Apache-2.0](LICENSE).
183
+ **Image model:** [MiniMax-H3-Image Community License Agreement](LICENSE-model).
184
  **Separate text encoder:** [MiniMax H3 Community License Agreement](LICENSE-text-encoder).
185
+ The model agreements include territorial, commercial, redistribution and
186
+ acceptable-use conditions. Their standard grants exclude the EU, UK, Republic
187
+ of Korea and US absent separate permission. Hub access does not grant additional
188
+ rights. Model weights and original sample images are hosted on Hugging Face.
189
+
190
+ Independent community adaptation by Devin Lai; this is not an official MiniMax
191
+ release or endorsement. **Powered by MiniMax-H3-Image.**
192
+ [NOTICE](NOTICE) · [Modifications](docs/MODIFICATIONS.md) ·
193
+ [Upstream source provenance](provenance/sources.json).
README.zh-CN.md CHANGED
@@ -1,34 +1,29 @@
1
- # MiniMax H3 Image · Apple 芯片 / MLX
2
 
3
- 在 Mac 上通过 MLX/Metal 本地生成和编辑图像。由 Devin Lai 维护的社区移植,
4
- 保留原始六步 PDD 调度、BF16 权重与 FP32 精度敏感层,提供无损 packed12、
5
- 原始 BF16,以及有损 Q8/Q4 选项。
6
 
7
- [查看 AI 生成的示例与对比图(需申请访问)](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples)
 
8
 
9
- 主仓库存放运行代码、文档和可选的对比证据。模型权重按变体放在独立仓库;
10
- 只下载所选变体,复用 VAE 等公共组件和固定版本的官方文本编码器。
11
- 文本编码器约 62 GiB,首次下载量较大,也可以复用已有文件。
12
 
13
- 建议首先选择 **packed12**:这是 BF16 位级无损存储压缩,不是 12 位量化。
14
- Q8/Q4 会改变生成结果,并不保证速度更快。测试设备是 **M5 Pro / 64 GiB**;
15
- 尚未确认更小内存设备的最低配置。
16
 
17
- ## M5 Pro / 64 GiB 实测优化
18
-
19
- | 权重存储 | 对照热运行 | 优化后热运行 | 时间下降 |
20
- |---|---:|---:|---:|
21
- | BF16 | 65.83 秒 | **62.49 秒** | 5.07% |
22
- | 无损 packed BF16 | 66.42 秒 | **64.05 秒** | 3.57% |
23
-
24
- 2048×2048、六步;产品和人像各重复三次,复用已缓存的条件信息和常驻权重,
25
- 不含下载及进程启动。两种存储模式分别与自己的对照组比较。四个验证案例的输出像素
26
- 和保存的去噪张量均与对应 MLX 对照一致。默认快速开始未启用全部优化选项;
27
- 具体设置、内存口径和限制见[基准说明](BENCHMARKS.md)。
28
-
29
- 安装运行环境并获得所需访问权限后可使用:
30
 
31
  ```bash
 
 
 
 
 
 
 
 
32
  h3-mlx download --variant packed12 --model-dir models/packed12
33
  h3-mlx generate --model models/packed12 \
34
  --text-encoder models/packed12/text_encoder \
@@ -36,14 +31,52 @@ h3-mlx generate --model models/packed12 \
36
  --seed 731 --output outputs/bottle.png
37
  ```
38
 
39
- [安装与使用](USAGE.md) · [模型选择](MODEL_INDEX.md) ·
40
- [原始输出与提示词](examples/README.md) · [English](README.md)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
- **发布版本:v0.4.1,模型组件采用人工审核访问。** 模型并非无限制开源许可。
43
- 图像权重及其衍生物保留 MiniMax-H3-Image 社区许可;文本编码器保留其独立许可。
44
- 现行协议对欧盟、英国、韩国和美国有地域限制,并包含商业使用、再分发和可接受使用条件。
45
- 使用前请确认具备所需权限。[发布与许可说明](RELEASE.md)。
46
 
47
- 如项目有帮助,欢迎在 Hugging Face 点赞所用模型、关注
48
- [devin-lai](https://huggingface.co/devin-lai),并分享附有设备、变体、提示词、
49
- seed 和生成 JSON 记录的可复现结果。
 
 
 
1
+ # MiniMax H3 Image · MLX
2
 
3
+ **在 Apple 芯片 Mac 上本地生成和编辑图像:六步蒸馏推理,原生 MLX / Metal,四种权重可选。**
 
 
4
 
5
+ [English](README.md) · [模型合集](https://huggingface.co/collections/devin-lai/minimax-h3-image-apple-silicon-mlx) ·
6
+ [真实样例](examples/README.md) · [性能测试](BENCHMARKS.md) · [使用指南](USAGE.md)
7
 
8
+ 这是 Devin Lai 的独立社区适配,不是 MiniMax 官方发布。
9
+ **仅开放推理代码(Apache-2.0);模型转换、打包编码器及权重导出工具不公开。**
10
+ 运行时直接读取合集中已经转换好的 BF16、packed12、Q8 和 Q4 权重。
11
 
12
+ ## 快速开始
 
 
13
 
14
+ 使用 Apple 芯片 Mac、原生 arm64 Python 3.12 和
15
+ [uv](https://docs.astral.sh/uv/getting-started/installation/)。
16
+ 已测试设备为 **M5 Pro / 16 核 GPU / 64 GiB 统一内存**,尚未验证更小内存机型。
 
 
 
 
 
 
 
 
 
 
17
 
18
  ```bash
19
+ git clone https://github.com/devin-lai/MiniMax-H3-Image-MLX.git
20
+ cd MiniMax-H3-Image-MLX
21
+ uv venv --python 3.12
22
+ source .venv/bin/activate
23
+ uv pip install '.[native]'
24
+ h3-mlx doctor
25
+
26
+ hf auth login
27
  h3-mlx download --variant packed12 --model-dir models/packed12
28
  h3-mlx generate --model models/packed12 \
29
  --text-encoder models/packed12/text_encoder \
 
31
  --seed 731 --output outputs/bottle.png
32
  ```
33
 
34
+ 下载前请在 Hugging Face 上申请所选权重和共享组件的访问权限,并阅读模型协议。
35
+ 首次下载还包括独立的 **约 62 GiB 文本编码器**。可以通过
36
+ `--text-encoder-path /path/to/text_encoder` 复用已有编码器。
37
+ 下载大小不等于运行内存需求。`native` 扩展用于原始 CPU 随机数流,模型算子仍由 MLX 执行。
38
+
39
+ ## 权重选择
40
+
41
+ | 变体 | 变体文件大小¹ | 说明 |
42
+ |---|---:|---|
43
+ | **packed12** | **27.23 GiB** | 推荐的无损 BF16 存储,计算前恢复原始位模式 |
44
+ | BF16 | 61.73 GiB | 原始完整 Transformer 存储 |
45
+ | Q8 | 19.83 GiB | 更小核心,图像和细节会变化 |
46
+ | Q4 | 10.50 GiB | 最小核心,画质取舍更明显 |
47
+
48
+ ¹ 不包括共享 VAE、支持张量、头与表、独立文本编码器、依赖和运行内存。
49
+ packed12 是无损存储压缩,并非量化;Q8/Q4 尚未证明生成速度优势。
50
+
51
+ ## 可检查的性能记录
52
+
53
+ 2048 × 2048、全部六步、MLX 0.32.4,条件缓存命中且模型已驻留:
54
+
55
+ | 存储 | 对照耗时 | 调优耗时 | 延迟降低 |
56
+ |---|---:|---:|---:|
57
+ | BF16 | 65.83 秒 | **62.49 秒** | 5.07% |
58
+ | 无损 packed BF16 | 66.42 秒 | **64.05 秒** | 3.57% |
59
+
60
+ 这是两个用例各三次交替重复的中位数几何平均。包含轨迹和 PNG 保存,
61
+ 不包含下载、解释器启动和外部评分;新启动的命令行进程还需要加载模型。
62
+ 两种存储来自各自独立的配对测试,不构成压缩速度的因果比较。
63
+ 四个验证用例中的像素与保存的去噪张量均与各自 MLX 对照一致;不承诺 CUDA 像素一致。
64
+ [原始记录和限制](BENCHMARKS.md)。
65
+
66
+ ## 编辑和样例
67
+
68
+ 添加 `--image outputs/bottle.png`,在提示词中用 `<Picture 1>` 引用图片。
69
+ 建议使用详细英文描述,不会自动扩写提示词。实现接受最多十六张有序参考图,
70
+ 现有编辑验证覆盖一张参考图。
71
+
72
+ [样例库](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples) 保留访问审核,
73
+ 包含明确标注的 AI 生成产品图、人像、机械细节和编辑前后对照。
74
+ [提示词、种子、哈希和复现脚本](examples/README.md) 已公开。
75
 
76
+ ## 许可
 
 
 
77
 
78
+ 推理代码使用 [Apache-2.0](LICENSE)。图像模型与输出保留
79
+ [MiniMax-H3-Image 协议](LICENSE-model),独立文本编码器保留
80
+ [MiniMax H3 协议](LICENSE-text-encoder)。模型协议包含地域、商业、分发和使用限制,
81
+ 标准授权不包括欧盟、英国、韩国和美国,除非另行获得许可。访问审核不会授予额外权利。
82
+ **Powered by MiniMax-H3-Image.** [NOTICE](NOTICE)。
RELEASE.md DELETED
@@ -1,51 +0,0 @@
1
- # Release v0.4.1
2
-
3
- The main repository contains the MLX runtime, documentation, tests and
4
- comparison records. Model files are split across four variant repositories and
5
- a shared-components repository. Choose one variant; the downloader reuses the
6
- shared components and the separately pinned upstream text encoder. Generated
7
- images and visual comparisons are in a separate, manually gated example gallery.
8
-
9
- [Browse the collection](https://huggingface.co/collections/devin-lai/minimax-h3-image-apple-silicon-mlx-6af64fcd11d7d7a3b17e11d8).
10
-
11
- The component repositories use manual access review. Request access to your
12
- chosen variant and the shared repository, read the applicable licenses and
13
- sign in with `hf auth login`. Repository access does not itself grant rights
14
- outside the upstream licenses. The agreements include territorial, commercial,
15
- redistribution and acceptable-use conditions; their standard grant excludes the
16
- EU, UK, Republic of Korea and US. The code is Apache-2.0; model weights retain
17
- their respective MiniMax community licenses. No hosted inference service is
18
- included.
19
-
20
- [Quick start](README.md#quick-start) · [Model index](MODEL_INDEX.md) ·
21
- [Usage](USAGE.md) · [Validation](docs/VALIDATION.md)
22
-
23
- ## Revisions and validation
24
-
25
- `h3_mlx/model_index.json` pins the shared and variant repositories to immutable
26
- commits. Each model repository also has a `v0.4.1` tag and a `files.json`
27
- manifest with byte sizes and SHA-256 hashes. The uploaded component files were
28
- checked against those manifests. The release validation records 53 local tests
29
- and full-image packaging reproductions for packed12 and Q4; it does not claim
30
- a fresh full-image Q8 reproduction or validation on another machine.
31
-
32
- This patch adds root configuration files so Hugging Face can count downloads
33
- through its normal server-side statistics. The weight and inference files are
34
- unchanged. The previous `v0.4.0` tags and their pinned revisions remain available.
35
-
36
- ## Preparing artifacts
37
-
38
- For maintainers with the original model and the validated packed cache:
39
-
40
- ```bash
41
- python scripts/prepare_hf_release.py \
42
- --model /path/to/MiniMax-H3-Image \
43
- --packed-cache /path/to/validated/packed12-cache --quantize q4
44
- ```
45
-
46
- Staging is written under `.release/huggingface/`. Existing model and packed
47
- files are linked rather than copied; optional quantized variants require
48
- additional scratch space. Preserve original checkpoints and caches. The
49
- publisher script uploads and verifies individual components before finalizing
50
- the pinned catalog. It does not automatically approve access requests or post
51
- announcements.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
USAGE.md CHANGED
@@ -1,102 +1,161 @@
1
- # Install and use
2
 
3
- Use Apple silicon, native arm64 Python 3.12, and a compatible macOS Metal
4
- installation. The measured environment is M5 Pro / 64 GiB, macOS 27.0.1,
5
- MLX 0.32.4 and Transformers 4.57.6. Smaller Macs have not been qualified.
6
 
7
- ## Release installation
 
 
8
 
9
- Request access on the selected variant and shared model pages and read their
10
- licenses. Install [uv](https://docs.astral.sh/uv/getting-started/installation/)
11
- and authenticate with Hugging Face as shown below.
 
 
 
 
12
 
13
  ```bash
14
- uv venv --python 3.12 .venv
15
- source .venv/bin/activate
16
- uv pip install huggingface-hub==0.36.2
17
  hf auth login
18
- hf download devin-lai/MiniMax-H3-Image-mlx --revision v0.4.1 \
19
- --include 'h3_mlx/*' config.json pyproject.toml LICENSE NOTICE \
20
- --local-dir h3-runtime
21
- uv pip install './h3-runtime[native]'
22
- h3-mlx doctor
23
-
24
  h3-mlx download --variant packed12 --model-dir models/packed12
25
- h3-mlx generate --model models/packed12 \
26
- --text-encoder models/packed12/text_encoder \
27
- 'An editorial photograph of a cobalt perfume bottle on pale stone' \
28
- --width 2048 --height 2048 --seed 731 --output outputs/bottle.png
29
  ```
30
 
31
- The release catalog records immutable component revisions. It rejects
32
- unpublished or unpinned weights. For local development use `uv pip install
33
- -e '.[native]'` and the original checkpoint paths, as in
34
- [the technical guide](docs/TECHNICAL.md).
35
 
36
- The `native` extra supplies PyTorch for the original CPU noise stream. Model
37
- operators still run in MLX on Metal. Without that extra, `--rng mlx` uses a
38
- different random stream and does not reproduce the same seeded images.
 
 
 
39
 
40
- ## Select another variant or reuse existing weights
 
 
 
 
 
41
 
42
  ```bash
43
- h3-mlx download --variant q8 --model-dir models/q8 \
44
- --text-encoder-path /path/to/MiniMax-H3/text_encoder
45
- h3-mlx generate --model models/q8 --text-encoder models/q8/text_encoder \
46
- 'A detailed scene description' --output outputs/q8.png
47
  ```
48
 
49
- Use `q4`, `bf16` or `packed12` in the same way. Use a separate assembly
50
- directory for each variant. Shared files and the encoder are cached once;
51
- no other variant is fetched. The release selects quantization automatically,
52
- so do not add `--quantize` or `--quantized-core` to published variants.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
- To fetch the image model without the encoder, use `--skip-text-encoder` and
55
- pass your encoder path directly to generation. `--local-files-only` avoids
56
- network access when all required files already exist in the Hub cache.
57
 
58
  ## Measured exact tuning
59
 
60
- On the tested M5 Pro / 64 GiB, add:
61
 
62
  ```bash
63
  --compile-blocks --eval-every 0 --prefetch-blocks 4 \
64
  --compile-vae --vae-batch 4 --kernel metal-qk-exact --tune-matmul
65
  ```
66
 
67
- Optional `--wired-gb 32` (packed12) or `--wired-gb 42` (BF16) were tested on
68
- this 64 GiB Mac. The runtime checks Metal's limit. They are not universal
69
- settings for other machines. Q8/Q4 are storage and memory tradeoffs and have
70
- not established a generation-speed advantage. Frozen modulation tables
71
- require MLX 0.32.4 and `MLX_ENABLE_TF32=0`; original checkpoints remain an
72
- alternative when regenerating tables in another supported environment.
 
 
 
 
 
 
 
 
73
 
74
  ## Reference-image editing
75
 
76
  ```bash
77
  h3-mlx generate --model models/packed12 \
78
  --text-encoder models/packed12/text_encoder \
79
- 'Change the bottle in <Picture 1> to emerald glass while preserving its label' \
80
- --image bottle.png --seed 42 --output outputs/edit.png
81
  ```
82
 
83
- The implementation accepts up to sixteen ordered references. The recorded
84
- image-edit cohort covers one reference. This does not establish quality for
85
- every multi-image composition. Use detailed English prompts. Prompt expansion
86
- is not automatic. The default 2048-square canvas is within the model's usual
87
- 4–20 MP working range. Smaller requested images are generated on an enlarged
88
- canvas and resized; development overrides are documented in the technical guide.
89
-
90
- Each output has a JSON record with precision, seeds, schedule, timings,
91
- memory and environment. Add `--save-trace` for numerical audits. Report issues
92
- with that record, your command, chip, memory, macOS and package versions.
93
-
94
- ## Licenses and access
95
-
96
- The image weights and derivatives retain the MiniMax-H3-Image Community
97
- License Agreement, including its territory, commercial, redistribution and
98
- acceptable-use conditions. The text encoder has its own MiniMax H3 agreement.
99
- The published agreements exclude the EU, UK, Republic of Korea and US absent
100
- separate permission. A manual Hub gate supports access review; it does not
101
- grant rights outside those agreements. See `LICENSE-model`,
102
- `LICENSE-text-encoder`, `NOTICE` and [release status](RELEASE.md).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Installation and inference
2
 
3
+ Use an Apple silicon Mac, native arm64 Python 3.12 and MLX 0.32.4. For a source
4
+ install, follow the [quick start](README.md#quick-start). The release can also
5
+ be installed directly from Git:
6
 
7
+ ```bash
8
+ uv pip install 'minimax-h3-image-mlx[native] @ git+https://github.com/devin-lai/MiniMax-H3-Image-MLX.git@v0.5.0'
9
+ ```
10
 
11
+ `.[native]` supplies the CPU PyTorch RNG used upstream; the neural operators
12
+ run with MLX. `--rng mlx` avoids PyTorch for text-to-image generation but uses
13
+ a different noise stream. Editing needs the original PyTorch generator for
14
+ posterior and anchor sampling. Use detailed English prompts; prompt expansion
15
+ is not automatic.
16
+
17
+ ## Download once, infer locally
18
 
19
  ```bash
 
 
 
20
  hf auth login
 
 
 
 
 
 
21
  h3-mlx download --variant packed12 --model-dir models/packed12
 
 
 
 
22
  ```
23
 
24
+ Request access to the variant and shared repositories first. The downloader
25
+ uses immutable revisions from [model_index.json](h3_mlx/model_index.json),
26
+ fetches only the selected variant and links reusable components from the Hub
27
+ cache. Use a separate assembly directory for each variant/release.
28
 
29
+ ```bash
30
+ h3-mlx download --variant q8 --model-dir models/q8 \
31
+ --text-encoder-path /path/to/existing/text_encoder
32
+ h3-mlx download --variant q4 --model-dir models/q4 \
33
+ --skip-text-encoder --verify
34
+ ```
35
 
36
+ `--verify` rehashes all component files against their SHA-256 manifests.
37
+ `--local-files-only` uses an already populated Hub cache without network access.
38
+ The assembly uses symlinks: keep the Hub cache available, or dereference those
39
+ links when moving weights to another machine. No model files are bundled with
40
+ the Python package. Inference never downloads remote Python or enables
41
+ `trust_remote_code`.
42
 
43
  ```bash
44
+ h3-mlx generate --model models/packed12 \
45
+ --text-encoder models/packed12/text_encoder \
46
+ 'A detailed editorial photograph of a blue glass bottle on pale stone' \
47
+ --seed 731 --width 2048 --height 2048 --output outputs/bottle.png
48
  ```
49
 
50
+ Each PNG is accompanied by a JSON record. Add `--save-trace` to retain the
51
+ conditioning, initial state, six velocities, six Euler states and final latent
52
+ for numerical comparisons. Traces consume additional disk space.
53
+
54
+ ## Reuse a resident pipeline
55
+
56
+ A new CLI process reloads weights. To reuse a model across requests:
57
+
58
+ ```python
59
+ from h3_mlx.runtime import Pipeline
60
+
61
+ pipe = Pipeline(
62
+ "models/packed12",
63
+ "models/packed12/text_encoder",
64
+ compile_blocks=True,
65
+ eval_every=0,
66
+ prefetch_blocks=4,
67
+ vae_compile=True,
68
+ vae_batch=4,
69
+ kernel="metal-qk-exact",
70
+ tune_matmul=True,
71
+ )
72
+ try:
73
+ for seed in (731, 732, 733):
74
+ image, record = pipe.generate(
75
+ "An editorial photograph of a cobalt perfume bottle on pale stone",
76
+ seed=seed,
77
+ output=f"outputs/bottle-{seed}.png",
78
+ )
79
+ finally:
80
+ pipe.clear()
81
+ ```
82
 
83
+ Conditioning is cached by weights, token presentation, images and precision
84
+ settings. Different seeds can reuse it. Refined conditioning is also cached
85
+ exactly; `--no-refiner-cache` disables that second cache.
86
 
87
  ## Measured exact tuning
88
 
89
+ The historical M5 Pro campaign used these CLI options:
90
 
91
  ```bash
92
  --compile-blocks --eval-every 0 --prefetch-blocks 4 \
93
  --compile-vae --vae-batch 4 --kernel metal-qk-exact --tune-matmul
94
  ```
95
 
96
+ The tested 64 GiB machine also used `--wired-gb 32` for packed12 or
97
+ `--wired-gb 42` for BF16. These are process-local MLX limits; the runtime checks
98
+ Metal's recommended working set. They are not universal settings for other
99
+ Macs. The exact Q/K and FC2 kernels restrict dispatch to the tested hardware,
100
+ MLX version and shapes, retaining native fallbacks.
101
+
102
+ The released frozen modulation tables require MLX 0.32.4 and
103
+ `MLX_ENABLE_TF32=0`. Import `h3_mlx` before MLX in embedded applications: the
104
+ package sets that variable and `MLX_CONV_WINOGRAD=0` unless explicitly overridden.
105
+ Overrides are recorded, and incompatible table precision is rejected.
106
+
107
+ The downloader selects packed12/Q8/Q4 precision from release metadata. There
108
+ are no conversion or online-quantization switches. To change precision,
109
+ download another published variant.
110
 
111
  ## Reference-image editing
112
 
113
  ```bash
114
  h3-mlx generate --model models/packed12 \
115
  --text-encoder models/packed12/text_encoder \
116
+ 'Change the bottle in <Picture 1> to emerald glass while preserving the label' \
117
+ --image outputs/bottle.png --seed 42 --output outputs/edit.png
118
  ```
119
 
120
+ Repeat `--image` for ordered references, addressed as `<Picture 1>`,
121
+ `<Picture 2>`, etc. The implementation accepts up to sixteen inputs; the
122
+ recorded editing cohort validates one. This does not establish broad
123
+ multi-reference editing quality.
124
+
125
+ The native minimum generation area is 4,194,304 pixels. Smaller requested
126
+ outputs use an enlarged generation canvas and are resized after decoding.
127
+ For example, the recorded 1024² edit used a 2048² canvas. `--min-generation-area`
128
+ is a development override and changes the workload.
129
+
130
+ ## Memory and optional precision tradeoffs
131
+
132
+ | Option | Effect |
133
+ |---|---|
134
+ | `--dit-cache-gb N` | Budget for resident DiT blocks; default 38 GiB, capped against the device working set |
135
+ | `--mlp-chunk N` | Bound the MLP activation chunk; zero uses the complete sequence |
136
+ | `--attention-chunk N` | Query chunking; zero uses one memory-efficient SDPA call |
137
+ | `--offload-after-denoise` | Release DiT before VAE decoding |
138
+ | `--vae-dtype float32` | Use a separate FP32 decoder precision/performance tradeoff |
139
+ | `--experimental-steps 0,2,4` | Explicitly skip heads; changes images and is outside the six-step benchmark |
140
+
141
+ Q8/Q4 reduce core storage and change images. These knobs do not establish a
142
+ minimum supported RAM capacity. JSON distinguishes MLX allocator counters
143
+ from parent physical footprint; process lifetime high water includes earlier
144
+ requests. Those overlapping counters must not be added.
145
+
146
+ ## Compare actual outputs
147
+
148
+ Install the `audit` extra, then compare matching prompt/seed/canvas outputs:
149
+
150
+ ```bash
151
+ python -m h3_mlx.compare \
152
+ --reference outputs/bf16.png --candidate outputs/q8.png \
153
+ --label BF16 --label Q8 --output outputs/comparison
154
+ ```
155
+
156
+ The comparison tool checks input metadata and writes full-frame grids,
157
+ identical native-resolution crops, amplified RGB differences and scores with
158
+ source hashes. RGB SSIM/PSNR measure similarity to a reference trajectory,
159
+ not prompt adherence or overall aesthetic quality.
160
+
161
+ [Benchmarks and reproduction](BENCHMARKS.md) · [Technical notes](docs/TECHNICAL.md)
assets/banner.svg ADDED
assets/benchmarks.svg ADDED
{reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/comparison.json RENAMED
File without changes
benchmarks/data/bf16/context.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "hardware": "Apple M5 Pro, 16 GPU cores, 64 GiB unified memory",
3
+ "os": "macOS 27.0.1 arm64",
4
+ "software": "MLX/MLX Metal 0.32.4; Python 3.12.14; strict precision environment",
5
+ "environment": "AC Automatic power; MLX_ENABLE_TF32=0, MLX_CONV_WINOGRAD=0; user background apps unchanged; no thermal warning recorded",
6
+ "timing_boundary": "Pipeline.generate total_s: warm text cache, original CPU RNG, six heads, decode, trace and PNG save. Excludes interpreter startup and external quality scoring.",
7
+ "memory_metric": "Parent macOS physical footprint sampled at 100ms, current-interval maximum; includes Metal, excludes compiler XPC. MLX allocator separately; do not sum. Both compiled variants may be resident.",
8
+ "cache_state": "Resident shared native weights and VAE; shape warmup for each variant. Exact conditioning caches warmed outside timed population.",
9
+ "execution_policy": "Single GPU benchmark process; per-case repeats alternate control/candidate then candidate/control then control/candidate. Warmup and first-load excluded from timed population."
10
+ }
{reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/quality-audit.json RENAMED
File without changes
{reports/optimization-r3/qk-deployment → benchmarks/data/bf16}/summary.json RENAMED
File without changes
comparisons/product-cuda/metrics.json → benchmarks/data/cuda-product.json RENAMED
File without changes
{reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/comparison.json RENAMED
File without changes
benchmarks/data/packed12/context.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "hardware": "Apple M5 Pro, 16 GPU cores, 64 GiB unified memory",
3
+ "os": "macOS 27.0.1 arm64",
4
+ "software": "MLX/MLX Metal 0.32.4; Python 3.12.14; strict precision environment",
5
+ "environment": "AC Automatic power; MLX_ENABLE_TF32=0, MLX_CONV_WINOGRAD=0; user background apps unchanged; no thermal warning recorded",
6
+ "timing_boundary": "Pipeline.generate total_s: warm text cache, original CPU RNG, six heads, decode, trace and PNG save. Excludes interpreter startup and external quality scoring.",
7
+ "memory_metric": "Parent macOS physical footprint sampled at 100ms, current-interval maximum; includes Metal, excludes compiler XPC. MLX allocator separately; do not sum. Both compiled variants may be resident.",
8
+ "cache_state": "Resident shared native weights and VAE; shape warmup for each variant. Exact conditioning caches warmed outside timed population.",
9
+ "execution_policy": "Single GPU benchmark process; per-case repeats alternate control/candidate then candidate/control then control/candidate. Warmup and first-load excluded from timed population."
10
+ }
{reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/quality-audit.json RENAMED
File without changes
{reports/optimization-r3/compact-deployment → benchmarks/data/packed12}/summary.json RENAMED
File without changes
reports/tradeoffs.json → benchmarks/data/precision.json RENAMED
@@ -11,30 +11,6 @@
11
  "psnr_db": null,
12
  "ssim_rgb": 1.0
13
  },
14
- {
15
- "profile": "tuned",
16
- "passes": 6,
17
- "denoise_s": 65.01547354180366,
18
- "fresh_end_to_end_s": null,
19
- "peak_mlx_gib": 38.33396276086569,
20
- "pixel_identical": false,
21
- "mae_8bit": 2.3392630418141684,
22
- "max_error_8bit": 250,
23
- "psnr_db": 30.55678913191977,
24
- "ssim_rgb": 0.9757456740909974
25
- },
26
- {
27
- "profile": "fused",
28
- "passes": 6,
29
- "denoise_s": 63.474478498799726,
30
- "fresh_end_to_end_s": 66.34713304112665,
31
- "peak_mlx_gib": 38.306039180606604,
32
- "pixel_identical": false,
33
- "mae_8bit": 2.2516628901163735,
34
- "max_error_8bit": 255,
35
- "psnr_db": 30.86484447444775,
36
- "ssim_rgb": 0.9768710943911784
37
- },
38
  {
39
  "profile": "q8",
40
  "passes": 6,
@@ -58,17 +34,5 @@
58
  "max_error_8bit": 255,
59
  "psnr_db": 15.417449405584902,
60
  "ssim_rgb": 0.7799346096667573
61
- },
62
- {
63
- "profile": "preview",
64
- "passes": 3,
65
- "denoise_s": 32.295400499831885,
66
- "fresh_end_to_end_s": null,
67
- "peak_mlx_gib": 38.32508214563131,
68
- "pixel_identical": false,
69
- "mae_8bit": 25.68697961171468,
70
- "max_error_8bit": 255,
71
- "psnr_db": 15.70646468928225,
72
- "ssim_rgb": 0.6780853944783064
73
  }
74
  ]
 
11
  "psnr_db": null,
12
  "ssim_rgb": 1.0
13
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  {
15
  "profile": "q8",
16
  "passes": 6,
 
34
  "max_error_8bit": 255,
35
  "psnr_db": 15.417449405584902,
36
  "ssim_rgb": 0.7799346096667573
 
 
 
 
 
 
 
 
 
 
 
 
37
  }
38
  ]
benchmarks/data/provenance.json ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "note": "Unmodified historical measurement records, with inference-only context extracts. No model conversion code or checkpoint tensors are included.",
3
+ "historical_release": "https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx/tree/v0.4.1",
4
+ "records": [
5
+ {
6
+ "published_path": "benchmarks/data/bf16/comparison.json",
7
+ "historical_path": "reports/optimization-r3/qk-deployment/comparison.json",
8
+ "sha256": "346409df254b31a692f4d031c1363efd35ba9638db494e4bf5f13afe3b6d31ad"
9
+ },
10
+ {
11
+ "published_path": "benchmarks/data/bf16/quality-audit.json",
12
+ "historical_path": "reports/optimization-r3/qk-deployment/quality-audit.json",
13
+ "sha256": "3d242d63e283fa6dc645adee2c3a1dfda59b5d9ae4ac56cf04e15a5486816a2e"
14
+ },
15
+ {
16
+ "published_path": "benchmarks/data/bf16/summary.json",
17
+ "historical_path": "reports/optimization-r3/qk-deployment/summary.json",
18
+ "sha256": "4dcff0c7944ac8d80a9c9961a1a90507e465ee1b610f86441a45804e02cc3cbe"
19
+ },
20
+ {
21
+ "published_path": "benchmarks/data/packed12/comparison.json",
22
+ "historical_path": "reports/optimization-r3/compact-deployment/comparison.json",
23
+ "sha256": "f04c312015382fdfd7cd021df6168d7729344594ee7c4ac2143b18f4b503c66c"
24
+ },
25
+ {
26
+ "published_path": "benchmarks/data/packed12/quality-audit.json",
27
+ "historical_path": "reports/optimization-r3/compact-deployment/quality-audit.json",
28
+ "sha256": "57ae4aef9579058528381de211636fe9ff02ad9b2f793f65b7b217e91c6e7f16"
29
+ },
30
+ {
31
+ "published_path": "benchmarks/data/packed12/summary.json",
32
+ "historical_path": "reports/optimization-r3/compact-deployment/summary.json",
33
+ "sha256": "020ad62fe1e4ad92331b2e86fb63caa18462adad65e12a86ebadf5b751fa607d"
34
+ },
35
+ {
36
+ "published_path": "benchmarks/data/cuda-product.json",
37
+ "historical_path": "comparisons/product-cuda/metrics.json",
38
+ "sha256": "fe21ecba083569a93eb47c29e759029db0aadffbced7da251471cf4bf35149d1"
39
+ }
40
+ ]
41
+ }
comparisons/README.md DELETED
@@ -1,32 +0,0 @@
1
- # Image comparison gallery
2
-
3
- All comparison pictures are actual recorded inference outputs. Each stack
4
- contains labeled full frames, identical 1:1 crops and absolute RGB differences
5
- amplified eight times. Metrics apply to full-resolution images, not previews.
6
-
7
- | Comparison | Viewer | Image stack | Native detail crops |
8
- |---|---|---|---|
9
- | 2K product: BF16 tuning, Q8, Q4, three-pass preview | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product/details.png) |
10
- | 2K portrait: native BF16 vs Q8 | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait/details.png) |
11
- | Same final latent: VAE batches 1, 4, 8, 16 | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/vae/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/vae/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/vae/details.png) |
12
- | Saved CUDA BF16 vs MLX, product | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product-cuda/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product-cuda/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/product-cuda/details.png) |
13
- | Saved CUDA BF16 vs MLX, portrait | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait-cuda/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait-cuda/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/portrait-cuda/details.png) |
14
- | Saved CUDA BF16 vs MLX, native 4K | [Open](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/native-4k-cuda/index.html) | [Frames](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/native-4k-cuda/stack.png) | [Details](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/native-4k-cuda/details.png) |
15
-
16
- [The editing demonstration](https://huggingface.co/devin-lai/MiniMax-H3-Image-mlx-examples/blob/v0.4.0/comparisons/edit-example/before-after.png) places the input
17
- reference beside the native MLX emerald-glass edit. It is a functional example,
18
- not a pixel-similarity comparison.
19
-
20
- The CUDA comparison uses the original saved RTX 5090 BF16 run with upstream
21
- `quality=lossless`. Its hardware and decoder quality setting differ from the
22
- MLX native tile recipe. It provides visual context; it does not isolate port
23
- error or establish a same-hardware speedup.
24
-
25
- The default MLX BF16 output is the reference for the quantization/tuning
26
- comparisons. Q8, Q4, fused kernels and fewer steps change its pixels. Read the
27
- [experiment report](../reports/RESULTS.md) before selecting a profile.
28
-
29
- Full-resolution Mac outputs and trace tensors are retained locally under
30
- `outputs/suite/` (ignored by Git). Source hashes, configuration, memory and
31
- timing records are exported under `reports/inference/` and each gallery's
32
- `metrics.json`. Original model weights are not included.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/cuda-reference/native-4k.json DELETED
@@ -1,63 +0,0 @@
1
- {
2
- "prompt": "An overhead editorial photograph of an oceanographer's desk: a coiled orange rope, silver calipers, a pale-blue sea chart with fine contour lines, a black-and-white photograph of a lighthouse, a few tiny shells and a weathered brass compass. On a pale notecard write 'NORTH STAR' in neat bold navy capitals. One shaft of late afternoon sunlight, precise paper fibers and metal scratches, realistic soft shadows, a carefully balanced square composition.",
3
- "seed": 802,
4
- "size": [
5
- 4096,
6
- 4096
7
- ],
8
- "canvas": [
9
- 4096,
10
- 4096
11
- ],
12
- "rng": "torch",
13
- "sigmas": [
14
- 1.0,
15
- 0.9675236940383911,
16
- 0.8875485062599182,
17
- 0.75,
18
- 0.5327739119529724,
19
- 0.23200887441635132,
20
- 0.0
21
- ],
22
- "steps": [
23
- 0,
24
- 1,
25
- 2,
26
- 3,
27
- 4,
28
- 5
29
- ],
30
- "output": "comparisons/cuda-reference/native-4k.png",
31
- "timings": {
32
- "total_s": 32.5837
33
- },
34
- "environment": {
35
- "device": "RTX 5090",
36
- "backend": "SGLang CUDA",
37
- "quality": "lossless"
38
- },
39
- "source_record": {
40
- "label": "single-bf16-stream",
41
- "case": "native-4k",
42
- "trial": 1,
43
- "wall_seconds": 32.5837,
44
- "image_bytes": 50339652,
45
- "sha256": "7fd381c76d07a3f5a5e3f1982d454d31c56101f9af22c70900aab983e8465bee",
46
- "size": "4096x4096",
47
- "seed": 802,
48
- "task": "text-to-image",
49
- "quality": "lossless",
50
- "output_compression": 1,
51
- "attention_override": null,
52
- "h3_opt": null,
53
- "prompt": "An overhead editorial photograph of an oceanographer's desk: a coiled orange rope, silver calipers, a pale-blue sea chart with fine contour lines, a black-and-white photograph of a lighthouse, a few tiny shells and a weathered brass compass. On a pale notecard write 'NORTH STAR' in neat bold navy capitals. One shaft of late afternoon sunlight, precise paper fibers and metal scratches, realistic soft shadows, a carefully balanced square composition."
54
- },
55
- "reference_images": [],
56
- "reference_sha256": [],
57
- "dit": {
58
- "precision": "BF16"
59
- },
60
- "vae": {
61
- "quality": "lossless"
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/cuda-reference/portrait.json DELETED
@@ -1,63 +0,0 @@
1
- {
2
- "prompt": "An intimate natural-light portrait of an elderly woman in a botanical conservatory, reading a small red clothbound book. Warm brown skin with visible freckles and fine wrinkles, silver curls lit from behind, intricate indigo knit cardigan. Soft fern fronds out of focus in the foreground; detailed hands and realistic skin texture. A candid 85mm color photograph with gentle shadows and no lettering.",
3
- "seed": 1234,
4
- "size": [
5
- 2048,
6
- 2048
7
- ],
8
- "canvas": [
9
- 2048,
10
- 2048
11
- ],
12
- "rng": "torch",
13
- "sigmas": [
14
- 1.0,
15
- 0.9675236940383911,
16
- 0.8875485062599182,
17
- 0.75,
18
- 0.5327739119529724,
19
- 0.23200887441635132,
20
- 0.0
21
- ],
22
- "steps": [
23
- 0,
24
- 1,
25
- 2,
26
- 3,
27
- 4,
28
- 5
29
- ],
30
- "output": "comparisons/cuda-reference/portrait.png",
31
- "timings": {
32
- "total_s": 6.7668
33
- },
34
- "environment": {
35
- "device": "RTX 5090",
36
- "backend": "SGLang CUDA",
37
- "quality": "lossless"
38
- },
39
- "source_record": {
40
- "label": "single-bf16-stream",
41
- "case": "portrait",
42
- "trial": 1,
43
- "wall_seconds": 6.7668,
44
- "image_bytes": 12585988,
45
- "sha256": "a8e360798a511a2b74f7ee8679699d253282afcf01423f6496f504a2f11c7aad",
46
- "size": "2048x2048",
47
- "seed": 1234,
48
- "task": "text-to-image",
49
- "quality": "lossless",
50
- "output_compression": 1,
51
- "attention_override": null,
52
- "h3_opt": null,
53
- "prompt": "An intimate natural-light portrait of an elderly woman in a botanical conservatory, reading a small red clothbound book. Warm brown skin with visible freckles and fine wrinkles, silver curls lit from behind, intricate indigo knit cardigan. Soft fern fronds out of focus in the foreground; detailed hands and realistic skin texture. A candid 85mm color photograph with gentle shadows and no lettering."
54
- },
55
- "reference_images": [],
56
- "reference_sha256": [],
57
- "dit": {
58
- "precision": "BF16"
59
- },
60
- "vae": {
61
- "quality": "lossless"
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/cuda-reference/product.json DELETED
@@ -1,63 +0,0 @@
1
- {
2
- "prompt": "Square editorial studio photograph of a dark cobalt glass perfume bottle on pale travertine. The centered cream label reads exactly 'NIGHT TIDE' in large engraved serif letters and 'EAU DE PARFUM' in small capitals beneath. Dappled blue caustics, crisp glass edges, fine pores in the stone, dark reflections through the translucent bottle, restrained palette and generous negative space. No other text.",
3
- "seed": 731,
4
- "size": [
5
- 2048,
6
- 2048
7
- ],
8
- "canvas": [
9
- 2048,
10
- 2048
11
- ],
12
- "rng": "torch",
13
- "sigmas": [
14
- 1.0,
15
- 0.9675236940383911,
16
- 0.8875485062599182,
17
- 0.75,
18
- 0.5327739119529724,
19
- 0.23200887441635132,
20
- 0.0
21
- ],
22
- "steps": [
23
- 0,
24
- 1,
25
- 2,
26
- 3,
27
- 4,
28
- 5
29
- ],
30
- "output": "comparisons/cuda-reference/product.png",
31
- "timings": {
32
- "total_s": 6.7003
33
- },
34
- "environment": {
35
- "device": "RTX 5090",
36
- "backend": "SGLang CUDA",
37
- "quality": "lossless"
38
- },
39
- "source_record": {
40
- "label": "single-bf16-stream",
41
- "case": "product",
42
- "trial": 1,
43
- "wall_seconds": 6.7003,
44
- "image_bytes": 12585988,
45
- "sha256": "66a49c7b9d281bf7a4b22356b625bdbee8e92e02b8d8d2031cc24f73601ad531",
46
- "size": "2048x2048",
47
- "seed": 731,
48
- "task": "text-to-image",
49
- "quality": "lossless",
50
- "output_compression": 1,
51
- "attention_override": null,
52
- "h3_opt": null,
53
- "prompt": "Square editorial studio photograph of a dark cobalt glass perfume bottle on pale travertine. The centered cream label reads exactly 'NIGHT TIDE' in large engraved serif letters and 'EAU DE PARFUM' in small capitals beneath. Dappled blue caustics, crisp glass edges, fine pores in the stone, dark reflections through the translucent bottle, restrained palette and generous negative space. No other text."
54
- },
55
- "reference_images": [],
56
- "reference_sha256": [],
57
- "dit": {
58
- "precision": "BF16"
59
- },
60
- "vae": {
61
- "quality": "lossless"
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/edit-example/record.json DELETED
@@ -1,120 +0,0 @@
1
- {
2
- "prompt": "Change the cobalt blue glass perfume bottle in <Picture 1> to deep emerald green glass. Preserve the pale engraved NIGHT TIDE label, exact lettering, bottle shape, cap, stone backdrop, composition, lighting and shadows. The glass should be visibly green with realistic emerald highlights and reflections.",
3
- "seed": 42,
4
- "size": [
5
- 1024,
6
- 1024
7
- ],
8
- "canvas": [
9
- 2048,
10
- 2048
11
- ],
12
- "rng": "torch",
13
- "sigmas": [
14
- 1.0,
15
- 0.9675236940383911,
16
- 0.8875485062599182,
17
- 0.75,
18
- 0.5327739119529724,
19
- 0.23200887441635132,
20
- 0.0
21
- ],
22
- "steps": [
23
- 0,
24
- 1,
25
- 2,
26
- 3,
27
- 4,
28
- 5
29
- ],
30
- "dit": {
31
- "cache_dir": "cache",
32
- "cache_gb": 38,
33
- "bits": null,
34
- "group_size": 64,
35
- "mlp_chunk": 0,
36
- "query_chunk": 0,
37
- "kernel": "native",
38
- "threads": 256,
39
- "quantized_path": null
40
- },
41
- "encoder": {
42
- "cache_dir": "cache",
43
- "bits": null,
44
- "group_size": 64,
45
- "query_chunk": 0
46
- },
47
- "vae": {
48
- "tile_batch": 1,
49
- "dtype": "bfloat16"
50
- },
51
- "environment": {
52
- "platform": "macOS-27.0.1-arm64-arm-64bit",
53
- "machine": "arm64",
54
- "metal": {
55
- "device_name": "Apple M5 Pro",
56
- "max_recommended_working_set_size": 55662788608,
57
- "memory_size": 68719476736,
58
- "architecture": "applegpu_g17s",
59
- "max_buffer_length": 41747087360,
60
- "resource_limit": 499000
61
- },
62
- "versions": {
63
- "mlx": "0.32.4",
64
- "mlx-metal": "0.32.4",
65
- "numpy": "2.5.4",
66
- "safetensors": "0.8.0",
67
- "transformers": "4.57.6",
68
- "torch": "2.15.0",
69
- "Pillow": "13.0.0",
70
- "scikit-image": "0.26.0"
71
- },
72
- "precision_environment": {
73
- "MLX_ENABLE_TF32": "0",
74
- "MLX_CONV_WINOGRAD": "0"
75
- }
76
- },
77
- "timings": {
78
- "encode_s": 28.711510707857087,
79
- "dit_setup_s": 0.3510471251793206,
80
- "step_0_s": 32.27381366607733,
81
- "step_1_s": 18.178750790888444,
82
- "step_2_s": 17.952110541053116,
83
- "step_3_s": 17.822316124802455,
84
- "step_4_s": 17.744772125035524,
85
- "step_5_s": 17.770629958016798,
86
- "decode_s": 4.267031416995451,
87
- "total_s": 157.7393269999884
88
- },
89
- "reference_images": [
90
- "experiments/reference-bottle.png"
91
- ],
92
- "reference_sha256": [
93
- "96d23a5fb97d8dbff46990ec6c13a8caf8573f2b4d41820c9cae0efc3d0b872c"
94
- ],
95
- "conditioning_cache_hit": false,
96
- "dit_effective": {
97
- "bits": null,
98
- "group_size": 64,
99
- "cache_limit_gb": 38.0,
100
- "checkpoint_fingerprint": "d92ff1655d366a65a0964dc770fb50a3db623de2f490371e82776a10e2d5d900"
101
- },
102
- "dit_was_resident": false,
103
- "dit_metrics": {
104
- "block_load_s": 16.658172828843817,
105
- "block_compute_s": 105.10201758518815,
106
- "block_loads": 52
107
- },
108
- "memory_before_decode": {
109
- "active_gb": 36.05878337472677,
110
- "peak_gb": 37.71541484631598,
111
- "cache_gb": 0.9982056273147464
112
- },
113
- "memory": {
114
- "active_gb": 36.81037116795778,
115
- "peak_gb": 37.71541484631598,
116
- "cache_gb": 0.31941457837820053
117
- },
118
- "output": "outputs/suite/edit/native-0.png",
119
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304"
120
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/native-4k-cuda/metrics.json DELETED
@@ -1,75 +0,0 @@
1
- {
2
- "validation_scope": "Cross-backend comparison: hardware and VAE quality settings differ. Timings do not isolate a port speedup.",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/comparisons/cuda-reference/native-4k.png",
4
- "native_size": [
5
- 4096,
6
- 4096
7
- ],
8
- "crop_xyxy": [
9
- 1792,
10
- 1792,
11
- 2304,
12
- 2304
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "CUDA BF16 / upstream lossless quality",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/comparisons/cuda-reference/native-4k.png",
24
- "png_sha256": "7fd381c76d07a3f5a5e3f1982d454d31c56101f9af22c70900aab983e8465bee",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "total_s": 32.5837
32
- },
33
- "steps": [
34
- 0,
35
- 1,
36
- 2,
37
- 3,
38
- 4,
39
- 5
40
- ],
41
- "timing_scope": "Fresh end-to-end request"
42
- },
43
- {
44
- "label": "MLX BF16 / native tile recipe",
45
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/suite/native-4k/native-0.png",
46
- "png_sha256": "9f5b1f2a4d1ef45900e8afd7bf132e43f437c0ded73a79aa6992fe0a968de3c6",
47
- "pixel_identical": false,
48
- "mae_8bit": 10.43891042470932,
49
- "max_error_8bit": 255,
50
- "psnr_db": 21.472787391510856,
51
- "ssim_rgb": 0.8437432938484267,
52
- "timings": {
53
- "encode_s": 39.3051441248972,
54
- "dit_setup_s": 1.2301222910173237,
55
- "step_0_s": 71.125005583046,
56
- "step_1_s": 65.16590758296661,
57
- "step_2_s": 65.27136183297262,
58
- "step_3_s": 65.02919550007209,
59
- "step_4_s": 65.43438254203647,
60
- "step_5_s": 65.73626679205336,
61
- "decode_s": 12.110308207804337
62
- },
63
- "steps": [
64
- 0,
65
- 1,
66
- 2,
67
- 3,
68
- 4,
69
- 5
70
- ],
71
- "timing_scope": "Saved DiT stages plus separately timed corrected decoder; no fresh end-to-end total"
72
- }
73
- ],
74
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
75
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-compact/edit/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/edit/control-validation-0.png",
4
- "native_size": [
5
- 1024,
6
- 1024
7
- ],
8
- "crop_xyxy": [
9
- 256,
10
- 256,
11
- 768,
12
- 768
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/edit/control-validation-0.png",
24
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.0944433338008821,
32
- "dit_setup_s": 0.018301625037565827,
33
- "step_0_s": 16.044049208052456,
34
- "step_1_s": 16.64705704106018,
35
- "step_2_s": 16.798973750090227,
36
- "step_3_s": 16.80766825005412,
37
- "step_4_s": 16.82632016693242,
38
- "step_5_s": 16.788526582997292,
39
- "decode_s": 1.7753529578913003,
40
- "total_s": 104.33122787508182
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/edit/qk-fc2-native-norm-validation-0.png",
55
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.09382429183460772,
63
- "dit_setup_s": 0.005678124958649278,
64
- "step_0_s": 15.517480874899775,
65
- "step_1_s": 15.885630707954988,
66
- "step_2_s": 16.043985707918182,
67
- "step_3_s": 16.065357791027054,
68
- "step_4_s": 16.00308766681701,
69
- "step_5_s": 16.0314345411025,
70
- "decode_s": 1.806969250086695,
71
- "total_s": 99.78968337504193
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-compact/holdout-detail/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/holdout-detail/control-validation-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/holdout-detail/control-validation-0.png",
24
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08503512479364872,
32
- "dit_setup_s": 0.0054474580101668835,
33
- "step_0_s": 10.586685917107388,
34
- "step_1_s": 10.475943374913186,
35
- "step_2_s": 10.536071791080758,
36
- "step_3_s": 10.609299124917015,
37
- "step_4_s": 10.648755833040923,
38
- "step_5_s": 10.659710499923676,
39
- "decode_s": 1.892699166899547,
40
- "total_s": 65.62054104101844
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/holdout-detail/qk-fc2-native-norm-validation-0.png",
55
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08309245808050036,
63
- "dit_setup_s": 0.0016110001597553492,
64
- "step_0_s": 10.02036679093726,
65
- "step_1_s": 10.222182292025536,
66
- "step_2_s": 10.317761083133519,
67
- "step_3_s": 10.258633374935016,
68
- "step_4_s": 10.214116165880114,
69
- "step_5_s": 10.211255375063047,
70
- "decode_s": 1.9069041248876601,
71
- "total_s": 63.36157112498768
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-compact/portrait/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/portrait/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/portrait/control-timed-0.png",
24
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08196645905263722,
32
- "dit_setup_s": 0.0020813329610973597,
33
- "step_0_s": 10.599762792000547,
34
- "step_1_s": 10.859696834115312,
35
- "step_2_s": 10.841980583034456,
36
- "step_3_s": 10.818649291992188,
37
- "step_4_s": 10.812689499929547,
38
- "step_5_s": 10.815967541886494,
39
- "decode_s": 1.8206247920170426,
40
- "total_s": 66.77446975000203
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/portrait/qk-fc2-native-norm-timed-0.png",
55
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08218058408237994,
63
- "dit_setup_s": 0.0021450419444590807,
64
- "step_0_s": 10.038613541051745,
65
- "step_1_s": 10.278275415999815,
66
- "step_2_s": 10.234170750016347,
67
- "step_3_s": 10.295444874791428,
68
- "step_4_s": 10.20847308402881,
69
- "step_5_s": 10.264521708944812,
70
- "decode_s": 1.9153460001107305,
71
- "total_s": 63.443048041081056
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-compact/product/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/product/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/product/control-timed-0.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08302924991585314,
32
- "dit_setup_s": 0.0021304169204086065,
33
- "step_0_s": 10.524454500060529,
34
- "step_1_s": 10.518413708079606,
35
- "step_2_s": 10.792438166914508,
36
- "step_3_s": 10.938075749902055,
37
- "step_4_s": 10.803379165939987,
38
- "step_5_s": 10.852768250042573,
39
- "decode_s": 1.939876874908805,
40
- "total_s": 66.73659237497486
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-compact/product/qk-fc2-native-norm-timed-0.png",
55
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08724224986508489,
63
- "dit_setup_s": 0.0015401248820126057,
64
- "step_0_s": 10.171907834010199,
65
- "step_1_s": 10.420595958130434,
66
- "step_2_s": 10.435337207978591,
67
- "step_3_s": 10.569814499933273,
68
- "step_4_s": 10.503622999880463,
69
- "step_5_s": 10.588133125100285,
70
- "decode_s": 1.9536084169521928,
71
- "total_s": 64.8621540828608
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-deployment/edit/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/edit/control-validation-0.png",
4
- "native_size": [
5
- 1024,
6
- 1024
7
- ],
8
- "crop_xyxy": [
9
- 256,
10
- 256,
11
- 768,
12
- 768
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/edit/control-validation-0.png",
24
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.09496295801363885,
32
- "dit_setup_s": 0.018790250178426504,
33
- "step_0_s": 16.496046874905005,
34
- "step_1_s": 17.588394791819155,
35
- "step_2_s": 17.459331332938746,
36
- "step_3_s": 17.59560624998994,
37
- "step_4_s": 17.775859917048365,
38
- "step_5_s": 17.98469966603443,
39
- "decode_s": 1.7778672080021352,
40
- "total_s": 109.37410999997519
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/edit/qk-fc2-validation-0.png",
55
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.0946252909488976,
63
- "dit_setup_s": 0.005771707976236939,
64
- "step_0_s": 15.780252208001912,
65
- "step_1_s": 16.24150708410889,
66
- "step_2_s": 16.135149333858863,
67
- "step_3_s": 16.180468250066042,
68
- "step_4_s": 16.37875320808962,
69
- "step_5_s": 16.147045334102586,
70
- "decode_s": 1.7784138328861445,
71
- "total_s": 100.89215162489563
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-deployment/holdout-detail/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/holdout-detail/control-validation-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/holdout-detail/control-validation-0.png",
24
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08760958397760987,
32
- "dit_setup_s": 0.005459541920572519,
33
- "step_0_s": 10.42564162495546,
34
- "step_1_s": 10.77243841602467,
35
- "step_2_s": 10.619838000042364,
36
- "step_3_s": 10.630091832950711,
37
- "step_4_s": 10.930967458989471,
38
- "step_5_s": 10.638426082907245,
39
- "decode_s": 1.9144813329912722,
40
- "total_s": 66.1562814170029
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/holdout-detail/qk-fc2-validation-0.png",
55
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08267062506638467,
63
- "dit_setup_s": 0.002635624958202243,
64
- "step_0_s": 9.876321790972725,
65
- "step_1_s": 9.873472125036642,
66
- "step_2_s": 9.758229917148128,
67
- "step_3_s": 9.659938625060022,
68
- "step_4_s": 9.70524508296512,
69
- "step_5_s": 9.690499417018145,
70
- "decode_s": 1.8380374158732593,
71
- "total_s": 60.60736404103227
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-deployment/portrait/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/portrait/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/portrait/control-timed-0.png",
24
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08375041605904698,
32
- "dit_setup_s": 0.0014606250915676355,
33
- "step_0_s": 10.343989124987274,
34
- "step_1_s": 10.484140957938507,
35
- "step_2_s": 10.492746208095923,
36
- "step_3_s": 10.494633583119139,
37
- "step_4_s": 10.36117170797661,
38
- "step_5_s": 10.398765416117385,
39
- "decode_s": 1.8557565829250962,
40
- "total_s": 64.64417616720311
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/portrait/qk-fc2-timed-0.png",
55
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08595199999399483,
63
- "dit_setup_s": 0.0023597090039402246,
64
- "step_0_s": 9.701315457932651,
65
- "step_1_s": 9.964592250064015,
66
- "step_2_s": 9.679471249924973,
67
- "step_3_s": 9.77542870794423,
68
- "step_4_s": 9.722767374943942,
69
- "step_5_s": 9.726279291789979,
70
- "decode_s": 1.84116454096511,
71
- "total_s": 60.62431841692887
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-deployment/product/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/product/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/product/control-timed-0.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08194691711105406,
32
- "dit_setup_s": 0.001686332980170846,
33
- "step_0_s": 10.51596958306618,
34
- "step_1_s": 11.313274249900132,
35
- "step_2_s": 11.170203125104308,
36
- "step_3_s": 11.17257241695188,
37
- "step_4_s": 11.15542795881629,
38
- "step_5_s": 11.049065208993852,
39
- "decode_s": 1.9435918340459466,
40
- "total_s": 68.77809108304791
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-deployment/product/qk-fc2-timed-0.png",
55
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.09126312495209277,
63
- "dit_setup_s": 0.0016431249678134918,
64
- "step_0_s": 10.12600183300674,
65
- "step_1_s": 10.25785204092972,
66
- "step_2_s": 10.31819008407183,
67
- "step_3_s": 10.244670124957338,
68
- "step_4_s": 10.107232958078384,
69
- "step_5_s": 10.029554083012044,
70
- "decode_s": 1.9170843749307096,
71
- "total_s": 63.23245245893486
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-qk/edit/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/edit/control-validation-0.png",
4
- "native_size": [
5
- 1024,
6
- 1024
7
- ],
8
- "crop_xyxy": [
9
- 256,
10
- 256,
11
- 768,
12
- 768
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/edit/control-validation-0.png",
24
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.09503345820121467,
32
- "dit_setup_s": 0.018574999878183007,
33
- "step_0_s": 16.138278875034302,
34
- "step_1_s": 17.324966541025788,
35
- "step_2_s": 17.10170820890926,
36
- "step_3_s": 17.527415458112955,
37
- "step_4_s": 17.178513792110607,
38
- "step_5_s": 17.10299470787868,
39
- "decode_s": 1.7370757500175387,
40
- "total_s": 107.01361245894805
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/edit/qk-fc2-native-norm-validation-0.png",
55
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.09180762502364814,
63
- "dit_setup_s": 0.00593545800074935,
64
- "step_0_s": 15.591749583836645,
65
- "step_1_s": 16.14866058388725,
66
- "step_2_s": 16.148559999885038,
67
- "step_3_s": 16.13089166698046,
68
- "step_4_s": 16.0815456667915,
69
- "step_5_s": 16.000552749959752,
70
- "decode_s": 1.7590807920787483,
71
- "total_s": 100.12193545908667
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-qk/holdout-detail/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/holdout-detail/control-validation-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/holdout-detail/control-validation-0.png",
24
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08907995908521116,
32
- "dit_setup_s": 0.005445417016744614,
33
- "step_0_s": 10.186366624897346,
34
- "step_1_s": 10.398944000015035,
35
- "step_2_s": 10.388187959091738,
36
- "step_3_s": 10.393390582874417,
37
- "step_4_s": 10.412437124876305,
38
- "step_5_s": 10.425708208000287,
39
- "decode_s": 1.8648124169558287,
40
- "total_s": 64.29311916604638
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/holdout-detail/qk-fc2-native-norm-validation-0.png",
55
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08324970793910325,
63
- "dit_setup_s": 0.002322999993339181,
64
- "step_0_s": 9.82555766706355,
65
- "step_1_s": 10.011389791965485,
66
- "step_2_s": 10.023319042054936,
67
- "step_3_s": 9.948340374976397,
68
- "step_4_s": 9.975905125029385,
69
- "step_5_s": 10.093045125016943,
70
- "decode_s": 1.8749908339232206,
71
- "total_s": 61.96455545909703
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-qk/portrait/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/portrait/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/portrait/control-timed-0.png",
24
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08343583298847079,
32
- "dit_setup_s": 0.001739458180963993,
33
- "step_0_s": 10.410045666852966,
34
- "step_1_s": 10.420791167067364,
35
- "step_2_s": 10.387041166890413,
36
- "step_3_s": 10.363457958912477,
37
- "step_4_s": 10.30392266716808,
38
- "step_5_s": 10.31452420912683,
39
- "decode_s": 1.8196195410564542,
40
- "total_s": 64.2339057920035
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/portrait/qk-fc2-native-norm-timed-0.png",
55
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08363316603936255,
63
- "dit_setup_s": 0.0014190839137881994,
64
- "step_0_s": 9.715915624983609,
65
- "step_1_s": 9.817784250015393,
66
- "step_2_s": 9.768883208977059,
67
- "step_3_s": 9.779015209060162,
68
- "step_4_s": 9.768648916855454,
69
- "step_5_s": 9.780800291104242,
70
- "decode_s": 1.8109615000430495,
71
- "total_s": 60.65490966709331
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3-qk/product/qk-fc2-native-norm/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/product/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/product/control-timed-0.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08855687500908971,
32
- "dit_setup_s": 0.0017782910726964474,
33
- "step_0_s": 9.8694685830269,
34
- "step_1_s": 11.024087708909065,
35
- "step_2_s": 10.974625166971236,
36
- "step_3_s": 10.970295834122226,
37
- "step_4_s": 10.889125291956589,
38
- "step_5_s": 10.934292541118339,
39
- "decode_s": 1.9161692501511425,
40
- "total_s": 67.02427170914598
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2-native-norm",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3-qk/product/qk-fc2-native-norm-timed-0.png",
55
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08656845916993916,
63
- "dit_setup_s": 0.0020523329731076956,
64
- "step_0_s": 10.22877712501213,
65
- "step_1_s": 10.409983040997759,
66
- "step_2_s": 10.289188583847135,
67
- "step_3_s": 10.299693416105583,
68
- "step_4_s": 10.278323167003691,
69
- "step_5_s": 10.27706433297135,
70
- "decode_s": 1.8995202500373125,
71
- "total_s": 63.90098704188131
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3/edit/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/edit/control-validation-0.png",
4
- "native_size": [
5
- 1024,
6
- 1024
7
- ],
8
- "crop_xyxy": [
9
- 256,
10
- 256,
11
- 768,
12
- 768
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/edit/control-validation-0.png",
24
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.09193570795468986,
32
- "dit_setup_s": 0.00586116686463356,
33
- "step_0_s": 17.43612916697748,
34
- "step_1_s": 17.915810333099216,
35
- "step_2_s": 17.71518375002779,
36
- "step_3_s": 17.54526187502779,
37
- "step_4_s": 17.438321667024866,
38
- "step_5_s": 17.364450709195808,
39
- "decode_s": 1.7734632920473814,
40
- "total_s": 109.67779112490825
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/edit/qk-fc2-validation-0.png",
55
- "png_sha256": "9df3f80efa5ef9f078c9acda81febdbc2d5d706f3c85c574fdfd9fd274b71304",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.09640745911747217,
63
- "dit_setup_s": 0.006049292162060738,
64
- "step_0_s": 15.941608458058909,
65
- "step_1_s": 16.155159290879965,
66
- "step_2_s": 16.165109500056133,
67
- "step_3_s": 16.26405395916663,
68
- "step_4_s": 16.198108582990244,
69
- "step_5_s": 16.064961167052388,
70
- "decode_s": 1.7583504170179367,
71
- "total_s": 100.86470816703513
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3/gallery.json DELETED
@@ -1,98 +0,0 @@
1
- [
2
- {
3
- "group": "Exact Q/K fusion + FC2 tuning",
4
- "case": "product",
5
- "gallery": "comparisons/optimization-r3-qk/product/qk-fc2-native-norm/index.html",
6
- "metrics_sha256": "49cb9beabd26f0fd062720ff5778e706fe60e06d31cfb88e3d2ece05c502f893",
7
- "grid_sha256": "be898f85d2c0bcd0a90d9a4800cf80e7d3beae1c3df656280fb28b92cb015ac7",
8
- "pixel_identical": true
9
- },
10
- {
11
- "group": "Exact Q/K fusion + FC2 tuning",
12
- "case": "portrait",
13
- "gallery": "comparisons/optimization-r3-qk/portrait/qk-fc2-native-norm/index.html",
14
- "metrics_sha256": "9ea037662ba4f0e1edf08d83c6fab2e9929626831cc32a4a61ed540e531e8807",
15
- "grid_sha256": "700c4593945ef70374cf8ca8d78e516d2acc04b122906538b2976b0d659a59de",
16
- "pixel_identical": true
17
- },
18
- {
19
- "group": "Exact Q/K fusion + FC2 tuning",
20
- "case": "holdout-detail",
21
- "gallery": "comparisons/optimization-r3-qk/holdout-detail/qk-fc2-native-norm/index.html",
22
- "metrics_sha256": "4775d06f38348f216efb8b5ba42ada72077ef087d65b83f8e3accdfa1af87df9",
23
- "grid_sha256": "31f84926000a62f32f753bd338c9b36f17188cd35acd1a63cf3d70eaaf33f73d",
24
- "pixel_identical": true
25
- },
26
- {
27
- "group": "Exact Q/K fusion + FC2 tuning",
28
- "case": "edit",
29
- "gallery": "comparisons/optimization-r3-qk/edit/qk-fc2-native-norm/index.html",
30
- "metrics_sha256": "d1969a84e778912065751bba2037db6c13a74aa32c0f442ecc61c5b82eee8da9",
31
- "grid_sha256": "5da61cb450c4b90fad6f42178b6a22367db5a54c02aaf7b47b215a8bd196047c",
32
- "pixel_identical": true
33
- },
34
- {
35
- "group": "Lossless packed weights + exact tuning",
36
- "case": "product",
37
- "gallery": "comparisons/optimization-r3-compact/product/qk-fc2-native-norm/index.html",
38
- "metrics_sha256": "b463bc389757d18fb52f502a1e6f3a564c975f6beb13ca2321c39a57cf86e1b7",
39
- "grid_sha256": "be898f85d2c0bcd0a90d9a4800cf80e7d3beae1c3df656280fb28b92cb015ac7",
40
- "pixel_identical": true
41
- },
42
- {
43
- "group": "Lossless packed weights + exact tuning",
44
- "case": "portrait",
45
- "gallery": "comparisons/optimization-r3-compact/portrait/qk-fc2-native-norm/index.html",
46
- "metrics_sha256": "45f490f5a6ec12f32db054f4aedee0b7dbe302592018b24116be3e06702cadb4",
47
- "grid_sha256": "700c4593945ef70374cf8ca8d78e516d2acc04b122906538b2976b0d659a59de",
48
- "pixel_identical": true
49
- },
50
- {
51
- "group": "Lossless packed weights + exact tuning",
52
- "case": "holdout-detail",
53
- "gallery": "comparisons/optimization-r3-compact/holdout-detail/qk-fc2-native-norm/index.html",
54
- "metrics_sha256": "575108c69e22d78093498f7db49bfd8cd96ef4886c1c0049852746c5de874d56",
55
- "grid_sha256": "31f84926000a62f32f753bd338c9b36f17188cd35acd1a63cf3d70eaaf33f73d",
56
- "pixel_identical": true
57
- },
58
- {
59
- "group": "Lossless packed weights + exact tuning",
60
- "case": "edit",
61
- "gallery": "comparisons/optimization-r3-compact/edit/qk-fc2-native-norm/index.html",
62
- "metrics_sha256": "1b521c42efdca3075605036fc51bc86e27c3cd9fb8c3aded100085a30422c427",
63
- "grid_sha256": "5da61cb450c4b90fad6f42178b6a22367db5a54c02aaf7b47b215a8bd196047c",
64
- "pixel_identical": true
65
- },
66
- {
67
- "group": "Full-width fusion: exact pixels, memory tradeoff",
68
- "case": "product",
69
- "gallery": "comparisons/optimization-r3-deployment/product/qk-fc2/index.html",
70
- "metrics_sha256": "5a3bc54f6b0916d83a1bf70d7af55989a234011fdcd2409fc74955a289783b03",
71
- "grid_sha256": "b7d9451370370d8428aad4847d86ac3982ceec1c5b4af0b90c5bb43d77e9a21f",
72
- "pixel_identical": true
73
- },
74
- {
75
- "group": "Full-width fusion: exact pixels, memory tradeoff",
76
- "case": "portrait",
77
- "gallery": "comparisons/optimization-r3-deployment/portrait/qk-fc2/index.html",
78
- "metrics_sha256": "859bd41ce5bd6c6611dfc3716cfdb4e698869477856c8c55e0cccc5314c8b4cd",
79
- "grid_sha256": "517416f9020f0be9692914e18ba0bd8c5e11df84bc4bf1e1afc732f06b2606a2",
80
- "pixel_identical": true
81
- },
82
- {
83
- "group": "Full-width fusion: exact pixels, memory tradeoff",
84
- "case": "holdout-detail",
85
- "gallery": "comparisons/optimization-r3-deployment/holdout-detail/qk-fc2/index.html",
86
- "metrics_sha256": "7ff107dd7a594c524c3096601ce938c2485b97d2dce22a6250506d37ac86ea52",
87
- "grid_sha256": "47bac50ff41f08d8ae4e45fd7e269340aadca8e7fdec4fb0c889ab6bd8db1e88",
88
- "pixel_identical": true
89
- },
90
- {
91
- "group": "Full-width fusion: exact pixels, memory tradeoff",
92
- "case": "edit",
93
- "gallery": "comparisons/optimization-r3-deployment/edit/qk-fc2/index.html",
94
- "metrics_sha256": "a9881cfa4f375b17fc9872cdd162bf864313b8c7b17bf5797a619f998f063f92",
95
- "grid_sha256": "52d3a40d35505c1c893c2e1917d7367b9aa3faf815b341f6740b5eccbea3280b",
96
- "pixel_identical": true
97
- }
98
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3/holdout-detail/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/holdout-detail/control-validation-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/holdout-detail/control-validation-0.png",
24
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08546350011602044,
32
- "dit_setup_s": 0.0028562501538544893,
33
- "step_0_s": 10.619318875018507,
34
- "step_1_s": 10.635955666890368,
35
- "step_2_s": 10.632296457886696,
36
- "step_3_s": 10.644406750099733,
37
- "step_4_s": 10.566011917078868,
38
- "step_5_s": 10.629142459016293,
39
- "decode_s": 1.9020051669795066,
40
- "total_s": 65.84704962512478
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/holdout-detail/qk-fc2-validation-0.png",
55
- "png_sha256": "ddbfc06c4556c08669d35a4618d380a99998e39a0226e7688d149993ab183038",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08358391700312495,
63
- "dit_setup_s": 0.0018770832102745771,
64
- "step_0_s": 9.848138374974951,
65
- "step_1_s": 9.98282212507911,
66
- "step_2_s": 10.09999533300288,
67
- "step_3_s": 10.163251249818131,
68
- "step_4_s": 10.270917958114296,
69
- "step_5_s": 10.198511166963726,
70
- "decode_s": 1.904920166125521,
71
- "total_s": 62.68734062509611
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3/portrait/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/portrait/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/portrait/control-timed-0.png",
24
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.08550125011242926,
32
- "dit_setup_s": 0.0015632910653948784,
33
- "step_0_s": 10.885879541980103,
34
- "step_1_s": 11.088049875106663,
35
- "step_2_s": 11.107039166148752,
36
- "step_3_s": 11.065090750111267,
37
- "step_4_s": 10.819651541067287,
38
- "step_5_s": 10.922892624977976,
39
- "decode_s": 1.9121064159553498,
40
- "total_s": 68.0219049169682
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/portrait/qk-fc2-timed-0.png",
55
- "png_sha256": "32af5e3b95919e79e0019058ec396824c5861f9a43a4fa50c7b20348e8d81933",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.08716454193927348,
63
- "dit_setup_s": 0.0025339999701827765,
64
- "step_0_s": 10.343852832913399,
65
- "step_1_s": 10.311937124934047,
66
- "step_2_s": 10.07040312513709,
67
- "step_3_s": 10.080784375080839,
68
- "step_4_s": 10.095044541871175,
69
- "step_5_s": 10.125651291804388,
70
- "decode_s": 1.8876813750248402,
71
- "total_s": 63.14736045780592
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-r3/product/qk-fc2/metrics.json DELETED
@@ -1,85 +0,0 @@
1
- {
2
- "validation_scope": "Complete image inference",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/product/control-timed-0.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Current BF16 control",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/product/control-timed-0.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.0853560408577323,
32
- "dit_setup_s": 0.0015609171241521835,
33
- "step_0_s": 10.232307167025283,
34
- "step_1_s": 11.155369125073776,
35
- "step_2_s": 11.181794625008479,
36
- "step_3_s": 11.19105491694063,
37
- "step_4_s": 11.266168375033885,
38
- "step_5_s": 11.14753987500444,
39
- "decode_s": 1.9626916251145303,
40
- "total_s": 68.59933650004677
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "qk-fc2",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/optimization-r3/product/qk-fc2-timed-0.png",
55
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
56
- "pixel_identical": true,
57
- "mae_8bit": 0.0,
58
- "max_error_8bit": 0,
59
- "psnr_db": null,
60
- "ssim_rgb": 1.0,
61
- "timings": {
62
- "encode_s": 0.0866880000103265,
63
- "dit_setup_s": 0.0022984161041677,
64
- "step_0_s": 10.573326792102307,
65
- "step_1_s": 10.764806583058089,
66
- "step_2_s": 10.743913582991809,
67
- "step_3_s": 10.55372745799832,
68
- "step_4_s": 10.52767491596751,
69
- "step_5_s": 10.614938125014305,
70
- "decode_s": 1.9278774580452591,
71
- "total_s": 65.93319679214619
72
- },
73
- "steps": [
74
- 0,
75
- 1,
76
- 2,
77
- 3,
78
- 4,
79
- 5
80
- ],
81
- "timing_scope": "Fresh end-to-end request"
82
- }
83
- ],
84
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
85
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/comparison/metrics.json DELETED
@@ -1,76 +0,0 @@
1
- {
2
- "validation_scope": "Same final latent; decoder-only comparison. Source-generation and decoder-only timings have different scopes.",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/suite/product/native-3.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Native BF16 decoder",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/suite/product/native-3.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.09756437502801418,
32
- "dit_setup_s": 1.1571008330211043,
33
- "step_0_s": 10.822453290922567,
34
- "step_1_s": 11.303021250059828,
35
- "step_2_s": 11.45283200009726,
36
- "step_3_s": 11.480994417099282,
37
- "step_4_s": 11.41636574990116,
38
- "step_5_s": 11.394194666063413,
39
- "decode_s": 3.528030874906108,
40
- "total_s": 72.77735170791857
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "Core ML CPU_AND_NE, batch 1, contiguous bridge",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/image.png",
55
- "png_sha256": "a72edf0d9bd4148b6c1d22821102bd096229911889e1d5d95350bddc545a34ac",
56
- "pixel_identical": false,
57
- "mae_8bit": 1.1787954171498616,
58
- "max_error_8bit": 43,
59
- "psnr_db": 42.42709412463761,
60
- "ssim_rgb": 0.9889744364650547,
61
- "timings": {
62
- "decode_s": 30.625669125001878
63
- },
64
- "steps": [
65
- 0,
66
- 1,
67
- 2,
68
- 3,
69
- 4,
70
- 5
71
- ],
72
- "timing_scope": "One complete decoder pass; model loading excluded"
73
- }
74
- ],
75
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/image.json DELETED
@@ -1,68 +0,0 @@
1
- {
2
- "prompt": "Square editorial studio photograph of a dark cobalt glass perfume bottle on pale travertine. The centered cream label reads exactly 'NIGHT TIDE' in large engraved serif letters and 'EAU DE PARFUM' in small capitals beneath. Dappled blue caustics, crisp glass edges, fine pores in the stone, dark reflections through the translucent bottle, restrained palette and generous negative space. No other text.",
3
- "seed": 731,
4
- "size": [
5
- 2048,
6
- 2048
7
- ],
8
- "canvas": [
9
- 2048,
10
- 2048
11
- ],
12
- "rng": "torch",
13
- "reference_images": [],
14
- "reference_sha256": [],
15
- "sigmas": [
16
- 1.0,
17
- 0.9675236940383911,
18
- 0.8875485062599182,
19
- 0.75,
20
- 0.5327739119529724,
21
- 0.23200887441635132,
22
- 0.0
23
- ],
24
- "steps": [
25
- 0,
26
- 1,
27
- 2,
28
- 3,
29
- 4,
30
- 5
31
- ],
32
- "validation_scope": "Same final latent; decoder only",
33
- "timing_scope": "One complete decoder pass; model loading excluded",
34
- "timings": {
35
- "decode_s": 30.625669125001878
36
- },
37
- "load_s": 47.709695749916136,
38
- "vae_backend": "coreml",
39
- "vae": {
40
- "batch": 1,
41
- "compute_units": "CPU_AND_NE"
42
- },
43
- "source_trace": "outputs/suite/product/native-3.trace.safetensors",
44
- "source_trace_sha256": "40440f8bf2c8f2ab3cbb454ccc9416062b9d69718aa6a0ef9baf1268037b9a29",
45
- "output": "comparisons/optimization-v2/contiguous-b1-CPU_AND_NE/image.png",
46
- "png_sha256": "a72edf0d9bd4148b6c1d22821102bd096229911889e1d5d95350bddc545a34ac",
47
- "numpy_bridge": {
48
- "output_shape": [
49
- 1,
50
- 3,
51
- 256,
52
- 256
53
- ],
54
- "output_strides": [
55
- 786432,
56
- 262144,
57
- 1024,
58
- 4
59
- ],
60
- "output_c_contiguous": true,
61
- "original_mlx_numpy_import_exact": true
62
- },
63
- "pixel_identical": false,
64
- "mae_8bit": 1.1787954171498616,
65
- "max_error_8bit": 43,
66
- "psnr_db": 42.42709412463761,
67
- "ssim_rgb": 0.9889744364650547
68
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/comparison/metrics.json DELETED
@@ -1,76 +0,0 @@
1
- {
2
- "validation_scope": "Same final latent; decoder-only comparison. Source-generation and decoder-only timings have different scopes.",
3
- "reference": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/suite/product/native-3.png",
4
- "native_size": [
5
- 2048,
6
- 2048
7
- ],
8
- "crop_xyxy": [
9
- 768,
10
- 768,
11
- 1280,
12
- 1280
13
- ],
14
- "heatmap_gain": 8,
15
- "metric_definition": {
16
- "psnr": "Full-resolution 8-bit RGB MSE, data range 255; null means infinity",
17
- "ssim": "scikit-image RGB structural_similarity, channel_axis=-1, data_range=255, default 7x7 window",
18
- "mae": "Full-resolution mean absolute 8-bit RGB error"
19
- },
20
- "rows": [
21
- {
22
- "label": "Native BF16 decoder",
23
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/outputs/suite/product/native-3.png",
24
- "png_sha256": "63684ef8ae148a35ddef02650c6aa30b4843b47c99b06cec2ea3708ef3fc2293",
25
- "pixel_identical": true,
26
- "mae_8bit": 0.0,
27
- "max_error_8bit": 0,
28
- "psnr_db": null,
29
- "ssim_rgb": 1.0,
30
- "timings": {
31
- "encode_s": 0.09756437502801418,
32
- "dit_setup_s": 1.1571008330211043,
33
- "step_0_s": 10.822453290922567,
34
- "step_1_s": 11.303021250059828,
35
- "step_2_s": 11.45283200009726,
36
- "step_3_s": 11.480994417099282,
37
- "step_4_s": 11.41636574990116,
38
- "step_5_s": 11.394194666063413,
39
- "decode_s": 3.528030874906108,
40
- "total_s": 72.77735170791857
41
- },
42
- "steps": [
43
- 0,
44
- 1,
45
- 2,
46
- 3,
47
- 4,
48
- 5
49
- ],
50
- "timing_scope": "Fresh end-to-end request"
51
- },
52
- {
53
- "label": "Core ML CPU_AND_GPU, batch 8, contiguous bridge",
54
- "image": "/Users/devin/Desktop/MiniMax-H3-Image-mlx/comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/image.png",
55
- "png_sha256": "36a7cdad88b12839d1e4cd30384ee60fafffaac52d2ba05e3be409a33a40a50a",
56
- "pixel_identical": false,
57
- "mae_8bit": 0.2054581642150879,
58
- "max_error_8bit": 7,
59
- "psnr_db": 54.674052201530415,
60
- "ssim_rgb": 0.9983190643001968,
61
- "timings": {
62
- "decode_s": 1.8162069998215884
63
- },
64
- "steps": [
65
- 0,
66
- 1,
67
- 2,
68
- 3,
69
- 4,
70
- 5
71
- ],
72
- "timing_scope": "One complete decoder pass; model loading excluded"
73
- }
74
- ],
75
- "interpretation": "Pixel similarity to the same seeded trajectory, not a measure of prompt adherence or perceptual quality."
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/image.json DELETED
@@ -1,68 +0,0 @@
1
- {
2
- "prompt": "Square editorial studio photograph of a dark cobalt glass perfume bottle on pale travertine. The centered cream label reads exactly 'NIGHT TIDE' in large engraved serif letters and 'EAU DE PARFUM' in small capitals beneath. Dappled blue caustics, crisp glass edges, fine pores in the stone, dark reflections through the translucent bottle, restrained palette and generous negative space. No other text.",
3
- "seed": 731,
4
- "size": [
5
- 2048,
6
- 2048
7
- ],
8
- "canvas": [
9
- 2048,
10
- 2048
11
- ],
12
- "rng": "torch",
13
- "reference_images": [],
14
- "reference_sha256": [],
15
- "sigmas": [
16
- 1.0,
17
- 0.9675236940383911,
18
- 0.8875485062599182,
19
- 0.75,
20
- 0.5327739119529724,
21
- 0.23200887441635132,
22
- 0.0
23
- ],
24
- "steps": [
25
- 0,
26
- 1,
27
- 2,
28
- 3,
29
- 4,
30
- 5
31
- ],
32
- "validation_scope": "Same final latent; decoder only",
33
- "timing_scope": "One complete decoder pass; model loading excluded",
34
- "timings": {
35
- "decode_s": 1.8162069998215884
36
- },
37
- "load_s": 10.882885874947533,
38
- "vae_backend": "coreml",
39
- "vae": {
40
- "batch": 8,
41
- "compute_units": "CPU_AND_GPU"
42
- },
43
- "source_trace": "outputs/suite/product/native-3.trace.safetensors",
44
- "source_trace_sha256": "40440f8bf2c8f2ab3cbb454ccc9416062b9d69718aa6a0ef9baf1268037b9a29",
45
- "output": "comparisons/optimization-v2/contiguous-b8-CPU_AND_GPU/image.png",
46
- "png_sha256": "36a7cdad88b12839d1e4cd30384ee60fafffaac52d2ba05e3be409a33a40a50a",
47
- "numpy_bridge": {
48
- "output_shape": [
49
- 8,
50
- 3,
51
- 256,
52
- 256
53
- ],
54
- "output_strides": [
55
- 786432,
56
- 262144,
57
- 1024,
58
- 4
59
- ],
60
- "output_c_contiguous": true,
61
- "original_mlx_numpy_import_exact": true
62
- },
63
- "pixel_identical": false,
64
- "mae_8bit": 0.2054581642150879,
65
- "max_error_8bit": 7,
66
- "psnr_db": 54.674052201530415,
67
- "ssim_rgb": 0.9983190643001968
68
- }