12GB of VRAM won't work? Can it be used with FLUX.1-schnell?
#7
by
andchir
- opened
12GB of VRAM won't work? How much video memory does this require?
Can it be used with FLUX.1-schnell?
It works with 12 but the main flux model has to be quantized.
@Karachay
Thanks for the reply. So I can use quantized Flux?
For example, I can use this model:
https://huggingface.co/lllyasviel/flux1-dev-bnb-nf4
Or does the upscaler model also need to be quantized? There is no such model now?
Can you please explain how quantizing a model works? I have 16 GBs of RAM and I am not able to load the model with the following code:
import torch
from diffusers import FluxControlNetModel
from diffusers.pipelines import FluxControlNetPipeline
# Load pipeline
controlnet = FluxControlNetModel.from_pretrained(
"jasperai/Flux.1-dev-Controlnet-Upscaler",
torch_dtype=torch.bfloat16
)
pipe = FluxControlNetPipeline.from_pretrained(
"black-forest-labs/FLUX.1-dev",
controlnet=controlnet,
torch_dtype=torch.bfloat16
)
pipe.to("cuda")
I get this error:OutOfMemoryError: CUDA out of memory.
PROBLEM SOLUTION:
import torch
from diffusers.utils import load_image
from diffusers import FluxControlNetModel, BitsAndBytesConfig, FluxTransformer2DModel
from diffusers.pipelines import FluxControlNetPipeline
nf4_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16
)
controlnet = FluxControlNetModel.from_pretrained(
"jasperai/Flux.1-dev-Controlnet-Upscaler",
quantization_config=nf4_config,
)
model_id = "black-forest-labs/FLUX.1-dev"
nf4_id = "sayakpaul/flux.1-dev-nf4-with-bnb-integration"
model_nf4 = FluxTransformer2DModel.from_pretrained(nf4_id, torch_dtype=torch.float16)
pipe = FluxControlNetPipeline.from_pretrained(
model_id,
transformer=model_nf4,
torch_dtype=torch.float16,
controlnet=controlnet
)
pipe.enable_model_cpu_offload()
control_image = load_image(
"image.jpg"
)
image = pipe(
prompt="",
control_image=control_image,
controlnet_conditioning_scale=0.6,
num_inference_steps=28,
guidance_scale=3.5,
height=control_image.size[1],
width=control_image.size[0]
).images[0]
image.save("upscaled_img_quanted.png")
@indianspice @andchir if you have not solved it yet