Diffusers 文件
AutoPipeline
並獲得增強的文件體驗
開始使用
AutoPipeline
AutoPipeline
旨在方便地為任務載入檢查點,而無需瞭解具體的管道類。根據任務,AutoPipeline
會自動從檢查點的 model_index.json
檔案中檢索正確的管道類。
檢視AutoPipeline教程以瞭解如何使用此API!
AutoPipelineForText2Image
AutoPipelineForText2Image 是一個通用管道類,它例項化一個文字到影像的管道類。具體的底層管道類會自動從 from_pretrained() 或 from_pipe() 方法中選擇。
該類不能透過 __init__()
例項化(會丟擲錯誤)。
類屬性
- config_name (
str
) — 儲存所有擴散管道元件的類名和模組名的配置檔名。
from_pretrained
< 來源 >( pretrained_model_or_path **kwargs )
引數
- pretrained_model_or_path (
str
或os.PathLike
, 可選) — 可以是:- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id*(例如
CompVis/ldm-text2im-large-256
)。 - 一個 *目錄* 路徑(例如
./my_pipeline_directory/
),其中包含使用 save_pretrained() 儲存的管道權重。
- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id*(例如
- torch_dtype (
torch.dtype
, 可選) — 覆蓋預設的torch.dtype
並使用其他 dtype 載入模型。 - 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"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - custom_revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,與從 Hub 載入自定義管道時的revision
類似。當從 GitHub 載入自定義管道時,它可以是 🤗 Diffusers 版本,否則從 Hub 載入時預設為"main"
。 - mirror (
str
, 可選) — 如果您在中國下載模型,用於解決訪問問題的映象源。我們不保證源的及時性或安全性,您應參考映象站點獲取更多資訊。 - device_map (
str
或Dict[str, Union[int, str, torch.device]]
, 可選) — 指定每個子模組應放置在哪裡的對映。無需為每個引數/緩衝區名稱定義;一旦給定的模組名稱在其中,它的每個子模組都將被髮送到同一裝置。設定
device_map="auto"
以讓 🤗 Accelerate 自動計算最最佳化的device_map
。有關每個選項的更多資訊,請參閱 設計裝置對映。 - max_memory (
Dict
, 可選) — 最大記憶體的裝置識別符號字典。如果未設定,則預設為每個 GPU 的最大可用記憶體和可用的 CPU RAM。 - offload_folder (
str
或os.PathLike
, 可選) — 如果 device_map 包含值"disk"
,則解除安裝權重的路徑。 - offload_state_dict (
bool
, 可選) — 如果為True
,則暫時將 CPU 狀態字典解除安裝到硬碟驅動器,以避免在 CPU 狀態字典的權重 + 檢查點的最大分片不適合時耗盡 CPU RAM。如果存在一些磁碟解除安裝,則預設為True
。 - low_cpu_mem_usage (
bool
, 可選, 如果 torch 版本 >= 1.9.0 則預設為True
,否則為False
) — 透過只加載預訓練權重而不初始化權重來加速模型載入。在載入模型時,這也試圖不使用超過模型大小 1 倍的 CPU 記憶體(包括峰值記憶體)。僅支援 PyTorch >= 1.9.0。如果您使用的是舊版 PyTorch,將此引數設定為True
將引發錯誤。 - use_safetensors (
bool
, 可選, 預設為None
) — 如果設定為None
,則如果 safetensors 庫已安裝且可用,則下載 safetensors 權重。如果設定為True
,則強制從 safetensors 權重載入模型。如果設定為False
,則不載入 safetensors 權重。 - kwargs (剩餘的關鍵字引數字典,可選) — 可用於覆蓋可載入和可儲存的變數(特定管道類的管道元件)。被覆蓋的元件直接傳遞給管道的
__init__
方法。有關更多資訊,請參閱以下示例。 - variant (
str
, 可選) — 從指定的變體檔名(如"fp16"
或"ema"
)載入權重。從from_flax
載入時會忽略此引數。
從預訓練的管道權重例項化文字到影像的 PyTorch 擴散管道。
from_pretrained() 方法透過以下方式返回正確的管道類例項:
- 根據其配置物件的 _class_name 屬性檢測 pretrained_model_or_path 的管道類
- 使用管道類名上的模式匹配查詢與管道類關聯的文字到影像管道。
如果傳入 controlnet
引數,它將例項化一個 StableDiffusionControlNetPipeline 物件。
預設情況下,管道設定為評估模式(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_pipe
< 來源 >( pipeline **kwargs )
從另一個已例項化的擴散管道類例項化文字到影像的 PyTorch 擴散管道。
from_pipe() 方法透過使用管道類名上的模式匹配查詢與管道類關聯的文字到影像管道,從而返回正確的管道類例項。
管道包含的所有模組都將用於初始化新管道,而無需重新分配額外的記憶體。
預設情況下,管道設定為評估模式(model.eval()
)。
>>> from diffusers import AutoPipelineForText2Image, AutoPipelineForImage2Image
>>> pipe_i2i = AutoPipelineForImage2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", requires_safety_checker=False
... )
>>> pipe_t2i = AutoPipelineForText2Image.from_pipe(pipe_i2i)
>>> image = pipe_t2i(prompt).images[0]
AutoPipelineForImage2Image
AutoPipelineForImage2Image 是一個通用管道類,它例項化一個影像到影像的管道類。具體的底層管道類會自動從 from_pretrained() 或 from_pipe() 方法中選擇。
該類不能透過 __init__()
例項化(會丟擲錯誤)。
類屬性
- config_name (
str
) — 儲存所有擴散管道元件的類名和模組名的配置檔名。
from_pretrained
< 來源 >( pretrained_model_or_path **kwargs )
引數
- pretrained_model_or_path (
str
或os.PathLike
, 可選) — 可以是以下之一:- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id* (例如
CompVis/ldm-text2im-large-256
)。 - 一個 *目錄* 的路徑 (例如
./my_pipeline_directory/
),包含使用 save_pretrained() 儲存的管道權重。
- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id* (例如
- torch_dtype (
str
或torch.dtype
, 可選) — 覆蓋預設的torch.dtype
,並用另一種 dtype 載入模型。 - 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 承載授權的令牌。如果為True
,則使用diffusers-cli login
生成的令牌(儲存在~/.huggingface
中)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - custom_revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,類似於從 Hub 載入自定義管道時的revision
。從 GitHub 載入自定義管道時,它可以是 🤗 Diffusers 版本,否則從 Hub 載入時預設為"main"
。 - mirror (
str
, 可選) — 解決在中國下載模型時的可訪問性問題的映象源。我們不保證該源的時效性或安全性,您應參考映象站點以獲取更多資訊。 - device_map (
str
或Dict[str, Union[int, str, torch.device]]
, 可選) — 指定每個子模組應放置在哪裡的對映。無需為每個引數/緩衝區名稱定義;一旦給定的模組名稱在其內部,它的每個子模組都將被髮送到同一裝置。設定
device_map="auto"
讓 🤗 Accelerate 自動計算最最佳化的device_map
。有關每個選項的更多資訊,請參閱 設計裝置對映。 - max_memory (
Dict
, 可選) — 最大記憶體的裝置識別符號字典。如果未設定,將預設為每個 GPU 的可用最大記憶體和可用的 CPU RAM。 - offload_folder (
str
或os.PathLike
, 可選) — 如果 device_map 包含值"disk"
,則為解除安裝權重的路徑。 - offload_state_dict (
bool
, 可選) — 如果為True
,則暫時將 CPU 狀態字典解除安裝到硬碟驅動器,以避免在 CPU 狀態字典的權重 + 檢查點最大分片不適合時,CPU RAM 用盡。當存在一些磁碟解除安裝時,預設為True
。 - low_cpu_mem_usage (
bool
, 可選, 如果 torch 版本 >= 1.9.0 預設為True
,否則為False
) — 加快模型載入速度,僅載入預訓練權重而不初始化權重。這在載入模型時還嘗試使 CPU 記憶體(包括峰值記憶體)的使用不超過模型大小的 1 倍。僅支援 PyTorch >= 1.9.0。如果您使用的是舊版 PyTorch,將此引數設定為True
將引發錯誤。 - use_safetensors (
bool
, 可選, 預設為None
) — 如果設定為None
,則在可用 且 已安裝 safetensors 庫時下載 safetensors 權重。如果設定為True
,則強制從 safetensors 權重載入模型。如果設定為False
,則不載入 safetensors 權重。 - kwargs (剩餘的關鍵字引數字典,可選) — 可用於覆蓋可載入和可儲存的變數(特定管道類的管道元件)。被覆蓋的元件直接傳遞給管道的
__init__
方法。更多資訊請參見以下示例。 - variant (
str
, 可選) — 從指定的變體檔名(如"fp16"
或"ema"
)載入權重。從from_flax
載入時會忽略此項。
從預訓練的管道權重例項化影像到影像的 PyTorch 擴散管道。
from_pretrained() 方法透過以下方式返回正確的管道類例項:
- 根據其配置物件的 _class_name 屬性檢測 pretrained_model_or_path 的管道類
- 透過管道類名稱上的模式匹配,查詢與管道類關聯的影像到影像管道。
如果傳入 controlnet
引數,它將例項化一個 StableDiffusionControlNetImg2ImgPipeline 物件。
預設情況下,管道設定為評估模式(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_pipe
< source >( pipeline **kwargs )
從另一個已例項化的擴散管道類例項化影像到影像的 PyTorch 擴散管道。
from_pipe()
方法透過對管道類名稱進行模式匹配,負責返回與該管道類關聯的正確影像到影像管道例項。
管道包含的所有模組都將用於初始化新管道,而無需重新分配額外的記憶體。
預設情況下,管道設定為評估模式(model.eval()
)。
示例
>>> from diffusers import AutoPipelineForText2Image, AutoPipelineForImage2Image
>>> pipe_t2i = AutoPipelineForText2Image.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5", requires_safety_checker=False
... )
>>> pipe_i2i = AutoPipelineForImage2Image.from_pipe(pipe_t2i)
>>> image = pipe_i2i(prompt, image).images[0]
AutoPipelineForInpainting
AutoPipelineForInpainting 是一個通用管道類,它例項化一個影像修復管道類。具體的底層管道類是根據 from_pretrained() 或 from_pipe() 方法透過自動選擇獲得的。
該類不能透過 __init__()
例項化(會丟擲錯誤)。
類屬性
- config_name (
str
) — 儲存所有擴散管道元件的類名和模組名的配置檔名。
from_pretrained
< source >( pretrained_model_or_path **kwargs )
引數
- pretrained_model_or_path (
str
或os.PathLike
, 可選) — 可以是以下之一:- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id* (例如
CompVis/ldm-text2im-large-256
)。 - 一個 *目錄* 的路徑 (例如
./my_pipeline_directory/
),包含使用 save_pretrained() 儲存的管道權重。
- 一個字串,即託管在 Hub 上的預訓練管道的 *repo id* (例如
- torch_dtype (
str
或torch.dtype
, 可選) — 覆蓋預設的torch.dtype
,並使用另一種 dtype 載入模型。 - 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 承載授權的令牌。如果為True
,則使用diffusers-cli login
生成的令牌(儲存在~/.huggingface
中)。 - revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱、提交 ID 或 Git 允許的任何識別符號。 - custom_revision (
str
, 可選, 預設為"main"
) — 要使用的特定模型版本。它可以是分支名稱、標籤名稱或提交 ID,類似於從 Hub 載入自定義管道時的revision
。從 GitHub 載入自定義管道時,它可以是 🤗 Diffusers 版本,否則從 Hub 載入時預設為"main"
。 - mirror (
str
, 可選) — 解決在中國下載模型時的可訪問性問題的映象源。我們不保證該源的時效性或安全性,您應參考映象站點以獲取更多資訊。 - device_map (
str
或Dict[str, Union[int, str, torch.device]]
, 可選) — 指定每個子模組應放置在哪裡的對映。無需為每個引數/緩衝區名稱定義;一旦給定的模組名稱在其內部,它的每個子模組都將被髮送到同一裝置。設定
device_map="auto"
讓 🤗 Accelerate 自動計算最最佳化的device_map
。有關每個選項的更多資訊,請參閱 設計裝置對映。 - max_memory (
Dict
, 可選) — 最大記憶體的裝置識別符號字典。如果未設定,將預設為每個 GPU 的可用最大記憶體和可用的 CPU RAM。 - offload_folder (
str
或os.PathLike
, 可選) — 如果 device_map 包含值"disk"
,則為解除安裝權重的路徑。 - offload_state_dict (
bool
, 可選) — 如果為True
,則暫時將 CPU 狀態字典解除安裝到硬碟驅動器,以避免在 CPU 狀態字典的權重 + 檢查點最大分片不適合時,CPU RAM 用盡。當存在一些磁碟解除安裝時,預設為True
。 - kwargs (剩餘的關鍵字引數字典,可選) — 可用於覆蓋可載入和可儲存的變數(特定管道類的管道元件)。被覆蓋的元件直接傳遞給管道的
__init__
方法。更多資訊請參見以下示例。 - variant (
str
, 可選) — 從指定的變體檔名(如"fp16"
或"ema"
)載入權重。從from_flax
載入時會忽略此項。
從預訓練的管道權重例項化影像修復的 PyTorch 擴散管道。
from_pretrained() 方法透過以下方式返回正確的管道類例項:
- 根據其配置物件的 _class_name 屬性檢測 pretrained_model_or_path 的管道類
- 透過管道類名稱上的模式匹配,查詢與管道類關聯的影像修復管道。
如果傳入 controlnet
引數,它將例項化一個 StableDiffusionControlNetInpaintPipeline 物件。
預設情況下,管道設定為評估模式(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_pipe
< source > ( pipeline **kwargs )
從另一個已例項化的擴散管道類例項化影像修復的 PyTorch 擴散管道。
from_pipe()
方法透過對管道類名稱進行模式匹配,負責返回與該管道類關聯的正確影像修復管道例項。
管道類包含的所有模組都將用於初始化新的管道,而無需重新分配額外的記憶體。
預設情況下,管道設定為評估模式(model.eval()
)。
示例
>>> from diffusers import AutoPipelineForText2Image, AutoPipelineForInpainting
>>> pipe_t2i = AutoPipelineForText2Image.from_pretrained(
... "DeepFloyd/IF-I-XL-v1.0", requires_safety_checker=False
... )
>>> pipe_inpaint = AutoPipelineForInpainting.from_pipe(pipe_t2i)
>>> image = pipe_inpaint(prompt, image=init_image, mask_image=mask_image).images[0]