Buckets:
Пайплайны
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[[diffusers.DiffusionPipeline]]
diffusers.DiffusionPipeline[[diffusers.DiffusionPipeline]]
diffusers.DiffusionPipeline()
Базовый класс для всех конвейеров.
DiffusionPipeline хранит все компоненты (модели, планировщики и процессоры) для диффузионных пайплайнов и предоставляет методы для загрузки, скачивания и сохранения моделей. Он также включает методы для:
- переместить все модули PyTorch на устройство по вашему выбору
- включить/отключить индикатор прогресса для итераций шумоподавления
Атрибуты класса:
- config_name (
str) -- Имя файла конфигурации, в котором хранятся имена классов и модулей всех компонентов диффузионного конвейера. - _optional_components (
List[str]) -- список всех необязательных компонентов, которые не обязательно передавать в pipeline для его работы (должен быть переопределён в подклассах).
call[[diffusers.DiffusionPipeline.call]]
__call__(*args, **kwargs)
Вызовите self как функцию.
device[[diffusers.DiffusionPipeline.device]]
device()
Возвращает: torch.device
Устройство torch, на котором размещён конвейер. Если компоненты распределены по разным устройствам (например, текстовые энкодеры работают на CPU, а базовая модель денуайзинга — на ускорителе), возвращается устройство ускорителя.
к[[diffusers.DiffusionPipeline.to]]
to(*args, **kwargs)
Параметры:
dtype (torch.dtype, необязательный) : Возвращает конвейер с указанным dtype
device (torch.Device, необязательный) : Возвращает конвейер с указанным device
silence_dtype_warnings (str, необязательный, по умолчанию False) : Указывает, следует ли пропускать предупреждения, если целевой dtype несовместим с целевым device.
Возвращает: DiffusionPipeline
Пайплайн преобразован в указанный 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
компоненты[[diffusers.DiffusionPipeline.components]]
components()
Свойство self.components может быть полезно для запуска разных конвейеров с одними и теми же весами и конфигурациями без выделения дополнительной памяти.
Returns (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)
disable_attention_slicing[[diffusers.DiffusionPipeline.disable_attention_slicing]]
disable_attention_slicing()
Отключает вычисление внимания с нарезкой. Если enable_attention_slicing был вызван ранее, внимание вычисляется за один шаг.
disable_xformers_memory_efficient_attention[[diffusers.DiffusionPipeline.disable_xformers_memory_efficient_attention]]
disable_xformers_memory_efficient_attention()
Отключить энергоэффективное внимание из xFormers.
загрузить[[diffusers.DiffusionPipeline.download]]
download(pretrained_model_name, **kwargs)
Параметры:
pretrained_model_name (str или os.PathLike, необязательный) : строка, идентификатор репозитория (например, CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub.
custom_pipeline (str, optional) : Может принимать одно из следующих значений: - Строка, repository id (например, CompVis/ldm-text2im-large-256) предобученного пайплайна, размещенного на Hub. Репозиторий должен содержать файл pipeline.py, в котором определяется пользовательский пайплайн. - Строка, file name пайплайна сообщества, размещенного на GitHub в разделе Community. Допустимые имена файлов должны соответствовать имени файла, а не имени скрипта пайплайна (clip_guided_stable_diffusion, а не clip_guided_stable_diffusion.py). Пайплайны сообщества всегда загружаются из текущей ветки main на GitHub. - Путь к directory (./my_pipeline_directory/), содержащему пользовательский пайплайн. В каталоге должен находиться файл pipeline.py, определяющий пользовательский пайплайн. > [!WARNING] > 🧪 Это экспериментальная функция, которая может измениться в будущем. Чтобы узнать больше о загрузке и создании пользовательских пайплайнов, ознакомьтесь с разделом How to contribute a community pipeline.
force_download (bool, необязательный, по умолчанию False) : Указывает, следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, заменяя кэшированные версии, если они существуют.
proxies (Dict[str, str], необязательный) : Словарь прокси-серверов, используемых по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси используются при каждом запросе.
output_loading_info(bool, необязательный, по умолчанию 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, optional, по умолчанию "main") : Конкретная версия модели, которую следует использовать. Это может быть имя ветки, имя тега или идентификатор коммита, аналогично revision при загрузке пользовательского конвейера из Hub. Это может быть версия 🤗 Diffusers при загрузке пользовательского конвейера из GitHub, в противном случае по умолчанию используется "main" при загрузке из Hub.
mirror (str, необязательный) : Зеркальный источник для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала.
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.
> Для использования частных или gated models выполните вход с `hf > auth login
enable_attention_slicing[[diffusers.DiffusionPipeline.enable_attention_slicing]]
enable_attention_slicing(slice_size: str | int = 'auto')
Параметры:
slice_size (str или int, необязательный, по умолчанию "auto") : Если указано "auto", вход для головок внимания делится пополам, и внимание вычисляется в два этапа. Если указано "max", для экономии максимального объёма памяти выполняется по одному срезу за раз. Если указано число, используется столько срезов, сколько получается от attention_head_dim // slice_size. В этом случае attention_head_dim должно быть кратным slice_size.
Включает послойный вычисление внимания. При включении этого параметра модуль внимания разбивает входной тензор на фрагменты для вычисления внимания в несколько шагов. Если используется более одной головы внимания, вычисления выполняются последовательно для каждой головы. Это полезно для экономии памяти ценой небольшого снижения скорости.
> ⚠️ Не включайте нарезку внимания, если вы уже используете
scaled_dot_product_attention(SDPA) из PyTorch > 2.0 или xFormers. Эти вычисления внимания уже очень экономны по памяти, поэтому вам не нужно включать > эту функцию. Если вы включите нарезку внимания (attention slicing) с 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[[diffusers.DiffusionPipeline.enable_group_offload]]
enable_group_offload(onload_device: device, offload_device: device = torch.device(), offload_type: str = 'block_level', num_blocks_per_group: int | None = None, non_blocking: bool = False, use_stream: bool = False, record_stream: bool = False, low_cpu_mem_usage = False, offload_to_disk_path: str | None = None, exclude_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") : Тип применяемого выгрузки. Может быть "block_level" или "leaf_level". По умолчанию "block_level".
offload_to_disk_path (str, необязательный, по умолчанию None) : Путь к каталогу, в который будут выгружаться параметры. Установка этого параметра может быть полезна в условиях ограниченной оперативной памяти, когда требуется разумный компромисс между скоростью и потреблением памяти.
num_blocks_per_group (int, optional) : количество блоков в группе при использовании 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) : Список модулей, которые следует исключить из offloading.
Применяет групповую разгрузку (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[[diffusers.DiffusionPipeline.enable_model_cpu_offload]]
enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
Параметры:
gpu_id (int, optional) : Идентификатор ускорителя, который будет использоваться при выводе. Если не указан, по умолчанию используется 0.
device (torch.Device или str, необязательный, по умолчанию None) : Тип устройства PyTorch для ускорителя, который будет использоваться при выводе. Если не указан, доступный ускоритель будет обнаружен и использован автоматически.
Переносит все модели на CPU с помощью accelerate, снижая потребление памяти с минимальным влиянием на производительность. В отличие от enable_sequential_cpu_offload, этот метод перемещает на акселератор целую модель за раз в момент вызова её метода forward, и модель остаётся на акселераторе до запуска следующей модели. Экономия памяти меньше, чем при использовании enable_sequential_cpu_offload, но производительность значительно выше благодаря итеративному выполнению unet.
enable_sequential_cpu_offload[[diffusers.DiffusionPipeline.enable_sequential_cpu_offload]]
enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
Параметры:
gpu_id (int, optional) : Идентификатор ускорителя, который будет использоваться при выводе. Если не указан, по умолчанию используется 0.
device (torch.Device или str, необязательный, по умолчанию 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[[diffusers.DiffusionPipeline.enable_xformers_memory_efficient_attention]]
enable_xformers_memory_efficient_attention(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[[diffusers.DiffusionPipeline.from_pipe]]
from_pipe(pipeline, **kwargs)
Параметры:
pipeline (DiffusionPipeline) : конвейер, на основе которого будет создан новый конвейер.
Возвращает: DiffusionPipeline
Новый конвейер с теми же весами и конфигурациями, что и у pipeline.
Создайте новый конвейер на основе заданного конвейера. Этот метод полезен для создания нового конвейера из компонентов существующего конвейера без выделения дополнительной памяти.
Примеры:
>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> new_pipe = StableDiffusionSAGPipeline.from_pipe(pipe)
from_pretrained[[diffusers.DiffusionPipeline.from_pretrained]]
from_pretrained(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().
dtype (torch.dtype или dict[str, Union[str, torch.dtype]], необязательный) : Переопределяет стандартный torch.dtype и загружает модель с другим dtype. Чтобы загрузить подмодели с разными dtype, передайте dict (например, {'transformer': torch.bfloat16, 'vae': torch.float16}). Установите стандартный dtype для не указанных компонентов с помощью default (например, {'transformer': torch.bfloat16, 'default': torch.float16}). Если компонент не указан и стандартный dtype не задан, используется torch.float32.
custom_pipeline (str, optional) : > [!WARNING] > 🧪 Это экспериментальная функция, которая может измениться в будущем. Может принимать одно из значений: - Строка, repo id (например, hf-internal-testing/diffusers-dummy-pipeline) пользовательского пайплайна, размещённого на Hub. Репозиторий должен содержать файл pipeline.py, в котором определяется пользовательский пайплайн. - Строка, file name пайплайна сообщества, размещённого на GitHub в разделе Community. Допустимые имена файлов должны соответствовать имени файла, а не имени скрипта пайплайна (clip_guided_stable_diffusion, а не clip_guided_stable_diffusion.py). Пайплайны сообщества всегда загружаются из текущей ветки main на GitHub. - Путь к каталогу (./my_pipeline_directory/), содержащему пользовательский пайплайн. В каталоге должен находиться файл pipeline.py, определяющий пользовательский пайплайн. Подробнее о загрузке и создании пользовательских пайплайнов см. в разделе Loading and Adding Custom Pipelines
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, необязательный, по умолчанию 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, optional) : Конкретная версия модели для использования. Может быть именем ветки, именем тега или идентификатором коммита, аналогично revision при загрузке пользовательского пайплайна с Hub. По умолчанию используется последняя стабильная версия 🤗 Diffusers.
mirror (str, необязательный) : Зеркальный источник для решения проблем с доступностью при загрузке модели в Китае. Мы не гарантируем актуальность или безопасность источника, поэтому за дополнительной информацией обращайтесь на сайт зеркала.
device_map (str, необязательный) : Стратегия, определяющая, как различные компоненты конвейера должны распределяться по доступным устройствам. В настоящее время поддерживается только «сбалансированная» 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 размера модели в оперативной памяти (включая пиковое потребление) при загрузке модели. Поддерживается только для 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', optional, по умолчанию '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.
> Для использования частных или gated моделей выполните вход с помощью
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
maybe_free_model_hooks[[diffusers.DiffusionPipeline.maybe_free_model_hooks]]
maybe_free_model_hooks()
Метод, выполняющий следующие действия:
- Выгружает все компоненты.
- Удаляет все хуки модели, добавленные при использовании
enable_model_cpu_offload, и затем применяет их снова. Если модель не была выгружена, эта функция ничего не делает. - Сбрасывает хуки с состоянием компонентов denoiser в diffusers, если они были добавлены с помощью
register_hook().
Убедитесь, что вы добавили эту функцию в конец функции __call__ вашего конвейера, чтобы он корректно работал при применении enable_model_cpu_offload.
numpy_to_pil[[diffusers.DiffusionPipeline.numpy_to_pil]]
numpy_to_pil(images)
Преобразование изображения NumPy или пакета изображений в изображение PIL.
remove_all_hooks[[diffusers.DiffusionPipeline.remove_all_hooks]]
remove_all_hooks()
Удаляет все хуки, добавленные при использовании enable_sequential_cpu_offload или enable_model_cpu_offload.
reset_device_map[[diffusers.DiffusionPipeline.reset_device_map]]
reset_device_map()
Сбрасывает карты устройств (если они есть) в None.
save_pretrained[[diffusers.DiffusionPipeline.save_pretrained]]
save_pretrained(save_directory: str | os.PathLike, safe_serialization: bool = True, variant: str | None = None, max_shard_size: int | str | None = None, push_to_hub: bool = False, use_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 (int или str, по умолчанию None) : Максимальный размер контрольной точки перед её разбиением на части. Каждая часть контрольной точки будет иметь размер, меньший этого значения. Если значение указано в виде строки, оно должно состоять из цифр, за которыми следует единица измерения (например, "5GB"). Если значение указано в виде целого числа, единицей измерения являются байты. Обратите внимание, что это ограничение будет уменьшено через определённый период времени (начиная с октября 2024 года), чтобы пользователи могли перейти на последнюю версию diffusers. Это делается для установления общего значения по умолчанию для этого аргумента в разных библиотеках экосистемы Hugging Face (например, transformers и accelerate).
push_to_hub (bool, необязательный, по умолчанию False) : Указывает, следует ли после сохранения модели отправить её в репозиторий моделей Hugging Face. Репозиторий, в который нужно отправить модель, можно указать с помощью repo_id (по умолчанию используется имя save_directory в вашем пространстве имён).
kwargs (Dict[str, Any], необязательный) : Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Сохраните все сохраняемые переменные конвейера в каталог. Переменную конвейера можно сохранить и загрузить, если её класс реализует как метод сохранения, так и метод загрузки. Конвейер легко перезагружается с помощью метода класса from_pretrained().
diffusers.StableDiffusionMixin.enable_freeu[[diffusers.StableDiffusionMixin.enable_freeu]]
diffusers.StableDiffusionMixin.enable_freeu(s1: float, s2: float, b1: float, b2: 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, приведены в официальном репозитории.
diffusers.StableDiffusionMixin.disable_freeu[[diffusers.StableDiffusionMixin.disable_freeu]]
diffusers.StableDiffusionMixin.disable_freeu()
Отключает механизм FreeU, если он включен.
PushToHubMixin[[diffusers.utils.PushToHubMixin]]
diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]
diffusers.utils.PushToHubMixin()
Миксин для загрузки модели, планировщика или конвейера на Hugging Face Hub.
push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]
push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)
Параметры:
repo_id (str) : Имя репозитория, в который вы хотите загрузить файлы модели, планировщика или конвейера. При загрузке в организацию оно должно содержать имя вашей организации. repo_id также может быть путём к локальному каталогу.
commit_message (str, необязательный) : Сообщение для коммита при выполнении push. По умолчанию "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]]
diffusers.callbacks.PipelineCallback[[diffusers.callbacks.PipelineCallback]]
diffusers.callbacks.PipelineCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Базовый класс для всех официальных колбэков, используемых в конвейере. Этот класс обеспечивает структуру для реализации пользовательских колбэков и гарантирует, что все колбэки имеют согласованный интерфейс.
Реализуйте следующее: tensor_inputs: этот метод должен возвращать список тензорных входных данных, специфичных для вашего обратного вызова. Вы сможете включать только переменные, перечисленные в атрибуте ._callback_tensor_inputs вашего класса конвейера. callback_fn: этот метод определяет основную функциональность вашего обратного вызова.
diffusers.callbacks.SDCFGCutoffCallback[[diffusers.callbacks.SDCFGCutoffCallback]]
diffusers.callbacks.SDCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Функция обратного вызова для конвейеров Stable Diffusion. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
diffusers.callbacks.SDXLCFGCutoffCallback[[diffusers.callbacks.SDXLCFGCutoffCallback]]
diffusers.callbacks.SDXLCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Функция обратного вызова для базовых пайплайнов Stable Diffusion XL. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
diffusers.callbacks.SDXLControlnetCFGCutoffCallback[[diffusers.callbacks.SDXLControlnetCFGCutoffCallback]]
diffusers.callbacks.SDXLControlnetCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Функция обратного вызова для пайплайнов Controlnet Stable Diffusion XL. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
diffusers.callbacks.IPAdapterScaleCutoffCallback[[diffusers.callbacks.IPAdapterScaleCutoffCallback]]
diffusers.callbacks.IPAdapterScaleCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Функция обратного вызова для любого конвейера, наследующего IPAdapterMixin. После определённого количества шагов (заданного параметрами cutoff_step_ratio или cutoff_step_index) эта функция обратного вызова установит масштаб IP Adapter в 0.0.
Note: Этот callback изменяет процессоры внимания IP Adapter, устанавливая масштаб в 0.0 после шага отсечения.
diffusers.callbacks.SD3CFGCutoffCallback[[diffusers.callbacks.SD3CFGCutoffCallback]]
diffusers.callbacks.SD3CFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
Функция обратного вызова для пайплайнов Stable Diffusion 3. После определённого количества шагов (заданного параметром cutoff_step_ratio или cutoff_step_index) эта функция отключает CFG.
Примечание: этот колбэк изменяет пайплайн, устанавливая атрибут _guidance_scale в 0.0 после шага отсечения.
Xet Storage Details
- Size:
- 66.5 kB
- Xet hash:
- 2e0542f302f0708ef5dfbde1529b8942d8ad9623e28fe881efa63ebd51ab5f24
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.