Diffusers 文件
管道
並獲得增強的文件體驗
開始使用
管道
管道提供了一種簡單的方法,透過將所有必要的元件(多個獨立訓練的模型、排程器和處理器)捆綁到一個端到端類中,來執行最先進的擴散模型進行推理。管道是靈活的,可以適應使用不同的排程器甚至模型元件。
所有管道均基於 `DiffusionPipeline` 基類構建,該類提供了載入、下載和儲存所有元件的基本功能。透過 `from_pretrained()` 載入的特定管道型別(例如 `StableDiffusionPipeline`)會自動檢測,並且管道元件會被載入並傳遞給管道的 `__init__` 函式。
不應將 `DiffusionPipeline` 類用於訓練。擴散管道的各個元件(例如 `UNet2DModel` 和 `UNet2DConditionModel`)通常是單獨訓練的,因此我們建議直接使用它們。
管道不提供任何訓練功能。您會注意到 PyTorch 的自動求導功能被停用,這是透過使用 `torch.no_grad` 裝飾器裝飾 `__call__()` 方法來實現的,因為管道不應用於訓練。如果您對訓練感興趣,請參閱“訓練”指南!
下表列出了 🤗 Diffusers 中當前可用的所有管道及其支援的任務。點選管道名稱可檢視其摘要和已發表的論文。
流水線 | 任務 |
---|---|
aMUSEd | 文字到影像 |
AnimateDiff | 文字到影片 |
Attend-and-Excite | 文字到影像 |
AudioLDM | 文字到音訊 |
AudioLDM2 | 文字到音訊 |
AuraFlow | 文字到影像 |
BLIP Diffusion | 文字到影像 |
CogVideoX | 文字到影片 |
一致性模型 | 無條件影像生成 |
ControlNet | 文字到影像、影像到影像、影像修復 |
帶 Flux.1 的 ControlNet | 文字到影像 |
帶 Hunyuan-DiT 的 ControlNet | 文字到影像 |
帶 Stable Diffusion 3 的 ControlNet | 文字到影像 |
帶 Stable Diffusion XL 的 ControlNet | 文字到影像 |
ControlNet-XS | 文字到影像 |
帶 Stable Diffusion XL 的 ControlNet-XS | 文字到影像 |
Dance Diffusion | 無條件音訊生成 |
DDIM | 無條件影像生成 |
DDPM | 無條件影像生成 |
DeepFloyd IF | 文字到影像、影像到影像、影像修復、超解析度 |
DiffEdit | 影像修復 |
DiT | 文字到影像 |
Flux | 文字到影像 |
Hunyuan-DiT | 文字到影像 |
I2VGen-XL | 影像到影片 |
InstructPix2Pix | 影像編輯 |
Kandinsky 2.1 | 文字到影像、影像到影像、影像修復、插值 |
Kandinsky 2.2 | 文字到影像、影像到影像、影像修復 |
Kandinsky 3 | 文字到影像、影像到影像 |
Kolors | 文字到影像 |
潛在一致性模型 | 文字到影像 |
潛在擴散 | 文字到影像,超解析度 |
Latte | 文字到影像 |
LEDITS++ | 影像編輯 |
Lumina-T2X | 文字到影像 |
Marigold | 深度估計、法線估計、本徵分解 |
MultiDiffusion | 文字到影像 |
MusicLDM | 文字到音訊 |
PAG | 文字到影像 |
按示例繪製 | 影像修復 |
PIA | 影像到影片 |
PixArt-α | 文字到影像 |
PixArt-Σ | 文字到影像 |
自注意力引導 | 文字到影像 |
語義引導 | 文字到影像 |
Shap-E | 文字到 3D,影像到 3D |
Stable Audio | 文字到音訊 |
Stable Cascade | 文字到影像 |
Stable Diffusion | 文字到影像、影像到影像、深度到影像、影像修復、影像變體、潛在上取樣器、超解析度 |
Stable Diffusion XL | 文字到影像、影像到影像、影像修復 |
Stable Diffusion XL Turbo | 文字到影像、影像到影像、影像修復 |
Stable unCLIP | 文字到影像、影像變體 |
T2I-Adapter | 文字到影像 |
Text2Video | 文字到影片、影片到影片 |
Text2Video-Zero | 文字到影片 |
unCLIP | 文字到影像、影像變體 |
UniDiffuser | 文字到影像、影像到文字、影像變體、文字變體、無條件影像生成、無條件音訊生成 |
值引導規劃 | 值引導取樣 |
Wuerstchen | 文字到影像 |
VisualCloze | 文字到影像、影像到影像、主題驅動生成、影像修復、風格遷移、影像恢復、影像編輯、[深度、法線、邊緣、姿態]到影像、[深度、法線、邊緣、姿態]-估計、虛擬試穿、影像重照明 |
DiffusionPipeline
所有管道的基類。
DiffusionPipeline 儲存擴散管道的所有元件(模型、排程器和處理器),並提供載入、下載和儲存模型的方法。它還包括以下方法:
- 將所有 PyTorch 模組移動到您選擇的裝置
- 啟用/停用去噪迭代的進度條
類屬性
- config_name (
str
) — 儲存所有擴散管道元件的類名和模組名的配置檔名。 - _optional_components (
List[str]
) — 所有可選元件的列表,這些元件無需傳遞給管道即可執行(應由子類覆蓋)。
到
< 來源 >( *args **kwargs ) → DiffusionPipeline
執行管道 dtype 和/或裝置轉換。torch.dtype 和 torch.device 是從 `self.to(*args, **kwargs)` 的引數中推斷出來的。
如果管道已經具有正確的 torch.dtype 和 torch.device,則按原樣返回。否則,返回的管道是具有所需 torch.dtype 和 torch.device 的自身副本。
以下是呼叫 `to` 的方法
to(dtype, silence_dtype_warnings=False) → DiffusionPipeline
返回具有指定 `dtype` 的管道to(device, silence_dtype_warnings=False) → DiffusionPipeline
返回具有指定 `device` 的管道to(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
,則注意力將一步計算完成。
下載
< 來源 >( pretrained_model_name **kwargs ) → os.PathLike
引數
- pretrained_model_name (
str
或os.PathLike
, 可選) — 託管在 Hub 上的預訓練管道的倉庫 ID 字串(例如CompVis/ldm-text2im-large-256
)。 - custom_pipeline (
str
, 可選) — 可以是:-
一個字串,Hub 上託管的預訓練管道的倉庫 ID(例如
CompVis/ldm-text2im-large-256
)。倉庫必須包含一個名為pipeline.py
的檔案,該檔案定義了自定義管道。 -
一個字串,GitHub 上 社群 託管的社群管道的檔名。有效的檔名必須與檔名匹配,而不是管道指令碼(
clip_guided_stable_diffusion
而不是clip_guided_stable_diffusion.py
)。社群管道始終從 GitHub 的當前main
分支載入。 -
一個包含自定義管道的目錄路徑(
./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
, 可選, 預設為False
) — 是否同時返回包含缺失鍵、意外部索引鍵和錯誤訊息的字典。 - local_files_only (
bool
, 可選, 預設為False
) — 是否只加載本地模型權重和配置檔案。如果設定為True
,則不會從 Hub 下載模型。 - token (
str
或 bool, 可選) — 用於遠端檔案的 HTTP Bearer 授權令牌。如果為True
,則使用從diffusers-cli login
生成的令牌(儲存在~/.huggingface
中)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - custom_revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,與從 Hub 載入自定義管道時的 `revision` 類似。從 GitHub 載入自定義管道時,它可以是 🤗 Diffusers 版本,否則從 Hub 載入時預設為"main"
。 - mirror (
str
, 可選) — 解決在中國下載模型時可訪問性問題的映象源。我們不保證該源的時效性或安全性,您應參閱映象網站獲取更多資訊。 - variant (
str
, 可選) — 從指定的變體檔名(如"fp16"
或"ema"
)載入權重。從from_flax
載入時忽略此項。 - dduf_file(
str
, 可選) — 從指定的 DDUF 檔案載入權重。 - use_safetensors (
bool
, optional,預設為None
) — 如果設定為None
,則在可用且安裝了 safetensors 庫的情況下下載 safetensors 權重。如果設定為True
,則強制從 safetensors 權重載入模型。如果設定為False
,則不載入 safetensors 權重。 - use_onnx (
bool
, optional, 預設為False
) — 如果設定為True
,則如果存在 ONNX 權重,將始終下載。如果設定為False
,則永遠不會下載 ONNX 權重。預設情況下,use_onnx
預設為_is_onnx
類屬性,對於非 ONNX 管道為False
,對於 ONNX 管道為True
。ONNX 權重包括以.onnx
和.pb
結尾的檔案。 - trust_remote_code (
bool
, optional, 預設為False
) — 是否允許在 Hub 上定義的自定義管道和元件在自己的檔案中使用。此選項應僅在您信任並已閱讀其程式碼的儲存庫中設定為True
,因為它將在您的本地計算機上執行 Hub 中的程式碼。
返回
os.PathLike
下載管道的路徑。
從預訓練的管道權重下載並快取 PyTorch 擴散管道。
要使用私有或封閉模型,請使用 huggingface-cli login
登入。
enable_attention_slicing
< 源 >( slice_size: typing.Union[int, str, NoneType] = 'auto' )
啟用切片注意力計算。啟用此選項後,注意力模組將輸入張量分割成切片,以分多個步驟計算注意力。對於多個注意力頭,計算按每個頭順序執行。這對於節省一些記憶體以換取小幅速度降低很有用。
⚠️ 如果您已經在使用 PyTorch 2.0 的 scaled_dot_product_attention
(SDPA) 或 xFormers,請不要啟用注意力切片。這些注意力計算已經非常記憶體高效,因此您無需啟用此功能。如果您將注意力切片與 SDPA 或 xFormers 一起啟用,可能會導致嚴重的效能下降!
示例
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... torch_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_model_cpu_offload
< 源 >( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = None )
使用 accelerate 將所有模型解除安裝到 CPU,減少記憶體使用,對效能影響較小。與 enable_sequential_cpu_offload
相比,此方法一次將一個完整的模型移至加速器,並在呼叫其 forward
方法時,該模型將保留在加速器中,直到下一個模型執行。記憶體節省低於 enable_sequential_cpu_offload
,但由於 unet
的迭代執行,效能要好得多。
enable_sequential_cpu_offload
< 源 >( gpu_id: typing.Optional[int] = None device: typing.Union[torch.device, str] = None )
使用 🤗 Accelerate 將所有模型解除安裝到 CPU,顯著減少記憶體使用。呼叫時,所有 torch.nn.Module
元件的狀態字典(除了 self._exclude_from_cpu_offload
中的那些)都被儲存到 CPU,然後移動到 torch.device('meta')
,並且只有在呼叫其特定子模組的 forward
方法時才載入到加速器。解除安裝發生在子模組基礎上。記憶體節省高於 enable_model_cpu_offload
,但效能較低。
enable_xformers_memory_efficient_attention
< 源 >( attention_op: typing.Optional[typing.Callable] = None )
引數
- attention_op (
Callable
, optional) — 覆蓋預設的None
運算子,用作 xFormers 的memory_efficient_attention()
函式的op
引數。
啟用來自 xFormers 的記憶體高效注意力。啟用此選項後,您將觀察到更低的 GPU 記憶體使用量和推理期間潛在的速度提升。訓練期間的速度提升不保證。
⚠️ 當記憶體高效注意力和切片注意力同時啟用時,記憶體高效注意力優先。
示例
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", torch_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
< 源 >( pipeline **kwargs ) → DiffusionPipeline
從給定管道建立新管道。此方法對於從現有管道元件建立新管道而無需重新分配額外記憶體很有用。
from_pretrained
< 源 >( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] **kwargs )
引數
- pretrained_model_name_or_path (
str
或os.PathLike
, optional) — 可以是以下之一:- 一個字串,預訓練管道的倉庫 ID(例如
CompVis/ldm-text2im-large-256
),託管在 Hub 上。 - 一個目錄的路徑(例如
./my_pipeline_directory/
),其中包含使用 save_pretrained() 儲存的管道權重。 - 一個目錄的路徑(例如
./my_pipeline_directory/
),其中包含一個 dduf 檔案
- 一個字串,預訓練管道的倉庫 ID(例如
- torch_dtype (
torch.dtype
或dict[str, Union[str, torch.dtype]]
, optional) — 覆蓋預設的torch.dtype
並使用其他 dtype 載入模型。要使用不同的 dtype 載入子模型,請傳遞一個dict
(例如{'transformer': torch.bfloat16, 'vae': torch.float16}
)。對於未指定的元件,使用default
設定預設 dtype(例如{'transformer': torch.bfloat16, 'default': torch.float16}
)。如果未指定元件且未設定預設值,則使用torch.float32
。 - custom_pipeline (
str
, optional) —🧪 這是一個實驗性功能,未來可能會改變。
可以是以下之一:
- 一個字串,託管在 Hub 上的自定義管道的倉庫 ID(例如
hf-internal-testing/diffusers-dummy-pipeline
)。該倉庫必須包含一個名為 pipeline.py 的檔案,用於定義自定義管道。 - 一個字串,託管在 GitHub 社群下的社群管道的檔名。有效的檔名必須與檔名匹配,而不是管道指令碼(
clip_guided_stable_diffusion
而不是clip_guided_stable_diffusion.py
)。社群管道始終從 GitHub 的當前主分支載入。 - 一個目錄的路徑(
./my_pipeline_directory/
),其中包含自定義管道。該目錄必須包含一個名為pipeline.py
的檔案,用於定義自定義管道。
有關如何載入和建立自定義管道的更多資訊,請參閱 載入和新增自定義管道
- 一個字串,託管在 Hub 上的自定義管道的倉庫 ID(例如
- force_download (
bool
, optional, 預設為False
) — 是否強制(重新)下載模型權重和配置檔案,如果存在快取版本則覆蓋。 - cache_dir (
Union[str, os.PathLike]
, optional) — 如果不使用標準快取,則下載的預訓練模型配置的快取目錄路徑。 - proxies (
Dict[str, str]
, optional) — 按協議或端點使用的代理伺服器字典,例如{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用於每個請求。 - output_loading_info(
bool
, optional, 預設為False
) — 是否同時返回包含缺失鍵、意外部索引鍵和錯誤訊息的字典。 - local_files_only (
bool
, optional, 預設為False
) — 是否只加載本地模型權重和配置檔案。如果設定為True
,模型將不會從 Hub 下載。 - token (
str
或 bool, optional) — 用作遠端檔案 HTTP bearer 授權的令牌。如果為True
,則使用diffusers-cli login
生成的令牌(儲存在~/.huggingface
中)。 - revision (
str
, optional, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - custom_revision (
str
, optional) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,類似於從 Hub 載入自定義管道時的revision
。預設為最新的穩定 🤗 Diffusers 版本。 - mirror (
str
, optional) — 用於解決在中國下載模型時可訪問性問題的映象源。我們不保證來源的及時性或安全性,您應參閱映象站點以獲取更多資訊。 - device_map (
str
, optional) — 指導管道不同元件如何在可用裝置上放置的策略。目前,僅支援“balanced”device_map
。請檢視此連結以瞭解更多資訊。 - max_memory (
Dict
, optional) — 每個裝置最大記憶體的字典識別符號。如果未設定,將預設為每個 GPU 的最大可用記憶體和可用的 CPU RAM。 - offload_folder (
str
或os.PathLike
, optional) — 如果 device_map 包含值"disk"
,則解除安裝權重的路徑。 - offload_state_dict (
bool
, optional) — 如果為True
,則暫時將 CPU 狀態字典解除安裝到硬碟驅動器,以避免在 CPU 狀態字典的權重 + 檢查點的最大分片不適合時耗盡 CPU RAM。當存在一些磁碟解除安裝時,預設為True
。 - low_cpu_mem_usage (
bool
, optional, 如果 torch 版本 >= 1.9.0 則預設為True
,否則為False
) — 透過只加載預訓練權重而不初始化權重來加快模型載入。這還在載入模型時嘗試在 CPU 記憶體中(包括峰值記憶體)不超過 1 倍模型大小。僅支援 PyTorch >= 1.9.0。如果您使用的是舊版 PyTorch,將此引數設定為True
將會引發錯誤。 - use_safetensors (
bool
, optional,預設為None
) — 如果設定為None
,則在可用且安裝了 safetensors 庫的情況下下載 safetensors 權重。如果設定為True
,則強制從 safetensors 權重載入模型。如果設定為False
,則不載入 safetensors 權重。 - use_onnx (
bool
, optional, 預設為None
) — 如果設定為True
,則如果存在 ONNX 權重,將始終下載。如果設定為False
,則永遠不會下載 ONNX 權重。預設情況下,use_onnx
預設為_is_onnx
類屬性,對於非 ONNX 管道為False
,對於 ONNX 管道為True
。ONNX 權重包括以.onnx
和.pb
結尾的檔案。 - kwargs (剩餘的關鍵字引數字典,可選) — 可用於覆蓋可載入和可儲存的變數(特定管道類的管道元件)。被覆蓋的元件直接傳遞給管道的
__init__
方法。有關更多資訊,請參見下面的示例。 - variant (
str
, optional) — 從指定的變體檔名(例如"fp16"
或"ema"
)載入權重。從from_flax
載入時忽略此項。 - dduf_file(
str
, optional) — 從指定的 dduf 檔案載入權重。
從預訓練的管道權重例項化 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.
要使用私有或封閉模型,請使用 huggingface-cli 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
時新增的所有模型鉤子,然後再次應用它們。如果模型尚未解除安裝,此函式將不執行任何操作。 - 如果使用
register_hook()
添加了去噪器元件的有狀態擴散器鉤子,則重置它們。
請務必將此函式新增到管道的 __call__
函式末尾,以便在應用 enable_model_cpu_offload
時其功能正常。
將 NumPy 影像或一批影像轉換為 PIL 影像。
移除在使用 enable_sequential_cpu_offload
或 enable_model_cpu_offload
時新增的所有鉤子。
重置裝置對映(如果有)為 None。
save_pretrained
< 源 >( save_directory: typing.Union[str, os.PathLike] safe_serialization: bool = True variant: typing.Optional[str] = None max_shard_size: typing.Union[int, str, NoneType] = None push_to_hub: bool = False **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 要儲存管道的目錄。如果不存在,將建立該目錄。 - safe_serialization (
bool
, optional, 預設為True
) — 是否使用safetensors
或傳統的 PyTorchpickle
方式儲存模型。 - variant (
str
, optional) — 如果指定,權重將儲存為pytorch_model.<variant>.bin
格式。 - max_shard_size (
int
或str
, 預設為None
) — 檢查點在分片前的最大大小。檢查點分片的大小將小於此大小。如果表示為字串,則需要數字後跟單位(如"5GB"
)。如果表示為整數,則單位為位元組。請注意,此限制將在一段時間後(從 2024 年 10 月開始)降低,以允許使用者升級到最新版本的diffusers
。這是為了在 Hugging Face 生態系統中的不同庫(例如transformers
和accelerate
)之間為此引數建立一個共同的預設大小。 - push_to_hub (
bool
, optional, 預設為False
) — 儲存模型後是否將其推送到 Hugging Face 模型中心。您可以使用repo_id
指定要推送到的倉庫(將預設為您名稱空間中save_directory
的名稱)。 - kwargs (
Dict[str, Any]
, optional) — 傳遞給 push_to_hub() 方法的其他關鍵字引數。
將管道的所有可儲存變數儲存到目錄。如果其類實現了儲存和載入方法,則管道變數可以儲存和載入。使用 from_pretrained() 類方法可以輕鬆重新載入管道。
diffusers.StableDiffusionMixin.enable_freeu
< 源 >( s1: float s2: float b1: float b2: float )
啟用FreeU機制,如https://huggingface.co/papers/2309.11497中所示。
縮放因子後面的字尾表示它們所應用的階段。
有關適用於不同管道(如Stable Diffusion v1、v2和Stable Diffusion XL)的已知有效值組合,請參閱官方儲存庫。
如果已啟用,則停用FreeU機制。
FlaxDiffusionPipeline
Flax-based管道的基類。
FlaxDiffusionPipeline儲存了擴散管道的所有元件(模型、排程器和處理器),並提供了載入、下載和儲存模型的方法。它還包括以下方法:
- 啟用/停用去噪迭代的進度條
類屬性
- config_name (
str
) — 儲存所有擴散管道元件的類名和模組名的配置檔名。
from_pretrained
< source >( pretrained_model_name_or_path: typing.Union[str, os.PathLike, NoneType] **kwargs )
引數
- pretrained_model_name_or_path (
str
或os.PathLike
, 可選) — 可以是:- 一個字串,託管在Hub上的預訓練管道的repo id(例如
stable-diffusion-v1-5/stable-diffusion-v1-5
)。 - 一個目錄的路徑(例如
./my_model_directory
),包含使用save_pretrained()儲存的模型權重。
- 一個字串,託管在Hub上的預訓練管道的repo id(例如
- dtype (
jnp.dtype
, 可選) — 覆蓋預設的jnp.dtype
並以此dtype載入模型。 - 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授權的token。如果為True
,則使用diffusers-cli login
生成的token(儲存在~/.huggingface
中)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交ID或Git允許的任何識別符號。 - mirror (
str
, 可選) — 如果您在中國下載模型,為解決可訪問性問題而使用的映象源。我們不保證該源的及時性或安全性,您應參閱映象站點以獲取更多資訊。 - kwargs (剩餘的關鍵字引數字典,可選) — 可用於覆蓋特定管道類的可載入和可儲存變數(管道元件)。被覆蓋的元件直接傳遞給管道的
__init__
方法。
從預訓練的管道權重例項化基於Flax的擴散管道。
預設情況下,管道設定為評估模式(`model.eval()),並且dropout模組被停用。
如果您收到以下錯誤訊息,則需要針對您的下游任務微調權重
Some weights of FlaxUNet2DConditionModel 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:
要使用私有或封閉模型,請使用 huggingface-cli login
登入。
示例
>>> from diffusers import FlaxDiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> # Requires to be logged in to Hugging Face hub,
>>> # see more in [the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline, params = FlaxDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... variant="bf16",
... dtype=jnp.bfloat16,
... )
>>> # Download pipeline, but use a different scheduler
>>> from diffusers import FlaxDPMSolverMultistepScheduler
>>> model_id = "stable-diffusion-v1-5/stable-diffusion-v1-5"
>>> dpmpp, dpmpp_state = FlaxDPMSolverMultistepScheduler.from_pretrained(
... model_id,
... subfolder="scheduler",
... )
>>> dpm_pipe, dpm_params = FlaxStableDiffusionPipeline.from_pretrained(
... model_id, variant="bf16", dtype=jnp.bfloat16, scheduler=dpmpp
... )
>>> dpm_params["scheduler"] = dpmpp_state
將 NumPy 影像或一批影像轉換為 PIL 影像。
save_pretrained
< source >( save_directory: typing.Union[str, os.PathLike] params: typing.Union[typing.Dict, flax.core.frozen_dict.FrozenDict] push_to_hub: bool = False **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 要儲存到的目錄。如果不存在,將建立該目錄。 - push_to_hub (
bool
, 可選, 預設為False
) — 是否在儲存模型後將其推送到Hugging Face模型中心。您可以使用repo_id
指定要推送到的倉庫(預設為您名稱空間中的save_directory
名稱)。 - kwargs (
Dict[str, Any]
, 可選) — 傳遞給push_to_hub()方法的其他關鍵字引數。
將管道的所有可儲存變數儲存到目錄中。如果其類同時實現了儲存和載入方法,則可以儲存和載入管道變數。使用from_pretrained()類方法可以輕鬆重新載入管道。
PushToHubMixin
用於將模型、排程器或管道推送到Hugging Face Hub的Mixin。
push_to_hub
< source >( repo_id: str commit_message: typing.Optional[str] = None private: typing.Optional[bool] = None token: typing.Optional[str] = None create_pr: bool = False safe_serialization: bool = True variant: typing.Optional[str] = None )
引數
- repo_id (
str
) — 您要將模型、排程器或管道檔案推送到的倉庫名稱。當推送到組織時,它應該包含您的組織名稱。repo_id
也可以是本地目錄的路徑。 - commit_message (
str
, 可選) — 推送時要提交的訊息。預設為"Upload {object}"
。 - private (
bool
, 可選) — 是否將倉庫設定為私有。如果為None
(預設),除非組織的預設設定為私有,否則倉庫將是公共的。如果倉庫已存在,則此值將被忽略。 - token (
str
, 可選) — 用作遠端檔案HTTP bearer授權的token。執行huggingface-cli login
時生成的token(儲存在~/.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")