High-quality FP8 quantized SDXL checkpoint models for efficient text-to-image generation at 1024x1024 resolution. This repository contains FP8-optimized versions of SDXL base and SDXL-Turbo models, providing reduced memory footprint while maintaining image quality.
Model Description
Stable Diffusion XL (SDXL) is Stability AI's flagship text-to-image model featuring a larger UNet backbone (2.6B parameters) and dual text encoders (OpenCLIP ViT-bigG and CLIP ViT-L) for superior prompt understanding and image quality at native 1024x1024 resolution.
SDXL-Turbo is a distilled variant enabling high-quality generation in 1-4 steps through Adversarial Diffusion Distillation (ADD), achieving up to 10x faster inference while maintaining image quality.
FP8 Quantization: These models use 8-bit floating point precision, reducing memory requirements by ~50% compared to FP16 versions while maintaining comparable image quality. FP8 models are ideal for systems with limited VRAM or when running multiple models simultaneously.
Precision: FP8 (8-bit floating point quantization)
Format: SafeTensors (secure tensor serialization)
Text Encoders: OpenCLIP ViT-bigG-14 + CLIP ViT-L/14
Memory Advantage: ~50% reduction vs FP16 versions (13GB → 6.5GB for base, 26GB → 13GB for turbo)
Hardware Requirements
SDXL Base FP8 Model
VRAM: 6 GB minimum, 8 GB+ recommended (50% less than FP16)
Disk Space: 7 GB
System RAM: 12 GB+ recommended
Inference Time: ~10-50 steps (3-15 seconds on RTX 3090)
SDXL-Turbo FP8 Model
VRAM: 6 GB minimum, 8 GB+ recommended (50% less than FP16)
Disk Space: 13 GB
System RAM: 12 GB+ recommended
Inference Time: 1-4 steps (0.5-2 seconds on RTX 3090)
FP8 Performance Notes
Memory Efficiency: FP8 uses ~50% less VRAM than FP16 models
Quality: Minimal quality loss compared to FP16 (typically <5% perceptual difference)
Speed: Slightly faster inference on GPUs with FP8 tensor cores (Ada Lovelace/Hopper)
Compatibility: Requires PyTorch 2.1+ and appropriate GPU drivers for optimal FP8 support
Use xformers or torch.compile() for additional 20-30% speedup
Batch size >1 requires additional VRAM (~3GB per image with FP8 vs ~4GB with FP16)
Usage Examples
SDXL Base Model - Standard Generation
python
1from diffusers import DiffusionPipeline
2import torch
34# Load SDXL base model from local checkpoint5pipe = DiffusionPipeline.from_single_file(6r"E:\huggingface\sdxl-fp8\checkpoints\sdxl\sdxl-base.safetensors",7 torch_dtype=torch.float16,8 use_safetensors=True9)1011pipe.to("cuda")1213# Enable memory-efficient attention (optional)14pipe.enable_xformers_memory_efficient_attention()1516# Generate image17prompt ="a serene mountain landscape at sunset, photorealistic, 8k, detailed"18negative_prompt ="blurry, distorted, low quality, artifacts"1920image = pipe(21 prompt=prompt,22 negative_prompt=negative_prompt,23 num_inference_steps=40,24 guidance_scale=7.5,25 width=1024,26 height=102427).images[0]2829image.save("output.png")
SDXL-Turbo - Fast Generation
python
1from diffusers import AutoPipelineForText2Image
2import torch
34# Load SDXL-Turbo for accelerated inference5pipe = AutoPipelineForText2Image.from_single_file(6r"E:\huggingface\sdxl-fp8\checkpoints\sdxl\sdxl-turbo.safetensors",7 torch_dtype=torch.float16
8)910pipe.to("cuda")1112# Turbo models work best with 1-4 steps and LOW guidance13prompt ="a cute cat wearing sunglasses, digital art"1415image = pipe(16 prompt=prompt,17 num_inference_steps=4,# 1-4 steps optimal for Turbo18 guidance_scale=0.0,# Turbo is trained for guidance_scale=019 width=512,20 height=51221).images[0]2223image.save("turbo_output.png")
Advanced - Using with ComfyUI
python
1# Place models in ComfyUI checkpoint directory:2# ComfyUI\models\checkpoints\3# Then load via ComfyUI interface as "sdxl-base" or "sdxl-turbo"45# Recommended ComfyUI settings for SDXL Base:6# - Sampler: DPM++ 2M Karras / Euler a7# - Steps: 30-508# - CFG Scale: 7-99# - Resolution: 1024x1024 or aspect ratio variations1011# Recommended settings for SDXL-Turbo:12# - Sampler: Euler a13# - Steps: 1-414# - CFG Scale: 1.0-2.015# - Resolution: 512x512 (fastest) or 768x768
Advanced - Custom Pipeline with Refiner
python
1from diffusers import DiffusionPipeline, StableDiffusionXLImg2ImgPipeline
2import torch
34# Load base model5base = DiffusionPipeline.from_single_file(6r"E:\huggingface\sdxl-fp8\checkpoints\sdxl\sdxl-base.safetensors",7 torch_dtype=torch.float16
8).to("cuda")910# Generate base image11prompt ="majestic castle on a cliff, fantasy art, detailed"12image = base(13 prompt=prompt,14 num_inference_steps=40,15 denoising_end=0.8,# End early for refiner16 output_type="latent"17).images[0]1819# Note: Refiner model not included in this repository20# Download separately from Hugging Face if needed:21# refiner = StableDiffusionXLImg2ImgPipeline.from_pretrained(22# "stabilityai/stable-diffusion-xl-refiner-1.0",23# torch_dtype=torch.float1624# ).to("cuda")25#26# refined_image = refiner(27# prompt=prompt,28# image=image,29# denoising_start=0.830# ).images[0]
Model Specifications
Architecture Details
SDXL Base 1.0 (FP8):
UNet: 2.6B parameters with cross-attention layers (FP8 quantized)
Text Encoder 1: OpenCLIP ViT-bigG-14 (695M params)
Text Encoder 2: CLIP ViT-L/14 (123M params)
VAE: AutoencoderKL for latent encoding/decoding
Training Resolution: 1024x1024 (multi-aspect ratio training)
Latent Channels: 4
Conditioning: Dual text embeddings + time embeddings + resolution conditioning
SDXL-Turbo (FP8):
Base Architecture: SDXL UNet (distilled, FP8 quantized)
Primary Precision: FP8 (8-bit floating point) for UNet weights
Text Encoders: Typically FP16/FP32 for numerical stability
Quantization Method: Post-training quantization from FP16 to FP8
Quality Retention: ~95-98% of original FP16 quality with 50% memory reduction
Performance Tips and Optimization
Memory Optimization
python
1# FP8 models already use 50% less VRAM, but you can optimize further:23# Enable memory-efficient attention4pipe.enable_xformers_memory_efficient_attention()56# Or use scaled dot product attention (PyTorch 2.0+)7pipe.enable_attention_slicing()89# Enable VAE tiling for large images10pipe.enable_vae_tiling()1112# CPU offloading for limited VRAM (even with FP8, useful for <6GB VRAM)13pipe.enable_model_cpu_offload()1415# Sequential CPU offload for extreme memory constraints16pipe.enable_sequential_cpu_offload()
Speed Optimization
python
1# FP8 provides inherent speed advantages on modern GPUs (RTX 40-series, H100)23# Compile UNet with torch.compile (PyTorch 2.0+)4pipe.unet = torch.compile(pipe.unet, mode="reduce-overhead", fullgraph=True)56# Use faster samplers7# DPM++ 2M Karras: Good quality, ~25-35 steps8# Euler a: Fast, ~30-40 steps9# LCM: Ultra-fast with LCM-LoRA, ~4-8 steps1011# Reduce resolution for faster inference12# 768x768: ~40% faster than 1024x102413# 512x512: ~70% faster than 1024x10241415# Note: FP8 tensor cores on Ada/Hopper GPUs provide additional 10-20% speedup
Quality Optimization
python
1# Use higher step counts for complex prompts2num_inference_steps =50# Default: 4034# Adjust CFG scale based on desired creativity5guidance_scale =7.5# Lower (5-7): more creative6# Higher (8-12): stronger prompt adherence78# Use negative prompts to avoid unwanted elements9negative_prompt ="blurry, bad anatomy, deformed, ugly, low quality"1011# For SDXL-Turbo, use 1-4 steps and low guidance12num_inference_steps =213guidance_scale =0.0
❌ Illegal activities or harmful content generation
❌ Misrepresentation of outputs as human-created
⚠️ Responsibility for generated content lies with the user
Attribution: When using these models commercially, please credit Stability AI and link to the original model repository.
Citation
If you use SDXL models in your research or projects, please cite:
bibtex
1@misc{podell2023sdxl,
2 title={SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis},
3 author={Dustin Podell and Zion English and Kyle Lacey and Andreas Blattmann and Tim Dockhorn and Jonas Müller and Joe Penna and Robin Rombach},
4 year={2023},
5 eprint={2307.01952},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV}
8}
For SDXL-Turbo:
bibtex
1@misc{sauer2023adversarial,
2 title={Adversarial Diffusion Distillation},
3 author={Axel Sauer and Dominik Lorenz and Andreas Blattmann and Robin Rombach},
4 year={2023},
5 eprint={2311.17042},
6 archivePrefix={arXiv},
7 primaryClass={cs.CV}
8}