Diffusers documentation
NucleusMoE-Image
NucleusMoE-Image
NucleusMoE-Image là một mô hình text-to-image kết hợp DiT single-stream với các lớp feed-forward Mixture-of-Experts, cross-attention tới text encoder Qwen3-VL và flow-matching Euler discrete scheduler.
Hãy chắc chắn xem qua hướng dẫn về Schedulers để tìm hiểu cách khám phá sự đánh đổi giữa tốc độ và chất lượng của scheduler, và xem phần tái sử dụng các thành phần giữa các pipeline để tìm hiểu cách nạp các thành phần giống nhau vào nhiều pipeline một cách hiệu quả.
NucleusMoEImagePipeline
lớp diffusers.NucleusMoEImagePipeline
< source >( transformer: NucleusMoEImageTransformer2DModelscheduler: FlowMatchEulerDiscreteSchedulervae: AutoencoderKLQwenImagetext_encoder: Qwen3VLForConditionalGenerationprocessor: Qwen3VLProcessor )
Tham số
- transformer (
NucleusMoEImageTransformer2DModel) — Kiến trúc Conditional Transformer (MMDiT) để khử nhiễu các latents ảnh đã mã hóa. - scheduler (FlowMatchEulerDiscreteScheduler) —
Một scheduler được sử dụng kết hợp với
transformerđể khử nhiễu các latents ảnh đã được mã hóa. - vae (AutoencoderKLQwenImage) — Mô hình Variational Auto-Encoder (VAE) để mã hóa và giải mã hình ảnh sang và từ các biểu diễn ẩn.
- text_encoder (
Qwen3VLForConditionalGeneration) — Bộ mã hóa văn bản để tính toán nhúng (embedding) của prompt. - processor (
Qwen3VLProcessor) — Bộ xử lý để mã hóa token cho các đầu vào văn bản.
Pipeline để tạo ảnh từ văn bản sử dụng NucleusMoE.
Pipeline này sử dụng DiT single-stream với các lớp feed-forward Mixture-of-Experts, cross-attention đến text encoder Qwen3-VL và flow-matching Euler discrete scheduler.
__call__
< source >( prompt: str | list[str] = Nonenegative_prompt: str | list[str] = Noneguidance_scale: float = 4.0height: int | None = Nonewidth: int | None = Nonenum_inference_steps: int = 50sigmas: list[float] | None = Nonenum_images_per_prompt: int = 1max_sequence_length: int | None = Nonereturn_index: int | None = Nonegenerator: 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 = ['latents'] ) → NucleusMoEImagePipelineOutput or tuple
Tham số
- prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt để định hướng việc tạo ảnh. Nếu không được định nghĩa, bạn phải truyềnprompt_embeds. - negative_prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt không dùng để định hướng việc tạo ảnh. Nếu không được định nghĩa, một chuỗi rỗng sẽ được sử dụng khitrue_cfg_scale > 1. - guidance_scale (
float, tùy chọn, mặc định là 4.0) — Thang độ hướng dẫn không có bộ phân loại (classifier-free guidance scale). Các giá trị lớn hơn 1 sẽ kích hoạt CFG. - return_index (
int, tuỳ chọn) — Chỉ số lớp của đầu ra bộ mã hóa văn bản cần dùng cho các embedding của prompt. - height (
int, tùy chọn, mặc định làself.default_sample_size * self.vae_scale_factor) — Chiều cao của hình ảnh được tạo ra, tính bằng pixel. - width (
int, tùy chọn, mặc định làself.default_sample_size * self.vae_scale_factor) — Chiều rộng của hình ảnh được tạo ra, tính bằng pixel. - num_inference_steps (
int, tùy chọn, mặc định là 50) — Số bước khử nhiễu. - sigmas (
list[float], tùy chọn) — Các sigma tùy chỉnh cho lịch trình khử nhiễu. Nếu không được định nghĩa, lịch trình tuyến tính sẽ được sử dụng. - num_images_per_prompt (
int, tùy chọn, mặc định là 1) — Số lượng hình ảnh cần tạo cho mỗi prompt. - generator (
torch.Generatorhoặclist[torch.Generator], tùy chọn) — Một hoặc một danh sách các torch generator để làm cho quá trình sinh ra kết quả xác định. - latents (
torch.Tensor, tùy chọn) — Các latents nhiễu đã được tạo trước để sử dụng làm đầu vào cho việc tạo ảnh. - prompt_embeds (
torch.Tensor, tùy chọn) — Các vector nhúng văn bản đã được tạo trước. - prompt_embeds_mask (
torch.Tensor, tùy chọn) — Mặt nạ chú ý (attention mask) cho các embedding văn bản đã tạo trước. - negative_prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản âm đã được tạo trước. - negative_prompt_embeds_mask (
torch.Tensor, tùy chọn) — Mặt nạ chú ý cho các vector nhúng văn bản âm đã được tạo trước. - output_type (
str, tùy chọn, mặc định là"pil") — Định dạng đầu ra của hình ảnh được tạo ra. Chọn giữa"pil","np"hoặc"latent". - return_dict (
bool, tùy chọn, mặc định làTrue) — Có nên trả về mộtNucleusMoEImagePipelineOutputthay vì một tuple thông thường hay không. - attention_kwargs (
dict, tùy chọn) — Các tham số kwargs được truyền cho bộ xử lý attention. - callback_on_step_end (
Callable, tùy chọn) — Một hàm được gọi vào cuối mỗi bước khử nhiễu. - callback_on_step_end_tensor_inputs (
list, tùy chọn) — Đầu vào tensor cho hàmcallback_on_step_end. - max_sequence_length (
int, mặc định là 512) — Chiều dài tối đa của chuỗi cho prompt văn bản.
Trả về
NucleusMoEImagePipelineOutput hoặc tuple
NucleusMoEImagePipelineOutput nếu return_dict là True, ngược lại là một tuple trong đó phần tử đầu tiên là một danh sách chứa các hình ảnh đã tạo.
Hàm được gọi khi gọi pipeline cho việc sinh.
Ví dụ:
>>> 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
< source >( prompt: str | list[str] = Nonedevice: 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 | None = Nonereturn_index: int | None = None )
Tham số
- prompt (
strhoặclist[str], tùy chọn) — Prompt hoặc các prompt cần mã hóa. - device (
torch.device, tùy chọn) — Thiết bị Torch cho các tensor kết quả. - num_images_per_prompt (
int, mặc định là 1) — Số lượng hình ảnh cần tạo cho mỗi prompt. - prompt_embeds (
torch.Tensor, tùy chọn) — Các embedding văn bản đã được tạo trước. Bỏ qua bước mã hóa nếu được cung cấp. - prompt_embeds_mask (
torch.Tensor, tùy chọn) — Mặt nạ chú ý cho các embedding được tạo trước. - max_sequence_length (
int, mặc định là 1024) — Độ dài token tối đa cho prompt đã được mã hóa.
Mã hóa các prompt văn bản thành các embedding bằng trình mã hóa văn bản Qwen3-VL.
NucleusMoEImagePipelineOutput
class diffusers.pipelines.nucleusmoe_image.pipeline_output.NucleusMoEImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
Lớp đầu ra cho các pipeline ảnh NucleusMoE.