FLUX.2 [klein] 4B
A Core AI bundle of black-forest-labs/FLUX.2-klein-4B for the Aether SDK (iOS and macOS 27+).
- Source:
black-forest-labs/FLUX.2-klein-4Bat revisione7b7dc27f91deacad38e78976d1f2b499d76a294, licence Apache-2.0. The licence is included asLICENSE. - Changes from the source: converted from PyTorch to Core AI (
.aimodel) by Aether forge (recipeflux2-klein-4b@3). Weights are int8-linear-perchannel (8-bit weights). Three assets per variant, run one after another: the text encoder (these weights, cut after decoder layer 27), the denoiser (these weights, float32 residual stream) and the image decoder (float16 weights, float32 compute, never quantized). The tokenizer files are the source's own. - Output: images from text prompts (
imageOutput), 4 steps by default, no guidance.
Variants
| Variant | Platform | Arch | Compute | Compiled | Assets | Download |
|---|---|---|---|---|---|---|
macos-any-gpu |
macos | any | gpu | no (specialized on first load) | flux2_klein_4b-denoiser0.aimodel 1.9 GB, flux2_klein_4b-denoiser1.aimodel 1.28 GB, flux2_klein_4b-denoiser2.aimodel 1.44 GB, flux2_klein_4b-text.aimodel 3.12 GB, flux2_klein_4b-vae.aimodel 101.5 MB |
7.87 GB |
ios-any-gpu |
ios | any | gpu | no (specialized on first load) | flux2_klein_4b-denoiser0.aimodel 1.9 GB, flux2_klein_4b-denoiser1.aimodel 1.28 GB, flux2_klein_4b-denoiser2.aimodel 1.44 GB, flux2_klein_4b-text.aimodel 3.12 GB, flux2_klein_4b-vae.aimodel 101.5 MB |
7.87 GB |
Image sizes:
macos-any-gpu: 1024×1024 (default), 512×512, 768×768, 1024×768, 768×1024, 1344×768, 768×1344ios-any-gpu: 512×512 (default), 576×448, 448×576, 768×768, 1024×576, 576×1024, 1024×1024
ios-any-gpu needs the com.apple.developer.kernel.increased-memory-limit entitlement: its T2 run peaked at 4590 MB on iPhone18,2 (record e10b51c0). Its stages load one at a time.
Verification
Every row is a record in verification/ about exactly these bytes (matched by bundle digest). Reference rows
are strict T2 passes of the unquantized export on the same fixture, in verification/reference/.
| Variant | Tier | Result | Detail | Device | OS build | Compute | Record |
|---|---|---|---|---|---|---|---|
ios-any-gpu |
T2 | pass | 8/8 cases; profile quantized-8bit; image path SSIM ≥ 0.94; fixture 523d996477835636 |
iPhone18,2 | 24A437 | target | e10b51c0 |
macos-any-gpu |
T2 | pass | 8/8 cases; profile quantized-8bit; image path SSIM ≥ 0.94; fixture 523d996477835636 |
Mac17,6 | 26A428 | target | 2dbe813e |
macos-any-gpu |
T3 | pass | imagegen-shapes-v1; 100.0% vs reference 100.0%; 100 items; judged by qwen3-vl-2b |
Mac17,6 | 26A428 | target | 10a8baac |
| unquantized reference (not published) | T2 | pass | 8/8 cases; profile strict; image path SSIM ≥ 0.98; fixture 523d996477835636 |
Mac17,6 | 26A428 | target | 70d5bf8d |
The quantized profile also requires: T2 strict on the unquantized reference export (met by the reference row).
Use
aether generate flux2-klein-4b --prompt "A lighthouse at dusk, watercolor" -o lighthouse.png
import Aether
let aether = try Aether()
let generator = try await aether.imageGenerator("flux2-klein-4b")
let image = try await generator.image(for: ImageRequest(prompt: "A lighthouse at dusk, watercolor"))
try image.pngData().write(to: URL(fileURLWithPath: "lighthouse.png"))
Model tree for aether-models/flux2-klein-4b
Base model
black-forest-labs/FLUX.2-klein-4B