Buckets:

mishig's picture
|
download
raw
19.5 kB

スケジューラー

🤗 Diffusers は、拡散プロセスのための多くのスケジューラ関数を提供しています。スケジューラは、モデルの出力(拡散プロセスが反復処理しているサンプル)とタイムステップを受け取り、ノイズ除去されたサンプルを返します。タイムステップは、拡散プロセス内のどの位置でそのステップが行われるかを決定するため重要です。データは n 個のタイムステップを前方に反復することで生成され、推論はタイムステップを後方へ伝播させることで行われます。タイムステップに基づいて、スケジューラは discrete(この場合、タイムステップは int)または continuous(この場合、タイムステップは float)のいずれかになります。

コンテキストに応じて、スケジューラは画像に反復的にノイズを追加する方法、またはモデルの出力に基づいてサンプルを更新する方法を定義します。

  • 学習中、スケジューラーはサンプルにノイズを追加して拡散モデルを学習します(ノイズの追加方法にはさまざまなアルゴリズムがあります)。
  • 推論時、スケジューラは事前学習済みモデルの出力に基づいてサンプルを更新する方法を定義します。

k-diffusion ライブラリによって実装された多くのスケジューラーは、Katherine Crowson 氏によって開発され、A1111 でも広く使用されています。k-diffusion および A1111 のスケジューラーを 🤗 Diffusers のスケジューラーに対応させるために、以下の表をご覧ください。

A1111/k-diffusion 🤗 Diffusers 使用方法
DPM++ 2M DPMSolverMultistepScheduler
DPM++ 2M Karras DPMSolverMultistepScheduler use_karras_sigmas=True で初期化
DPM++ 2M SDE DPMSolverMultistepScheduler algorithm_type="sde-dpmsolver++" で初期化
DPM++ 2M SDE Karras DPMSolverMultistepScheduler use_karras_sigmas=True および algorithm_type="sde-dpmsolver++" で初期化します
DPM++ 2S a N/A DPMSolverSinglestepScheduler と非常に似ています
DPM++ 2S a Karras N/A DPMSolverSinglestepScheduler(use_karras_sigmas=True, ...) と非常に似ています
DPM++ SDE DPMSolverSinglestepScheduler
DPM++ SDE Karras DPMSolverSinglestepScheduler use_karras_sigmas=True で初期化
DPM2 KDPM2DiscreteScheduler
DPM2 Karras KDPM2DiscreteScheduler use_karras_sigmas=True で初期化
DPM2 a KDPM2AncestralDiscreteScheduler
DPM2 a Karras KDPM2AncestralDiscreteScheduler use_karras_sigmas=True で初期化
DPM 適応 N/A
DPM fast N/A
Euler EulerDiscreteScheduler
Euler a EulerAncestralDiscreteScheduler
Heun HeunDiscreteScheduler
LMS LMSDiscreteScheduler
LMS Karras LMSDiscreteScheduler use_karras_sigmas=True で初期化
N/A DEISMultistepScheduler
N/A UniPCMultistepScheduler

ノイズスケジュールとスケジュールの種類

A1111/k-diffusion 🤗 Diffusers
Karras use_karras_sigmas=True で初期化
sgm_uniform timestep_spacing="trailing" で初期化
シンプル timestep_spacing="trailing" で初期化
指数 timestep_spacing="linspace"、use_exponential_sigmas=True で初期化します
beta timestep_spacing="linspace"、use_beta_sigmas=True で初期化します

すべてのスケジューラーは、すべてのスケジューラーで共有される低レベルのユーティリティを実装するベースクラスである SchedulerMixin から構築されています。

SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin[[diffusers.SchedulerMixin]]

diffusers.SchedulerMixin()

ソース

すべてのスケジューラの基底クラス。

SchedulerMixin には、すべてのスケジューラーで共有される一般的な機能、例えば読み込みや保存などの共通関数が含まれています。

ConfigMixinは、スケジューラの__init__関数に渡される設定属性(num_train_timestepsなど)の保存を管理し、これらの属性はscheduler.config.num_train_timestepsによってアクセスできます。

クラス属性:

  • _compatibles (list[str]) -- 親スケジューラクラスと互換性のあるスケジューラクラスのリストです。別の互換性のあるスケジューラクラスを読み込むには from_config() を使用します(親クラスでオーバーライドされるべきです)。

from_pretrained[[diffusers.SchedulerMixin.from_pretrained]]

from_pretrained(pretrained_model_name_or_path: str | os.PathLike | None = None, subfolder: str | None = None, return_unused_kwargs: bool = False, **kwargs: Any)

ソース

パラメータ:

pretrained_model_name_or_path (str または os.PathLike、省略可能) : 以下のいずれかです: - Hub にホストされている事前学習済みモデルの model id(例: google/ddpm-celebahq-256)を表す文字列。 - save_pretrained() で保存されたスケジューラの設定を含む ディレクトリ(例: ./my_model_directory)へのパス。

subfolder (str, 省略可) : Hub上のモデルリポジトリ全体、またはローカル環境における、モデルファイルのサブフォルダの場所。

return_unused_kwargs (bool, 任意, デフォルトは False) : Python クラスによって消費されない kwargs を返すかどうかを指定します。

cache_dir (str または os.PathLike、任意) : 標準のキャッシュを使用しない場合、ダウンロードした事前学習済みモデルの設定がキャッシュされるディレクトリのパス。

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 ベアラ認証に使用するトークンです。True の場合、diffusers-cli login で生成されたトークン(~/.huggingface に保存)が使用されます。

revision (str、任意、デフォルトは"main") : 使用する特定のモデルバージョンです。ブランチ名、タグ名、コミット ID、または Git で許可されている任意の識別子を使用できます。

戻り値: SchedulerMixin または tuple[SchedulerMixin, dict[str, Any]]

設定からインスタンス化されたスケジューラ。return_unused_kwargsがTrueの場合、未使用のキーワード引数の辞書が第2要素であるタプルが返されます。

ローカルディレクトリまたは Hub リポジトリにある事前定義済みの JSON 設定ファイルから、スケジューラーをインスタンス化します。

> プライベートモデルやゲート付きモデルを使用するには、ログインしてください hf > auth login を使用します。また、ファイアウォールが設定された環境でこの方法を使用するために、特別な "offline-mode" を有効にすることもできます。

save_pretrained[[diffusers.SchedulerMixin.save_pretrained]]

save_pretrained(save_directory: str | os.PathLike, push_to_hub: bool = False, **kwargs: Any)

ソース

パラメータ:

save_directory (str または os.PathLike) : 設定 JSON ファイルを保存するディレクトリ(存在しない場合は作成されます)。

push_to_hub (bool、任意、デフォルトはFalse) : モデルを保存した後に Hugging Face Hub にプッシュするかどうかを指定します。repo_id でプッシュ先のリポジトリを指定できます(指定しない場合、save_directory の名前があなたのネームスペース内でデフォルトとして使用されます)。

kwargs (dict[str, Any]、省略可) : push_to_hub() メソッドに渡される追加のキーワード引数。

スケジューラの設定オブジェクトをディレクトリに保存し、from_pretrained()クラスメソッドを使って再読み込みできるようにします。

SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput[[diffusers.schedulers.scheduling_utils.SchedulerOutput]]

diffusers.schedulers.scheduling_utils.SchedulerOutput(prev_sample: Tensor)

ソース

パラメータ:

prev_sample (torch.Tensor、画像の場合は (batch_size, num_channels, height, width) の形状) : 前のタイムステップの計算済みサンプル (x_{t-1})。prev_sample は、デノイジングループの次のモデル入力として使用する必要があります。

スケジューラーのstep関数の出力の基底クラス。

KarrasDiffusionSchedulers

KarrasDiffusionSchedulers は、🤗 Diffusers のスケジューラーの広範な一般化です。このクラスのスケジューラーは、ノイズサンプリング戦略、ネットワークの種類とスケーリング、学習戦略、および損失の重み付け方法によって、高レベルで区別されます。

このクラスに含まれる各種スケジューラは、常微分方程式(ODE)ソルバの種類に応じて、上記の分類体系に属し、🤗 Diffusers に実装されている主要なスケジューラの設計において優れた抽象化を提供します。このクラスのスケジューラはこちらで確認できます。

PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]

diffusers.utils.PushToHubMixin()

ソース

Hugging Face Hub にモデル、スケジューラ、またはパイプラインをプッシュするための Mixin。

push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]

push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)

ソース

パラメータ:

repo_id (str) : モデル、スケジューラ、またはパイプラインのファイルをプッシュするリポジトリの名前です。組織にプッシュする場合は、組織名を含める必要があります。repo_id はローカルディレクトリへのパス也可以是。

commit_message (str, 任意) : push 時にコミットするメッセージ。デフォルトは "Upload {object}" です。

private (bool, 任意) : リポジトリを非公開にするかどうか。None(デフォルト)の場合、組織のデフォルトが非公開でない限り、リポジトリは公開になります。リポジトリが既に存在する場合、この値は無視されます。

token (str, 任意) : リモートファイルの HTTP ベアラ認証に使用するトークン。hf auth login を実行した際に生成されるトークン(~/.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")

Xet Storage Details

Size:
19.5 kB
·
Xet hash:
da1341af9385d6310165ca8cd59e87355c48ec5afb5a4cb09a022a134de62d11

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