FLUX.1-dev-e4m3 / README.md
chengzeyi's picture
Add model card metadata: base_model, license, pipeline_tag, tags
81b253b verified
|
Raw
History Blame Contribute Delete
1.82 kB
metadata
base_model: black-forest-labs/FLUX.1-dev
library_name: diffusers
license: other
license_name: flux-1-dev-non-commercial-license
license_link: https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md
pipeline_tag: text-to-image
tags:
  - flux
  - text-to-image
  - quantized
  - fp8
  - e4m3
  - diffusers
base_model_relation: quantized

FLUX.1-dev-e4m3

FP8 (e4m3) dynamically-quantized FLUX.1-dev, saved as a complete FluxPipeline.

What was changed

Every double and single transformer block of the FluxTransformer2DModel is quantized to e4m3_e4m3_dynamicfloat8_e4m3fn weights with dynamically scaled float8_e4m3fn activations. The rest of the pipeline is unchanged: the transformer's non-block tensors, the CLIP text encoder and the VAE stay in fp16, and the T5 text encoder stays in bf16. The transformer shrinks from ~23.8 GB to ~12.0 GB.

This is the same recipe as wavespeed/FLUX.1-dev-int8 with an fp8 rather than int8 numeric format. FP8 matmul needs Hopper (H100/H200) or newer; on Ada and older the weights dequantize instead and you lose the speedup.

Quantization was done with WaveSpeed's xelerate.ao.quantize. Weights are stored as pickled .bin shards, so loading requires use_safetensors=False.

Usage

import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained(
    "wavespeed/FLUX.1-dev-e4m3",
    torch_dtype=torch.float16,
    use_safetensors=False,
).to("cuda")

License

Derived from FLUX.1-dev, so the FLUX.1 [dev] Non-Commercial License applies to these weights and to anything generated with them. Not for commercial use.