2023-12-27 ML勉強会
StreamDiffusion: A Pipeline-level Solution for Real-time Interactive Generation
- Akio Kodaira, Chenfeng Xu, Toshiki Hazama, Takanori Yoshimoto, Kohei Ohno, Shogo Mitsuhori, Soichi Sugano, Hanying Cho, Zhijian Liu, Kurt Keutzer
Abstract
StreamDiffusion
- インタラクティブな画像生成用に設計されたリアルタイム拡散パイプライン
- 非常に高速
- 高品質
既存の拡散モデルの特徴
- テキストまたは画像プロンプトから画像を作成することに優れている
- リアルタイムの画像生成が必要な場面では速度が不十分であることが多い
- メタバース、ビデオ ゲーム グラフィックスのレンダリング、ライブ ビデオ ストリーミング、ブロードキャストなど、高スループットが不可欠な連続入力を伴うシナリオ
StreamDiffusionの高速化の取り組み
- ノイズ除去プロセスを逐次処理からバッチ処理に変更
- 流動的で高スループットのストリームを可能にした
- さまざまなノイズ除去レベルで逐次ノイズ除去方法と比較して約 1.5 倍の高速化を達成
- 新しい入出力キューを設計
- データ入力の頻度とモデルの処理速度の不均衡を並列化
- 効率的にストリーミング処理を行えるようになった
- Residual Classifier-Free Guidance (RCFG) アルゴリズムの提案
- 現在広く使用されているClassifier-free Guidance (CFG)の実装には、負の条件付きノイズ除去の計算において冗長で非効率的な部分があった
- この冗長な計算を軽減するために、負の条件付きノイズ除去ステップを1つ、あるいはゼロに減らす新しいResidual Classifier-Free Guidance (RCFG) アルゴリズムを提案
- 従来のCFGと比較して最大 2.05 倍の高速化
- 確率的類似性フィルタリング戦略
- 類似度に基づいてフィルタリングを行う
- 消費電力を最適化し、GPU のアクティブ化頻度が大幅に削減され、GPU利用効率が向上
全ての取り組み結果
- 1つのRTX 4090 GPU上で画像生成のスループットを最大91.07fpsまで向上
- Diffusersが開発したAutoPiplineのスループットを59.56倍以上改善
- 静止画のシーン入力に対して、エネルギー消費が1つのRTX 3060 GPUでは2.39倍、1つのRTX 4090 GPUでは1.99倍のエネルギー消費を大幅に削減
1 Introduction
拡散モデルの活用
- 近年、Stable DiffusionやDALLE-3などの拡散モデルがサービスとして提供されている
- メタバース内のアプリケーションだけでなく、オンラインビデオストリーミングやブロードキャストの分野でも拡散モデルが活用されている
- これらの分野では、効率的な人間との対話を実現するために、高スループットと低遅延を確保する拡散パイプラインが必要
- バーチャルYouTuberを作成するための拡散モデルなど
従来の取り組み
- ノイズ除去ステップの削減
- イテレーション回数を50ステップから数ステップ or 1ステップに減らす
- ステップ数を減らす手法
- 多段階の拡散モデルを数段階に蒸留
- 拡散プロセスをニューラルODEで再定式化
- 量子化
- 拡散モデルに量子化を適用
StreamDiffusionの取り組み
- Stream Batch:連続的な入力を効率的に処理するために、元の逐次的な除去をバッチ処理に変換します。
- Residual Classifier-Free Guidance (RCFG):負の条件付けの計算コストを大幅に削減するために、仮想的な残差ノイズを導入します。
- Input-Output Queue:入力画像と出力画像の前処理と後処理を並列化するために、キュー戦略を利用します。
- Stochastic Similarity Filter:入力画像の類似度に基づいて拡散モデルをパスする処理を組み込むことで、GPUの使用量を削減します。
- Pre-computation:プロンプト埋め込み、サンプルノイズ、スケジューラ値など、静的な値を事前に計算してキャッシュします。
- Model Acceleration and Tiny AutoEncoder:TensorRTを用いてU-NetとVAEの推論速度を向上させ、TAESDを用いてVAEを軽量化します。
StreamDiffusionは、標準的な消費者向けGPUで画像生成タスクにおいて91.07fpsを達成し、拡散モデルの商用化に向けて有望なソリューションを提供します。
2 関連研究
2.1 拡散モデル
- ノイズを加えた画像から元の画像を予測するモデル
- (用語解説)
- ノイズを加えた画像→ノイズを除去した画像のステップをという
- ノイズ除去の一連のネットワークをU-Netという
- 高品質の画像能力と、生成された画像に対する制御レベルにより、商業分野で大きな関心を集めている
- テキスト画像変換、画像編集、ビデオ生成などがある
Consistency Model(一貫性モデル)
- 一貫性モデルを使用すると、画質をほとんど損なうことなく、サンプリングプロセスの効率を向上できる
- ノイズがNステップ進んだ状態から、1ステップもしくは数ステップで原点(ノイズなし)に戻せるモデル
- Probability Flow ODEと呼ばれる常微分方程式の解で表現できる
- これに基づいて、最近の研究は、必要なサンプリング手順の数を削減することで拡散モデルの効率を向上させ、実際の適用性と効率をさらに拡大することに焦点を当てている
2.2 拡散モデルの高速化
- 拡散モデルは現在、出力生成速度が遅いという欠点がある
- この欠点に対処するために、いくつかの戦略が提案されてきた
- 追加のトレーニングを必要としない手法
- Ordinary Differential Equation (ODE)ソルバーの使用
- 適応的ステップサイズソルバー
- 予測修正方法
- 学習ベースの方法
- 最適化された離散化技術
- ニューラル オペレーターの設計
- モデル蒸留
従来の方法は主に個々のモデル設計の低レイテンシに焦点を当てていたが、
StreamDiffusionは前述のアプローチとは大きく異なり、全体のスループットに着目
- 高スループットなパイプラインの設計
- インタラクティブな拡散生成のために特別に設計された包括的なパイプラインの設計
- 低レイテンシの拡散モデルとシームレスに統合できるように設計
- インタラクティブな生成プロセスにおける速度の大幅な向上が実現
3 StreamDiffusion パイプライン
StreamDiffusion は、高スループットを目指した新しい拡散パイプラインです。
以下の主要コンポーネントで構成されています(後ほど説明)
- Stream Batch
- Residual Classifier-Free Guidance (RCFG)
- Input-Output Queue: 入出力キュー
- Stochastic Similarity Filter: 確率的類似性フィルター
- Pre-computation: 事前計算
- Model Acceleration and Tiny AutoEncoder: モデルの高速化と Tiny AutoEncoder
3.1 Stream Batch: ノイズ除去ステップのバッチ処理
- 拡散モデルのノイズ除去ステップ
- 逐次的に実行されている
- 逐次的に実行しているため、ステップ数に比例して U-Net の処理時間が増加
- 高品質の画像を生成するにはステップ数を増やす必要がある
- リアルタイムに画像生成する場合、入力ごとに逐次処理していると高遅延が発生
- ここでストリームバッチと呼ばれる手法を提案
- ストリーム バッチ技術
- 連続したノイズ除去操作をバッチ処理に再構築
- 図2に示すように、各バッチは所定数のノイズ除去ステップに対応
- 各バッチのサイズは、これらのノイズ除去ステップの数によって決まる
- このアプローチにより、各バッチ要素は、U-Net を介した 1 回のパスでノイズ除去シーケンスをさらに 1 ステップ進めることができる
- この方法を繰り返し適用することで、タイムステップでエンコードされた入力画像をタイムステップでの対応する画像間の結果に効果的に変換することができ、それによりノイズ除去手順を合理化できる
- (天才)
- 図2 :ストリーム バッチの概念
- Stream Batchの効果
- U-Netの推論回数が大幅に軽減される
- 処理時間はステップ数に応じて直線的に増加しない
- 従来は処理時間と生成品質がトレードオフの関係だったが、VRAM容量と生成品質がトレードオフになった
- 適切な VRAM スケーリングを使用すると、単一の U-Net 処理サイクル内で高品質の画像を生成でき、ノイズ除去ステップの増加によって課せられる制約を効果的に克服できる
3.2 Residual Classifier-Free Guidance (RCFG)
<— 拡散モデルに使われてきたGuidanceの歴史を補足として追加 —>
拡散モデル(original) ※再掲
- ノイズを加えた画像から元の画像を予測するモデル
Classifier Guidance: 分類モデルを用いた誘導
- Diffusion Models Beat GANs on Image Synthesis Prafulla Dhariwal, Alex Nichol
- 当時拡散モデルはGANのSOTAを超えられていなかった
- 従来GANsではラベルを用いた条件付き生成が効果的であることが知られていた
- 画像生成時に分類モデルを使用してラベルにあった画像を生成するように誘導する手法
- ImageNetなどで学習された画像ラベル分類モデルを用意しておく
- ノイズ画像から画像を生成する時、分類モデルの勾配を利用して誘導する
- ラベルの方にちょっとずらす
- この取り組みで当時SOTAだったBigGANを超えた
- 拡散モデルの生成画像の品質向上に貢献
Classifier-free guidance (CFG): 分類器を用いずに同等の精度を出す手法
- Classifier-Free Diffusion Guidance Jonathan Ho, Tim Salimans
- Classifier Guidanceの欠点:
- 別途ImageNetなどで学習した分類モデルを用意する必要がある
- モデルが複雑になる
- ノイズあり画像に対しても分類できる必要がある
- 分類モデルを用いずに条件付き生成を可能にした手法(Classifier-free guidance)の提案
- 拡散モデルと分類モデルを同時に学習
- 無条件の拡散モデルとラベル付き条件付き拡散モデルを共同で学習する
- 無条件拡散モデルはスコアを予測する際にクラスをnullトークンφを入力するだけなので、同じネットワークを使用する
- 無条件のノイズを条件付けした学習で誘導する
- ϵ~θ(zλ, c): 誘導された推定値(CFG)
- ϵθ(zλ, c): 条件付けモデルの推定値
- ϵθ(zλ): 無条件モデルのスコア推定値
- このやり方で分類器を用いたモデルと同様の品質と多様性を達成した。
<—ここまで: 以下論文の内容に戻る —>
- Classifier-Free Guidanceの計算式について
- ※元のClassifier-Free Guidanceの論文では条件付けモデルと無条件モデルを使っていたが、Compositional Visual Generation with Energy Based Models Yilun Du, Shuang Li, Igor Mordatch の理論を応用し、負の条件付けモデルを利用した式で計算している
- ϵτi,cfg: CFG残差ノイズ
- ϵτi,c: 条件付き埋め込みcを用いたノイズ除去ステップτiで予測された残差ノイズ
- ϵτi,c¯: 負の条件付き埋め込みc¯を用いたノイズ除去ステップτiで予測された残差ノイズ
- γ: ガイダンススケール
- (正負の)条件付き埋め込みの誘導によって生成画像の品質を向上させるメリットが得られる
- 一方で負の条件付き埋め込みの残差ノイズを計算するには、各入力変数を負の条件付き埋め込みとペアにして、推論ごとに U-Net に渡す必要がある
この欠点に対処するために、Residual Classifier-Free Guide (RCFG) を導入します
Residual Classifier-Free Guidance
負の条件付け埋め込みに対する追加の U-Net 推論の計算コストが大幅に削減される手法
まず、エンコードされた入力変数x0をノイズ分布xτ0に転送
- ατ0とβτ0はノイズスケジューラによって決定される値であり、ϵ0はガウス分布N(0,1)からサンプリングされたノイズ
一貫性モデル: ノイズがNステップ進んだ状態から、1ステップもしくは数ステップで原点(ノイズなし)に戻せるモデル
- Probability Flow ODEと呼ばれる常微分方程式の解で表現できる
- (非常に難しく、理解は追いつけていません)
潜在一貫性モデル(LCM): 潜在空間を利用して一貫性モデルをより少ないステップで推論できる
- CFGの残差ノイズϵτi−1,cfgを使用してデータ分布xˆ0,τi−1,cfgを予測
- データ分布xˆ0,τi−1,cfgから次のステップのノイズ分布xτi,cfgを生成
- ϵiもガウス分布N(0,1)に従います
- ここで本来であれば、次のステップの負の条件付き残差ノイズϵτi,c¯を計算します
- このまま計算すると追加のU-Net計算コストが必要になる
- ここの計算コストを削減したい
ここで次のステップのCFG計算において、追加のU-Net計算コストを必要とする次のステップの負の条件付き残差ノイズϵτi,c¯を計算する代わりに、仮想残差ノイズϵτi,c¯′と、元の入力画像変数x0をxτi,cfgから予測する仮想負の条件付き埋め込みc¯′を計算
図 3 :仮想残差ノイズ
- xˆ0,cfgはデータ分布
- オレンジ色のベクトル: 仮想残差ノイズϵτi,c¯′
- xτi,cfg(次のステップのノイズ分布)からx0から予測するベクトル
- 仮想残差ノイズϵτi,c¯′はxˆ0,cfgを用いて入力x0を予測するベクトル
- (3)と似た形になっている
- 初期値x0と、式(4)を通じて順次得られるxτi,cfgの後続の値を用いて、仮想残差ノイズϵτi,c¯′は、これらの値を式(5)で使用することにより解析的に決定することができます
- 次のようにRCFG(Residual Classifier-Free Guidance)を定式化できます
- δは、仮想残余ノイズの効果を和らげ、仮想残余ノイズの近似誤差を軽減する大きさの緩和係数です。
Self-Negative RCFG
元の入力画像の潜在的なx0を残差項として使用するRCFGは、ガイダンススケールγの大きさに応じて元の入力画像から逸脱した結果を効果的に生成することができ、追加のU-Net計算の必要なしに条件付けの効果を強化することができます。
- この方法をSelf-Negative RCFGと呼ぶ
Onetime-Negative RCFG
元の入力画像x0から逸脱するだけでなく、任意のネガティブ条件からも逸脱することができます。
- 最初のノイズ除去ステップのために一度だけUNetを使用してネガティブ条件付きの残差ノイズϵτ0,c¯を計算し、これを使用してネガティブ条件付きのノイズ除去データを予測します
- 式6では、x0の代わりにxˆ0,τ0,c¯を使用することで、制御可能なネガティブコンディショニング埋め込みc¯から生成結果を効果的に発散させることができる仮想的な残差ノイズϵτi+1,c¯′を得ることができます。
- これをOnetime-Negative RCFGと呼びます。
SelfNegative RCFGとOnetime-Negative RCFGの計算式
式2, 6, 8を組み合わせることにより、SelfNegative RCFGとOnetime-Negative RCFGの両方を次の方程式で一様に表現することができます。
- ϵτ0,c¯ = ϵ0のとき、式9は式6と同一で、Self-Negative RCFGの結果を返します。
従来のCFGとは対照的に、Self-Negative RCFGとOnetime-Negative RCFGはそれぞれU-Netのn回とn+1回の計算のみを必要とします。(nはノイス除去ステップの数)
(RCFGの話は難しすぎてほぼ理解できていないので、元となる論文を読んで再挑戦したい)
3.3 Input-Output Queue: 入出力キュー
- 拡散モデルのパイプライン
- 画像前処理→テンソル化→ニューラルネットワーク→後処理→画像生成
- パイプラインの特徴
- VAEやU-Netなどのニューラルネットワークモジュールがボトルネック
- 画像処理プロセスも、無視できない量の追加の処理時間が必要
- 様々な処理がある
- 入力イメージをパイプラインで管理可能なテンソル データ形式に変換
- デコードされたテンソルを出力イメージに変換し直す
- など
- 入力画像のサイズ変更、テンソル形式への変換、正規化などの特定の操作を綿密に実行する必要がある
- リアルタイム処理では大量の入力を素早く処理する必要がある
- システム全体のスループット向上が鍵
- スループット向上施策
- 画像の前処理や後処理など、ニューラル ネットワークモジュールによる処理を必要としないプロセスを別のスレッドに分離
- 並列処理を可能にする
- 図4に示すように、効率的な並列化を可能にする入出力キュー システムを設計
図4 :入出力キュー
このシステムは次のように動作します。
- 処理された入力テンソルは、拡散モデル用に体系的にキューに入れられます。
- 各フレーム中に、拡散モデルは入力キューから最新のテンソルを取得して VAE エンコーダに転送し、それによって画像生成シーケンスをトリガーします。
- 同様に、VAE デコーダからのテンソル出力は出力キューに供給されます。
- 後続の出力イメージ処理フェーズでは、これらのテンソルは一連の後処理ステップを受け、適切な出力形式に変換されます。
- 最後に、完全に処理された画像データが出力処理システムからレンダリング クライアントに送信されます。
これにより、機器の故障や通信エラーによる入力画像の一時的な欠落にも対応し、スムーズなストリーミングを実現します
(すごい)
3.4 Stochastic Similarity Filter: 確率的類似性フィルター
- 同じまたはほぼ同じ入力画像が何度も VAE や U-Net に供給される状況
- ユーザーの操作が少ないまたは静的な環境のシナリオ
- 画像が変わらない
- 最小限の変化しか示さない
- 連続入力を伴うコンテキスト
- この状況場合、同じまたはほぼ同じ入力画像が何度も VAE や U-Net に供給される
- これにより、同一またはほぼ同一の画像が生成され、GPUリソースが無駄に消費される
不必要な計算負荷を最小限に抑えるために、確率的類似性フィルター (SSF)を提案
図5 :推論パイプラインの概要: VAE や U-Net などのコア拡散推論パイプライン
- SSF: 左側のStochastic Similarity Filter
現在の入力画像間のコサイン類似度を計算します。現在の入力画像Itと過去の参照フレーム画像Iref
このコサイン類似度に基づいて、後続の VAE および U-Net プロセスをスキップする確率を計算します
- ηは類似性のしきい値です
- VAE エンコーディング、U-Net、VAE デコーディングなどの後続のプロセスをスキップするかどうかを決定
- スキップしなかった場合は、その時点の入力画像が保存され、参照画像として更新
SSFメカニズムの効果
- フレーム間類似性が低い動的シーンではネットワークが完全に動作
- フレーム間類似性が高い静的シーンではネットワークの動作率が低下し、計算リソースが節約
- GPU の使用量は入力画像の類似性に基づいてシームレスに調整され、ダイナミクスが変化するシーンにスムーズに適応
note:
- ハードしきい値を使用して計算をスキップするかどうかを決定する場合と比較して、提案されている確率サンプリング ベースの類似性フィルター戦略の方が、よりスムーズなビデオ生成につながることを強調
- ハードしきい値ではビデオがスタックする傾向があり、ビデオ ストリーミングを視聴する印象が損なわれますが、サンプリング ベースの方法では滑らかさが大幅に向上します。
3.5 Pre-computation: 事前計算
- 右側のオレンジと青がcache
プロンプト埋め込みキャッシュ(オレンジ)
- プロンプト埋め込みについて
- U-Net アーキテクチャでは、入力潜在変数と条件付け埋め込みの両方が必要
- 条件付け埋め込みはプロンプト埋め込みから派生し、異なるフレーム間でも一定のまま
- これを最適化するために、プロンプトの埋め込みを事前に計算し、キャッシュに保存
- インタラクティブ モードまたはストリーミング モードで呼び出される
- キャッシュの仕組み
- U-Net 内では、各フレームのプロンプト埋め込みキャッシュを用いてキーと値を計算
- これらのキーと値のペアも保存し、再利用できるように U-Net を変更
- 入力プロンプトが更新されるたびに、U-Net 内でこれらのキーと値のペアが再計算され、更新される
ノイズキャッシュ(青)
- ノイズ除去ステップごとにガウスノイズϵiを事前サンプリングし、キャッシュに保存
- 異なるタイムステップ間で一貫した入力フレームを実現し、計算効率を向上
- 各ノイズ除去ステップは異なるノイズを持つ一方で、すべてのタイムステップでは同じノイズが保持されることを保証します( ≠ and = )
- この図で見るとわかりやすい
このアプローチは、特に画像間のタスクに関連します。
スケジューラキャッシュ(青)
各ノイズ除去ステップτのノイズ強度係数ατとβτは次のように定義されるが、これらも事前計算する
- 低スループットのシナリオでは重要ではありませんが、60 FPS を超えるフレーム レートでは、これらの静的な値を再計算するオーバーヘッドが顕著になります。
- 事前に計算されたキャッシュを使用してループ内のこれらの静的値を再計算して 60 FPS (つまり 16.666 ミリ秒) を達成すると、62 FPS (つまり 16.066 ミリ秒) を達成できます。
潜在一貫性モデルの計算に使う値のキャッシュ
潜在一貫性モデル (LCM) 用のキーと値のキャッシュに特別な設計があることに注意してください。元の論文に従って、次のように計算する必要があります。cskip(τ ), cout(τ )は次の式を満たすようにします。
cskip(τ ), cout(τ )は元の LCM では次のように構成されます。
- σdata = 0.5
- タイムステップのスケーリングファクター s = 10
- s = 10で、cskip(τ )とcout(τ )が境界条件を一貫性モデルに適用するデルタ関数を近似することができます
- (つまり、デノイジングステップτ = 0で、cskip(0) = 1、cout(0) = 0; τ≠ 0で、cskip(τ ) = 0、cout(τ ) = 1)
推論時には、これらの関数を何度も再計算する必要はありません。すべてのデノイジングステップτに対して事前にcskip(τ )とcout(τ )を予め計算するか、または任意のデノイジングステップτに対して一定の値cskip = 0、cout = 1を単純に使用することができます。
3.6 モデルの高速化と Tiny AutoEncoder
モデルの高速化
- TensorRTを使用して U-Net エンジンと VAE エンジンを構築し、推論速度をさらに加速
- TensorRT: 高性能の深層学習推論を容易にする NVIDIA の最適化ツールキット
- レイヤー融合、精度キャリブレーション、カーネル自動チューニング、動的テンソル メモリなどを含む、ニューラル ネットワーク上でいくつかの最適化を実行する
- これらの最適化は、深層学習アプリケーションのスループットと効率を向上させるように設計されています。
- 速度を最適化するために、静的なバッチ サイズと固定入力寸法 (高さと幅) を使用するようにシステムを構成
- 計算グラフとメモリ割り当てが特定の入力サイズに合わせて最適化され、処理時間が短縮
- ただし、これは、異なる形状 (つまり、さまざまな高さと幅) の画像を処理する必要がある場合、または異なるバッチ サイズ (ノイズ除去ステップ用のバッチ サイズを含む) を使用する必要がある場合、これらの特定の寸法に合わせた新しいエンジンを構築する必要があることを意味するため注意が必要
- TensorRT で適用される最適化と構成は最初に定義されたディメンションとバッチ サイズに固有であり、これらのパラメーターを変更すると TensorRT 内のネットワークの再構成と再最適化が必要になるため
Tiny AutoEncoder
従来の Stable Diffusion AutoEncoder に相当する合理的かつ効率的なものとして設計されたTiny AutoEncoder(としてTAESD)を採用します。
TAESD は、潜在画像をフルサイズの画像に迅速に変換し、大幅に削減された計算量で復号プロセスを実行することに優れています
4 実験
- LCM, LCM-LoRA, SD-turbo に StreamDiffusion パイプラインを実装
- モデル アクセラレータとして TensorRT を使用
- 軽量で効率的な VAE には TAESD を使用
- 画像生成のために、NVIDIA RTX4090 GPU、Intel Core i9-13900K CPU、Ubuntu22.04.3 LTS、および NVIDIA RTX3060 GPU、Intel Core i7-12700K、Windows11 でパイプラインをテストします。
- このようなコンシューマ GPU と互換性があります
- 主に 100 枚の画像を処理する際の画像ごとの平均推論時間を介してスループットを評価していることに注意してください。
4.1 ノイズ除去バッチの定量的評価
ノイズ除去バッチと元の逐次的ノイズ除去(TensorRTなし)の比較
図 8 :StreamBatch と TensorRT を使用しない逐次的ノイズ除去との平均推論時間の比較。
- ノイズ除去バッチ戦略を実装すると、処理時間が大幅に改善されることがわかります。
- 順次ノイズ除去ステップで従来の U-Net ループと比較して半分の削減を達成します。
ノイズ除去バッチと元の逐次的ノイズ除去(TensorRTあり)の比較
図9 :Stream Batch と TensorRT を使用した逐次的ノイズ除去との平均推論時間の比較
- 元の逐次的ノイズ除去にTensorRT を適用しても、ノイズ除去バッチの方が大幅に効率が良い
AutoPipelineForImage2Imageとの比較
Huggingface diffusersによって開発されたAutoPipelineForImage2Imageと比較
- TensorRTを使っても使わなくても、AutoPipelineForImage2ImageよりもStreamDiffusionの方が圧倒的に速いことがわかる
RCFGと従来のCFGとの比較
RCFGと従来のCFGを使用したStreamDiffusionパイプラインの推論時間の比較
- Self-Negative RCFGとOnetime-Negative RCFG
- Self-Negative RCFGを適用するために必要な追加の計算は軽量のベクトル演算であり、推論速度にあまり違いがない
- Self-Negativeを使用しない場合と比較して推論時間の変化は無視できる程度
- RCFGと従来のCFGとの比較
- ノイズ除去ステップの数が増加するにつれて、RCFG(Self-Negative RCFGおよびOnetime-Negative RCFGの両方)は従来のCFGに比べて推論時間がより高速になる
- ノイズ除去ステップ: 5では、従来のCFGと比較して、Self-Negative RCFGでは 2.05 倍、Onetime-Negative RCFG では 1.79 倍の速度向上が観察できる
4.2 エネルギー消費
確率的類似性フィルター (SSF) に関連するエネルギー消費の包括的な評価
入力画像が主に静的であり、高度な類似性を示すインスタンスにおいて、SSF を組み込むことで GPU の使用量が大幅に軽減されることが明らかになりました。
図6 :静的シーンでの GPU 使用率の比較。(GPU: RTX3060、フレーム数: 20)
- 青線: SSFありのGPU 使用率, オレンジ色: SSF なしの GPU 使用率
- 赤線: 入力フレーム間のコサイン類似度に基づいて計算されたスキップ確率
- プロットの上部には、同じタイムスタンプに対応する入力イメージが表示
- この場合、入力画像内の文字は点滅しているだけ
結果
- 1 つのRTX3060GPUで平均消費電力が85.96wから35.91wに大幅に減少
- 1 つのNVIDIA RTX4090GPUで同じ静的シーン入力ビデオを使用すると、消費電力は238.68wから119.77wに削減
図 7 :動的シーンでの GPU 使用率の比較。(GPU: RTX4090、フレーム数: 1000)
- 入力画像内のキャラクターはダイナミックに動き続けている
- 非常に動的な条件下であっても、SSFは動的なシーケンスから類似性を示すいくつかのフレームを効率的に抽出している
- 平均消費電力が236.13wから199.38wに大幅に減少
これらの発見は、特に静的または最小限の変化の視覚コンテンツを含むシナリオにおいて、エネルギー効率を向上させる確率的類似性フィルターの有効性を強調しています。
4.3 アブレーション研究
各コンポーネントの寄与を理解するために、さまざまな構成の下の平均推論時間を比較
- Ours(full StreamDiffusion)
- txt2img, img2img: ノイズ除去ステップ 1 および 4 で、それぞれ 10.98/9.42 ミリ秒および 26.93/26.30 ミリ秒の平均推論時間を達成
- ストリーム バッチ処理を削除
- ノイズ除去ステップ: 4で大幅にレイテンシが増加
- TensorRTなし
- レイテンシがさらに増加
- 事前計算の削除
- レイテンシが増加しますが、それほど大きくはなかった
- 理由は、StableDiffusionにおけるキーと値の計算の数が限られているためであると考えられる
- Tiny AutoEncoderなし
- レイテンシがさらに増加
- 入出力キューの除外
- レイテンシはあまり増加しない
- キューは前処理・後処理の並列化に影響があるため、推論時間にはあまり影響を与えない
- 任意の最適化なし(w/o any optimization)
- レイテンシが大幅に増加
- AutoPipelineImage2Imageのノイズ追加機能では、リクエストごとにテンソルの精度が fp32からfp16に変換され、速度の低下につながっている
- 対照的に、StreamDiffusionパイプラインでは、変数や計算デバイスの精度が事前に標準化されます。推論中にテンソル精度の変換や計算デバイスの転送は実行されない
- その結果、最適化を行わなくても(TRTなしでも)、パイプラインは速度の点で AutoPipelineImage2Image よりも大幅に優れている
- (論文まま記載したが、比較対象がStreamDiffusionの最適化ありなしではなくAutoPipelineImage2Imageとの比較になっている?)
- SSF
- レイテンシの影響なし
Self-Negative RCFG などの追加モジュールを使用したパイプラインの推論時間への影響は、表2,3に示すとおり、軽量の行列演算とベクトル演算のみを実行するため、推論時間に顕著な影響を及ぼしません。
4.4 定性的評価
リアルタイムの画像間変換に StreamDiffusion パイプラインを使用した生成結果を図1に示します。
図1:カメラとスクリーン キャプチャからのリアルタイムの画像間の結果
Residual Classifier-Free Guide(RCFG)を使用した、生成された画像の調整を促すプロンプトコンディショニングを図10に示します。
図10 :CFG なし、標準 CFG、およびセルフネガティブおよびワンタイムネガティブ アプローチを使用した RCFG を使用した結果。
- CFG と RCFG は両方ともガイダンス スケールを使用しますγ=1.4。RCFG の場合、最初の 2 行はマグニチュード モデレーション係数を使用します。δ=1.0、3行目はδ=0.5。
- CFGなしで生成された画像(w/o CFG)
- プロンプトとの整合性が弱いことがわかる
- 特に色の変更や存在しない要素の追加などが苦手
- CFG・RCFG共通
- プロンプトに従い、髪の色の変更、体のパターンの追加、メガネなどのオブジェクトの組み込みなど、元の画像を変更する機能が強化されている
- RCFG
- 標準のCFGと比較してプロンプトの影響がより強くなっている
- image2imageに限定されるが、入力画像の潜在値と初めにサンプリングされたノイズを連続的に参照しながら、負の条件付けベクトルを計算している。このアプローチによって、負の条件付けベクトルの方向性を一貫したものにし、標準的なCFGが各ノイズ除去ステップで負の条件付けベクトルを計算するためにUNetを使用するのと比べて、元の画像からの変化をより鮮明にする結果をもたらします。
- ただし、生成される結果の安定性に関してトレードオフがある
- Self-Negative RCFG
- プロンプトの影響力を高めまるが、生成される画像のコントラストが増加するという欠点がある
- これに対処するには、式(7)のδを調整することで、仮想残留ノイズベクトルの大きさを調節し、コントラストの上昇を軽減することができます。
- Onetime-Negative RCFG
- 適切に選ばれたネガティブなプロンプトを持ち、プロンプトへの忠実度を向上させながらコントラストの増加を効果的に軽減することができる
- このアプローチにより、生成された画像を元の画像とより自然に融合させることができる
最後に、標準的なテキストから画像への生成結果の品質を図11に示します
図11 :Text-to-Image の生成結果。
- sd-turboモデルを使用(赤枠外の右下)
- 高画質な画像をノイス除去ステップ: 1で生成できる
- GPU:RTX 4090、CPU:Core i9-13900K、OS:Ubuntu 22.04.3 LTSの環境で、当社が提案するStreamDiffusionパイプラインとsd-turboモデルを用いて画像を生成すると、これほどの高画質な画像を短時間(100fpsを超えるレート)で生成することが可能です。
- さらに、一度に生成される画像のバッチ サイズを 12 に増やすことで、パイプラインは 1 秒あたり約 150 枚の画像を継続的に生成できます。
- LCM-LoRAとマージされたコミュニティモデルを使用(赤枠)
- ノイズ除去ステップ: 4で生成
- これらのLCMモデルでは、高画質な画像生成を行うには複数のステップが必要となり、40fps程度まで速度が低下してしまうが、LCM-LoRAベースのモデルではベースモデルを柔軟に利用できるため、多彩な表現の画像生成が可能となる
5 結論
- インタラクティブな拡散生成のためのパイプライン レベルのソリューションである StreamDiffusion を提案
- StreamDiffusion は、ストリーム バッチ、残差分類器不要のガイダンス (RCFG)、並列化のための IO キュー、確率的類似性フィルター、事前計算、Tiny AutoEncoder、モデル アクセラレーション ツールの使用など、スループットと GPU 使用率の両方に対するいくつかの最適化戦略で構成されています。
- これらの要素を相乗的に組み合わせることで、効率が大幅に向上します。
- 具体的には、StreamDiffusion は、画像生成タスクに関して、標準の消費者向け GPU で最大 91.07 フレーム/秒 (fps) を達成します。このパフォーマンス レベルは、メタバース、オンライン ビデオ ストリーミング、放送セクターを含む (ただしこれらに限定されない) さまざまなアプリケーションにとって特に有益です。
- さらに、StreamDiffusion は GPU の消費電力を大幅に削減し、少なくとも 1.99 倍の削減を達成しました。
- この顕著な効率の向上は、StreamDiffusion の商用アプリケーションの可能性を強調し、エネルギーを重視した高性能コンピューティング環境に魅力的なソリューションを提供します
感想
- めちゃくちゃ大変だったが知見の詰まった良い論文だった
- アプリケーション系のテクニックもごりごりに組み込まれててとてもよかった
- RCFGの計算が歴史的経緯てんこ盛りすぎて難しかった。多分もう少し手前の論文をおさえておけばよさそう。別の回でやりたい。