Diffusers documentation

SANA-Sprint

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SANA-Sprint

LoRA

SANA-Sprint: One-Step Diffusion with Continuous-Time Consistency Distillation от NVIDIA, MIT HAN Lab и Hugging Face, авторы: Junsong Chen, Shuchen Xue, Yuyang Zhao, Jincheng Yu, Sayak Paul, Junyu Chen, Han Cai, Enze Xie, Song Han

Аннотация из статьи:

В данной статье представлена SANA-Sprint — эффективная диффузионная модель для сверхбыстрого генерирования изображений по текстовому описанию (T2I). SANA-Sprint построена на основе предварительно обученной фундаментальной модели и дополнена гибридной дистилляцией, что позволяет радикально сократить количество шагов инференса с 20 до 1–4. Мы вносим три ключевых инновации: (1) Мы предлагаем подход, не требующий обучения, который трансформирует предварительно обученную модель flow-matching для дистилляции непрерывной временной согласованности (sCM), устраняя дорогостоящее обучение с нуля и обеспечивая высокую эффективность обучения. Наша стратегия гибридной дистилляции объединяет sCM с латентной адверсариальной дистилляцией (LADD): sCM обеспечивает согласованность с учительской моделью, а LADD повышает точность генерации за один шаг. (2) SANA-Sprint — это унифицированная адаптивная к числу шагов модель, которая обеспечивает высококачественную генерацию за 1–4 шага, исключая обучение, специфичное для конкретного числа шагов, и повышая эффективность. (3) Мы интегрируем ControlNet с SANA-Sprint для интерактивной генерации изображений в реальном времени, что позволяет получать мгновенную визуальную обратную связь при взаимодействии пользователя. SANA-Sprint устанавливает новую границу Парето в компромиссе между скоростью и качеством, достигая передовых показателей с FID 7.59 и GenEval 0.74 всего за 1 шаг — превосходя FLUX-schnell (FID 7.94 / GenEval 0.71) при скорости в 10 раз выше (0,1 с против 1,1 с на H100). Она также обеспечивает задержку 0,1 с (T2I) и 0,25 с (ControlNet) для изображений 1024×1024 на H100, а также 0,31 с (T2I) на RTX 4090, демонстрируя исключительную эффективность и потенциал для потребительских приложений с ИИ (AIPC). Код и предварительно обученные модели будут открыты.

Этот конвейер был предложен lawrence-cj, shuchen Xue и Enze Xie. Исходная кодовая база доступна здесь. Исходные веса можно найти по адресу hf.co/Efficient-Large-Model.

Доступные модели:

МодельРекомендуемый dtype
Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffuserstorch.bfloat16
Efficient-Large-Model/Sana_Sprint_0.6B_1024px_diffuserstorch.bfloat16

См. это собрание для получения дополнительной информации.

Примечание: Указанный рекомендуемый dtype относится к весам трансформера. Текстовый кодировщик должен оставаться в torch.bfloat16, а веса VAE — в torch.bfloat16 или torch.float32, чтобы модель работала корректно. См. пример вывода ниже, чтобы узнать, как загрузить модель с рекомендуемым dtype.

Квантование

Квантование помогает снизить требования к памяти для очень больших моделей, храня веса модели в формате данных с меньшей точностью. Однако влияние квантования на качество видео может различаться в зависимости от используемой модели видео.

См. обзор Quantization, чтобы узнать больше о поддерживаемых бэкендах квантования и о том, как выбрать бэкенд, подходящий для вашей задачи. Пример ниже показывает, как загрузить квантованный SanaSprintPipeline для инференса с помощью bitsandbytes.

import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SanaTransformer2DModel, SanaSprintPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, AutoModel

quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = AutoModel.from_pretrained(
    "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
    subfolder="text_encoder",
    quantization_config=quant_config,
    dtype=torch.bfloat16,
)

quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = SanaTransformer2DModel.from_pretrained(
    "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
    subfolder="transformer",
    quantization_config=quant_config,
    dtype=torch.bfloat16,
)

pipeline = SanaSprintPipeline.from_pretrained(
    "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers",
    text_encoder=text_encoder_8bit,
    transformer=transformer_8bit,
    dtype=torch.bfloat16,
    device_map="balanced",
)

prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt).images[0]
image.save("sana.png")

Установка max_timesteps

Пользователи могут изменять значение max_timesteps, чтобы экспериментировать с визуальным качеством генерируемых результатов. Значение max_timesteps по умолчанию было получено с помощью процесса поиска во время инференса. Подробнее об этом можно узнать в статье.

Изображение в изображение

SanaSprintImg2ImgPipeline — это конвейер для генерации изображений по изображению. Он принимает входное изображение и промпт, а затем генерирует новое изображение на основе входного изображения и промпта.

import torch
from diffusers import SanaSprintImg2ImgPipeline
from diffusers.utils.loading_utils import load_image

image = load_image(
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
)

pipe = SanaSprintImg2ImgPipeline.from_pretrained(
    "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", 
    dtype=torch.bfloat16)
pipe.to("cuda")  # or "mps", "xpu", "cpu"

image = pipe(
    prompt="a cute pink bear", 
    image=image, 
    strength=0.5, 
    height=832, 
    width=480
).images[0]
image.save("output.png")

SanaSprintPipeline

класс diffusers.SanaSprintPipeline

< >

( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )

Пайплайн для генерации изображений по тексту с использованием SANA-Sprint.

__call__

< >

( prompt: str | list[str] = Nonenum_inference_steps: int = 2timesteps: list[int] = Nonemax_timesteps: float = 1.5708intermediate_timesteps: float = 1.3guidance_scale: float = 4.5num_images_per_prompt: int | None = 1height: int = 1024width: int = 1024eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueclean_caption: bool = Falseuse_resolution_binning: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 300complex_human_instruction: list[str] = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: '] ) → SanaPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • num_inference_steps (int, необязательный, по умолчанию 20) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • max_timesteps (float, необязательный, по умолчанию 1.57080) — Максимальное значение шага времени, используемое в планировщике SCM.
  • intermediate_timesteps (float, необязательный, по умолчанию 1.3) — Значение промежуточного шага, используемое в планировщике SCM (применяется только при num_inference_steps=2).
  • timesteps (list[int], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргумент timesteps в методе set_timesteps. Если не задан, будет использоваться поведение по умолчанию при передаче num_inference_steps. Значения должны быть в порядке убывания.
  • guidance_scale (float, необязательный, по умолчанию 4,5) — Встроенный масштаб guidance включается при установке guidance_scale > 1. Более высокое значение guidance_scale поощряет модель генерировать изображения, более точно соответствующие prompt , в ущерб качеству изображения.

    Модели, полученные с помощью дистилляции guidance, аппроксимируют истинный classifer-free guidance для guidance_scale > 1. Подробнее см. в статье.

  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size) — Высота генерируемого изображения в пикселях.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size) — Ширина генерируемого изображения в пикселях.
  • eta (float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) в статье DDIM: https://huggingface.co/papers/2010.02502. Применяется только к schedulers.DDIMScheduler, для остальных игнорируется.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • prompt_attention_mask (torch.Tensor, необязательный) — Предварительно сгенерированная маска внимания для текстовых эмбеддингов.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.stable_diffusion.IFPipelineOutput вместо обычного кортежа.
  • attention_kwargs — Словарь kwargs, который при указании передаётся в AttentionProcessor, определённый в self.processor в модуле diffusers.models.attention_processor.
  • clean_caption (bool, необязательный, по умолчанию True) — Определяет, нужно ли очищать подпись перед созданием эмбеддингов. Требует установки beautifulsoup4 и ftfy. Если зависимости не установлены, эмбеддинги будут созданы из исходного промпта.
  • use_resolution_binning (bool, по умолчанию True) — Если установлено в True, запрашиваемые высота и ширина сначала сопоставляются с ближайшими разрешениями с помощью ASPECT_RATIO_1024_BIN. После декодирования полученных латентов в изображения они масштабируются обратно до запрошенного разрешения. Полезно для генерации изображений, не являющихся квадратными.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 300) — Максимальная длина последовательности, используемая с prompt.
  • complex_human_instruction (list[str], необязательный) — Инструкции для сложного человеческого внимания: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55.

Возвращает

SanaPipelineOutput или tuple

Если return_dict равно True, возвращается SanaPipelineOutput, в противном случае возвращается tuple, где первый элемент — это список с сгенерированными изображениями

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import SanaSprintPipeline

>>> pipe = SanaSprintPipeline.from_pretrained(
...     "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = pipe(prompt="a tiny astronaut hatching from an egg on the moon")[0]
>>> image[0].save("output.png")

encode_prompt

< >

( prompt: str | list[str]num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = Nonelora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • device — (torch.device, необязательный): устройство torch, на котором будут размещены полученные эмбеддинги
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • clean_caption (bool, по умолчанию False) — Если True, функция выполнит предобработку и очистку переданного описания перед кодированием.
  • max_sequence_length (int, по умолчанию 300) — Максимальная длина последовательности, используемая для промпта.
  • complex_human_instruction (list[str], по умолчанию complex_human_instruction) — Если complex_human_instruction не пуст, функция использует сложную инструкцию Human для промпта.

Кодирует промпт в скрытые состояния текстового энкодера.

SanaSprintImg2ImgPipeline

класс diffusers.SanaSprintImg2ImgPipeline

< >

( tokenizer: GemmaTokenizertext_encoder: Gemma2PreTrainedModelvae: AutoencoderDCtransformer: SanaTransformer2DModelscheduler: DPMSolverMultistepScheduler )

Пайплайн для генерации изображений по тексту с использованием SANA-Sprint.

__call__

< >

( prompt: str | list[str] = Nonenum_inference_steps: int = 2timesteps: list[int] = Nonemax_timesteps: float = 1.5708intermediate_timesteps: float = 1.3guidance_scale: float = 4.5image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]] = Nonestrength: float = 0.6num_images_per_prompt: int | None = 1height: int = 1024width: int = 1024eta: float = 0.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonelatents: typing.Optional[torch.Tensor] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneoutput_type: str | None = 'pil'return_dict: bool = Trueclean_caption: bool = Falseuse_resolution_binning: bool = Trueattention_kwargs: dict[str, typing.Any] | None = Nonecallback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = Nonecallback_on_step_end_tensor_inputs: list[str] = ['latents']max_sequence_length: int = 300complex_human_instruction: list[str] = ["Given a user prompt, generate an 'Enhanced prompt' that provides detailed visual descriptions suitable for image generation. Evaluate the level of detail in the user prompt:", '- If the prompt is simple, focus on adding specifics about colors, shapes, sizes, textures, and spatial relationships to create vivid and concrete scenes.', '- If the prompt is already detailed, refine and enhance the existing details slightly without overcomplicating.', 'Here are examples of how to transform or refine prompts:', '- User Prompt: A cat sleeping -> Enhanced: A small, fluffy white cat curled up in a round shape, sleeping peacefully on a warm sunny windowsill, surrounded by pots of blooming red flowers.', '- User Prompt: A busy city street -> Enhanced: A bustling city street scene at dusk, featuring glowing street lamps, a diverse crowd of people in colorful clothing, and a double-decker bus passing by towering glass skyscrapers.', 'Please generate only the enhanced description for the prompt below and avoid including any additional commentary or evaluations:', 'User Prompt: '] ) → SanaPipelineOutput or tuple

Параметры

  • prompt (str или list[str], необязательный) — Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
  • num_inference_steps (int, необязательный, по умолчанию 20) — Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
  • max_timesteps (float, необязательный, по умолчанию 1.57080) — Максимальное значение шага времени, используемое в планировщике SCM.
  • intermediate_timesteps (float, необязательный, по умолчанию 1.3) — Значение промежуточного шага, используемое в планировщике SCM (применяется только при num_inference_steps=2).
  • timesteps (list[int], необязательный) — Пользовательские шаги для процесса удаления шума в планировщиках, поддерживающих аргумент timesteps в методе set_timesteps. Если не задан, будет использоваться поведение по умолчанию при передаче num_inference_steps. Значения должны быть в порядке убывания.
  • guidance_scale (float, необязательный, по умолчанию 4.5) — Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в статье Imagen. Масштаб руководства включается при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
  • image (torch.Tensor, PIL.Image.Image, np.ndarray, list[torch.Tensor], list[PIL.Image.Image] или list[np.ndarray]) — Image, массив numpy или тензор, представляющие пакет изображений, используемый в качестве начальной точки. Также можно передавать латенты изображений в качестве image, но при прямой передаче латентов они не кодируются повторно.
  • strength (float, необязательный, по умолчанию 0.6) — Определяет степень трансформации исходного image. Значение должно находиться в диапазоне от 0 до 1. image используется как стартовая точка, и чем выше strength, тем больше шума добавляется. Количество шагов денойзинга зависит от количества шума, добавленного изначально. Когда strength равно 1, добавляется максимальное количество шума, и процесс денойзинга выполняется в течение полного числа итераций, указанного в num_inference_steps. Значение 1 по сути игнорирует image.
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — Количество изображений, генерируемых для каждого промпта.
  • height (int, необязательный, по умолчанию self.unet.config.sample_size) — Высота генерируемого изображения в пикселях.
  • width (int, необязательный, по умолчанию self.unet.config.sample_size) — Ширина генерируемого изображения в пикселях.
  • eta (float, необязательный, по умолчанию 0.0) — Соответствует параметру eta (η) в статье DDIM: https://arxiv.org/abs/2010.02502. Применяется только к schedulers.DDIMScheduler, для остальных игнорируется.
  • generator (torch.Generator или list[torch.Generator], необязательный) — Один или список генераторов torch для обеспечения детерминированности генерации.
  • latents (torch.Tensor, необязательный) — Предварительно сгенерированные зашумлённые латенты, выбранные из гауссова распределения, которые используются в качестве входных данных для генерации изображений. Позволяет корректировать один и тот же процесс генерации с помощью различных промптов. Если не заданы, тензор латентов будет сгенерирован путём выборки с использованием переданного случайного generator.
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • prompt_attention_mask (torch.Tensor, необязательный) — Предварительно сгенерированная маска внимания для текстовых эмбеддингов.
  • output_type (str, необязательный, по умолчанию "pil") — Формат вывода сгенерированного изображения. Выберите один из вариантов: PIL: PIL.Image.Image или np.array.
  • return_dict (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать ~pipelines.stable_diffusion.IFPipelineOutput вместо обычного кортежа.
  • attention_kwargs — Словарь kwargs, который при указании передаётся в AttentionProcessor, определённый в self.processor в модуле diffusers.models.attention_processor.
  • clean_caption (bool, необязательный, по умолчанию True) — Определяет, нужно ли очищать подпись перед созданием эмбеддингов. Требует установки beautifulsoup4 и ftfy. Если зависимости не установлены, эмбеддинги будут созданы из исходного промпта.
  • use_resolution_binning (bool, по умолчанию True) — Если установлено в True, запрашиваемые высота и ширина сначала сопоставляются с ближайшими разрешениями с помощью ASPECT_RATIO_1024_BIN. После декодирования полученных латентов в изображения они масштабируются обратно до запрошенного разрешения. Полезно для генерации изображений, не являющихся квадратными.
  • callback_on_step_end (Callable, необязательный) — Функция, вызываемая в конце каждого шага денойзинга во время инференса. Функция вызывается со следующими аргументами: callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict). callback_kwargs будет содержать список всех тензоров, как указано в callback_on_step_end_tensor_inputs.
  • callback_on_step_end_tensor_inputs (list, необязательный) — Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса пайплайна.
  • max_sequence_length (int, по умолчанию 300) — Максимальная длина последовательности, используемая с prompt.
  • complex_human_instruction (list[str], необязательный) — Инструкции для сложного человеческого внимания: https://github.com/NVlabs/Sana/blob/main/configs/sana_app_config/Sana_1600M_app.yaml#L55.

Возвращает

SanaPipelineOutput или tuple

Если return_dict равно True, возвращается SanaPipelineOutput, в противном случае возвращается tuple, где первый элемент — это список с сгенерированными изображениями

Функция, вызываемая при обращении к конвейеру для генерации.

Примеры:

>>> import torch
>>> from diffusers import SanaSprintImg2ImgPipeline
>>> from diffusers.utils.loading_utils import load_image

>>> pipe = SanaSprintImg2ImgPipeline.from_pretrained(
...     "Efficient-Large-Model/Sana_Sprint_1.6B_1024px_diffusers", torch_dtype=torch.bfloat16
... )
>>> pipe.to("cuda")

>>> image = load_image(
...     "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/penguin.png"
... )


>>> image = pipe(prompt="a cute pink bear", image=image, strength=0.5, height=832, width=480).images[0]
>>> image[0].save("output.png")

encode_prompt

< >

( prompt: str | list[str]num_images_per_prompt: int = 1device: typing.Optional[torch.device] = Noneprompt_embeds: typing.Optional[torch.Tensor] = Noneprompt_attention_mask: typing.Optional[torch.Tensor] = Noneclean_caption: bool = Falsemax_sequence_length: int = 300complex_human_instruction: list[str] | None = Nonelora_scale: float | None = None )

Параметры

  • prompt (str или list[str], необязательный) — промпт для кодирования
  • num_images_per_prompt (int, необязательный, по умолчанию 1) — количество изображений, которые должны быть сгенерированы для каждого промпта
  • device — (torch.device, необязательный): устройство torch, на котором будут размещены полученные эмбеддинги
  • prompt_embeds (torch.Tensor, необязательный) — Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например, для взвешивания промпта. Если не передано, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
  • clean_caption (bool, по умолчанию False) — Если True, функция выполнит предобработку и очистку переданного описания перед кодированием.
  • max_sequence_length (int, по умолчанию 300) — Максимальная длина последовательности, используемая для промпта.
  • complex_human_instruction (list[str], по умолчанию complex_human_instruction) — Если complex_human_instruction не пуст, функция использует сложную инструкцию Human для промпта.

Кодирует промпт в скрытые состояния текстового энкодера.

SanaPipelineOutput

класс diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

Параметры

  • images (list[PIL.Image.Image] или np.ndarray) — список денойзированных изображений PIL длиной batch_size или массив numpy с формой (batch_size, height, width, num_channels). Изображения PIL или массив numpy представляют денойзированные изображения диффузионного конвейера.

Класс вывода для конвейеров Sana.

Update on GitHub