#
# Bajo licencia Apache License, versión 2.0 (la "Licencia");
# no puede usar este archivo excepto en cumplimiento de la Licencia.
# Puede obtener una copia de la Licencia en
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# A menos que la ley aplicable lo exija o se haya acordado por escrito, el software
# distribuido bajo la Licencia se distribuye en una base "TAL CUAL",
# SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.
# Consulte la Licencia para el lenguaje específico que rige los permisos y
# limitaciones de la Licencia. -->

# NucleusMoE-Image

[NucleusMoE-Image](https://huggingface.co/NucleusAI/NucleusMoE-Image) es un modelo de texto a imagen que combina un DiT de un solo flujo con capas feed-forward de Mixture-of-Experts, atención cruzada con un codificador de texto Qwen3-VL y un planificador discreto de Euler de flow-matching.

> [!TIP]
> Asegúrate de consultar la [guía de Schedulers](../../using-diffusers/schedulers) para aprender a explorar el equilibrio entre la velocidad y la calidad del scheduler, y consulta la sección [reutilizar componentes entre pipelines](../../using-diffusers/loading#reusing-models-in-multiple-pipelines) para aprender a cargar eficientemente los mismos componentes en múltiples pipelines.

## NucleusMoEImagePipeline[[diffusers.NucleusMoEImagePipeline]]

#### diffusers.NucleusMoEImagePipeline[[diffusers.NucleusMoEImagePipeline]]

```python
diffusers.NucleusMoEImagePipeline(transformer: NucleusMoEImageTransformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, vae: AutoencoderKLQwenImage, text_encoder: Qwen3VLForConditionalGeneration, processor: Qwen3VLProcessor)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/nucleusmoe_image/pipeline_nucleusmoe_image.py#L132)

**Parámetros:**

transformer (`NucleusMoEImageTransformer2DModel`) : Arquitectura de Transformer condicional (MMDiT) para desruidar los latentes de imagen codificados.

scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/es/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Un programador para usar en combinación con `transformer` para desruidar los latentes de imagen codificados.

vae ([AutoencoderKLQwenImage](/docs/diffusers/main/es/api/models/autoencoderkl_qwenimage#diffusers.AutoencoderKLQwenImage)) : Modelo de Autoencoder Variacional (VAE) para codificar y decodificar imágenes hacia y desde representaciones latentes.

text_encoder (`Qwen3VLForConditionalGeneration`) : Codificador de texto para calcular los embeddings de los prompts.

processor (`Qwen3VLProcessor`) : Procesador para tokenizar entradas de texto.

Pipeline para la generación de imágenes a partir de texto usando NucleusMoE.

Este pipeline utiliza un DiT de un solo flujo con capas feed-forward de Mixture-of-Experts, atención cruzada con un codificador de texto Qwen3-VL y un planificador discreto de Euler para flow-matching.

#### __call__[[diffusers.NucleusMoEImagePipeline.__call__]]

```python
__call__(prompt: str | list[str] = None, negative_prompt: str | list[str] = None, guidance_scale: float = 4.0, height: int | None = None, width: int | None = None, num_inference_steps: int = 50, sigmas: list[float] | None = None, num_images_per_prompt: int = 1, max_sequence_length: int | None = None, return_index: int | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int, dict], NoneType]] = None, callback_on_step_end_tensor_inputs: list = ['latents'])
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/nucleusmoe_image/pipeline_nucleusmoe_image.py#L379)

**Parámetros:**

prompt (`str` o `list[str]`, *opcional*) : El prompt o los prompts para guiar la generación de la imagen. Si no se define, se debe pasar `prompt_embeds`.

negative_prompt (`str` o `list[str]`, *opcional*) : El prompt o prompts que no deben guiar la generación de la imagen. Si no se define, se utiliza una cadena vacía cuando `true_cfg_scale > 1`.

guidance_scale (`float`, *opcional*, valor predeterminado 4.0) : Escala de guía sin clasificador. Los valores mayores que 1 habilitan CFG.

return_index (`int`, *opcional*) : Índice de la capa de la salida del codificador de texto que se usará para las incrustaciones del prompt.

height (`int`, *opcional*, valor predeterminado `self.default_sample_size * self.vae_scale_factor`) : La altura en píxeles de la imagen generada.

width (`int`, *opcional*, valor predeterminado `self.default_sample_size * self.vae_scale_factor`) : El ancho en píxeles de la imagen generada.

num_inference_steps (`int`, *opcional*, valor predeterminado 50) : El número de pasos de desruido.

sigmas (`list[float]`, *opcional*) : Sigmas personalizados para el programa de desruido. Si no se definen, se utiliza un programa lineal.

num_images_per_prompt (`int`, *opcional*, valor predeterminado 1) : El número de imágenes a generar por indicación.

generator (`torch.Generator` o `list[torch.Generator]`, *opcional*) : Uno o una lista de generadores de torch para hacer la generación determinista.

latents (`torch.Tensor`, *opcional*) : Latentes ruidosos pregenerados para usarse como entradas para la generación de imágenes.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados.

prompt_embeds_mask (`torch.Tensor`, *opcional*) : Máscara de atención para las incrustaciones de texto pregeneradas.

negative_prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto negativo pregenerados.

negative_prompt_embeds_mask (`torch.Tensor`, *opcional*) : Máscara de atención para los embeddings de texto negativo pregenerados.

output_type (`str`, *opcional*, por defecto `"pil"`) : El formato de salida de la imagen generada. Elija entre `"pil"`, `"np"` o `"latent"`.

return_dict (`bool`, *opcional*, valor predeterminado `True`) : Indica si se debe devolver un `NucleusMoEImagePipelineOutput` en lugar de una tupla simple.

attention_kwargs (`dict`, *opcional*) : Kwargs pasados al procesador de atención.

callback_on_step_end (`Callable`, *opcional*) : Una función que se llama al final de cada paso de desruido.

callback_on_step_end_tensor_inputs (`list`, *opcional*) : Entradas de Tensor para la función `callback_on_step_end`.

max_sequence_length (`int`, por defecto 512) : Longitud máxima de la secuencia para el prompt de texto.

**Devuelve:** `NucleusMoEImagePipelineOutput` o `tuple`

`NucleusMoEImagePipelineOutput` si `return_dict` es True, de lo contrario una `tuple` donde el primer elemento es una lista con las imágenes generadas.

Función invocada al llamar a la pipeline para la generación.

Ejemplos:
```py
>>> import torch
>>> from diffusers import NucleusMoEImagePipeline

>>> pipe = NucleusMoEImagePipeline.from_pretrained("NucleusAI/NucleusMoE-Image", torch_dtype=torch.bfloat16)
>>> pipe.to("cuda")
>>> prompt = "A cat holding a sign that says hello world"
>>> image = pipe(prompt, num_inference_steps=50).images[0]
>>> image.save("nucleus_moe.png")
```

#### encode_prompt[[diffusers.NucleusMoEImagePipeline.encode_prompt]]

```python
encode_prompt(prompt: str | list[str] = None, device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_embeds_mask: typing.Optional[torch.Tensor] = None, max_sequence_length: int | None = None, return_index: int | None = None)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/nucleusmoe_image/pipeline_nucleusmoe_image.py#L187)

**Parámetros:**

prompt (`str` o `list[str]`, *opcional*) : El prompt o los prompts a codificar.

device (`torch.device`, *opcional*) : Dispositivo de Torch para los tensores resultantes.

num_images_per_prompt (`int`, por defecto 1) : Número de imágenes a generar por indicación.

prompt_embeds (`torch.Tensor`, *opcional*) : Embeddings de texto pregenerados. Omite la codificación si se proporcionan.

prompt_embeds_mask (`torch.Tensor`, *opcional*) : Máscara de atención para las incrustaciones pregeneradas.

max_sequence_length (`int`, por defecto 1024) : Longitud máxima de tokens para el prompt codificado.

Codifica los prompts de texto en embeddings usando el codificador de texto de Qwen3-VL.

## NucleusMoEImagePipelineOutput[[diffusers.pipelines.nucleusmoe_image.pipeline_output.NucleusMoEImagePipelineOutput]]

#### diffusers.pipelines.nucleusmoe_image.pipeline_output.NucleusMoEImagePipelineOutput[[diffusers.pipelines.nucleusmoe_image.pipeline_output.NucleusMoEImagePipelineOutput]]

```python
diffusers.pipelines.nucleusmoe_image.pipeline_output.NucleusMoEImagePipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray)
```

[Fuente](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/nucleusmoe_image/pipeline_output.py#L10)

**Parámetros:**

images (`list[PIL.Image.Image]` o `np.ndarray`) : Lista de imágenes PIL desruidas de longitud `batch_size` o matriz numpy de forma `(batch_size, height, width, num_channels)`. Las imágenes PIL o la matriz numpy presentan las imágenes desruidas del pipeline de difusión.

Clase de salida para las pipelines de imagen de NucleusMoE.

