Diffusers documentation
Qwen-Image 2.1
Qwen-Image 2.1
Qwen-Image 2.1 codifica o prompt e quaisquer imagens de condição junto com um modelo Qwen3-VL e, em seguida, remove o ruído da imagem alvo com um transformer de bloco causal de fluxo único. Consulte QwenImage21Transformer2DModel para atenção de bloco causal, os processadores de atenção e causal_condition.
Os padrões são os valores recomendados pela Qwen: 40 passos e sem orientação. Passe um negative_prompt junto com true_cfg_scale > 1 para ativar a orientação sem classificador, o que dobra o trabalho por passo.
import torch
from diffusers import QwenImage21Pipeline
pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", dtype=torch.bfloat16).to("cuda")
# Text-to-image
image = pipe("A capybara wearing a wizard hat, oil painting").images[0]
image.save("t2i.png")
# Image-conditioned editing
edited = pipe("Move it to a snowy mountain top", image=image).images[0]
edited.save("edit.png")Várias imagens de condição
Passe uma lista para image e cada entrada se torna seu próprio bloco na sequência conjunta: o codificador do Qwen3-VL os enxerga como contexto visual e o VAE contribui com seus tokens latentes. A atenção causal por bloco mantém cada bloco internamente bidirecional, permitindo que blocos posteriores e a imagem de destino prestem atenção aos anteriores, de modo que a ordem em que você os passa é a ordem em que o modelo os lê.
edited = pipe("Put the flowers from the first image into the second scene", image=[flowers, scene]).images[0]Atenção mais rápida com flex_attention
O QwenImage21AttnProcessor padrão executa o prefill causal por bloco como uma chamada de atenção por segmento de prefixo. Ele
não requer compilação e funciona em qualquer build do PyTorch. O QwenImage21FlexAttnProcessor expressa a mesma máscara como uma
única chamada de flex_attention, o que é mais rápido quando o modelo está compilado.
Compile o modelo ao alternar para o flex processor. Um
flex_attentionnão compilado materializa a matriz completa de pontuações de atenção em fp32, o que é muito mais lento e esgota a memória em alta resolução.
from diffusers.models.transformers.transformer_qwenimage21 import QwenImage21FlexAttnProcessor
pipe.transformer.set_attn_processor(QwenImage21FlexAttnProcessor())
pipe.transformer.compile()Carregando checkpoints de arquivo único
import torch
from diffusers import QwenImage21Pipeline, QwenImage21Transformer2DModel
transformer = QwenImage21Transformer2DModel.from_single_file(
"https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_bf16.safetensors",
dtype=torch.bfloat16,
)
pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", transformer=transformer, dtype=torch.bfloat16).to(
"cuda"
)Sigmas de amostragem
Os autores de modelos podem configurar uma grade de amostragem padrão com sample_sigmas na configuração do pipeline. Ao carregar um checkpoint publicado, sua grade padrão e as configurações do agendador são restauradas automaticamente.
Para experimentar com uma grade diferente em tempo de execução, passe sigmas para a chamada do pipeline:
# Use the checkpoint's default sampling grid.
image = pipe(prompt).images[0]
# Override the default grid for this call.
image = pipe(prompt, sigmas=[1.0, 0.8, 0.5, 0.2]).images[0]A grade personalizada acima ilustra a API; a qualidade da geração depende do checkpoint e da grade. As listas de sigma excluem
o sigma terminal, que o scheduler adiciona. Valores explícitos de sigmas substituem o sample_sigmas configurado, e qualquer
uma das listas determina o número de etapas em vez de num_inference_steps. Se nenhuma for fornecida, o pipeline usa num_inference_steps para gerar o agendamento. O scheduler aplica seu processamento configurado a qualquer uma das grades.
Modular
O Qwen-Image 2.1 também está disponível como um pipeline modular. Os mesmos blocos executam a geração de texto para imagem e a geração condicionada por imagem: passe image para condicionar em uma ou mais imagens. A orientação sem classificador é configurada por meio do componente guider em vez de um argumento de chamada true_cfg_scale, e o cache KV de prefixo está ativado por padrão (use_kv_cache=False desativa-o).
import torch
from diffusers import ClassifierFreeGuidance, ModularPipeline
pipe = ModularPipeline.from_pretrained("Qwen/Qwen-Image-2.1")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")
image = pipe(prompt="A capybara wearing a wizard hat, oil painting").images[0]
# Turn classifier-free guidance on for an edit.
pipe.update_components(guider=ClassifierFreeGuidance(guidance_scale=4.0))
edited = pipe(prompt="Move it to a snowy mountain top", negative_prompt="blurry", image=image).images[0]O checkpoint Turbo mapeia para seus próprios blocos (QwenImage21TurboAutoBlocks): ele é executado sem um guider, não aceita negative_prompt e amostra a grade de sigmas que ele distribui. O ModularPipeline.from_pretrained seleciona os blocos Turbo a partir da entrada sample_sigmas na configuração do checkpoint, portanto, nada precisa ser configurado:
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("Qwen/Qwen-Image-2.1-Turbo")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")
image = pipe(prompt="A capybara wearing a wizard hat, oil painting").images[0]QwenImage21Pipeline
classe diffusers.QwenImage21Pipeline
< source >( scheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImage21text_encoder: Qwen3VLForConditionalGenerationprocessor: Qwen3VLProcessortransformer: QwenImage21Transformer2DModelsample_sigmas: list[float] | None = None )
Parâmetros
- scheduler (FlowMatchEulerDiscreteScheduler) — Agendador usado para desruidar os latentes da imagem codificada.
- vae (AutoencoderKLQwenImage21) — Autoencoder variacional que mapeia imagens para e a partir do espaço latente de 64 canais.
- text_encoder (
Qwen3VLForConditionalGeneration) — Modelo Qwen3-VL que produz os embeddings conjuntos de texto e imagem. - processor (
Qwen3VLProcessor) — Processor que monta o template de chat e tokeniza o prompt e as imagens de condição. - transformer (QwenImage21Transformer2DModel) — O transformer de fluxo único e causal por bloco que realiza a descompactação dos latentes.
- sample_sigmas (
list[float], opcional) — Sigmas de amostragem padrão configuradas pelo autor do modelo, excluindo a sigma terminal. Seu comprimento determina o número de etapas de desruido. Para experimentar com uma grade diferente em tempo de execução, passesigmaspara__call__.
Geração de texto para imagem e geração condicionada por imagem com Qwen-Image 2.1.
As imagens de prompt e de condição são codificadas juntas por um modelo Qwen3-VL, de modo que uma imagem de condição ocupa os slots de visão que o codificador reservou para ela e o transformer vê uma única sequência intercalada de texto/imagens.
__call__
< source >( prompt: str | list[str] = Noneimage: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = Nonenegative_prompt: str | list[str] = Nonetrue_cfg_scale: float = 1.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 40sigmas: list[float] | None = Nonenum_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 = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']output_resolution: int = 1024use_kv_cache: bool = True ) → ~pipelines.qwenimage.QwenImagePipelineOutput or tuple
Parâmetros
- prompt (
stroulist[str], opcional) — O prompt para orientar a geração de imagens. Passeprompt_embedsem vez disso para fornecer embeddings diretamente. - image (
PipelineImageInput, opcional) — Uma ou mais imagens de condição, como uma imagem PIL ou um array numpy. Elas são codificadas pelo codificador de texto como contexto visual e pelo VAE em tokens latentes que são adicionados antes do ruído. Uma lista representa um conjunto de imagens compartilhado por todos os prompts do lote, não uma entrada por prompt. - negative_prompt (
stroulist[str], opcional) — O prompt que não deve orientar a geração da imagem. Ignorado quandotrue_cfg_scalenão é maior que 1. - true_cfg_scale (
float, opcional, padrão 1.0) — Escala de orientação sem classificador. Ativada portrue_cfg_scale > 1em conjunto com um prompt negativo. O Qwen-Image 2.1 foi projetado para ser amostrado sem orientação, por isso o padrão é 1.0. - height (
int, opcional) — Altura em pixels da imagem gerada. Derivada da proporção da imagem de condição, se omitida. - width (
int, opcional) — Largura em pixels da imagem gerada. Derivada da proporção da imagem de condição, se omitida. - num_inference_steps (
int, opcional, padrão 40) — Número de etapas de desruidamento. Ignorado quandosigmasou osample_sigmasconfigurado do pipeline é usado; o comprimento dessa agenda determina o número de etapas. - sigmas (
list[float], opcional) — Sigmas de amostragem a serem testadas nesta chamada, excluindo o sigma terminal. Substitui osample_sigmasconfigurado no pipeline e determina o número de etapas de desruido. O agendador aplica seu processamento configurado a esses valores. - num_images_per_prompt (
int, opcional, padrão 1) — Número de imagens geradas por prompt. - generator (
torch.Generatoroulist[torch.Generator], opcional) — Gerador(es) para tornar a geração determinística. - latents (
torch.Tensor, opcional) — Latentes ruidosos pré-gerados. - prompt_embeds (
torch.Tensor, opcional) — Incorporações de texto pré-geradas, que pulam a codificação do prompt. Passeprompt_embeds_maskjunto com elas. - prompt_embeds_mask (
torch.Tensor, opcional) — Máscara bool que marca as posições válidas deprompt_embeds. - negative_prompt_embeds (
torch.Tensor, opcional) — Incorporações de texto negativo pré-geradas, usadas no lugar denegative_prompt. Passenegative_prompt_embeds_maskjunto com elas. - negative_prompt_embeds_mask (
torch.Tensor, opcional) — Máscara bool que marca as posições válidas denegative_prompt_embeds. - output_type (
str, opcional, padrão"pil") — Formato de saída,"pil","np","pt"ou"latent". - return_dict (
bool, opcional, padrãoTrue) — Se deve retornar um~pipelines.qwenimage.QwenImagePipelineOutputem vez de uma tupla simples. - attention_kwargs (
dict, opcional) — Passado para o processador de atenção. - callback_on_step_end (
Callable, opcional) — Chamado no final de cada etapa de desruidamento. - callback_on_step_end_tensor_inputs (
list[str], opcional, padrão["latents"]) — Tensores do loop de desruidamento para passar aocallback_on_step_end. Eles devem estar listados em_callback_tensor_inputsdo pipeline. - output_resolution (
int, opcional, padrão 1024) — Comprimento do lado de destino usado para derivarheight/widthe para redimensionar as imagens de condição. - use_kv_cache (
bool, opcional, padrão éTrue) — Cacheia as chaves e valores do texto e da imagem de condição após o primeiro passo. Válido porquecausal_conditionmodula esses tokens a partir det = 0, tornando suas ativações independentes do passo. Alterar essa opção não reproduz a mesma imagem bit a bit em precisão reduzida. O cache faz com que o passo de decodificação atenda a um layout de sequência diferente do passo de pré-preenchimento, de modo que os dois são divididos em blocos de forma diferente e resultam em arredondamentos distintos; ambos concordam com uma referência em fp32 dentro da mesma tolerância. Uma diferença de um ULP no primeiro bloco é então amplificada por 32 blocos e por cada passo do amostrador, de modo que as duas configurações produzem amostras igualmente válidas, mas visivelmente distintas. Para fixar uma amostra, fixe esta flag.Alternar essa opção não reproduz a mesma imagem bit a bit em precisão reduzida. O cache faz com que a etapa de decodificação atenda a uma sequência com um layout diferente do da etapa de pré-preenchimento, de modo que as duas são divididas em blocos de forma diferente e resultam em arredondamentos distintos; ambas concordam com uma referência em fp32 dentro da mesma tolerância. Uma diferença de um ULP no primeiro bloco é então amplificada pelos 32 blocos e por cada etapa do amostrador, de modo que as duas configurações produzem amostras igualmente válidas, porém visivelmente distintas. Para fixar uma amostra, fixe essa flag.
Retorna
~pipelines.qwenimage.QwenImagePipelineOutput ou tuple
~pipelines.qwenimage.QwenImagePipelineOutput se return_dict for True, caso contrário, uma tuple cujo primeiro
elemento é uma lista com as imagens geradas.
Função invocada ao chamar o pipeline para geração.
Exemplos:
>>> import torch
>>> from diffusers import QwenImage21Pipeline
>>> pipe = QwenImage21Pipeline.from_pretrained("Qwen/Qwen-Image-2.1", dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A capybara wearing a wizard hat, reading a book by candlelight, oil painting"
>>> image = pipe(prompt).images[0]
>>> image.save("qwenimage21.png")encode_prompt
< source >( prompt: str | list[str]image: list[typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]] | None = Nonedevice: typing.Optional[torch.device] = Nonenum_images_per_prompt: int = 1prompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_embeds_mask: typing.Optional[torch.Tensor] = Noneimage_pad_mask: typing.Optional[torch.Tensor] = None )
Parâmetros
- prompt (
stroulist[str], opcional) — Prompt a ser codificado. - image (
list[PipelineImageInput], opcional) — Imagens de condição para codificar junto com o prompt. - device (
torch.device) — Dispositivo Torch. - num_images_per_prompt (
int) — Número de imagens geradas por prompt. - prompt_embeds (
torch.Tensor, opcional) — Incorporações de texto pré-geradas. Pula a codificação quando fornecidas.
QwenImagePipelineOutput
classe diffusers.pipelines.qwenimage.pipeline_output.QwenImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Classe de saída para pipelines do Stable Diffusion.
QwenImage21ModularPipeline
classe diffusers.QwenImage21ModularPipeline
< 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 )
Uma ModularPipeline para Qwen-Image 2.1.
QwenImage21AutoBlocks
Pipeline modular automático para geração de texto para imagem e geração condicionada por imagem usando Qwen-Image 2.1.
- para a geração de texto para imagem, tudo o que você precisa fornecer é
prompt - para geração condicionada por imagem, você precisa fornecer
prompteimage(uma imagem ou uma lista)
Fluxos de trabalho suportados:
text2image: requerpromptimage_conditioned: requerprompt,image
Componentes:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) processor
(Qwen3VLProcessor) vae (AutoencoderKLQwenImage21) scheduler (FlowMatchEulerDiscreteScheduler) guider
(ClassifierFreeGuidance) transformer (QwenImage21Transformer2DModel)
Entradas:
image (Image | list, opcional):
Imagem(ns) de referência para o desruido. Pode ser uma única imagem ou uma lista de imagens.
output_resolution (int, opcional, padrão 1024):
Comprimento do lado alvo usado para derivar o tamanho de saída e para redimensionar as imagens de condição.
prompt (str):
O prompt ou os prompts para orientar a geração de imagem.
negative_prompt (str, opcional):
O prompt ou os prompts que não devem orientar a geração de imagem.
generator (Generator, opcional):
Gerador do Torch para geração determinística.
num_images_per_prompt (int, opcional, padrão 1):
O número de imagens a serem geradas por prompt.
height (int, opcional):
A altura em pixels da imagem gerada.
width (int, opcional):
A largura em pixels da imagem gerada.
image_latents (list, opcional):
Latentes normalizados de cada imagem de condição. Podem ser gerados a partir da etapa vae_encoder.
latents (Tensor):
Latentes ruidosos pré-gerados para a geração de imagem.
num_inference_steps (int):
O número de etapas de desruido.
sigmas (list, opcional):
Sigmas personalizados para o processo de desruido.
use_kv_cache (bool, opcional, padrão True):
Armazena em cache as chaves e valores do texto e da imagem de condição após a primeira etapa. Válido porque causal_condition modula esses tokens a partir de t = 0, tornando suas ativações independentes da etapa. Alterar essa opção não
reproduz a mesma imagem bit a bit em precisão reduzida.
attention_kwargs (dict, opcional):
Kwargs adicionais para os processadores de atenção.
*denoiser_input_fields (None,opcional):
entradas do modelo condicional para o desruidador: por exemplo, prompt_embeds, negative_prompt_embeds, etc.
output_type (str,opcional*, padrão pil):
Formato de saída: ‘pil’, ‘np’, ‘pt’.
Saídas:
imagens (list):
Imagens geradas.
QwenImage21TurboModularPipeline
classe diffusers.QwenImage21TurboModularPipeline
< 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 )
Uma ModularPipeline para o Qwen-Image 2.1 Turbo, o checkpoint acelerado que amostra em poucas etapas sem orientação.
QwenImage21TurboAutoBlocks
Pipeline modular automático para geração de texto para imagem e geração condicionada por imagem usando Qwen-Image 2.1 Turbo, o checkpoint acelerado que amostra sua grade de sigma incluída em poucas etapas sem orientação.
- para a geração de texto para imagem, tudo o que você precisa fornecer é
prompt - para geração condicionada por imagem, você precisa fornecer
prompteimage(uma imagem ou uma lista)
Fluxos de trabalho suportados:
text2image: requerpromptimage_conditioned: requerprompt,image
Componentes:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) processor
(Qwen3VLProcessor) vae (AutoencoderKLQwenImage21) scheduler (FlowMatchEulerDiscreteScheduler)
transformer (QwenImage21Transformer2DModel)
Configs:
sample_sigmas (padrão: None): Grade de amostragem que acompanha o checkpoint, usada quando sigmas não é passado.
Entradas:
image (Image | list, opcional):
Imagem(ns) de referência para o desruido. Pode ser uma única imagem ou uma lista de imagens.
output_resolution (int, opcional, padrão 1024):
Comprimento do lado alvo usado para derivar o tamanho de saída e para redimensionar as imagens de condição.
prompt (str):
O prompt ou os prompts para orientar a geração de imagens.
generator (Generator, opcional):
Gerador do Torch para geração determinística.
num_images_per_prompt (int, opcional, padrão 1):
O número de imagens a serem geradas por prompt.
height (int, opcional):
A altura em pixels da imagem gerada.
width (int, opcional):
A largura em pixels da imagem gerada.
image_latents (list, opcional):
Latentes normalizados de cada imagem de condição. Podem ser gerados a partir da etapa vae_encoder.
latents (Tensor):
Latentes ruidosos pré-gerados para a geração de imagens.
num_inference_steps (int):
O número de etapas de desruido.
sigmas (list, opcional):
Sigmas personalizados para o processo de desruido.
use_kv_cache (bool, opcional, padrão True):
Armazena em cache as chaves e valores do texto e da imagem de condição após a primeira etapa. Válido porque causal_condition modula esses tokens a partir de t = 0, tornando suas ativações independentes da etapa. Alternar essa opção não
reproduz a mesma imagem bit a bit em precisão reduzida.
attention_kwargs (dict, opcional):
Kwargs adicionais para os processadores de atenção.
*denoiser_input_fields (None,opcional):
entradas do modelo condicional para o desruidador: por exemplo, prompt_embeds, negative_prompt_embeds, etc.
output_type (str,opcional*, padrão pil):
Formato de saída: ‘pil’, ‘np’, ‘pt’.
Saídas:
imagens (list):
Imagens geradas.