> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sampler の簡単な紹介

Stable Diffusion Art.（日付なし）。サンプラー。取得元 [https://stable-diffusion-art.com/samplers/.](https://stable-diffusion-art.com/samplers/)

Novita AI では、Euler a、Heun、DDIM など、多くのサンプリング手法を利用できます。サンプラーとは何でしょうか？どのように機能するのでしょうか？それらの違いは何でしょうか？どれを使うべきでしょうか？この記事でその答えが見つかります。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_01.png" />
</Frame>

画像を生成するために、Stable Diffusion はまず潜在空間で完全にランダムな画像を生成します。次にノイズ予測器が画像のノイズを推定し、そのノイズが画像から差し引かれます。この処理が複数回繰り返され、最終的にクリーンな画像が得られます。

このノイズ除去プロセスは、Stable Diffusion が各ステップで新しいサンプル画像を生成するため、サンプリングと呼ばれます。サンプリングで使用される手法は、`sampler` または `sampling method` と呼ばれます。

サンプリングは Stable Diffusion モデルの一部にすぎません。モデル全体を理解したい場合は、「How Does Stable Diffusion Work?」の記事を読んでください。

以下は、実際のサンプリングプロセスです。サンプラーは徐々に、よりクリーンな画像を生成していきます。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_02.webp" />
</Frame>

フレームワークは同じですが、このノイズ除去プロセスを実行する方法は数多くあります。多くの場合、速度と精度のトレードオフになります。

### サンプラーの概要

この記事の執筆時点では、Novita AI で利用できるサンプラーは 19 種類あり、この数は時間とともに増えているようです。それらの違いは何でしょうか？

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_03.png" />
</Frame>

この記事の後半で、それらについて学びます。技術的な詳細は圧倒されるかもしれないため、このセクションでは全体像を示し、それらが何であるかを大まかに理解できるようにします。

#### 古典的な ODE ソルバー

まずは比較的わかりやすいものから始めましょう。リストにあるサンプラーの一部は、100 年以上前に発明されました。これらは常微分方程式（ODE）の古典的なソルバーです。

* Euler – 最も単純なソルバー。
* Heun – Euler より正確だが遅いバージョン。
* LMS (Linear Multi-Step Method) – Euler と同じ速度だが、おそらくより正確。

#### Ancestral サンプラー

一部のサンプラー名に、1 文字の "a" が含まれていることに気づきましたか？

* Euler a
* DPM2 a
* DPM++ 2S a
* DPM++ 2S a Karras

これらは ancestral サンプラーです。ancestral サンプラーは、各サンプリングステップで画像にノイズを追加します。サンプリング結果にある程度のランダム性が含まれるため、これらは確率的サンプラーです。

名前に "a" が含まれていなくても、他の多くのサンプラーも確率的であることに注意してください。

ancestral サンプラーを使用する欠点は、画像が収束しない可能性があることです。以下で Euler a と Euler を使用して生成された画像を比較してください。

Euler a は収束しません。（サンプリングステップ 2–40）

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_04.webp" />
</Frame>

Euler は収束します。（サンプリングステップ 2-40）

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_05.webp" />
</Frame>

Euler a で生成された画像はサンプリングステップが多くても収束しませんが、Euler の画像はよく収束します。

再現性のためには、画像が収束することが望ましいです。わずかなバリエーションを生成したい場合は、variational seed を使用するべきです。

#### Karras ノイズスケジュール

"Karras" とラベル付けされたサンプラーは、[Karras article](https://arxiv.org/abs/2206.00364) で推奨されているノイズスケジュールを使用します。よく見ると、終盤に近いほどノイズのステップサイズが小さくなっていることがわかります。この調整により、画像の品質が向上します。

#### DDIM と PLMS

DDIM (Denoising Diffusion Implicit Model) と PLMS (Pseudo Linear Multi-Step Method) は、オリジナルの Stable Diffusion v1 に含まれていたサンプラーです。DDIM は拡散モデル向けに設計された最初期のサンプラーの 1 つであり、PLMS は DDIM より新しく高速な代替手段です。これらは一般的に古いものと見なされており、現在ではあまり広く使用されていません。

#### DPM と DPM++

DPM (Diffusion Probabilistic Model Solver) と DPM++ は、2022 年にリリースされた拡散モデル向けの新しいサンプラーです。これらは類似したアーキテクチャを持つソルバー群を表しています。

DPM と DPM2 は似ていますが、DPM2 は二次（より正確だが遅い）です。

DPM++ は DPM の改良版です。

DPM adaptive はステップサイズを適応的に調整します。指定されたサンプリングステップ数内で完了する保証がないため、遅くなる場合があります。

#### UniPC

UniPC (Unified Predictor-Corrector) は、2023 年にリリースされた新しいサンプラーです。ODE ソルバーの予測子・修正子法に着想を得ており、5〜10 ステップで高品質な画像生成を実現できます。

### サンプラーの選び方

このセクションでは、判断の助けとなる客観的な比較をいくつか示します。

#### 画像の収束

このセクションでは、最大 40 サンプリングステップで、異なるサンプラーを使用して同じ画像を生成します。40 ステップ目の最後の画像を基準として使用し、サンプリングがどれだけ速く収束するかを評価します。Euler 法をベンチマークとします。

> Euler、DDIM、PLMS、LMS Karras、Heun

まず、Euler、DDIM、PLMS、LMS Karras、Heun を 1 つのグループとして見てみましょう。これらは古典的な ODE ソルバーまたはオリジナルの拡散ソルバーを代表するものです。DDIM は Euler とほぼ同じステップ数で収束しますが、サンプリングステップ中にランダムノイズが注入されるため、より多くの変動があります。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_06.png" />
</Frame>

PLMS はこのテストではあまり良い結果を出しませんでした。

LMS Karras は収束に苦労しているようで、より高いベースラインで安定します。

Heun はより速く収束しますが、二次手法であるため 2 倍遅くなります。したがって、例えば Heun の 30 ステップと Euler の 15 ステップを比較するべきです。

> Ancestral サンプラー

安定した再現可能な画像が目的であれば、ancestral サンプラーの使用は避けるべきです。いずれも収束しないためです。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_07.png" />
</Frame>

> DPM と DPM2

DPM fast はあまりうまく収束しませんでした。DPM2 と DPM2 Karras は Euler より優れた結果を示しますが、やはり 2 倍遅くなるという代償があります。

DPM adaptive は独自の適応的サンプリングステップを使用するため、一見非常に良い結果に見えます。非常に遅くなる場合があります。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_08.png" />
</Frame>

> DPM++ ソルバー

DPM++ SDE と DPM++ SDE Karras は、ancestral サンプラーと同じ欠点を抱えています。収束しないだけでなく、ステップ数が変わると画像も大きく変動します。

DPM++ 2M と DPM++ 2M Karras は良好な結果を示します。Karras バリアントは、ステップ数が十分に多い場合、より速く収束します。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_09.png" />
</Frame>

> UniPC

UniPC は Euler より少し遅く収束しますが、それほど悪くはありません。

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_10.png" />
</Frame>

#### 速度

<Frame>
  <img height="404" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_11.png" />
</Frame>

DPM adaptive は収束では良い結果を示しますが、最も遅くもあります。

その他のレンダリング時間が 2 つのグループに分かれていることに気づいたかもしれません。最初のグループはほぼ同じ時間（約 1x）で、もう一方のグループは約 2 倍の時間（約 2x）がかかります。これはソルバーの次数を反映しています。2 次ソルバーは、より正確ではありますが、ノイズ除去 U-Net を 2 回評価する必要があります。そのため 2 倍遅くなります。

#### 品質

もちろん、画像がひどく見えるのであれば、速度や収束には意味がありません。

**最終画像**

まず画像のサンプルを見てみましょう。

<Frame>
  <img height="1200" src="https://next-app-static.s3.ap-southeast-1.amazonaws.com/get-started/sampler_12.png" />
</Frame>

DPM++ fast はかなり大きく失敗しました。Ancestral サンプルは、他のサンプラーが収束した画像には収束しませんでした。

Ancestral サンプラーは子猫の画像に収束する傾向があり、決定論的なものは猫に収束する傾向があります。自分にとって良く見える限り、正解はありません。

知覚品質
画像は、収束していなくても見栄えが良い場合があります。各サンプラーがどれだけ速く高品質な画像を生成できるかを見てみましょう。

BRISQUE (Blind/Referenceless Image Spatial Quality Evaluator) で測定された知覚品質が表示されます。これは自然画像の品質を測定します。

ここでは DDIM が驚くほど良い結果を出しており、わずか 8 ステップでグループ内最高品質の画像を生成できます。

### では…どれが最適なのでしょうか？

私のおすすめは次のとおりです。

1. 高速で、収束し、新しく、十分な品質のものを使いたい場合、優れた選択肢は次のとおりです。

* 20 – 30 ステップの DPM++ 2M Karras
* 20-30 ステップの UniPC。

2. 高品質な画像が欲しく、収束を気にしない場合、良い選択肢は次のとおりです。

* 10-15 ステップの DPM++ SDE Karras（注：これは遅いサンプラーです）
* 10-15 ステップの DDIM。

3. 安定した再現可能な画像を好む場合は、ancestral サンプラーの使用を避けてください。

4. シンプルなものを好む場合、Euler と Heun は良い選択肢です。時間を節約するには、Heun のステップ数を減らしてください。
