Tools

Flux.1 Schnell Local Deployment Guide via ComfyUI

Back to Tutorials

I recently tested the highly anticipated Flux.1 Schnell model, and honestly, the hype is justified. Black Forest Labs managed to drop an open-weights image generator that easily rivals closed-source models. After spending a few days optimizing it, I want to show you exactly why it's dominating my workflow and how you can run it locally without breaking a sweat.

Why Flux.1 is Breaking the Internet

The first time I fired up Flux.1, I noticed a dramatic shift in prompt adherence. If I asked for specific text on a sign, it actually spelled it right. It handles anatomy significantly better than older models. The "Schnell" (fast) variant uses distillation, meaning it requires fewer steps (usually 4-8) to output a high-quality image. This drastically cuts down VRAM usage and generation time.

Prerequisites for Local Deployment

Before jumping into ComfyUI, make sure your rig is ready. Here's what I'm running:

  • GPU: Minimum 12GB VRAM (NVIDIA RTX 3060 or better). 16GB+ is ideal.
  • Storage: At least 40GB of free NVMe SSD space (the weights are huge).
  • RAM: 32GB system RAM recommended.

Step 1: Setting up ComfyUI

If you don't have ComfyUI installed, setting it up is straightforward. I prefer using a virtual environment.

git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
python -m venv venv
# On Windows
venv\Scripts\activate
# Install requirements
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt

Step 2: Downloading the Flux.1 Weights

You need a few specific files to make this work. Head over to Hugging Face and grab:

  1. The UNet: flux1-schnell.sft (Drop this in ComfyUI/models/unet/)
  2. The VAE: ae.sft (Drop this in ComfyUI/models/vae/)
  3. The CLIP models: You'll need clip_l.safetensors and t5xxl_fp16.safetensors or a quantized fp8 version if you are tight on VRAM. (Drop these in ComfyUI/models/clip/)

Step 3: The ComfyUI Workflow

Building the workflow from scratch can be tedious. Here's the basic node structure I use:

  1. DualCLIPLoader: Load the T5 and CLIP_L models.
  2. UNETLoader: Load the Flux.1 Schnell model.
  3. VAELoader: Load the AE model.
  4. CLIPTextEncode (x2): One for positive, one for negative prompts.
  5. KSampler: Connect it all. I found using the `euler` sampler with `simple` scheduler at 4 steps works wonders for the Schnell model.

💡 Pro Tip: If you're hitting Out of Memory (OOM) errors, swap the T5 text encoder for the fp8 version. It drops VRAM usage by almost 8GB with minimal quality loss.

Once your nodes are wired up, hit 'Queue Prompt'. The first generation will take a minute as it loads the massive models into VRAM, but subsequent generations should take just a few seconds.