Diffusers documentation

UNet

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

UNet

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

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

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

UNet2DConditionLoadersMixin

クラス diffusers.loaders.UNet2DConditionLoadersMixin

< >

( )

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

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)。
    • ./my_model_directory のように、ModelMixin.save_pretrained() で保存されたモデルの重みを含むディレクトリへのパス。
    • 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

< >

( save_directory: str | os.PathLikeis_main_process: bool = Trueweight_name: str = Nonesave_function: typing.Callable = Nonesafe_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で保存するかどうかを指定します。

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")
Update on GitHub