Diffusers 文件
UNet
並獲得增強的文件體驗
開始使用
UNet
一些訓練方法(如 LoRA 和 Custom Diffusion)通常針對 UNet 的注意力層,但這些訓練方法也可以針對其他非注意力層。這樣,只訓練引數的一個子集,而不是訓練模型的所有引數,從而更快、更高效。如果您只將權重載入到 UNet 中,此類別會很有用。如果您需要將權重載入到文字編碼器或文字編碼器和 UNet 中,請嘗試使用 `load_lora_weights()` 函式。
`UNet2DConditionLoadersMixin` 類提供了載入和儲存權重、融合和解融合 LoRA、停用和啟用 LoRA 以及設定和刪除介面卡的函式。
要了解有關如何載入 LoRA 權重的更多資訊,請參閱 LoRA 載入指南。
UNet2DConditionLoadersMixin
將 LoRA 層載入到 `UNet2DConditionModel` 中。
load_attn_procs
< 原始檔 >( pretrained_model_name_or_path_or_dict: typing.Union[str, typing.Dict[str, torch.Tensor]] **kwargs )
引數
- pretrained_model_name_or_path_or_dict (
str
或os.PathLike
或dict
) — 可以是:- 字串,Hub 上託管的預訓練模型的模型 ID(例如
google/ddpm-celebahq-256
)。 - 包含使用 `ModelMixin.save_pretrained()` 儲存的模型權重的目錄路徑(例如
./my_model_directory
)。 - torch 狀態字典。
- 字串,Hub 上託管的預訓練模型的模型 ID(例如
- cache_dir (
Union[str, os.PathLike]
, 可選) — 用於快取已下載的預訓練模型配置的目錄路徑(如果未使用標準快取)。 - force_download (
bool
, 可選, 預設為False
) — 是否強制(重新)下載模型權重和配置檔案,如果已存在快取版本則覆蓋。 - proxies (
Dict[str, str]
, 可選) — 按協議或端點使用的代理伺服器字典,例如{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}
。代理用於每個請求。 - local_files_only (
bool
, 可選, 預設為False
) — 是否只加載本地模型權重和配置檔案。如果設定為True
,則不會從 Hub 下載模型。 - token (
str
或 bool, 可選) — 用作遠端檔案 HTTP 持有者授權的令牌。如果為True
,則使用從diffusers-cli login
生成的令牌(儲存在~/.huggingface
中)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - subfolder (
str
, 可選, 預設為""
) — Hub 上或本地大型模型倉庫中模型檔案的子資料夾位置。 - network_alphas (
Dict[str, float]
) — 用於穩定學習和防止下溢的網路 alpha 值。此值與 kohya-ss 訓練器指令碼中的--network_alpha
選項具有相同的含義。請參閱 此連結。 - adapter_name (
str
, 可選, 預設為 None) — 用於引用已載入的介面卡模型的介面卡名稱。如果未指定,將使用default_{i}
,其中 i 是正在載入的介面卡總數。 - weight_name (
str
, 可選, 預設為 None) — 序列化狀態字典檔案的名稱。 - low_cpu_mem_usage (
bool
, 可選) — 透過僅載入預訓練的 LoRA 權重而不初始化隨機權重來加快模型載入速度。
將預訓練的注意力處理器層載入到 UNet2DConditionModel 中。注意力處理器層必須在 attention_processor.py
中定義,並且是 torch.nn.Module
類。目前支援:LoRA、Custom Diffusion。對於 LoRA,必須安裝 peft
:pip install -U peft
。
示例
from diffusers import AutoPipelineForText2Image
import torch
pipeline = AutoPipelineForText2Image.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16
).to("cuda")
pipeline.unet.load_attn_procs(
"jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic"
)
save_attn_procs
< 原始檔 >( save_directory: typing.Union[str, os.PathLike] is_main_process: bool = True weight_name: str = None save_function: typing.Callable = None safe_serialization: bool = True **kwargs )
引數
- save_directory (
str
或os.PathLike
) — 儲存注意力處理器的目錄(如果不存在將建立)。 - is_main_process (
bool
, 可選, 預設為True
) — 呼叫此函式的程序是否為主程序。在分散式訓練期間有用,當您需要在所有程序上呼叫此函式時。在這種情況下,僅在主程序上設定is_main_process=True
以避免競態條件。 - save_function (
Callable
) — 用於儲存狀態字典的函式。在分散式訓練中,當您需要用其他方法替換torch.save
時很有用。可以透過環境變數DIFFUSERS_SAVE_MODE
進行配置。 - safe_serialization (
bool
, 可選, 預設為True
) — 是否使用safetensors
或pickle
儲存模型。
將注意力處理器層儲存到目錄,以便可以使用 `load_attn_procs()` 方法重新載入。
示例
import torch
from diffusers import DiffusionPipeline
pipeline = DiffusionPipeline.from_pretrained(
"CompVis/stable-diffusion-v1-4",
torch_dtype=torch.float16,
).to("cuda")
pipeline.unet.load_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")
pipeline.unet.save_attn_procs("path-to-save-model", weight_name="pytorch_custom_diffusion_weights.bin")