Buckets:
Лицензия Apache License, Version 2.0 («Лицензия»);
вы можете использовать этот файл только в соответствии с Лицензией.
Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не оговорено письменно, программное
распространяется по Лицензии на условиях «КАК ЕСТЬ»,
БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, прямо указанных или подразумеваемых.
См. Лицензию для получения конкретных условий, регулирующих разрешения и
ограничениями Лицензии. -->
SanaPipeline
SANA: Efficient High-Resolution Image Synthesis with Linear Diffusion Transformers от NVIDIA и MIT HAN Lab, авторы: Enze Xie, Junsong Chen, Junyu Chen, Han Cai, Haotian Tang, Yujun Lin, Zhekai Zhang, Muyang Li, Ligeng Zhu, Yao Lu, Song Han.
Аннотация из статьи:
Мы представляем Sana — фреймворк для генерации изображений по текстовому описанию, способный эффективно создавать изображения с разрешением до 4096×4096. Sana синтезирует изображения высокого разрешения и качества с сильной согласованностью текста и изображения на удивительно высокой скорости, при этом его можно развернуть на GPU ноутбука. Ключевые элементы архитектуры: (1) Автоэнкодер с глубокой компрессией: в отличие от традиционных AE, которые сжимают изображения только в 8 раз, мы обучили AE, способный сжимать изображения в 32 раза, что эффективно снижает количество латентных токенов. (2) Linear DiT: мы заменили все стандартные механизмы внимания в DiT на линейное внимание, которое более эффективно при высоких разрешениях без потери качества. (3) Текстовый энкодер только с декодером: мы заменили T5 на современный небольшой LLM с архитектурой только с декодером в качестве текстового энкодера и разработали сложные инструкции для людей с использованием обучения в контексте, чтобы усилить согласованность текста и изображения. (4) Эффективное обучение и сэмплирование: мы предлагаем Flow-DPM-Solver для сокращения числа шагов сэмплирования, а также эффективное размечивание и отбор описаний для ускорения сходимости. В результате Sana-0.6B очень конкурентоспособен по сравнению с современными гигантскими диффузионными моделями (например, Flux-12B), будучи в 20 раз меньше и более чем в 100 раз быстрее по измеренной пропускной способности. Более того, Sana-0.6B можно развернуть на GPU ноутбука с 16 ГБ памяти, при этом генерация изображения с разрешением 1024×1024 занимает менее 1 секунды. Sana позволяет создавать контент с низкими затратами. Код и модель будут опубликованы.
Обязательно ознакомьтесь с руководством по планировщикам, чтобы узнать, как исследовать баланс между скоростью и качеством планировщика, а также с разделом повторное использование компонентов в разных конвейерах, чтобы узнать, как эффективно загружать одни и те же компоненты в несколько конвейеров.
Этот конвейер был предложен lawrence-cj и chenjy2003. Исходную кодовую базу можно найти здесь. Исходные веса доступны по адресу hf.co/Efficient-Large-Model.
Доступные модели:
| Модель | Рекомендуемый dtype |
|---|---|
Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers |
torch.bfloat16 |
Efficient-Large-Model/Sana_1600M_1024px_diffusers |
torch.float16 |
Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffusers |
torch.float16 |
Efficient-Large-Model/Sana_1600M_512px_diffusers |
torch.float16 |
Efficient-Large-Model/Sana_1600M_512px_MultiLing_diffusers |
torch.float16 |
Efficient-Large-Model/Sana_600M_1024px_diffusers |
torch.float16 |
Efficient-Large-Model/Sana_600M_512px_diffusers |
torch.float16 |
См. это собрание для получения дополнительной информации.
Примечание: Указанный рекомендуемый dtype относится к весам трансформера. Весам текстового энкодера и VAE необходимо оставаться в torch.bfloat16 или torch.float32, чтобы модель работала корректно. См. пример вывода ниже, чтобы узнать, как загрузить модель с рекомендуемым dtype.
Убедитесь, что вы передаёте аргумент
variantдля загружаемых контрольных точек, чтобы уменьшить занимаемое место на диске. Установите его в значение"fp16"для моделей с рекомендуемым типом данныхtorch.float16и в"bf16"для моделей с рекомендуемым типом данныхtorch.bfloat16. По умолчанию загружаются веса типаtorch.float32, которые занимают вдвое больше места на диске. Кроме того, веса типаtorch.float32можно преобразовать на лету, указав аргументdtype. Подробнее об этом читайте в документации.
Квантование
Квантование помогает снизить требования к памяти для очень больших моделей, храня веса модели в формате данных с меньшей точностью. Однако влияние квантования на качество видео может различаться в зависимости от используемой модели видео.
См. обзор Quantization, чтобы узнать больше о поддерживаемых бэкендах квантования и о том, как выбрать бэкенд, подходящий для вашей задачи. Пример ниже показывает, как загрузить квантованный SanaPipeline для инференса с помощью bitsandbytes.
import torch
from diffusers import BitsAndBytesConfig as DiffusersBitsAndBytesConfig, SanaTransformer2DModel, SanaPipeline
from transformers import BitsAndBytesConfig as BitsAndBytesConfig, AutoModel
quant_config = BitsAndBytesConfig(load_in_8bit=True)
text_encoder_8bit = AutoModel.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
subfolder="text_encoder",
quantization_config=quant_config,
dtype=torch.float16,
)
quant_config = DiffusersBitsAndBytesConfig(load_in_8bit=True)
transformer_8bit = SanaTransformer2DModel.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
subfolder="transformer",
quantization_config=quant_config,
dtype=torch.float16,
)
pipeline = SanaPipeline.from_pretrained(
"Efficient-Large-Model/Sana_1600M_1024px_diffusers",
text_encoder=text_encoder_8bit,
transformer=transformer_8bit,
dtype=torch.float16,
device_map="balanced",
)
prompt = "a tiny astronaut hatching from an egg on the moon"
image = pipeline(prompt).images[0]
image.save("sana.png")
SanaPipeline[[diffusers.SanaPipeline]]
diffusers.SanaPipeline[[diffusers.SanaPipeline]]
diffusers.SanaPipeline(tokenizer: GemmaTokenizer, text_encoder: Gemma2PreTrainedModel, vae: AutoencoderDC, transformer: SanaTransformer2DModel, scheduler: DPMSolverMultistepScheduler)
Пайплайн для генерации изображений по тексту с использованием Sana.
call[[diffusers.SanaPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 4.5, num_images_per_prompt: int | None = 1, height: int = 1024, width: int = 1024, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = False, use_resolution_binning: bool = True, attention_kwargs: dict[str, typing.Any] | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 300, complex_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: '])
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
num_inference_steps (int, optional, по умолчанию 20) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 4.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
height (int, optional, по умолчанию self.unet.config.sample_size) : Высота генерируемого изображения в пикселях.
width (int, optional, по умолчанию self.unet.config.sample_size) : Ширина генерируемого изображения в пикселях.
eta (float, optional, по умолчанию 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, необязательный) : Предварительно сгенерированная маска внимания для текстовых эмбеддингов.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Для PixArt-Sigma этот отрицательный промпт должен быть "". Если не указан, negative_prompt_embeds будет сгенерирован из аргумента negative_prompt.
negative_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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
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 SanaPipeline
>>> pipe = SanaPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers", torch_dtype=torch.float32
... )
>>> pipe.to("cuda")
>>> pipe.text_encoder.to(torch.bfloat16)
>>> pipe.transformer = pipe.transformer.to(torch.bfloat16)
>>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0]
>>> image[0].save("output.png")
encode_prompt[[diffusers.SanaPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, complex_human_instruction: list[str] | None = None, lora_scale: float | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
negative_prompt (str или list[str], необязательный) : Промпт, который не должен направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (то есть игнорируется, если guidance_scale меньше 1). Для PixArt-Alpha это должно быть "".
do_classifier_free_guidance (bool, необязательный, по умолчанию True) : использовать ли classifier free guidance
num_images_per_prompt (int, необязательный, по умолчанию 1) : количество изображений, которые должны быть сгенерированы для каждого промпта
device : (torch.device, необязательный): устройство torch, на котором будут размещены полученные эмбеддинги
prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные эмбеддинги отрицательного текста. Для Sana это должны быть эмбеддинги строки "".
clean_caption (bool, по умолчанию False) : Если True, функция выполнит предобработку и очистку переданной подписи перед кодированием.
max_sequence_length (int, по умолчанию 300) : Максимальная длина последовательности, используемая для промпта.
complex_human_instruction (list[str], по умолчанию complex_human_instruction) : Если complex_human_instruction не пуст, функция будет использовать сложную инструкцию Human для промпта.
Кодирует промпт в скрытые состояния текстового энкодера.
SanaPAGPipeline[[diffusers.SanaPAGPipeline]]
diffusers.SanaPAGPipeline[[diffusers.SanaPAGPipeline]]
diffusers.SanaPAGPipeline(tokenizer: GemmaTokenizer, text_encoder: Gemma2PreTrainedModel, vae: AutoencoderDC, transformer: SanaTransformer2DModel, scheduler: FlowMatchEulerDiscreteScheduler, pag_applied_layers: str | list[str] = 'transformer_blocks.0')
Пайплайн для генерации изображений по тексту с использованием Sana. Этот пайплайн поддерживает использование Perturbed Attention Guidance (PAG).
call[[diffusers.SanaPAGPipeline.call]]
__call__(prompt: str | list[str] = None, negative_prompt: str = '', num_inference_steps: int = 20, timesteps: list[int] = None, sigmas: list[float] = None, guidance_scale: float = 4.5, num_images_per_prompt: int | None = 1, height: int = 1024, width: int = 1024, eta: float = 0.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, output_type: str | None = 'pil', return_dict: bool = True, clean_caption: bool = False, use_resolution_binning: bool = True, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], max_sequence_length: int = 300, complex_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: '], pag_scale: float = 3.0, pag_adaptive_scale: float = 0.0)
Параметры:
prompt (str или list[str], необязательный) : Промпт или промпты для управления генерацией изображения. Если не задан, необходимо передать prompt_embeds вместо него.
negative_prompt (str или list[str], необязательный) : Промпт или промпты, которые не должны направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющее влияние (то есть игнорируется, если guidance_scale меньше 1).
num_inference_steps (int, optional, по умолчанию 20) : Количество шагов денойзинга. Как правило, большее число шагов денойзинга приводит к изображению более высокого качества, но за счёт более медленного вывода.
timesteps (list[int], optional) : Пользовательские шаги для процесса денойзинга с планировщиками, поддерживающими аргумент timesteps в их методе set_timesteps. Если не определено, будет использоваться поведение по умолчанию при передаче num_inference_steps. Должны быть в порядке убывания.
sigmas (list[float], optional) : Пользовательские сигмы для процесса денойзинга в планировщиках, поддерживающих аргумент sigmas в методе set_timesteps. Если не задано, будет использовано поведение по умолчанию при передаче num_inference_steps.
guidance_scale (float, optional, по умолчанию 4.5) : Масштаб руководства, как определено в Classifier-Free Diffusion Guidance. guidance_scale определяется как w из уравнения 2 в Imagen Paper. Масштаб руководства активируется при установке guidance_scale > 1. Более высокий масштаб руководства способствует генерации изображений, тесно связанных с текстовым prompt, обычно за счёт снижения качества изображения.
num_images_per_prompt (int, необязательный, по умолчанию 1) : Количество изображений, генерируемых на один запрос.
height (int, optional, по умолчанию self.unet.config.sample_size) : Высота генерируемого изображения в пикселях.
width (int, optional, по умолчанию self.unet.config.sample_size) : Ширина генерируемого изображения в пикселях.
eta (float, optional, по умолчанию 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, необязательный) : Предварительно сгенерированная маска внимания для текстовых эмбеддингов.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные отрицательные текстовые эмбеддинги. Для PixArt-Sigma этот отрицательный промпт должен быть "". Если не указан, negative_prompt_embeds будет сгенерирован из аргумента negative_prompt.
negative_prompt_attention_mask (torch.Tensor, необязательный) : Предварительно сгенерированная маска внимания для отрицательных текстовых эмбеддингов.
output_type (str, необязательный, по умолчанию "pil") : Формат вывода для генерируемого изображения. Выберите между PIL: PIL.Image.Image или np.array.
return_dict (bool, необязательный, по умолчанию True) : Возвращать ли ~pipelines.stable_diffusion.IFPipelineOutput вместо обычного кортежа.
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, optional) : Список тензорных входных данных для функции callback_on_step_end. Тензоры, указанные в списке, будут переданы в качестве аргумента callback_kwargs. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса pipeline.
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.
pag_scale (float, optional, по умолчанию 3.0) : Коэффициент масштабирования для направленного внимания с возмущениями. Если установлено значение 0.0, направленное внимание с возмущениями не будет использоваться.
pag_adaptive_scale (float, optional, по умолчанию 0.0) : Адаптивный коэффициент масштабирования для направленного внимания с возмущениями. Если он установлен в 0.0, используется pag_scale.
Возвращает: ImagePipelineOutput или tuple
Если return_dict равно True, возвращается ImagePipelineOutput, иначе возвращается tuple, где первый элемент — это список с сгенерированными изображениями
Функция, вызываемая при обращении к конвейеру для генерации.
Примеры:
>>> import torch
>>> from diffusers import SanaPAGPipeline
>>> pipe = SanaPAGPipeline.from_pretrained(
... "Efficient-Large-Model/Sana_1600M_1024px_BF16_diffusers",
... pag_applied_layers=["transformer_blocks.8"],
... torch_dtype=torch.float32,
... )
>>> pipe.to("cuda")
>>> pipe.text_encoder.to(torch.bfloat16)
>>> pipe.transformer = pipe.transformer.to(torch.bfloat16)
>>> image = pipe(prompt='a cyberpunk cat with a neon sign that says "Sana"')[0]
>>> image[0].save("output.png")
encode_prompt[[diffusers.SanaPAGPipeline.encode_prompt]]
encode_prompt(prompt: str | list[str], do_classifier_free_guidance: bool = True, negative_prompt: str = '', num_images_per_prompt: int = 1, device: typing.Optional[torch.device] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, prompt_attention_mask: typing.Optional[torch.Tensor] = None, negative_prompt_attention_mask: typing.Optional[torch.Tensor] = None, clean_caption: bool = False, max_sequence_length: int = 300, complex_human_instruction: list[str] | None = None)
Параметры:
prompt (str или list[str], необязательный) : промпт для кодирования
negative_prompt (str или list[str], необязательный) : Промпт, который не должен направлять генерацию изображения. Если не задан, необходимо передать negative_prompt_embeds. Игнорируется, если не используется направляющий сигнал (то есть игнорируется, если guidance_scale меньше 1). Для PixArt-Alpha это должно быть "".
do_classifier_free_guidance (bool, необязательный, по умолчанию True) : использовать ли classifier free guidance
num_images_per_prompt (int, необязательный, по умолчанию 1) : количество изображений, которые должны быть сгенерированы для каждого промпта
device : (torch.device, необязательный): устройство torch, на котором будут размещены полученные эмбеддинги
prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные текстовые эмбеддинги. Можно использовать для простой настройки текстовых входных данных, например для взвешивания промпта. Если не предоставлены, текстовые эмбеддинги будут сгенерированы из входного аргумента prompt.
negative_prompt_embeds (torch.Tensor, необязательный) : Предварительно сгенерированные эмбеддинги отрицательного текста. Для Sana это должны быть эмбеддинги строки "".
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]]
diffusers.pipelines.sana.pipeline_output.SanaPipelineOutput[[diffusers.pipelines.sana.pipeline_output.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.
Xet Storage Details
- Size:
- 46.1 kB
- Xet hash:
- 7e91f82e34540cd3055db4b9b8110cd275b49e09f3e180e221142f00368b07b5
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.