๐ฅ Baguette
A Distributed Inference Engine for Paris MoE Diffusion Models
Fast, efficient inference for the 5-billion parameter Paris Mixture-of-Experts text-to-image model
โก Quick Start
# Clone the repo
git clone https://huggingface.co/nbagel/baguette
cd baguette
# Install dependencies
pip install uv && uv pip install torch torchvision safetensors transformers diffusers accelerate tqdm
# Generate images
python generate.py --prompt "a cute cat" --num_samples 4
Output: output_bf16.png with 4 generated images.
๐จ Generation Examples
# Basic generation (4 images, top-2 routing, 30 steps)
python generate.py --prompt "sunset over mountains" --num_samples 4
# See expert routing visualization
python generate.py --prompt "abstract art" --visualize
# Faster generation
python generate.py --prompt "a happy dog" --num_steps 20
# Lower memory usage (offload experts to CPU)
python generate.py --prompt "portrait of a scientist" --offload 4
# INT8 quantized (smaller weights)
python generate.py --prompt "enchanted forest" --precision int8
๐ฎ Expert Routing Visualization
Baguette includes real-time visualization of the MoE router's expert selection. Use --visualize to see which experts are activated:
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โก EXPERT USAGE DISTRIBUTION โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ E4 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 40.6% โ
โ E2 โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ 36.7% โ
โ E6 โโโโโโโโโโโโ โ 14.8% โ
โ E1 โโโโโ โ 5.5% โ
โ E5 โโโ โ 2.3% โ
โ E0 โ โ 0.0% โ
โ E3 โ โ 0.0% โ
โ E7 โ โ 0.0% โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Active: 5/8 experts Calls: 128 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ๐ ROUTING TIMELINE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Step 0 1 2 3 4 5 6 7 8 9 10 11 12 13 โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ E0 ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E1 ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E2 ยท ยท ยท ยท ยท โ โ โ โ โ โ โ โ โ โ
โ E3 ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E4 ยท ยท โ โ โ ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E5 ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E6 โ โ ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โ E7 ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท ยท โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Routing changes: 2/13 steps (15%) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
The router dynamically selects different experts based on the noise level at each diffusion timestep. Early steps (high noise) often use different experts than later steps (low noise).
๐ Command Reference
| Flag | Default | Description |
|---|---|---|
--prompt |
"a cute cat" |
Text description of the image to generate |
--num_samples |
16 |
Number of images to generate |
--num_steps |
30 |
Diffusion sampling steps (15-50) |
--cfg_scale |
7.5 |
Classifier-free guidance scale (5-12) |
--precision |
bf16 |
Weight precision: bf16 or int8 |
--topk |
2 |
Number of experts per sample (1-8) |
--offload |
0 |
Experts to offload to CPU RAM (0-7) |
--visualize |
false |
Show expert routing statistics |
--output |
auto |
Custom output filename |
--seed |
999 |
Random seed for reproducibility |
๐๏ธ Model Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PARIS MoE ARCHITECTURE โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Input: Text Prompt โโโ CLIP ViT-L/14 โโโ Text Embeddings โ
โ โ
โ Noise: z ~ N(0,1) โโโ 32ร32ร4 Latent โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ DiT-B/2 ROUTER โ โ
โ โ (12 layers, 768 dim, 129M params) โ โ
โ โ โ โ โ
โ โ Selects Top-K Experts per Step โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ Expert 0 โ โ Expert 1 โ ยทยทยท โ Expert 7 โ โ
โ โ DiT-XL/2 โ โ DiT-XL/2 โ โ DiT-XL/2 โ โ
โ โ 606M โ โ 606M โ โ 606M โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ โ
โ โผ โ
โ Weighted Velocity Prediction โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SD-VAE DECODER โ โ
โ โ Latent โโโ 256ร256 RGB โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Total: ~5 Billion Parameters โ 8 Specialized Experts โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐พ Available Weights
| Format | Size | Quality | Speed | Use Case |
|---|---|---|---|---|
| BF16 | 9.3 GB | โญโญโญโญโญ | Fastest | Production, best quality |
| INT8 | 4.8 GB | โญโญโญโญ | Fast | Memory-constrained GPUs |
๐ฅ๏ธ Memory Requirements
| Configuration | GPU VRAM | Speed | Notes |
|---|---|---|---|
| BF16, no offload | ~25 GB | ~3 img/s | Best performance |
| BF16, offload 4 | ~14 GB | ~1 img/s | RTX 4090 / A6000 |
| BF16, offload 6 | ~8 GB | ~0.5 img/s | RTX 3080/4080 |
| INT8, no offload | ~12 GB | ~2 img/s | Good balance |
| INT8, offload 4 | ~8 GB | ~0.5 img/s | Consumer GPUs |
๐ง Utilities
Benchmarking
python benchmark.py --quick # Fast benchmark
python benchmark.py --output results.md # Full benchmark, save results
Weight Conversion
# Convert PyTorch checkpoints to BF16 SafeTensors
python quantize.py --input /path/to/weights --output ./weights/bf16 --format bf16
# Convert BF16 to INT8
python quantize.py --input ./weights/bf16 --output ./weights/int8 --format int8
๐ Future: Distributed Inference with Tailscale + Erlang
Baguette is being developed as a fully distributed inference engine that can run across multiple machines connected via Tailscale VPN, orchestrated by an Erlang/OTP supervisor.
๐ Architecture Vision
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BAGUETTE DISTRIBUTED NETWORK โ
โ (Up to 8 Nodes) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ Tailscale VPN Mesh โโโโโโโโโโโโโโโ โ
โ โ Node 1 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบโ Node 2 โ โ
โ โ โโโโโโโโโโโ โ โ โโโโโโโโโโโ โ โ
โ โ โ Router โ โ โ โ Router โ โ โ
โ โ โ VAE โ โ โ โ VAE โ โ โ
โ โ โExpert 0 โ โ โ โExpert 1 โ โ โ
โ โ โโโโโโโโโโโ โ โ โโโโโโโโโโโ โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโบโ Erlang/OTP โโโโโโโโโโโโโโโโ โ
โ โ Coordinator โ โ
โ โโโโโโโโโโบโ โโโโโโโโโโโโโโโโ โ
โ โ โ โข Load Balance โ โ โ
โ โ โ โข Fault Tolerantโ โ โ
โ โ โ โข Auto-Healing โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
โ โโโโโโโโดโโโโโโโ โโโโโโโโดโโโโโโโ โ
โ โ Node 3 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโบโ Node 4 โ โ
โ โ โโโโโโโโโโโ โ ... โ โโโโโโโโโโโ โ โ
โ โ โ Router โ โ โ โ Router โ โ โ
โ โ โ VAE โ โ (up to 8 nodes) โ โ VAE โ โ โ
โ โ โExpert 2 โ โ โ โExpert 3 โ โ โ
โ โ โโโโโโโโโโโ โ โ โโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฏ Key Features (Planned)
| Feature | Description |
|---|---|
| Self-Organizing Network | Nodes automatically discover peers and negotiate roles |
| Adaptive Load Balancing | Routes requests based on real-time latency and compute availability |
| Auto-Benchmarking | Each node benchmarks GPU/CPU speed, VRAM, RAM, and network throughput |
| Fault Tolerance | Erlang supervisors restart failed nodes, redistribute load |
| 1 Expert Per Node | Each node loads only 1 expert (~2.7GB VRAM) plus router & VAE |
| Latency-Aware Routing | Prioritizes low-latency nodes for time-sensitive steps |
| Zero Configuration | Just join the Tailscale network and runโautomatic peer discovery |
๐ Node Self-Benchmarking
When a node joins the network, it automatically benchmarks:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ NODE CAPABILITY REPORT โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ GPU: NVIDIA RTX 4090 โ
โ VRAM: 24 GB โ
โ GPU Compute: 847 TFLOPS (FP16) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ CPU: AMD Ryzen 9 7950X โ
โ RAM: 64 GB โ
โ CPU Compute: 2.1 TFLOPS โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Network Latency to Peers: โ
โ โ Node 2: 12ms โ
โ โ Node 3: 8ms โ
โ โ Node 4: 45ms โ
โ Network Bandwidth: 940 Mbps โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Assigned Expert: E0 โ
โ Status: READY โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Distributed Inference Flow
- Request arrives at any node
- Router runs locally โ selects top-K experts needed
- Coordinator dispatches expert calls to appropriate nodes
- Nodes compute in parallel โ return velocity predictions
- Results aggregated โ Euler step applied
- VAE decodes locally โ image returned to requester
This enables running the full 5B parameter model across consumer hardwareโeach machine only needs ~4GB VRAM to hold one expert.
๐ Repository Structure
baguette/
โโโ generate.py # ๐จ Main generation script
โโโ benchmark.py # ๐ Performance benchmarking
โโโ quantize.py # ๐ง Weight format conversion
โโโ requirements.txt # ๐ฆ Python dependencies
โโโ README.md # ๐ This file
โโโ src/ # ๐ง Model architecture code
โ โโโ models.py # DiT expert & router definitions
โ โโโ vae_utils.py # VAE encoding/decoding
โ โโโ config.py # Configuration dataclass
โ โโโ schedules.py # Noise schedules
โโโ weights/ # ๐พ Model weights
โโโ bf16/ # BFloat16 SafeTensors (9.3 GB)
โ โโโ expert_0.safetensors ... expert_7.safetensors
โ โโโ router.safetensors
โ โโโ config.pt
โโโ int8/ # INT8 Quantized (4.8 GB)
โโโ expert_0.safetensors ... expert_7.safetensors
โโโ router.safetensors
๐ Links
- Original Model: bageldotcom/paris
- This Repository: nbagel/baguette
๐ License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
See LICENSE for details.
Made with ๐ฅ by the Baguette Team
Distributed inference for everyone
Model tree for nbagel/baguette
Base model
bagellabs/paris