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.txtStep 2: Downloading the Flux.1 Weights
You need a few specific files to make this work. Head over to Hugging Face and grab:
- The UNet:
flux1-schnell.sft(Drop this inComfyUI/models/unet/) - The VAE:
ae.sft(Drop this inComfyUI/models/vae/) - The CLIP models: You'll need
clip_l.safetensorsandt5xxl_fp16.safetensorsor a quantized fp8 version if you are tight on VRAM. (Drop these inComfyUI/models/clip/)
Step 3: The ComfyUI Workflow
Building the workflow from scratch can be tedious. Here's the basic node structure I use:
- DualCLIPLoader: Load the T5 and CLIP_L models.
- UNETLoader: Load the Flux.1 Schnell model.
- VAELoader: Load the AE model.
- CLIPTextEncode (x2): One for positive, one for negative prompts.
- 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
fp8version. 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.