|
--- |
|
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 8-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_8bit_combined.png" alt="Flux-dev output with BnB 8-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-8bit", |
|
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_8bit=True), |
|
"text_encoder_2": TransformersBitsAndBytesConfig(load_in_8bit=True), |
|
} |
|
) |
|
|
|
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-8bit") |
|
``` |