Skip to content

Run on mflux 0.23 and release 0.2.1 - #19

Merged
IonDen merged 4 commits into
mainfrom
feature/0050-mflux-0.23
Oct 28, 2026
Merged

IonDen merged 4 commits into
mainfrom
feature/0050-mflux-0.23

Conversation

@IonDen

@IonDen IonDen commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

mlx-dfloat has been pinned to mflux 0.20 since 0.2.0, while PyPI has moved on to 0.23. This change moves the mflux extra and the benchmark group to mflux>=0.23,<0.24 and adds pillow<13, because mflux 0.23.0 fails at import with Pillow 13. Version 0.2.1 requires mflux 0.23, and the mflux extra's pin excludes 0.20.

For users, the fixes follow from what mflux 0.23 changed. FLUX.1 now loads norm_out.linear.bias, which mflux 0.23 builds and loads. Qwen-Image-2.1 runs through mflux's packed projections one block at a time; its compiled step functions stay out of the generation path, and a step function compiled between calls is refused. Z-Image and FLUX.2 Klein set the attributes mflux 0.23 reads at generate time and refuse mflux's precision options. A base checkpoint that lacks required weights now fails with an error naming the missing tensors. Each model's BF16 base repository is pinned to a fixed revision, the snapshot the recorded runs used, and a base passed with --base is used as given. mlx-dfloat generate reports now record the macOS version. The README's tier table has a new last column, mflux, showing which version each row ran on. The changelog has a 0.2.1 entry dated 2026-10-28.

To check it, FLUX.1-schnell, Z-Image (base), the distilled FLUX.2-klein-4B and Qwen-Image-2.1 were run again on mflux 0.23.0 on the 32 GB M1 Max (macOS 27.0.1, mlx 0.32.2) at 1024². In each, the final latents are equal to those of the same transformer streaming its BF16 weights, and the images are identical pixel for pixel. The distilled FLUX.2-klein-4B had no identity record before; this is its first. The measured peaks are 19.77 GiB (schnell), 14.40 GiB (Z-Image), 11.85 GiB (klein-4B) and 20.37 GiB (Qwen-Image-2.1), all under the machine's 22.96 GiB fit budget. Z-Image's watched peak was above the old fit estimate for its VAE step (13.15 GiB), so this change raises the Z-Image estimate to cover every committed Z-Image run, and raises Qwen-Image-2.1's by 0.04 GiB. On a 24 GB Mac (not measured), a Z-Image call is now planned to drop the compressed transformer before the VAE decode. CI on this branch (https://github.com/IonDen/mlx-dfloat/actions/runs/40759395675): the required test job passed (2036 passed, coverage 87.98 % against the 85 % gate) and the integration (0.23.0) lane passed (533 passed). ruff, the format check and mypy are clean, and the table script's check confirms the generated README blocks are current.

What stays on mflux 0.20 numbers: ERNIE-Image and ERNIE-Image-Turbo, Krea 2 Turbo and Raw, FLUX.2-klein-base-4B, base-9B and 9B, Z-Image-Turbo, FLUX.1-dev and FLUX.1-Krea-dev, and the stopped 16 GB and 24 GB rows. They were not run again, and the tier table labels each 0.20, not re-run on 0.23. The stopped rows come from 0.2.0 files that record no mflux version, so they read not recorded. A tier run the watchdog stops now records the mflux version.

@IonDen IonDen self-assigned this Oct 28, 2026
@IonDen IonDen added release Release preparation ci CI workflow and configuration tests Test suite changes documentation Improvements or additions to documentation labels Oct 28, 2026
Raise the mflux extra and the bench group to mflux>=0.23,<0.24 with
pillow<13 (mflux 0.23.0 fails at import with Pillow 13). Load FLUX.1's
norm_out.linear.bias, which mflux now builds and loads. Run Qwen-Image
2.1 through mflux's packed projections one block at a time, keep its
compiled step functions out of the generation path, and refuse a step
function compiled between calls. Export the empty COMPUTED_PARAMS set
from the Qwen-Image 2.1 transformer, as the Krea 2 and ERNIE transformers
do. Set the generate-time attributes mflux 0.23 reads for Z-Image and
FLUX.2 Klein and refuse its precision options. Name the missing tensors
when a base checkpoint lacks required weights. Pin the base repository
revision for FLUX.1, Z-Image and FLUX.2 Klein. Record the macOS version
in generate reports.
Lock the integration lane to mflux 0.23.0 and fail it when the lock installs another release, so the lane's name cannot outlive the pin. Add an mflux column to the README tier table: each row names the version it ran on, rows not re-run on 0.23 say so, and records without a version read "not recorded".
Identity and tier records on mflux 0.23 for FLUX.1-schnell, Z-Image, FLUX.2 Klein 4B and Qwen-Image 2.1. Klein 4B gets its first identity record.
@IonDen
IonDen force-pushed the feature/0050-mflux-0.23 branch from bf5ad11 to 9b8a69f Compare October 28, 2026 19:47
@IonDen
IonDen force-pushed the feature/0050-mflux-0.23 branch from 9b8a69f to b5c176c Compare October 28, 2026 20:00
@IonDen
IonDen merged commit 90da775 into main Oct 28, 2026
6 checks passed
@IonDen
IonDen deleted the feature/0050-mflux-0.23 branch October 28, 2026 20:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CI workflow and configuration documentation Improvements or additions to documentation release Release preparation tests Test suite changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant