「TRLを介してDDPOを使用して、安定したディフュージョンモデルを微調整する」
「TRLを通じてDDPOを利用し、安定したディフュージョンモデルを微調整する方法」
導入
拡散モデル(例:DALL-E 2、Stable Diffusion)は、特に写真のような写真のリアルな画像を生成することで広く成功している生成モデルの一種です。ただし、これらのモデルによって生成される画像は常に人間の好みや意図と一致しているわけではありません。これが整合性の問題が生じます。つまり、「品質」といった人間の好みやプロンプトを介しては表現しにくい意図との整合性がモデルの出力と一致していることを確認する方法は何でしょうか?そこで、強化学習が登場します。
大規模言語モデル(LLM)の世界では、強化学習(RL)はモデルを人間の好みに合わせるための非常に効果的なツールとして証明されています。それはChatGPTのようなシステムが優れたパフォーマンスを発揮するための主要なレシピの一つです。より具体的には、ChatGPTが人間のようにチャットするためのReinforcement Learning from Human Feedback(RLHF)の重要な要素です。
Blackらは、「Training Diffusion Models with Reinforcement Learning, Black」という論文で、拡散モデルをRLを活用して目的関数に対して微調整する方法を示しています。これはDenoising Diffusion Policy Optimization(DDPO)と呼ばれる手法を使用します。
このブログ記事では、DDPOが生まれた経緯、その動作方法の簡単な説明、およびRLHFワークフローにDDPOを組み込んで人間の美意識により整合したモデルの出力を達成する方法について説明します。そして、新たに統合されたDDPOTrainer
とtrl
ライブラリを使用してモデルにDDPOを適用する方法について、Stable Diffusionでの実行結果を検討します。
- 「推論APIを使用してAIコミックファクトリーを展開する」
- 「GAN(生成敵対ネットワーク)はおそらくご存知ですが、それを訓練する方法を知っていますか?」
- 「ONNX Runtimeを使用して130,000以上のHugging Faceモデルを高速化する」
DDPOの利点
DDPOは、RLを使用して拡散モデルを微調整する方法に関する唯一の有効な回答ではありません。
入る前に、他のRLソリューションとの利点の理解に関して覚えておくべき2つの重要なポイントがあります。
- 計算効率が重要です。データ分布が複雑になるほど、計算コストが高くなります。
- 近似は良いですが、近似は本物ではないため、関連するエラーが積み重なります。
DDPO以前、Reinforcement Learningを使用して拡散モデルを微調整する確立された方法は、Reward-weighted regression(RWR)でした。RWRは、拡散モデルのノイズ除去損失関数を使用し、モデル自体からサンプリングされたトレーニングデータと最終サンプルに関連付けられた報酬に依存するサンプルごとの損失の重み付けを再利用しています。このアルゴリズムは中間のノイズ除去ステップ/サンプルを無視します。これは機能しますが、2つの点に注意する必要があります。
- 関連する損失の重み付けによる最大尤度目的の最適化は近似最適化です。
- 関連する損失は正確な最大尤度目的ではなく、再重み付け変分境界から導出された近似です。
これらの2つの近似オーダーは、パフォーマンスと複雑な目的の扱いに大きな影響を与えます。
DDPOはこの方法を出発点として使用します。DDPOでは、最終的なサンプルに焦点を当てることでノイズ除去ステップを単一のステップとしてではなく、多段階のマルコフ決定過程(MDP)として全体のノイズ除去プロセスをフレーム化します。報酬は最後に受け取られます。この定式化に加えて、固定サンプラーを使用することにより、エージェントポリシーは任意に複雑な分布ではなく等方性のガウス分布となります。したがって、最終サンプルの近似尤度(これはRWRが取る手法です)ではなく、各ノイズ除去ステップの正確な尤度を使用します。これは非常に簡単に計算できます(ℓ(μ、σ2; x)=−n2log(2π)−n2log(σ2)−12σ2∑i=1n(xi−μ)2)。
もしDDPOについての詳細情報を知りたい場合は、元の論文と関連するブログ記事をチェックすることをお勧めします。
DDPOアルゴリズムの概要
ノイズ除去プロセスの連続性をモデル化するために使用されるMDPフレームワークとその後の考慮事項を考慮すると、最適化問題に対する対処方法として選択されるツールはポリシーグラディエント法です。具体的にはProximal Policy Optimization(PPO)です。全体的に、DDPOアルゴリズムはProximal Policy Optimization(PPO)とほぼ同じですが、特にカスタマイズされた部分として目立つのはPPOの軌道収集部分です。
以下はフローを要約した図です:
DDPOとRLHF:美的感覚を強制するための組み合わせ
RLHFの一般的な訓練の側面は、次のステップに分解することができます:
- 「基本」モデルの教師付き微調整による新しいデータの分布の学習
- 好みのデータを収集し、そのデータを使用して報酬モデルを訓練する。
- 報酬モデルを信号として使用して、強化学習によるモデルの微調整を行う。
RLHFの文脈では、好みのデータが人間のフィードバックを捉えるための主要な情報源であることに注意してください。
DDPOを組み合わせると、ワークフローは以下のように変換されます:
- 事前学習済みのディフュージョンモデルから開始する
- 好みのデータを収集し、そのデータを使用して報酬モデルを訓練する。
- 美的予測モデルを報酬信号として使用して、DDPOを使用してモデルを微調整する
一般的なRLHFのワークフローのステップ3は、後者のステップリストから欠落していることに注意してください。これは、経験的に(自分自身で確認することができるように)それが不要であることが示されているためです。
美的になるという人間の認識による拡散モデルの出力を得るための私たちの冒険を続けるために、以下の手順に従います:
- 事前学習済みのStable Diffusion(SD)モデルから始めます
- 操作可能な回帰ヘッドを持つCLIPモデルをAesthetic Visual Analysis(AVA)データセット上でトレーニングし、人々が平均的に入力画像をどれだけ好むかを予測します
- 美的予測モデルを報酬シグナラとして使用して、SDモデルをDDPOを使用して微調整する
これらの手順を念頭に置きながら、次のセクションで実際にこれらを実行する方法に進んでください。
DDPOでのStable Diffusionのトレーニング
セットアップ
開始するには、ハードウェアの面とDDPOのこの実装に関して、少なくともA100 NVIDIA GPUへのアクセスが必要です。このGPUタイプより下のものでは、すぐにメモリ不足の問題が発生します。
pipを使用してtrl
ライブラリをインストールします
pip install trl[diffusers]
これにより、メインライブラリがインストールされます。以下の依存関係はトラッキングと画像の記録に使用されます。 wandb
をインストールした後、結果を個人アカウントに保存するためにログインしてください
pip install wandb torchvision
注意: wandb
の代わりにtensorboard
を使用することも選択できます。その場合、pip
を使用してtensorboard
パッケージをインストールする必要があります。
ウォークスルー
DDPOトレーニングの責任を負うtrl
ライブラリ内のメインクラスは、DDPOTrainer
クラスとDDPOConfig
クラスです。より一般的な情報については、DDPOTrainer
とDDPOConfig
のドキュメントを参照してください。 trl
のリポジトリにはトレーニングの例もあります。これはデフォルトの入力とデフォルトのパラメータを使用してRunwayML
のデフォルトの学習済みStable Diffusionモデルを微調整するために、これらのクラスを併せて使用します。
この例のスクリプトでは、ログを取るためにwandb
を使用し、その重みは公開されているHuggingFaceリポジトリから読み込まれる美的報酬モデルを使用しています(つまり、データの収集と美的報酬モデルのトレーニングは既に完了しています)。使用されるデフォルトのプロンプトデータセットは、動物の名前のリストです。
実行するためにユーザーに必要なコマンドラインフラグ引数は1つだけです。また、ユーザーはtrl
へのモデルのアップロードに使用されるhuggingfaceユーザーアクセストークンを持っていることが期待されます。
以下のbashコマンドを実行すると、プログラムが動き出します。
python stable_diffusion_tuning.py --hf_user_access_token <token>
以下のテーブルには、正の結果と直接関連する主要なハイパーパラメータが含まれています:
提供されたスクリプトは単なる出発点ですので、ハイパーパラメータを調整したり、目的関数に合わせてスクリプトを大幅に変更することは自由です。例えば、JPEG圧縮可能性を測定する関数や、マルチモーダルモデルを使用して視覚とテキストの整合性を評価する関数を統合できるでしょう。
学んだ教訓
- 美的報酬を測定する目的関数に関しては、最小限の訓練プロンプトサイズでも、広範なプロンプトのバラエティに対して結果が一般化するように見えます。
- 訓練プロンプトサイズを増やし、プロンプトを変更して明示的に一般化しようとする試みは、ほとんど気づかれるような学習された一般的な振る舞いをほとんどもたらさず、収束速度を遅くするようです。
- LoRAは推奨されており、何度も試されているが、非LoRAも考慮すべきです。経験的な証拠から、LoRAよりも非LoRAの方が比較的複雑な画像を生成するようです。ただし、安定した非LoRAランを実行するためには、適切なハイパーパラメータを見つけることがはるかに難しいです。
- 非LoRAの設定パラメータの推奨事項は、学習率を比較的低く設定し、おおよそ
1e-5
程度の値を使用し、mixed_precision
をNone
に設定することです。
結果
次は、プロンプトbear
、heaven
、およびdune
に対するプリフィントゥーン(左)とポストフィントゥーン(右)の出力です(各行は単一のプロンプトの出力用):
制限事項
- 現時点では、
trl
のDDPOTrainerはバニラSDモデルの微調整に限定されています。 - 私たちの実験では、主に非常にうまく機能するLoRAに重点を置いていました。品質を向上させる可能性がありますが、適切なハイパーパラメータを見つけることがより難しい完全なトレーニングのいくつかの実験も行いました。
結論
Stable DiffusionなどのディフュージョンモデルをDDPOを使用して微調整すると、人間によって認識されるまたは他の指標によって評価される生成された画像の品質の重大な改善が可能です。これを目的関数として適切に概念化することができます。
DDPOの計算効率と近似に頼らない最適化能力は、同じ目標を達成するために以前の方法に比べて微調整ディフュージョンモデルを最適化するために適した候補です。
trl
ライブラリのDDPOTrainer
は、SDモデルの微調整のためにDDPOを実装しています。
私たちの実験結果は、DDPOの幅広いプロンプトにおける一般化の強さを強調していますが、明示的な一般化を試みたプロンプトの結果はまちまちでした。非LoRAセットアップに適切なハイパーパラメータを見つける難しさも重要な学びとして浮かび上がりました。
DDPOは、拡散モデルを任意の報酬関数に合わせるための有望な技術であり、TRLでのリリースにより、より多くの人々が利用できるようになることを期待しています!
謝辞
このブログ記事のサムネイルには、チュンテ・リーさんに感謝します。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- (Chatto GPT wa sugoi kedo, kadohyōka sarete iru)
- 「責任あるAIとは何か?大企業がその製品に導入する方法」
- In Japanese, the translation of Time Series Visualization is タイムシリーズの可視化.
- AIガバナンス:専門家との深い探求
- 10月のためにぜひおそろいを揃えましょう!最新のGame Passタイトルも含め、約60本の新作ゲームが登場しますクラウドでも楽しめますよ!
- 驚愕のブレイクスルー:オープンエンドAIエージェントバルジャーが自律的に「マインクラフト」をプレイ
- シナプスCoR:革命的なアレンジでのChatGPT