Spaces:
Running
Running
title: auto-diffuser-config | |
app_file: gradio_app.py | |
sdk: gradio | |
sdk_version: 5.31.0 | |
# Auto-Diffusers | |
An intelligent code generator that creates optimized diffusers library snippets based on your hardware specifications using Google's Gemini API. | |
## Features | |
- **Hardware Detection**: Automatically detects your system specs (CPU, GPU, VRAM) or allows manual input | |
- **Real-time Optimization**: Fetches latest optimization techniques from HuggingFace documentation | |
- **Smart Code Generation**: Uses Gemini API to generate hardware-optimized diffusers code | |
- **Multiple Profiles**: Supports high-end GPU, mid-range GPU, low VRAM, Apple Silicon, and CPU-only configurations | |
## Setup | |
1. Create and activate conda environment: | |
```bash | |
conda create -n auto-diffusers python=3.11 -y | |
conda activate auto-diffusers | |
``` | |
2. Install dependencies: | |
```bash | |
pip install -r requirements.txt | |
``` | |
3. Set up Gemini API key: | |
```bash | |
export GEMINI_API_KEY="your_api_key_here" | |
``` | |
## Usage | |
### Interactive Mode | |
```bash | |
python auto_diffusers.py | |
``` | |
### Hardware Detection Only | |
```bash | |
python hardware_detector.py | |
``` | |
### Programmatic Usage | |
```python | |
from auto_diffusers import AutoDiffusersGenerator | |
generator = AutoDiffusersGenerator(api_key="your_key") | |
code = generator.generate_optimized_code( | |
model_name="black-forest-labs/FLUX.1-schnell", | |
prompt_text="A cat holding a sign that says hello world", | |
image_size=(768, 1360), | |
num_inference_steps=4 | |
) | |
print(code) | |
``` | |
## Hardware Profiles | |
- **high_end_gpu**: 20+ GB VRAM (RTX 4090, A100, etc.) | |
- **mid_range_gpu**: 8-20 GB VRAM (RTX 3080, RTX 4070, etc.) | |
- **low_vram_gpu**: <8 GB VRAM (GTX 1660, RTX 3060, etc.) | |
- **apple_silicon**: M1/M2/M3 Macs with MPS support | |
- **cpu_only**: No GPU acceleration | |
## Optimization Techniques Applied | |
The generator automatically applies appropriate optimizations based on your hardware: | |
- Memory optimizations (model offloading, attention slicing, VAE slicing) | |
- Speed optimizations (torch.compile, optimal dtypes) | |
- Hardware-specific optimizations (CUDA, MPS, CPU fallbacks) | |
- Model-specific configurations (schedulers, inference parameters) | |
## Example Output | |
```python | |
import torch | |
from diffusers import FluxPipeline | |
# Optimized for Apple Silicon (MPS) | |
pipe = FluxPipeline.from_pretrained( | |
"black-forest-labs/FLUX.1-schnell", | |
torch_dtype=torch.bfloat16 | |
) | |
pipe.to("mps") | |
pipe.enable_attention_slicing() | |
prompt = "A cat holding a sign that says hello world" | |
out = pipe( | |
prompt=prompt, | |
guidance_scale=0., | |
height=768, | |
width=1360, | |
num_inference_steps=4, | |
max_sequence_length=256, | |
).images[0] | |
out.save("image.png") | |
``` |