TEKNİK YAZI / Yapay Zekâ Entegrasyonları

FLUX.1: Black Forest Labs'in Text-to-Image Model Ailesi

FLUX.1 text-to-image modelinin mimarisi, flow matching, [dev] ve [schnell] lisansları, diffusers ile çıkarım ve sonraki nesiller FLUX.2 ile FLUX 3.

FLUX.1, Black Forest Labs’in (BFL) 1 Ağustos 2024’te duyurduğu, metinden görüntü üreten (text-to-image) model ailesidir. Aile üç varyanttan oluşur: yalnız API üzerinden sunulan [pro], açık ağırlıklı ve ticari olmayan lisanslı [dev], Apache-2.0 lisanslı ve birkaç adımda görüntü üreten [schnell]. Açık ağırlıklı iki varyant 12 milyar parametrelidir ve aynı transformer mimarisini paylaşır.

FLUX.1, BFL’nin güncel model ailesi değildir; ardından FLUX.1 Kontext (2025), FLUX.2 (2025) ve FLUX 3 (2026) geldi. Mimari, çıkarım ve lisans bölümleri FLUX.1 için geçerlidir; son bölüm sonraki nesilleri özetler.

Black Forest Labs ve FLUX.1

BFL, Freiburg ve San Francisco’da çalışan bir yapay zekâ araştırma şirketidir. Kuruluş duyurusunda ekip; VQGAN, Latent Diffusion ve Stable Diffusion modellerini geliştiren araştırmacılar olarak tanıtılır. Latent Diffusion yaklaşımı (Rombach vd., 2022), görüntüyü piksel uzayında değil, bir otokodlayıcının sıkıştırılmış gizil (latent) uzayında üretir. FLUX.1 de bu fikri kullanır; gizil uzaydaki üretimi ise U-Net yerine bir transformer yapar.

Duyuru, FLUX.1 modellerini çok kipli (multimodal) ve paralel difüzyon transformer bloklarından oluşan hibrit bir mimari olarak tanımlar. Eğitim yöntemi flow matching’dir; konum bilgisi döner konum kodlamasıyla (rotary positional embeddings, RoPE) verilir.

Varyantlar ve lisanslar

VaryantAğırlıklarLisansDamıtma ve adım sayısı
FLUX.1 [pro]YayımlanmadıAPI kullanım koşullarıAilenin en yüksek kaliteli sürümü; yalnız API
FLUX.1 [dev]Açık ağırlık, 12BFLUX.1 [dev] Non-Commercial License[pro] modelinden guidance damıtma; model kartı örneği 50 adım
FLUX.1 [schnell]Açık ağırlık, 12BApache-2.0Latent adversarial diffusion distillation; 1 ile 4 adım arası

[pro] BFL API’si ve Replicate, fal.ai gibi ortak platformlar üzerinden sunuldu; ağırlıkları yayımlanmadı. BFL, flux-pro-1.0, flux-pro-1.0-depth ve flux-pro-1.0-canny uç noktalarının kaldırılacağını 3 Ekim 2025’te duyurdu ve 31 Ekim 2025’te kaldırdı. Geçiş hedefi olarak FLUX1.1 [pro] (flux-pro-1.1) ve FLUX.1 Kontext [pro] (flux-kontext-pro) gösterildi. İnce ayar (finetuning) API’si de aynı tarihte, geçiş yolu sunulmadan kapatıldı.

[dev] [pro] modelinden damıtılmış, guidance damıtmalı (guidance-distilled) bir modeldir. Klasik classifier-free guidance her adımda modeli iki kez çalıştırır: bir kez metin koşuluyla, bir kez koşulsuz. [dev] ise guidance değerini doğrudan girdi olarak alır ve adım başına tek geçişte çalışır; model kartındaki örnek değer 3.5’tir. Ağırlıklar açıktır ama model açık kaynak değildir: lisans, ağırlıkların yalnız ticari olmayan ve üretim dışı kullanımına izin verir. Üretilen görsellerin ise ticari amaçla kullanılmasına izin verilir; yalnız FLUX.1 [dev] ile rekabet eden bir modeli bu çıktılarla eğitmek yasaktır. Lisans ayrıca içerik filtresi ya da yayın öncesi inceleme ve yasanın gerektirdiği durumlarda çıktının yapay zekâ ile üretildiğine dair bir açıklama ister. Modelin kendisini ticari bir üründe çalıştırmak için BFL’den ayrı lisans gerekir.

[schnell] (“hızlı” anlamına gelen Almanca kelime) Apache-2.0 lisanslıdır; ağırlıklar ticari kullanım dahil serbestçe kullanılabilir. Model, latent adversarial diffusion distillation (Sauer vd., 2024) ile 1 ile 4 adımda görüntü üretecek şekilde damıtılmıştır. Bu yöntem, GAN’lerdeki gibi bir ayırt edicinin (discriminator) verdiği çekişmeli (adversarial) kaybı, önceden eğitilmiş bir gizil difüzyon modelinin özellikleri üzerinde kullanır. [schnell] guidance girdisi almaz.

Hugging Face’te iki depo da erişim koşullarının kabul edilmesini ister; [dev] sayfasında bu adım lisans sözleşmesinin onayıdır. Ağırlıkları indirmeden önce model sayfasında koşulları kabul edip hf auth login ile oturum açmanız gerekir.

Mimari

16 kanallı gizil uzay

FLUX.1 otokodlayıcısı (VAE) görüntüyü her eksende 8 kat küçültür ve 16 kanallı bir gizil tensör üretir; Stable Diffusion 1.x ve SDXL otokodlayıcıları 4 kanallıdır. Latent Diffusion makalesi gizil uzayı düzenli tutmak için iki yol dener; bunlardan biri, standart normal dağılıma doğru hafif bir Kullback-Leibler cezasıdır. 1024×1024 bir görüntü 16×128×128 boyutlu bir gizil tensöre karşılık gelir.

Transformer bu tensörü 2×2 yamalara böler ve her yamayı 2·2·16 = 64 değerlik bir token olarak alır. Böylece 1024×1024 bir görüntü 64×64 = 4.096 görüntü token’ıyla temsil edilir.

Metin koşulları: T5 ve CLIP

FLUX.1 iki metin kodlayıcı kullanır ve ikisinin görevi farklıdır:

Bu iki çıktı birleştirilmez: T5 dizisi dikkat (attention) hesabına token olarak katılır, CLIP vektörü ise her bloğun normalizasyonunu modüle eder.

Çift akışlı ve tek akışlı bloklar

Transformer’ın gizli boyutu 3.072, dikkat başı sayısı 24’tür. Referans uygulamada 19 çift akışlı (double-stream) bloğu 38 tek akışlı (single-stream) blok izler:

prompt ─► T5-XXL ─► metin token'ları (L × 4096) ─► txt_in ───────┐
prompt ─► CLIP-L ─► pooled vektör (768) ─┐                       │
zaman t + guidance ([dev]) ──────────────┴─► vec                 │
gürültü (16 × H/8 × W/8) ─► 2×2 paketleme ─► img_in ─────────────┤
                                                                 ▼
  19 × çift akışlı blok   metin ve görüntü için ayrı ağırlıklar,
                          birleştirilmiş dizi üzerinde ortak dikkat
                                                                 ▼
  38 × tek akışlı blok    [metin; görüntü] tek dizi, tek ağırlık seti
                                                                 ▼
  görüntü token'ları ─► hız (velocity) tahmini, token başına 64 değer

  vec her bloğa adaLN modülasyonu (shift, scale, gate) olarak girer
  RoPE her token'ın (_, satır, sütun) konumunu q ve k'ye işler

Flow matching ile örnekleme

Flow matching (Lipman vd., 2022), basit bir gürültü dağılımını veri dağılımına taşıyan bir hız alanını (velocity field) öğrenen eğitim yöntemidir. Stable Diffusion 3 makalesindeki rectified flow formülasyonunda ara nokta x_t = (1 - t) * x_0 + t * eps doğrusu üzerindedir; t = 1 saf gürültü, t = 0 veridir ve model eps - x_0 yönünü tahmin eder. FLUX.1 model kartları modeli “rectified flow transformer” olarak tanımlar. Referans örnekleyici t değerini 1’den 0’a indirir ve her adımda bir Euler adımı atar.

Basitleştirilmiş sözde kod (yardımcı fonksiyonlar tanımlı değildir; gerçek uygulama black-forest-labs/flux deposundaki src/flux/sampling.py ve src/flux/model.py dosyalarındadır):

txt = t5(prompt)  # (1, L, 4096): T5-XXL token dizisi
y = clip_l(prompt)  # (1, 768): CLIP-L havuzlanmış vektörü

z = randn(1, 16, H // 8, W // 8)  # 16 kanallı gizil gürültü
img = pack_2x2(z)  # (1, (H // 16) * (W // 16), 64)

ts = schedule(num_steps)  # 1.0 (gürültü) -> 0.0 (görüntü)
for t_curr, t_next in zip(ts[:-1], ts[1:]):
    v = flux(img, txt, y, t=t_curr, guidance=3.5)  # guidance yalnız [dev] içindir
    img = img + (t_next - t_curr) * v  # Euler adımı

image = vae_decode(unpack_2x2(img))

Referans uygulamada [dev] için zaman çizelgesi, görüntü token sayısına göre yüksek gürültü bölgesine kaydırılır; [schnell] bu kaydırmayı kullanmaz. Görüntüyü piksel piksel sırayla üreten PixelCNN gibi otoregresif modellerin aksine, her adımda bütün token’lar birlikte güncellenir.

diffusers ile çıkarım

Hugging Face diffusers kütüphanesindeki FluxPipeline iki açık varyantı da çalıştırır. Aşağıdaki örnek, ticari kullanıma da açık olan [schnell] varyantını model kartındaki ayarlarla kullanır:

pip install -U diffusers transformers accelerate sentencepiece huggingface_hub
hf auth login
import torch
from diffusers import FluxPipeline

pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-schnell", torch_dtype=torch.bfloat16
)
# Bileşenleri yalnız çalışırken GPU'ya taşır; VRAM yeterliyse pipe.to("cuda") kullanın
pipe.enable_model_cpu_offload()

image = pipe(
    "A minimalist concrete house with large glass windows, golden hour",
    guidance_scale=0.0,  # schnell guidance kullanmaz
    num_inference_steps=4,  # 1 ile 4 adım arası
    max_sequence_length=256,  # schnell için üst sınır
    generator=torch.Generator("cpu").manual_seed(0),
).images[0]
image.save("flux-schnell.png")

[dev] için model kimliğini black-forest-labs/FLUX.1-dev yapın ve model kartındaki değerleri kullanın: guidance_scale=3.5, num_inference_steps=50, max_sequence_length=512. Buradaki guidance_scale, modele giden guidance gömmesidir; Stable Diffusion’da alışılmış 7 ile 8 arası değerler [dev] için tasarlanmamıştır. diffusers, true_cfg_scale > 1 ve negative_prompt verildiğinde klasik classifier-free guidance’ı ayrıca açabilir; bu durumda her adım iki geçiş sürer.

diffusers dokümantasyonuna göre bütün bileşenleri yüklemek yaklaşık 50 GB RAM/VRAM gerektirir. enable_model_cpu_offload() dışında sıralı CPU’ya aktarma (offload), 8 bit veya FP8 nicemleme (quantization) seçenekleri de dokümante edilmiştir; nicemleme çıktı kalitesini etkileyebilir.

İnce ayar: diffusers LoRA betiği

12 milyar parametreli bir modelin bütün ağırlıklarını güncellemek yerine yaygın yol, LoRA ile düşük ranklı bağdaştırıcılar (adapter) eğitmektir. diffusers deposundaki train_dreambooth_lora_flux.py betiği FLUX.1 [dev] için DreamBooth ve LoRA eğitimini uygular. README dosyasına göre bütün bileşenleri eğitilen 16 ranklı bir LoRA bile 40 GB VRAM’i aşabilir; çözünürlüğü düşürmek, gradient checkpointing, 8 bit Adam ve gizil önbellekleme bu ihtiyacı azaltır.

[dev] deposu için de lisans onayı ve hf auth login ile oturum açma gerekir. README’deki kurulum ve örnek komutun kısaltılmış hâli:

git clone https://github.com/huggingface/diffusers
cd diffusers
pip install -e .
cd examples/dreambooth
pip install -r requirements_flux.txt prodigyopt
accelerate config default

accelerate launch train_dreambooth_lora_flux.py \
  --pretrained_model_name_or_path="black-forest-labs/FLUX.1-dev" \
  --instance_data_dir="dog" \
  --output_dir="trained-flux-lora" \
  --mixed_precision="bf16" \
  --instance_prompt="a photo of sks dog" \
  --resolution=512 \
  --train_batch_size=1 \
  --guidance_scale=1 \
  --gradient_accumulation_steps=4 \
  --optimizer="prodigy" \
  --learning_rate=1. \
  --lr_scheduler="constant" \
  --lr_warmup_steps=0 \
  --max_train_steps=500 \
  --seed="0"

--instance_data_dir klasörüne öğretilecek öznenin birkaç görseli konur; README örneği diffusers/dog-example veri setini kullanır. Eğitim bitince ağırlıklar pipe.load_lora_weights("trained-flux-lora") ile pipeline’a yüklenir. Lisans, ince ayarlı sürümleri türev (Derivative) sayar; FLUX.1 [dev] üzerinde eğitilen ağırlıklar da aynı lisans koşullarına tabidir.

Sonraki nesiller: Kontext, FLUX.2 ve FLUX 3

FLUX.1 Kontext (29 Mayıs 2025) metin ve görüntüyü aynı istemde kabul eder; bir referans görseli düzenlemek veya ondan yeni görüntü üretmek için tasarlanmıştır. [pro] ve [max] varyantları API üzerinden sunuldu. 12 milyar parametreli açık ağırlıklı [dev] varyantı önce kapalı betayla verildi, daha sonra Hugging Face’te FLUX.1 [dev] Non-Commercial License ile yayımlandı. Yöntem bir teknik raporda anlatılır.

FLUX.2 (25 Kasım 2025) [pro] ve [flex] varyantlarıyla API’de, 32 milyar parametreli [dev] varyantıyla açık ağırlık olarak çıktı; FLUX.2 [dev] ticari olmayan FLUX lisansıyla, otokodlayıcısı ise Apache-2.0 ile yayımlandı. BFL sürüm notlarına göre [max] 16 Aralık 2025’te, [klein] 15 Ocak 2026’da geldi. [klein] ailesinin 4B modeli Apache-2.0, 9B modeli ticari olmayan lisanslıdır. BFL dokümantasyonu, FLUX.2’nin üretim ortamında görüntü üretme ve düzenleme için tam destekli olduğunu belirtir.

FLUX 3 23 Temmuz 2026’da duyuruldu. Görüntü, video ve ses üzerinde birlikte eğitilen çok kipli bir model ailesidir; yetenekler erken erişim (early access) dönemlerinden geçerek aşamalı olarak açılıyor. İlk açılan video üretimiydi ve dokümantasyon FLUX 3 Video’yu önizleme (preview) modeli olarak tanımlıyor. BFL sürüm notlarına göre FLUX 3 Image 1 Ekim 2026’da BFL API’sine eklendi; tek uç noktada üretim ve düzenleme yapar, en fazla on referans görsel alır. Açık ağırlık tarafında yalnız 7 milyar parametreli FLUX 3 Action (robotik için eylem tahmini) yayımlandı. Video, ses, görüntü ve eylem için ortak bir omurga sunacak açık ağırlıklı “FLUX 3 Dev” duyuruldu, ancak tarih verilmedi; FLUX 3’ün görüntü modeli için açık ağırlık henüz yok.

BFL dokümantasyonu, kendi sunucunuzda çalıştırma (self-hosting) seçenekleri arasında FLUX.1 [dev] ve FLUX.1 Tools [dev] modellerini listelemeye devam ediyor. Varyant adı tek başına kullanım hakkını belirlemez; her modelin lisansı ve API koşulları ayrı ayrı kontrol edilmelidir.

Sonuç

FLUX.1; MM-DiT tarzı çift akışlı blokları, 16 kanallı gizil uzayı ve flow matching’i 12 milyar parametrede birleştiren, açık ağırlıkları sayesinde ayrıntılı incelenebilen bir modeldir. Ticari bir üründe kendi donanımınızda çalıştırılacak, lisansı açık bir görüntü modeli gerekiyorsa [schnell] ya da FLUX.2 [klein] 4B uygun adaylardır; [dev] araştırma ve ticari olmayan kullanım için ya da BFL’den alınacak ticari lisansla uygundur. Yeni bir entegrasyonda yalnız örnek görüntü kalitesine değil; lisansa, gecikmeye, birim maliyete, VRAM ihtiyacına ve modelin önceki nesilden olup olmadığına birlikte bakın.

Birincil kaynaklar