Diffusers documentation
Krea 2
Krea 2
Krea 2 (K2) adalah model teks-ke-gambar berbasis flow-matching yang dibangun di sekitar MMDiT single-stream dengan grouped-query attention. Encoder teks Qwen3-VL menyediakan kondisioning: alih-alih menggunakan hidden state terakhir, hidden state dari dua belas lapisan decoder diambil per token dan digabungkan di dalam transformer melalui tahap fusi teks kecil. Gambar didekodekan dengan VAE Qwen-Image.
Dua checkpoint dirilis, berbagi arsitektur yang sama tetapi dengan pengaturan sampler yang direkomendasikan berbeda:
- Base (midtrain) — gunakan sampler penuh dengan classifier-free guidance:
num_inference_steps=28,guidance_scale=4.5. - TDM (distilled) — di-distil untuk sampling beberapa langkah, dijalankan dengan
num_inference_steps=8dan guidance dinonaktifkan (guidance_scale=0.0).
guidance_scale mengikuti konvensi Krea 2: kecepatan dihitung sebagai cond + guidance_scale * (cond - uncond) dan panduan diaktifkan setiap kali guidance_scale > 0 (ini setara dengan formulasi CFG biasa dengan skala 1 + guidance_scale).
Teks-ke-gambar
import torch
from diffusers import Krea2Pipeline
# Load from a local directory produced by the Krea 2 conversion (no hub repo yet).
pipe = Krea2Pipeline.from_pretrained("krea/Krea-2-Raw", dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
prompt = "a fox in the snow"
image = pipe(
prompt,
height=1024,
width=1024,
num_inference_steps=28,
guidance_scale=4.5,
generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("krea2.png")Kami juga menyediakan contoh untuk menggunakan Krea2 Turbo :
import torch
from diffusers import Krea2Pipeline
pipe = Krea2Pipeline.from_pretrained("krea/Krea-2-Turbo", dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
"a fox in the snow",
height=1024,
width=1024,
num_inference_steps=8,
guidance_scale=0.0,
generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("krea2_turbo.png")Memuat checkpoint file tunggal
import torch
from diffusers import Krea2Pipeline, Krea2Transformer2DModel
transformer = Krea2Transformer2DModel.from_single_file(
"https://huggingface.co/krea/Krea-2-Turbo/blob/main/turbo.safetensors", dtype=torch.bfloat16
)
pipe = Krea2Pipeline.from_pretrained("krea/Krea-2-Turbo", transformer=transformer, dtype=torch.bfloat16).to("cuda")Krea2Pipeline
kelas diffusers.Krea2Pipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen3VLModeltokenizer: AutoTokenizertransformer: Krea2Transformer2DModeltext_encoder_select_layers: tuple[int, ...] | list[int] | None = Noneis_distilled: bool = Falsepatch_size: int = 2 )
Parameter
- scheduler (FlowMatchEulerDiscreteScheduler) —
Scheduler flow-matching Euler. Jadwal sigma Krea 2 adalah pergeseran waktu eksponensial yang sadar resolusi, sehingga
konfigurasi scheduler diharapkan mengatur
use_dynamic_shifting=Truebersama dengan parameter pergeseran Krea 2 (base_shift=0.5,max_shift=1.15,base_image_seq_len=256,max_image_seq_len=6400). - vae (AutoencoderKLQwenImage) — Variational auto-encoder Qwen-Image (f8, 16 kanal laten) yang digunakan untuk mendekode laten menjadi gambar.
- text_encoder (PreTrainedModel) —
Model Qwen3-VL (misalnya
Qwen3VLModeldariQwen/Qwen3-VL-4B-Instruct). Pipeline ini mengonsumsi tumpukan hidden states yang diambil dari beberapa lapisan decoder, bukan hidden state terakhir. - tokenizer (AutoTokenizer) — Tokenizer yang berpasangan dengan text encoder.
- transformer (Krea2Transformer2DModel) — Krea 2 single-stream MMDiT yang memprediksi kecepatan flow-matching.
- text_encoder_select_layers (
tuple[int, ...], opsional) — Indeks ke dalam tuplehidden_statesdari text encoder (0 adalah output embedding) yang state-nya ditumpuk per token sebagai kondisi teks transformer. Harus memilikitransformer.config.num_text_layersentri. - is_distilled (
bool, opsional, defaultFalse) — Apakah transformer tersebut adalah checkpoint few-step distilled (TDM/turbo). JikaTrue, shift timestep tetapmu=1.15digunakan; selain itu,mudihitung dari resolusi gambar. - patch_size (
int, opsional, default 2) — Panjang sisi dari patch persegi tempat latents dikemas sebelum masuk ke transformer. Faktor downsampling efektif dari piksel ke token adalahvae_scale_factor * patch_size.
Pipeline Krea 2 untuk generasi teks-ke-gambar.
__call__
< source >( prompt: str | list[str] | None = Nonenegative_prompt: str | list[str] | None = Noneheight: int = 1024width: int = 1024num_inference_steps: int = 28sigmas: list[float] | None = Noneguidance_scale: float = 4.5num_images_per_prompt: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds: typing.Optional[torch.Tensor] = Nonenegative_prompt_embeds_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Truecallback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list = ['latents']attention_kwargs: dict[str, typing.Any] | None = Nonemax_sequence_length: int = 512 ) → Krea2PipelineOutput or tuple
Parameter
- prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt untuk mengarahkan generasi gambar. Jika tidak didefinisikan, Anda harus meneruskanprompt_embeds. - negative_prompt (
strataulist[str], opsional) — Prompt atau prompt-prompt yang tidak digunakan untuk mengarahkan generasi gambar. Diabaikan ketikaguidance_scale <= 0; secara default menggunakan prompt kosong ketika guidance diaktifkan. - height (
int, defaultnya 1024) — Tinggi gambar yang dihasilkan dalam piksel. Dibulatkan ke atas menjadi kelipatan 16 jika diperlukan. - width (
int, defaultnya 1024) — Lebar gambar yang dihasilkan dalam piksel. Dibulatkan ke atas menjadi kelipatan 16 jika diperlukan. - num_inference_steps (
int, default 28) — Jumlah langkah denoising. Gunakan 28 untuk checkpoint dasar (midtrain) dan 8 untuk checkpoint distilled few-step (TDM). - sigmas (
list[float], opsional) — Sigmas kustom untuk scheduler. Jika tidak didefinisikan, grid defaultlinspace(1.0, 1/num_inference_steps, num_inference_steps)digunakan (pergeseran yang sadar resolusi diterapkan di dalam scheduler). - guidance_scale (
float, default 4.5) — Skala panduan bebas klasifikator, mengikuti konvensi Krea 2: kecepatan dihitung sebagaicond + guidance_scale * (cond - uncond)dan panduan diaktifkan setiap kaliguidance_scale > 0(ini sama dengan formulasi CFG biasa dengan skala1 + guidance_scale). Atur ke0.0untuk menonaktifkan (misalnya untuk checkpoint TDM). - num_images_per_prompt (
int, defaultnya 1) — Jumlah gambar yang akan dihasilkan per prompt. - generator (
torch.Generatorataulist[torch.Generator], opsional) — Satu atau lebih generator torch untuk membuat proses generasi menjadi deterministik. - latents (
torch.Tensor, opsional) — Latents berisik yang telah dibuat sebelumnya dalam bentuk terpadat(batch_size, image_seq_len, in_channels), yang diambil dari distribusi Gaussian, untuk digunakan sebagai input untuk generasi gambar. - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dengan bentuk(batch_size, text_seq_len, num_text_layers, text_hidden_dim). Jika tidak disediakan, embedding akan dibuat dariprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Mask boolean untukprompt_embeds; wajib diisi ketikaprompt_embedsdiberikan. - negative_prompt_embeds (
torch.Tensor, opsional) — Embedding teks negatif yang telah dibuat sebelumnya; tata letak yang sama denganprompt_embeds. - negative_prompt_embeds_mask (
torch.Tensor, opsional) — Mask boolean untuknegative_prompt_embeds; wajib diisi ketikanegative_prompt_embedsdiberikan. - output_type (
str, opsional, defaultnya"pil") — Format output dari gambar yang dihasilkan. Pilih antara"pil","np","pt"atau"latent". - return_dict (
bool, opsional, defaultTrue) — Apakah akan mengembalikan Krea2PipelineOutput alih-alih tuple biasa. - callback_on_step_end (
Callable, opsional) — Fungsi yang dipanggil di akhir setiap langkah denoising dengancallback_on_step_end(self, step, timestep, callback_kwargs). - callback_on_step_end_tensor_inputs (
list[str], opsional, defaultnya["latents"]) — Daftar input tensor untuk fungsicallback_on_step_end. Harus berupa subset dari._callback_tensor_inputs. - attention_kwargs (
dict, opsional) — Kamus kwargs yang jika ditentukan akan diteruskan keAttentionProcessorseperti yang didefinisikan di bawahself.processordalam diffusers.models.attention_processor. - max_sequence_length (
int, defaultnya 512) — Panjang sekuens teks tetap yang dikonsumsi oleh transformer; prompt akan di-*pad* atau dipangkas hingga panjang tersebut.
Mengembalikan
Krea2PipelineOutput atau tuple
Krea2PipelineOutput jika
return_dict bernilai True, selain itu berupa tuple, di mana elemen pertamanya adalah daftar berisi gambar yang dihasilkan.
Fungsi yang dipanggil saat memanggil pipeline untuk generasi.
Contoh:
>>> import torch
>>> from diffusers import Krea2Pipeline
>>> # Load from a local directory produced by the Krea 2 conversion (no hub repo yet).
>>> pipe = Krea2Pipeline.from_pretrained("path/to/krea2-diffusers", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "a fox in the snow"
>>> # Base (midtrain) checkpoint defaults. For the few-step distilled (TDM) checkpoint use
>>> # `num_inference_steps=8, guidance_scale=0.0` instead.
>>> image = pipe(prompt, num_inference_steps=28, guidance_scale=4.5).images[0]
>>> image.save("krea2.png")encode_prompt
< source >( prompt: str | list[str]device: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Nonemax_sequence_length: int = 512 )
Parameter
- prompt (
strataulist[str], opsional) — prompt yang akan dienkod - device — (
torch.device): perangkat torch - num_images_per_prompt (
int) — jumlah gambar yang harus dihasilkan per prompt - prompt_embeds (
torch.Tensor, opsional) — Embedding teks yang telah dibuat sebelumnya dengan bentuk(batch_size, text_seq_len, num_text_layers, text_hidden_dim). Dapat digunakan untuk dengan mudah menyesuaikan input teks, misalnya pembobotan prompt. Jika tidak disediakan, embedding teks akan dibuat dari argumen inputprompt. - prompt_embeds_mask (
torch.Tensor, opsional) — Mask boolean yang telah dibuat sebelumnya untuk menandai token teks yang valid, dengan bentuk(batch_size, text_seq_len). Wajib disediakan ketikaprompt_embedsditeruskan. - max_sequence_length (
int, defaultnya 512) — Panjang sekuens teks tetap yang dikonsumsi oleh transformer; prompt akan di-*pad* atau dipangkas hingga panjang tersebut.
( prompt: str | list[str]max_sequence_length: int = 512device: typing.Optional[torch.device] = None )
Tokenisasi prompt menjadi tata letak Krea 2 dengan panjang tetap dan ambil hidden states encoder yang dipilih.
Mengembalikan tuple (hidden_states, attention_mask) dengan bentuk (batch_size, text_seq_len, num_text_layers, text_hidden_dim) dan (batch_size, text_seq_len) (bool).
Bangun koordinat rotasi (text_seq_len + grid_height * grid_width, 3) untuk urutan gabungan:
token teks berada di titik asal, token gambar membawa koordinat grid laten (0, h, w) mereka.
Krea2PipelineOutput
kelas diffusers.pipelines.krea2.Krea2PipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Kelas output untuk pipeline Krea 2.
Modular
Krea 2 juga tersedia sebagai pipeline modular. Classifier-free guidance dikonfigurasi melalui komponen guider alih-alih argumen pemanggilan guidance_scale. Krea 2 menggunakan CFG yang dijangkar pada cond, yaitu ClassifierFreeGuidance dengan use_original_formulation=True.
import torch
from diffusers import ClassifierFreeGuidance, ModularPipeline
pipe = ModularPipeline.from_pretrained("krea/Krea-2-Raw")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
prompt="a fox in the snow",
height=1024,
width=1024,
num_inference_steps=28,
generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("krea2.png")Kami juga menyediakan contoh penggunaan Krea2 Turbo. Checkpoint yang telah didistilasi dipetakan ke set blok miliknya sendiri (Krea2TurboAutoBlocks): berjalan tanpa panduan (tanpa guider), tidak menerima negative prompt, dan melakukan sampling dalam beberapa langkah. ModularPipeline.from_pretrained memilih blok turbo secara otomatis dari konfigurasi is_distilled checkpoint, sehingga tidak diperlukan konfigurasi panduan:
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("krea/Krea-2-Turbo")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda") # or "mps", "xpu", "cpu"
image = pipe(
prompt="a fox in the snow",
height=1024,
width=1024,
num_inference_steps=8,
generator=torch.Generator("cuda").manual_seed(0),
).images[0]
image.save("krea2_turbo.png")Krea2ModularPipeline
kelas diffusers.Krea2ModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
A ModularPipeline untuk Krea 2.
Krea2AutoBlocks
Auto Modular pipeline untuk generasi teks-ke-gambar menggunakan Krea 2: encode teks -> core denoise (CFG simetris) -> decode.
Alur kerja yang didukung:
text2image: membutuhkanprompt
Komponen:
text_encoder (Qwen3VLModel): Encoder teks Qwen3-VL. tokenizer (AutoTokenizer): Tokenizer yang berpasangan
dengan encoder teks. guider (ClassifierFreeGuidance) transformer (Krea2Transformer2DModel) scheduler
(FlowMatchEulerDiscreteScheduler) vae (AutoencoderKLQwenImage) image_processor (VaeImageProcessor)
Inputs:
prompt (str):
The prompt or prompts to guide image generation.
negative_prompt (str, optional):
The negative prompt(s) for CFG.
max_sequence_length (int, optional, defaults to 512):
Maximum sequence length for prompt encoding.
num_images_per_prompt (int, optional, defaults to 1):
The number of images to generate per prompt.
latents (Tensor, optional):
Pre-generated noisy latents for image generation.
height (int, optional, defaults to 1024):
The height in pixels of the generated image.
width (int, optional, defaults to 1024):
The width in pixels of the generated image.
generator (Generator, optional):
Torch generator for deterministic generation.
num_inference_steps (int, optional, defaults to 28):
The number of denoising steps.
sigmas (list, optional):
Custom sigma schedule (defaults to a linear ramp).
attention_kwargs (dict, optional):
Additional kwargs for attention processors.
output_type (str, optional, defaults to pil):
Output format: ‘pil’, ‘np’, ‘pt’.
Output:
images (list):
Gambar yang dihasilkan.
Krea2TurboModularPipeline
kelas diffusers.Krea2TurboModularPipeline
< source >( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )
ModularPipeline untuk checkpoint Krea 2 turbo (TDM) yang telah di-distil. Pipeline ini berjalan tanpa classifier-free guidance, sehingga tidak memerlukan negative prompt dan tidak memiliki guider.
Krea2TurboAutoBlocks
Auto Modular pipeline untuk generasi teks-ke-gambar menggunakan checkpoint Krea 2 turbo yang telah di-distil: encode teks -> core denoise (tanpa guidance) -> decode.
Alur kerja yang didukung:
text2image: membutuhkanprompt
Komponen:
text_encoder (Qwen3VLModel): Encoder teks Qwen3-VL. tokenizer (AutoTokenizer): Tokenizer yang berpasangan
dengan encoder teks. transformer (Krea2Transformer2DModel) scheduler (FlowMatchEulerDiscreteScheduler)
vae (AutoencoderKLQwenImage) image_processor (VaeImageProcessor)
Inputs:
prompt (str):
The prompt or prompts to guide image generation.
max_sequence_length (int, optional, defaults to 512):
Maximum sequence length for prompt encoding.
num_images_per_prompt (int, optional, defaults to 1):
The number of images to generate per prompt.
latents (Tensor, optional):
Pre-generated noisy latents for image generation.
height (int, optional, defaults to 1024):
The height in pixels of the generated image.
width (int, optional, defaults to 1024):
The width in pixels of the generated image.
generator (Generator, optional):
Torch generator for deterministic generation.
num_inference_steps (int, optional, defaults to 8):
The number of denoising steps.
sigmas (list, optional):
Custom sigma schedule (defaults to a linear ramp).
attention_kwargs (dict, optional):
Additional kwargs for attention processors.
output_type (str, optional, defaults to pil):
Output format: ‘pil’, ‘np’, ‘pt’.
Output:
images (list):
Gambar yang dihasilkan.