Buckets:

mishig's picture
|
download
raw
7.67 kB

UNet

LoRA や Custom Diffusion などの一部の学習手法は、通常、UNet のアテンション層を対象としますが、これらの手法はアテンション以外の他の層を対象とすることもできます。モデルのすべてのパラメータを学習させるのではなく、パラメータの一部のみを学習させるため、より高速かつ効率的です。このクラスは、UNet にのみ重みを読み込む場合に有用です。テキストエンコーダー、またはテキストエンコーダーと UNet の両方に重みを読み込む必要がある場合は、代わりに load_lora_weights() 関数を使用してください。

UNet2DConditionLoadersMixin クラスは、重みの読み込みと保存、LoRA の融合と分離、LoRA の無効化と有効化、アダプターの設定と削除を行う関数を提供します。

LoRAの重みをロードする方法の詳細については、LoRAガイドを参照してください。

UNet2DConditionLoadersMixin[[diffusers.loaders.UNet2DConditionLoadersMixin]]

diffusers.loaders.UNet2DConditionLoadersMixin[[diffusers.loaders.UNet2DConditionLoadersMixin]]

diffusers.loaders.UNet2DConditionLoadersMixin()

ソース

UNet2DCondtionModelにLoRA層を読み込みます。

load_attn_procs[[diffusers.loaders.UNet2DConditionLoadersMixin.load_attn_procs]]

load_attn_procs(pretrained_model_name_or_path_or_dict: str | 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 state dict。

cache_dir (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 またはローカル上のより大きなモデルリポジトリ内での、モデルファイルのサブフォルダの場所。

weight_name (str、任意、デフォルトは None) : シリアライズされた state dict ファイルの名前。

事前学習済みの Custom Diffusion アテンションプロセッサのレイヤーを UNet2DConditionModel に読み込みます。アテンションプロセッサのレイヤーは attention_processor.py で定義する必要があり、torch.nn.Module クラスである必要があります。LoRA レイヤーを読み込む場合は、代わりに load_lora_adapter() を使用してください。

例:

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")

save_attn_procs[[diffusers.loaders.UNet2DConditionLoadersMixin.save_attn_procs]]

save_attn_procs(save_directory: 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) : attention processor を保存するディレクトリ(存在しない場合は作成されます)。

is_main_process (bool、任意、デフォルトはTrue) : この関数を呼び出したプロセスがメインプロセスかどうかを示します。分散学習時に、すべてのプロセスでこの関数を呼び出す必要がある場合に便利です。この場合、競合状態を避けるために、メインプロセスでのみis_main_process=Trueを設定してください。

save_function (Callable) : 状態辞書を保存するために使用する関数です。分散学習時に torch.save を別のメソッドに置き換える必要がある場合に便利です。環境変数 DIFFUSERS_SAVE_MODE で設定できます。

safe_serialization (bool, 任意, デフォルトは True) : モデルを safetensors で保存するか、pickle で保存するかどうかを指定します。

Custom Diffusion の attention processor レイヤーをディレクトリに保存し、load_attn_procs() メソッドで再読み込みできるようにします。LoRA レイヤーを保存する場合は、代わりに save_lora_adapter() を使用してください。

例:

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")

Xet Storage Details

Size:
7.67 kB
·
Xet hash:
4532c2d6317210242363a4c01ccec7b78743c8ab386b2aa9c689dc0e736bd0c5

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.