| --- |
| base_model: black-forest-labs/FLUX.1-dev |
| library_name: diffusers |
| base_model_relation: quantized |
| tags: |
| - quantization |
| --- |
| |
|
|
| # Visual comparison of Flux-dev model outputs using BF16 and BnB 8-bit quantization |
|
|
| <td style="text-align: center;"> |
| BF16<br> |
| <medium-zoom background="rgba(0,0,0,.7)"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/quantization-backends-diffusers/combined_flux-dev_bf16_combined.png" alt="Flux-dev output with BF16: Baroque, Futurist, Noir styles"></medium-zoom> |
| </td> |
| <td style="text-align: center;"> |
| BnB 4-bit<br> |
| <medium-zoom background="rgba(0,0,0,.7)"><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/quantization-backends-diffusers/combined_flux-dev_bnb_4bit_combined.png" alt="Flux-dev output with BnB 4-bit: Baroque, Futurist, Noir styles"></medium-zoom> |
| </td> |
|
|
|
|
| # Usage with Diffusers |
|
|
| To use this quantized FLUX.1 [dev] checkpoint, you need to install the 🧨 diffusers and bitsandbytes library: |
|
|
| ``` |
| pip install -U diffusers |
| pip install -U bitsandbytes |
| ``` |
|
|
| After installing the required library, you can run the following script: |
|
|
| ```python |
| from diffusers import FluxPipeline |
| |
| pipe = FluxPipeline.from_pretrained( |
| "diffusers/FLUX.1-dev-bnb-4bit", |
| torch_dtype=torch.bfloat16 |
| ) |
| pipe.to("cuda") |
| |
| prompt = "Baroque style, a lavish palace interior with ornate gilded ceilings, intricate tapestries, and dramatic lighting over a grand staircase." |
| |
| pipe_kwargs = { |
| "prompt": prompt, |
| "height": 1024, |
| "width": 1024, |
| "guidance_scale": 3.5, |
| "num_inference_steps": 50, |
| "max_sequence_length": 512, |
| } |
| |
| image = pipe( |
| **pipe_kwargs, generator=torch.manual_seed(0), |
| ).images[0] |
| |
| image.save("flux.png") |
| ``` |
|
|
|
|
| # How to generate this quantized checkpoint ? |
|
|
| This checkpoint was created with the following script using "black-forest-labs/FLUX.1-dev" checkpoint: |
|
|
| ```python |
| |
| import torch |
| from diffusers import FluxPipeline |
| from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig |
| from diffusers.quantizers import PipelineQuantizationConfig |
| from transformers import BitsAndBytesConfig as TransformersBitsAndBytesConfig |
| |
| pipeline_quant_config = PipelineQuantizationConfig( |
| quant_mapping={ |
| "transformer": DiffusersBitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16), |
| "text_encoder_2": TransformersBitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16), |
| } |
| ) |
| |
| pipe = FluxPipeline.from_pretrained( |
| "black-forest-labs/FLUX.1-dev", |
| quantization_config=pipeline_quant_config, |
| torch_dtype=torch.bfloat16 |
| ) |
| |
| pipe.save_pretrained("FLUX.1-dev-bnb-4bit") |
| ``` |