Downloads · 30 days
0
radames/flux2-klein-edge-web
flux2-klein-edge-web is a text-to-image model from radames. Use it when you need an image from a text prompt. The card lists the license as other.
The weights behind radames/flux-klein-web, a demo that runs the full FLUX.2 Klein 4B pipeline inside a browser tab: the transformer in hand-written WGSL (WebGPU), the distilled text encoder and BFL's distilled VAE thr…
Downloads · 30 days
0
Access
Public
Updated Sep 18, 2026
Repo size
9.5 GB
Likes
0
Public
Click a slice to open those files.
.bin7.3 GB · 73%
From the Hugging Face model README
The weights behind radames/flux-klein-web, a demo that runs the full FLUX.2 Klein 4B pipeline inside a browser tab: the transformer in hand-written WGSL (WebGPU), the distilled text encoder and BFL's distilled VAE through onnxruntime-web. The page streams these files straight into the browser and keeps them in the origin private file system, so a second visit starts in seconds.
This repo holds weights only. The engine is the flux-klein.js npm package (the WGSL transformer, the ONNX text encoder and VAE, the OPFS cache); the demo page lives in the Space. The package fetches from this repo by default:
import { createFluxKlein } from "flux-klein.js";
const klein = await createFluxKlein(); // base: https://huggingface.co/radames/flux2-klein-edge-web/resolve/main
const { rgba, width, height } = await klein.generate({ prompt: "a red bicycle", width: 256, height: 256 });
| path | what | size |
|---|---|---|
web_weights/ | int8 transformer, 9 shards + manifest.json: q [N, K] int8 with f32 per-row scales. The desktop build keeps it resident on the GPU. | 3.8 GB |
web_weights_mobile/ | int4 (group 64, asymmetric) block matmuls + the same small tensors, 6 shards. Streamed through a small GPU ring; the phone build. | 2.3 GB |
web_weights_lora_2step/ | the 2-step distillation LoRA as a separate rank-64 int8 set, applied at run time on either transformer set | 96 MB |
web_weights_lora_sprint/ | the SANA-Sprint few-step LoRA as a rank-256 int8 set, applied at run time on either transformer set for the 1–2 step presets | 0.39 GB |
te_onnx/ | distilled 0.6B text encoder, ONNX with MatMulNBits q8 (desktop) | 0.96 GB |
te_onnx_slim/ | the same graph minus its embedding table, plus embed_tokens.f16.bin looked up client-side (mobile) | 0.66 GB |
vae_onnx/ | FLUX.2 small decoder as fixed-shape graphs r128 / r256 / r320 (tiles), reference encoders enc128 / enc256 / enc512, bn_stats.json. model.ort where present is the ORT-format twin of model.onnx + .data. | 1.2 GB |
tokenizer/ | Qwen3 tokenizer; the chat template is applied client-side | 15 MB |
Every web_weights*/ set is one manifest.json describing tensors as byte ranges into
w0.bin … w<n-1>.bin (raw little-endian bytes, 16-byte aligned). Loaders validate each shard's
length against the manifest and each cached file against the Hub's ETag, so a re-upload here
invalidates browser caches on its own.
What a page downloads on first run: desktop ≈ 5 GB (web_weights, te_onnx, vae_onnx);
phone ≈ 3.2 GB (web_weights_mobile, te_onnx_slim, vae_onnx); 2 steps add the LoRA.
Quantized from black-forest-labs/FLUX.2-klein-4B. int8 is per-row absmax; int4 is asymmetric group-wise along K. End-to-end parity against the f32-dequantized reference is rel-L2 ≈ 1e-2 (bf16-scale rounding noise).
The weights are released under the FLUX.2 Klein license linked above; using them means accepting it.