Diffusers documentation
Пайплайны
Пайплайны
Pipelines предоставляют простой способ запуска передовых диффузионных моделей в режиме инференса, объединяя все необходимые компоненты (несколько независимо обученных моделей, планировщики и процессоры) в единый класс для сквозного выполнения. Pipelines гибки и могут быть адаптированы для использования различных планировщиков или даже компонентов моделей.
Все конвейеры создаются на основе базового класса DiffusionPipeline, который обеспечивает базовые функции загрузки, скачивания и сохранения всех компонентов. Конкретные типы конвейеров (например, StableDiffusionPipeline), загруженные с помощью from_pretrained(), определяются автоматически, а компоненты конвейера загружаются и передаются в функцию __init__ конвейера.
Не следует использовать класс DiffusionPipeline для обучения. Отдельные компоненты (например, UNet2DModel и UNet2DConditionModel) диффузионных пайплайнов обычно обучаются по отдельности, поэтому мы рекомендуем работать с ними напрямую.
Pipelines не предоставляют никаких функций для обучения. Вы заметите, что autograd в PyTorch отключён, поскольку метод
__call__()декорирован декораторомtorch.no_grad, так как pipelines не предназначены для обучения. Если вас интересует обучение, обратитесь к руководствам по обучению!
Use API > Pipelines in the sidebar to browse all pipeline references by modality. For task-oriented workflows, start with the Quickstart or a guide such as text-to-image, image-to-image, inpainting, or video generation.
DiffusionPipeline
Базовый класс для всех конвейеров.
DiffusionPipeline хранит все компоненты (модели, планировщики и процессоры) для диффузионных пайплайнов и предоставляет методы для загрузки, скачивания и сохранения моделей. Он также включает методы для:
- переместить все модули PyTorch на устройство по вашему выбору
- включить/отключить индикатор прогресса для итераций шумоподавления
Атрибуты класса:
- config_name (
str) — Имя файла конфигурации, в котором хранятся имена классов и модулей всех компонентов диффузионного конвейера. - _optional_components (
List[str]) — список всех необязательных компонентов, которые не обязательно передавать в pipeline для его работы (должен быть переопределён в подклассах).
устройство
< source >( ) → torch.device
Возвращает
torch.device
Устройство torch, на котором размещён конвейер. Если компоненты распределены по разным устройствам (например, текстовые энкодеры работают на CPU, а базовая модель денуайзинга — на ускорителе), возвращается устройство ускорителя.
до
< source >( *args**kwargs ) → DiffusionPipeline
Параметры
- dtype (
torch.dtype, необязательный) — Возвращает конвейер с указаннымdtype - device (
torch.Device, необязательный) — Возвращает конвейер с указаннымdevice - silence_dtype_warnings (
str, необязательный, по умолчаниюFalse) — Определяет, следует ли подавлять предупреждения, если целевойdtypeнесовместим с целевымdevice.
Возвращает
Пайплайн преобразован в указанный dtype и/или dtype.
Выполняет преобразование dtype и/или device для Pipeline. Значения torch.dtype и torch.device выводятся из аргументов self.to(*args, **kwargs).
> Если у пайплайна уже есть необходимые torch.dtype и torch.device, он возвращается без изменений. В противном случае > возвращаемый пайплайн является копией self с требуемыми torch.dtype и torch.device.
Способы вызова to:
to(dtype, silence_dtype_warnings=False) → DiffusionPipelineдля возврата пайплайна с указаннымdtypeto(device, silence_dtype_warnings=False) → DiffusionPipelineдля возврата пайплайна с указаннымdeviceto(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipelineвозвращает пайплайн с указаннымиdeviceиdtype
Свойство self.components может быть полезно для запуска разных конвейеров с одними и теми же весами и конфигурациями без выделения дополнительной памяти.
Возвращает (dict):
Словарь, содержащий все модули, необходимые для инициализации конвейера.
Примеры:
>>> from diffusers import (
... StableDiffusionPipeline,
... StableDiffusionImg2ImgPipeline,
... StableDiffusionInpaintPipeline,
... )
>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)Отключает вычисление внимания с нарезкой. Если enable_attention_slicing был вызван ранее, внимание вычисляется за один шаг.
Отключить энергоэффективное внимание из xFormers.
загрузить
< source >( pretrained_model_name**kwargs ) → os.PathLike
Параметры
- pretrained_model_name (
strилиos.PathLike, необязательный) — Строка, идентификатор репозитория (например,CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub. - custom_pipeline (
str, необязательный) — Может быть одним из следующих:-
Строка, идентификатор репозитория (например,
CompVis/ldm-text2im-large-256) предобученного конвейера, размещённого на Hub. В репозитории должен присутствовать файлpipeline.py, в котором определяется пользовательский конвейер. -
Строка, имя файла сообщества пайплайна, размещённого на GitHub в разделе Community. Допустимые имена файлов должны соответствовать имени файла, а не имени скрипта пайплайна (
clip_guided_stable_diffusionвместоclip_guided_stable_diffusion.py). Пайплайны сообщества всегда загружаются из текущей веткиmainна GitHub. -
Путь к каталогу (
./my_pipeline_directory/), содержащему пользовательский конвейер. В каталоге должен присутствовать файлpipeline.py, в котором определяется пользовательский конвейер.
> 🧪 Это экспериментальная функция, которая может измениться в будущем.
Для получения дополнительной информации о загрузке и создании пользовательских конвейеров ознакомьтесь с Как внести вклад в создание конвейера сообщества.
-
- force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют. - proxies (
Dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси используются при каждом запросе. - output_loading_info(
bool, optional, по умолчаниюFalse) — Определяет, следует ли также возвращать словарь, содержащий отсутствующие ключи, неожиданные ключи и сообщения об ошибках. - local_files_only (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли загружать только локальные веса модели и файлы конфигурации. Если установлено значениеTrue, модель не будет скачана с Hub. - token (
strили bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. ЕслиTrue, используется токен, сгенерированный командойdiffusers-cli login(сохранённый в~/.huggingface). - revision (
str, необязательный, по умолчанию"main") — Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git. - custom_revision (
str, необязательный, по умолчанию"main") — Конкретная версия модели, которую следует использовать. Это может быть имя ветки, имя тега или идентификатор коммита, аналогичноrevisionпри загрузке пользовательского конвейера из Hub. При загрузке пользовательского конвейера из GitHub это может быть версия 🤗 Diffusers, в противном случае при загрузке из Hub по умолчанию используется"main". - mirror (
str, optional) — Источник зеркала для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала. - variant (
str, необязательный) — Загружает веса из файла с указанным вариантом имени, например"fp16"или"ema". - use_safetensors (
bool, необязательный, по умолчаниюNone) — Если установлено значениеNone, веса safetensors загружаются, если они доступны и если библиотека safetensors установлена. Если установлено значениеTrue, модель принудительно загружается из весов safetensors. Если установлено значениеFalse, веса safetensors не загружаются. - use_onnx (
bool, необязательный, по умолчаниюFalse) — Если установлено вTrue, веса ONNX всегда будут загружаться, если они присутствуют. Если установлено вFalse, веса ONNX никогда не будут загружаться. По умолчаниюuse_onnxпринимает значение атрибута класса_is_onnx, которое равноFalseдля не-ONNX конвейеров иTrueдля ONNX конвейеров. К весам ONNX относятся как файлы, заканчивающиеся на.onnx, так и на.pb. - trust_remote_code (
bool, необязательный, по умолчаниюFalse) — Определяет, разрешено ли использование пользовательских конвейеров и компонентов, определенных на Hub в собственных файлах. Этот параметр следует устанавливать вTrueтолько для репозиториев, которым вы доверяете и код которых вы прочитали, так как это приведет к выполнению кода, находящегося на Hub, на вашем локальном компьютере. - use_flashpack (
bool, необязательный, по умолчаниюFalse) — Если установлено значениеTrue, веса FlashPack всегда будут загружаться, если они присутствуют. Если установлено значениеFalse, веса FlashPack никогда не будут загружаться.
Возвращает
os.PathLike
Путь к загруженной конвейерной модели.
Загрузите и закэшируйте PyTorch diffusion pipeline из предобученных весов pipeline.
> Для использования частных или модели с ограниченным доступом выполните вход с помощью `hf > auth login
enable_attention_slicing
< source >( slice_size: str | int = 'auto' )
Параметры
- slice_size (
strилиint, необязательный, по умолчанию"auto") — Если указано"auto", вход для головок внимания делится пополам, и внимание вычисляется в два этапа. Если указано"max", экономия памяти будет максимальной, так как за раз выполняется только один срез. Если предоставлено число, используется столько срезов, сколько получается изattention_head_dim // slice_size. В этом случаеattention_head_dimдолжно быть кратноslice_size.
Включает послойный (сliced) вычисление внимания. При включении этого параметра модуль внимания разбивает входной тензор на части (слайсы) для вычисления внимания в несколько шагов. Если используется более одной головы внимания, вычисления выполняются последовательно для каждой головы. Это полезно для экономии памяти ценой небольшого снижения скорости.
> ⚠️ Не включайте нарезку внимания, если вы уже используете
scaled_dot_product_attention(SDPA) из PyTorch > 2.0 или xFormers. Эти вычисления внимания уже очень эффективны по памяти, поэтому вам не нужно включать > эту функцию. Если вы включите нарезку внимания вместе с SDPA или xFormers, это может привести к серьезному замедлению!
Примеры:
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... dtype=torch.float16,
... use_safetensors=True,
... )
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]enable_group_offload
< source >( onload_device: deviceoffload_device: device = torch.device()offload_type: str = 'block_level'num_blocks_per_group: int | None = Nonenon_blocking: bool = Falseuse_stream: bool = Falserecord_stream: bool = Falselow_cpu_mem_usage = Falseoffload_to_disk_path: str | None = Noneexclude_modules: str | list[str] | None = None )
Параметры
- onload_device (
torch.device) — Устройство, на которое загружается группа модулей. - offload_device (
torch.device, по умолчаниюtorch.device("cpu")) — Устройство, на которое выгружается группа модулей. Обычно это CPU. По умолчанию — CPU. - offload_type (
strилиGroupOffloadingType, по умолчанию “block_level”) — Тип применяемого offloading. Может быть “block_level” или “leaf_level”. По умолчанию — “block_level”. - offload_to_disk_path (
str, необязательный, по умолчаниюNone) — Путь к каталогу, в который будут выгружаться параметры. Установка этого параметра может быть полезна в средах с ограниченным объемом ОЗУ, где требуется разумный компромисс между скоростью и потреблением памяти. - num_blocks_per_group (
int, необязательный) — Количество блоков в группе при использовании offload_type=“block_level”. Это значение обязательно при использовании offload_type=“block_level”. - non_blocking (
bool, по умолчаниюFalse) — Если True, выгрузка и загрузка данных выполняются с неблокирующей передачей. - use_stream (
bool, по умолчаниюFalse) — Если True, выгрузка и загрузка данных выполняются асинхронно с использованием CUDA-потока. Это может быть полезно для перекрытия вычислений и передачи данных. - record_stream (
bool, по умолчаниюFalse) — при включении вместе сuse_streamпомечает текущий тензор как использованный этим потоком. Работает быстрее, но требует немного больше памяти. Подробности см. в официальной документации PyTorch. - low_cpu_mem_usage (
bool, по умолчаниюFalse) — Если True, использование памяти CPU минимизируется за счёт закрепления тензоров на лету, а не их предварительного закрепления. Этот параметр имеет значение только при использовании потоковой разгрузки на CPU (т. е.use_stream=True). Это может быть полезно, когда память CPU является узким местом, но может нивелировать преимущества использования потоков. - exclude_modules (
Union[str, List[str]], по умолчаниюNone) — список модулей, которые нужно исключить из выгрузки.
Применяет групповую разгрузку (group offloading) для внутренних слоёв модуля torch.nn.Module. Чтобы понять, что такое групповая разгрузка и в каких случаях она полезна, сначала нужно дать некоторый контекст о том, как работают другие поддерживаемые методы разгрузки.
Как правило, выгрузка выполняется на двух уровнях:
- На уровне модуля: в Diffusers это можно включить с помощью метода
ModelMixin::enable_model_cpu_offload(). Он работает за счёт выгрузки каждого компонента пайплайна на CPU для хранения и загрузки на устройство ускорителя по мере необходимости для вычислений. Этот метод более эффективен по памяти, чем хранение всех компонентов на ускорителе, однако требования к памяти всё ещё остаются довольно высокими. Для работы этого метода необходимо иметь объём памяти, эквивалентный размеру модели в рабочем типе данных (runtime dtype) + размеру крупнейших промежуточных тензоров активаций, чтобы завершить прямой проход (forward pass). - Уровень листьев: в Diffusers это можно включить с помощью метода
ModelMixin::enable_sequential_cpu_offload(). Он работает так: параметры нижнего уровня (листья) вычислительного графа выгружаются на CPU для хранения, а на устройство ускорителя загружаются только листья для выполнения вычислений. Этот вариант использует минимальное количество памяти ускорителя, но может работать медленнее из-за избыточного числа синхронизаций устройств.
Групповое выгружение представляет собой промежуточный вариант между двумя методами. Оно работает путём выгрузки групп внутренних слоёв (либо torch.nn.ModuleList, либо torch.nn.Sequential). Этот метод потребляет меньше памяти, чем выгружение на уровне модулей. Он также быстрее, чем выгружение на уровне листьев/последовательное выгружение, поскольку количество синхронизаций устройств уменьшается.
Ещё одна поддерживаемая функция (для CUDA-устройств с поддержкой потоков асинхронной передачи данных) — возможность перекрывать передачу данных и вычисления, чтобы сократить общее время выполнения по сравнению с последовательным offloading. Это реализуется с помощью предварительной загрузки слоёв (layer prefetching) с использованием потоков: следующий к выполнению слой начинает onloading на ускорительное устройство, пока выполняется текущий слой, — это немного увеличивает требования к памяти. Обратите внимание, что данная реализация также поддерживает offloading на уровне листьев (leaf-level), но с использованием потоков может работать значительно быстрее.
Пример:
>>> from diffusers import DiffusionPipeline
>>> import torch
>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)
>>> pipe.enable_group_offload(
... onload_device=torch.device("cuda"),
... offload_device=torch.device("cpu"),
... offload_type="leaf_level",
... use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]enable_model_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Параметры
- gpu_id (
int, необязательный) — Идентификатор ускорителя, который будет использоваться при выводе. Если не указан, по умолчанию используется 0. - device (
torch.Deviceorstr, необязательный, по умолчанию None) — Тип устройства PyTorch для ускорителя, который будет использоваться при выводе. Если не указан, доступный ускоритель будет обнаружен и использован автоматически.
Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от enable_sequential_cpu_offload, этот метод перемещает на акселератор целую модель за раз в момент вызова её метода forward, и модель остаётся на акселераторе до запуска следующей модели. Экономия памяти меньше, чем при использовании enable_sequential_cpu_offload, но производительность значительно выше благодаря итеративному выполнению unet.
enable_sequential_cpu_offload
< source >( gpu_id: int | None = Nonedevice: typing.Union[torch.device, str] = None )
Параметры
- gpu_id (
int, необязательный) — Идентификатор ускорителя, который будет использоваться при выводе. Если не указан, по умолчанию используется 0. - device (
torch.Deviceorstr, необязательный, по умолчанию None) — Тип устройства PyTorch для ускорителя, который будет использоваться при выводе. Если не указан, доступный ускоритель будет обнаружен и использован автоматически.
Выгружает все модели на CPU с помощью 🤗 Accelerate, что значительно снижает потребление памяти. При вызове state dicts всех компонентов torch.nn.Module (кроме тех, что находятся в self._exclude_from_cpu_offload) сохраняются на CPU, а затем перемещаются на torch.device('meta') и загружаются на accelerator только тогда, когда у конкретного подмодуля вызывается его метод forward. Выгрузка происходит на уровне подмодулей. Экономия памяти выше, чем при использовании enable_model_cpu_offload, но производительность ниже.
enable_xformers_memory_efficient_attention
< source >( attention_op: typing.Optional[typing.Callable] = None )
Параметры
- attention_op (
Callable, необязательный) — Заменяет оператор по умолчаниюNoneдля использования в качестве аргументаopфункцииmemory_efficient_attention()библиотеки xFormers.
Включите энергоэффективное внимание от xFormers. При включении этого параметра вы должны наблюдать снижение потребления памяти GPU и потенциальное ускорение во время инференса. Ускорение во время обучения не гарантируется.
> ⚠️ Если включены и memory efficient attention, и sliced attention, то memory efficient attention имеет > приоритет.
Примеры:
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)from_pipe
< source >( pipeline**kwargs ) → DiffusionPipeline
Создайте новый конвейер на основе заданного конвейера. Этот метод полезен для создания нового конвейера из существующих компонентов конвейера без выделения дополнительной памяти.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike**kwargs )
Параметры
- pretrained_model_name_or_path (
strилиos.PathLike, необязательный) — Может быть:- Строка, repo id (например,
CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub. - Путь к каталогу (например,
./my_pipeline_directory/), содержащему веса пайплайна, сохранённые с помощью save_pretrained().
- Строка, repo id (например,
- dtype (
torch.dtypeилиdict[str, Union[str, torch.dtype]], необязательный) — Переопределяет стандартныйtorch.dtypeи загружает модель с другим типом данных. Чтобы загрузить подмодели с разными типами данных, передайтеdict(например,{'transformer': torch.bfloat16, 'vae': torch.float16}). Установите стандартный тип данных для компонентов, не указанных явно, с помощьюdefault(например,{'transformer': torch.bfloat16, 'default': torch.float16}). Если компонент не указан и стандартный тип данных не задан, используетсяtorch.float32. - custom_pipeline (
str, необязательный) —> 🧪 Это экспериментальная функция, которая может измениться в будущем.
Может быть одним из следующих:
- Строка, repo id (например,
hf-internal-testing/diffusers-dummy-pipeline) пользовательского пайплайна, размещенного на Hub. Репозиторий должен содержать файл pipeline.py, в котором определяется пользовательский пайплайн. - Строка, имя файла сообщества пайплайна, размещённого на GitHub в разделе
Community. Допустимые имена
файлов должны соответствовать имени файла, а не имени скрипта пайплайна (
clip_guided_stable_diffusionвместоclip_guided_stable_diffusion.py). Пайплайны сообщества всегда загружаются из текущей ветки main на GitHub. - Путь к каталогу (
./my_pipeline_directory/), содержащему пользовательский конвейер. В каталоге должен присутствовать файлpipeline.py, в котором определяется пользовательский конвейер.
Для получения дополнительной информации о загрузке и создании пользовательских конвейеров ознакомьтесь с разделом Загрузка и добавление пользовательских конвейеров
- Строка, repo id (например,
- force_download (
bool, необязательный, по умолчаниюFalse) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют. - cache_dir (
Union[str, os.PathLike], необязательный) — Путь к каталогу, в котором кэшируется загруженная конфигурация предобученной модели, если стандартный кэш не используется. - proxies (
Dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси используются при каждом запросе. - output_loading_info(
bool, optional, по умолчаниюFalse) — Определяет, следует ли также возвращать словарь, содержащий отсутствующие ключи, неожиданные ключи и сообщения об ошибках. - local_files_only (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли загружать только локальные веса модели и файлы конфигурации. Если установлено значениеTrue, модель не будет скачана с Hub. - token (
strили bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. ЕслиTrue, используется токен, сгенерированный командойdiffusers-cli login(сохранённый в~/.huggingface). - revision (
str, необязательный, по умолчанию"main") — Конкретная версия модели, которую следует использовать. Может быть именем ветки, именем тега, идентификатором коммита или любым другим идентификатором, поддерживаемым Git. - custom_revision (
str, необязательный) — Конкретная версия модели, которую следует использовать. Это может быть имя ветки, имя тега или идентификатор коммита, аналогичноrevisionпри загрузке пользовательского конвейера из Hub. По умолчанию используется последняя стабильная версия 🤗 Diffusers. - mirror (
str, optional) — Источник зеркала для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала. - device_map (
str, необязательный) — Стратегия, определяющая, как различные компоненты конвейера должны распределяться по доступным устройствам. В настоящее время поддерживается только «balanced»device_map. Подробнее см. здесь. - max_memory (
Dict, необязательный) — Словарь с идентификаторами устройств и максимальным объемом памяти. Если не задан, по умолчанию используется максимальная доступная память для каждого GPU и доступная оперативная память CPU. - offload_folder (
strилиos.PathLike, необязательный) — Путь для выгрузки весов, если device_map содержит значение"disk". - offload_state_dict (
bool, необязательный) — ЕслиTrue, временно выгружает CPU state dict на диск, чтобы избежать нехватки оперативной памяти CPU, если вес CPU state dict + самый большой фрагмент контрольной точки не помещается. По умолчаниюTrue, если используется выгрузка на диск. - low_cpu_mem_usage (
bool, необязательный, по умолчаниюTrue, если версия torch >= 1.9.0, иначеFalse) — Ускоряет загрузку модели, загружая только предобученные веса и не инициализируя их. Это также позволяет не использовать более 1x размера модели в оперативной памяти CPU (включая пиковое потребление) при загрузке модели. Поддерживается только для PyTorch >= 1.9.0. Если вы используете более старую версию PyTorch, установка этого аргумента вTrueвызовет ошибку. - use_safetensors (
bool, необязательный, по умолчаниюNone) — Если установлено значениеNone, веса safetensors загружаются, если они доступны и если библиотека safetensors установлена. Если установлено значениеTrue, модель принудительно загружается из весов safetensors. Если установлено значениеFalse, веса safetensors не загружаются. - use_onnx (
bool, необязательный, по умолчаниюNone) — Если установлено вTrue, веса ONNX всегда будут загружаться, если они присутствуют. Если установлено вFalse, веса ONNX никогда не будут загружаться. По умолчаниюuse_onnxпринимает значение атрибута класса_is_onnx, которое равноFalseдля не-ONNX конвейеров иTrueдля ONNX конвейеров. К весам ONNX относятся как файлы, заканчивающиеся на.onnx, так и на.pb. - kwargs (остальные именованные аргументы в виде словаря, необязательно) —
Можно использовать для переопределения переменных загрузки и сохранения (компонентов конвейера конкретного класса конвейера). Переопределённые компоненты передаются непосредственно в метод
__init__конвейера. Подробнее см. пример ниже. - variant (
str, необязательный) — Загружает веса из файла с указанным вариантом имени, например"fp16"или"ema". - disable_mmap (‘bool’, необязательный, по умолчанию ‘False’) — Определяет, следует ли отключать mmap при загрузке модели Safetensors. Этот параметр может обеспечить лучшую производительность, если модель находится на сетевом диске или жёстком диске, которые могут плохо справляться с частыми операциями перемотки, характерными для mmap.
Создайте пайплайн диффузии PyTorch из предобученных весов пайплайна.
По умолчанию пайплайн устанавливается в режим оценки (model.eval()).
Если вы получаете сообщение об ошибке, приведённое ниже, вам необходимо дообучить веса для вашей целевой задачи:
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.> Для использования частных или защищённых моделей выполните вход с помощью
hf > auth login.
Примеры:
>>> from diffusers import DiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")
>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler
>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = schedulerМетод, выполняющий следующие действия:
- Выгружает все компоненты.
- Удаляет все хуки модели, добавленные при использовании
enable_model_cpu_offload, и затем применяет их снова. Если модель не была выгружена, эта функция ничего не делает. - Сбрасывает хуки с состоянием компонентов denoiser в diffusers, если они были добавлены с помощью
register_hook().
Убедитесь, что вы добавили эту функцию в конец функции __call__ вашего конвейера, чтобы он корректно работал при применении enable_model_cpu_offload.
Преобразование изображения NumPy или пакета изображений в изображение PIL.
Удаляет все хуки, добавленные при использовании enable_sequential_cpu_offload или enable_model_cpu_offload.
Сбрасывает карты устройств (если они есть) в None.
save_pretrained
< source >( save_directory: str | os.PathLikesafe_serialization: bool = Truevariant: str | None = Nonemax_shard_size: int | str | None = Nonepush_to_hub: bool = Falseuse_flashpack: bool = False**kwargs )
Параметры
- save_directory (
strилиos.PathLike) — Каталог для сохранения пайплайна. Будет создан, если не существует. - safe_serialization (
bool, необязательный, по умолчаниюTrue) — Определяет, сохранять ли модель с помощьюsafetensorsили традиционным способом PyTorch с использованиемpickle. - variant (
str, необязательный) — Если указано, веса сохраняются в форматеpytorch_model.<variant>.bin. - max_shard_size (
intorstr, по умолчаниюNone) — Максимальный размер контрольной точки перед её разбиением на части. Каждая часть контрольной точки будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например,"5GB"). Если значение указано в виде целого числа, единицей измерения являются байты. Обратите внимание, что это ограничение будет уменьшено через определённое время (начиная с октября 2024 года), чтобы пользователи могли перейти на последнюю версиюdiffusers. Это делается для установления общего значения по умолчанию для этого аргумента в разных библиотеках экосистемы Hugging Face (например,transformersиaccelerate). - push_to_hub (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли после сохранения отправить вашу модель в Hugging Face model hub. С помощьюrepo_idможно указать репозиторий, в который нужно отправить модель (по умолчанию используется имяsave_directoryв вашем пространстве имён). - kwargs (
Dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Сохраните все сохраняемые переменные конвейера в каталог. Переменную конвейера можно сохранить и загрузить, если её класс реализует как метод сохранения, так и метод загрузки. Конвейер легко перезагружается с помощью метода класса from_pretrained().
diffusers.StableDiffusionMixin.enable_freeu
< source >( s1: floats2: floatb1: floatb2: float )
Параметры
- s1 (
float) — Коэффициент масштабирования для этапа 1, ослабляющий вклад признаков пропуска. Это делается для смягчения «эффекта чрезмерного сглаживания» в процессе улучшенного шумоподавления. - s2 (
float) — Коэффициент масштабирования для этапа 2, ослабляющий вклад признаков пропуска. Это делается для смягчения «эффекта чрезмерного сглаживания» в процессе улучшенного шумоподавления. - b1 (
float) — Коэффициент масштабирования для этапа 1, усиливающий вклад признаков базовой модели. - b2 (
float) — Коэффициент масштабирования для этапа 2, усиливающий вклад признаков базовой модели.
Включает механизм FreeU, как описано в https://huggingface.co/papers/2309.11497.
Суффиксы после коэффициентов масштабирования обозначают этапы, на которых они применяются.
Сочетания значений, которые хорошо работают для различных пайплайнов, таких как Stable Diffusion v1, v2 и Stable Diffusion XL, приведены в официальном репозитории.
Отключает механизм FreeU, если он включен.
PushToHubMixin
Миксин для загрузки модели, планировщика или конвейера на Hugging Face Hub.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Noneprivate: bool | None = Nonetoken: str | None = Nonecreate_pr: bool = Falsesafe_serialization: bool = Truevariant: str | None = Nonesubfolder: str | None = None )
Параметры
- repo_id (
str) — Имя репозитория, в который вы хотите загрузить файлы модели, планировщика или конвейера. При загрузке в организацию оно должно содержать имя вашей организации.repo_idтакже может быть путём к локальному каталогу. - commit_message (
str, необязательный) — Сообщение для коммита при отправке. По умолчанию"Upload {object}". - private (
bool, optional) — Определяет, следует ли сделать репозиторий приватным. ЕслиNone(по умолчанию), репозиторий будет публичным, если только по умолчанию для организации не задан приватный режим. Это значение игнорируется, если репозиторий уже существует. - token (
str, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Токен, сгенерированный при выполненииhf auth login(хранится в~/.huggingface). - create_pr (
bool, необязательный, по умолчаниюFalse) — Создавать ли PR с загруженными файлами или коммитить изменения напрямую. - safe_serialization (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли преобразовать веса модели в форматsafetensors. - variant (
str, необязательный) — Если указано, веса сохраняются в форматеpytorch_model.<variant>.bin.
Загрузите файлы модели, планировщика или конвейера в 🤗 Hugging Face Hub.
Примеры:
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")Обработчики событий
класс diffusers.callbacks.PipelineCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Базовый класс для всех официальных колбэков, используемых в конвейере. Этот класс обеспечивает структуру для реализации пользовательских колбэков и гарантирует, что все колбэки имеют согласованный интерфейс.
Реализуйте следующее: tensor_inputs: этот метод должен возвращать список тензорных входных данных, специфичных для вашего обратного вызова. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса конвейера. callback_fn: этот метод определяет основную функциональность вашего обратного вызова.
класс diffusers.callbacks.SDCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Функция обратного вызова для конвейеров Stable Diffusion. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
класс diffusers.callbacks.SDXLCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Функция обратного вызова для базовых пайплайнов Stable Diffusion XL. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
класс diffusers.callbacks.SDXLControlnetCFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Функция обратного вызова для пайплайнов Controlnet Stable Diffusion XL. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
класс diffusers.callbacks.IPAdapterScaleCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Функция обратного вызова для любого конвейера, наследующего IPAdapterMixin. После определённого количества шагов (заданного параметрами cutoff_step_ratio или cutoff_step_index) эта функция обратного вызова установит масштаб IP Adapter в 0.0.
Note: Этот callback изменяет процессоры внимания IP Adapter, устанавливая масштаб в 0.0 после шага отсечения.
класс diffusers.callbacks.SD3CFGCutoffCallback
< source >( cutoff_step_ratio = 1.0cutoff_step_index = None )
Функция обратного вызова для пайплайнов Stable Diffusion 3. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.