※本記事は、2025年5月27日にStanford CS25コースで行われた、Hugging FaceのSayak Paul氏による講演「Transformers in Diffusion Models for Image Generation and Beyond」の内容を基に作成されています。講演の動画と詳細情報は https://www.youtube.com/watch?v=vXtapCFctTI および https://web.stanford.edu/class/cs25/ でご覧いただけます。本記事では、講演内容を日本語で詳細に記述しております。なお、本記事の内容は原講演の見解を正確に反映するよう努めていますが、翻訳や解釈による誤りがある可能性もありますので、正確な情報や文脈については、オリジナルの講演動画をご覧いただくことをお勧めいたします。
登壇者紹介: Sayak Paul氏は、Hugging Faceで拡散モデルに取り組んでいます。日常業務には、diffusersライブラリへの貢献、拡散モデルの訓練と監視、応用的なアイデアへの取り組みが含まれています。被写体駆動型生成、選好アライメント、拡散モデルの評価に興味を持っています。仕事をしていないときは、ギターを弾いたり、ICMLのチュートリアルやドラマ「Suits」を一気見したりしているそうです。Sayak Paul氏のソーシャルメディアアカウント(@RisingSayak)もご参照ください。
1. イントロダクションと拡散モデルの基礎
1.1 講演の概要と拡散モデルの動作原理
Stephen: 今日は、Hugging FaceのSayak Paulさんをお迎えできることを大変光栄に思います。彼は拡散モデルや画像生成などに関する多くの仕事をしています。彼の日常業務には、diffusersライブラリへの貢献、拡散モデルの訓練と監視、そして応用的なアイデアに取り組むことが含まれています。彼は被写体駆動型生成、選好アライメント、拡散モデルの評価に興味を持っています。仕事をしていないときは、ギターを弾いたり、ICMLのチュートリアルやドラマ「Suits」を一気見したりしているそうです。それでは、これ以上前置きせずに、Sayakさんにお任せします。
Sayak Paul: CS25で通常従われているテーマから逸脱することになると思います。視覚的なモダリティ、特に生成的な側面についてはあまり扱われていないようですので、そのテーマから逸脱できることを嬉しく思います。
まず、いくつかの免責事項から始めたいと思います。この講演は、すべての可能な手法の網羅的な概観になることは決してありません。ですから、あなたが非常に重要だと思っていた研究を私がカバーしなかった可能性もあります。事前にお詫び申し上げます。
また、拡散やフローマッチングが何であるかについて詳細には触れませんが、文脈と基調を設定するために非常に簡単な概要を説明します。今日議論するアーキテクチャは、拡散やフローマッチングに対してかなり不可知論的なものになります。私は主に画像と動画に取り組んでいるので、画像を例に取りますが、これらのアーキテクチャは音声などの他の連続的なモダリティにもかなりよく一般化することが知られています。もちろん、講演の後でスライドを共有します。
この講演へのアプローチ方法は以下の通りです。これが、私がカバーしたいすべての内容の大まかな概要です。前述の通り、拡散モデルやフローマッチングについても簡単に紹介します。そして、この分野における画像生成のための初期アーキテクチャ、つまり拡散のための初期アーキテクチャについて議論することで、文脈を設定しようと思います。
その後、DiTと、私が呼ぶところの彼らの仲間たちについて直接話を進めます。そして、いくつかの考えで締めくくります。それらの考えの中で、最近興味を持つようになった有望な方向性についていくつか議論します。そして、Q&Aの時間もあると確信しています。
テキストから画像への分野におけるすべてのクールな例であなたを魅了したかったのですが、現時点では、私たち全員がこれらの例を知っていると思います。なぜなら、最近では画像だけでなく、ネイティブなマルチモーダル生成にますます興味を持つようになっているからです。それでも、テキストから画像への分野からいくつかの例を示すことから始めたいと思いました。私のお気に入りは最後のものです。「月面で卵から孵化する小さな宇宙飛行士」。人間の想像力は本当にそこで飛躍したと思います。
しかし、見ての通り、DALL-E 3を除いて、これらはすべてオープンモデルであり、これらのモデルのフォトリアリズムの側面は非常に印象的です。そして、拡散モデル全般についてどのように考えるかのインフォグラフィックを提示したいと思います。
拡散モデルについて、私は次のように考えるのが好きです。ランダムなノイズベクトルを取り、それを時間をかけてデノイズすると、フォトリアリスティックな画像になります。よく見ると、これがGANとは異なり反復的なプロセスであることに気付くでしょう。GANは一発の性質を持っていますが、拡散モデルは反復的です。本質的に連続的な性質を持っています。ある意味で、私たちは本質的に、探している種類の画像が完成するまで、最初に開始したランダムノイズをデノイズしているのです。
これが反復的な性質であることを知っておいてください。それがこのスライドからの主な要点です。デノイズプロセスをテキストで条件付けし始めると、例えばテキストで条件付けすることができますが、多くの方法で条件付けできます。しかし、テキストはより解放的な条件の1つだと思います。
デノイズプロセスをテキストで条件付けし始めると、このような抽象的な生き物が得られます。しかし、テキストから画像への変換では、非常に解放された気分になり始めると信じています。それでは、一歩下がって、かなり最先端のテキストから画像へのモデルを持つために何が必要かについての心的モデルを構築し始めましょう。このテキストプロンプト「虎のように見える猫」から、上部の画像まで到達したいとしましょう。
何が必要でしょうか?どのようなコンポーネントを探しているのでしょうか?それらはどのように接続されるべきでしょうか?異なるコンポーネントがどのように接続されるべきかの接続グラフを提示したいと思います。そうすれば、それらをバックトラックして、より多くの直感を構築し始めることができます。もちろん、テキストがある場合、それらの埋め込みで作業できるように何らかの埋め込みが必要であり、テキストエンコーダーがそれを提供します。最先端の拡散モデルは、通常、複数のテキストエンコーダーに依存しています。
例えば、Stable Diffusion 3は、3つのテキストエンコーダーに依存しています。1つでも2つでもなく、3つです。テキストプロンプトがあり、それをテキストエンコーダーに渡すと、埋め込みが得られます。前のスライドで見たように、ガウス分布から引き出されたランダムノイズから始めます。
ノイズの多い潜在変数から始め、テキスト埋め込みがあります。そして、スケジューラーで数学を行う何らかのタイムステップがあります。スケジューラーコンポーネントについては後ほど説明します。しかし、この時点で条件があります。テキスト埋め込み、ノイズの多い潜在変数、そして何らかのタイムステップがあります。
そして、コアとなる拡散ネットワークがあり、これらすべての入力をコア拡散ネットワークに渡します。それは連続的なプロセスです。前のスライドで見たように、拡散ネットワークを一定期間実行します。そして、いくらか洗練された潜在変数が得られます。それを何らかのデコーダーモデルに渡すと、画像が出力されます。
ここで、拡散モデルの2つの大きなクラスを指摘したいと思います。この概要は、ピクセル空間の拡散モデル、つまり潜在空間拡散モデルに似ています。しかし、ピクセル空間拡散モデルと呼ばれる別のクラスの拡散モデルがあります。しかし、最近の、あるいは最先端の拡散モデルは、すべて潜在空間ベースです。なぜなら、ピクセル空間は非常に禁止的で計算集約的な性質を持っているからです。
そのため、潜在空間拡散モデルを見る方が一般的です。だからこそ、そこにノイズの多い潜在変数が見られ、生のピクセルではありません。これを他の連続的なモダリティに一般化する場合、基本的な考え方は、生のモダリティデータポイントをどのように表現するか、そしてそれらの中間表現をどのように計算するかということです。音声空間でこれを行う場合、いくつかの類似したアナロジーを考えることができます。
しかし、長い話を短く言えば、かなり良好に機能するテキストから画像へのシステムには、大まかにこれらのコンポーネントが必要です。それでは、これらのモデルがどのように訓練されるかについての表記法を構築し始めましょう。そして最終的に、これらのモデルで推論をどのように実行すべきかを見ていきます。繰り返しますが、画像を例に挙げています。
しかし、これらはテキストを除いて、かなりモダリティに依存しません。もちろん、これは離散トークンでは機能しません。元の画像があり、標準ガウス分布から何らかのノイズを引き出しているとしましょう。そして、一様分布から何らかのタイムステップも引き出しているとしましょう。
特定のノイズスケジュールと、ノイズスケジュールを制御するいくつかの項があります。そして、何らかの条件付けベクトルがあるとしましょう。条件付けベクトルとは、本質的にテキスト埋め込みや、深度マップ、セグメンテーションマップなどの他の形式の構造的制御を意味します。そして、学習する拡散モデルがあります。
訓練中、基本的に行うことは、画像のいくつかの中間表現を計算することです。あるいは、ピクセル空間で作業している場合、クリーンな画像に少量のノイズを追加し、モデルに追加されたノイズの量を予測させます。
これは、拡散ネットワーク訓練の非常に人気があり広く採用されているパラメータ化の1つです。イプシロン目的と呼ばれます。基本的にそれだけです。基本的に、モデルに追加されたノイズの量を学習させます。それが訓練です。サンプリング中は、気に入った画像に到達するまで、ノイズ予測部分を連続的な方法で繰り返します。
ランダムノイズから始め、例えばテキスト埋め込みなどの何らかの条件でそれを時間をかけてデノイズします。そして、気に入ったデータポイントに到達するまで、デノイズプロセスを一定期間繰り返します。最近ますます一般的になっているフローマッチングの場合、例えばFluxというモデルを聞いたことがあれば、あるいはStable Diffusion 3など、これらはすべてフローマッチングベースです。フローマッチングでは、パスがより直線的になります。直線を通じてノイズとクリーンなデータを接続しようとします。だからこそ、最初のポイントで線形補間方程式が見られます。そして、ニューラルネットワークでターゲット速度場を予測しようとします。
ここでの重要なポイントは、直線を通じてノイズとクリーンなデータを接続しようとすることです。しかし、拡散モデルでは、パスが直線であるとは仮定されていません。だからこそ、フローマッチングでは多くの簡略化が見られます。しかし、長い話を短く言えば、この講演では、物事のネットワークコンポーネントにより興味があります。
ノイズをどのように追加すべきか、どの特定のノイズスケジュールに従うべきかなどには興味がありません。この講演では、パラメータ化の側面により焦点を当てています。
1.2 テキストから画像生成システムの構成要素と学習・推論プロセス
Sayak Paul: それでは、拡散モデルに必要なコンポーネント、拡散モデルが期待される範囲内のパフォーマンスを発揮するために持つべき中核的な要件について議論を始めましょう。
まず、ノイズの多い入力を扱う方法を見つけ出さなければなりません。前述の通り、ノイズは私たちに基礎を与えてくれるので、本当に取り除くことはできません。通常、ピクセル空間ではチャンネルファーストの場合、形状はこのようになります。潜在空間で作業している場合は、もちろん少し圧縮されます。
通常、私たちは常に潜在空間拡散モデルを扱います。ですから、モデルを通過する際に期待される形状を把握しておくと役立ちます。そして、条件を扱わなければなりません。なぜなら、あなたが目にするすべてのテキストから画像へのモデルでは、テキストが条件だからです。条件を扱う必要があります。そしてもちろん、タイムステップです。潜在変数に追加されるノイズの量は、タイムステップに依存する必要があります。
タイムステップが10の場合、データポイントに追加されるノイズの量は、タイムステップが1,000や100のどこかにある場合とは異なります。だからこそ、タイムステップも非常に重要な条件です。基本的に、モデルに軌道のどの地点にいるかを伝えるからです。
より少なくデノイズすべきか、より積極的にデノイズすべきか、などです。そして、クラスや、虎、鳥、あるいは自然言語のような他の形式の条件もあります。それから、依存関係もかなりモデル化する必要があります。ノイズの多い入力は条件とどのように相互作用すべきでしょうか。
もちろん、クロスアテンションなどのレンズを通してこれらのことを考えたいかもしれませんが、それについてはすぐに説明します。そして、最終的な出力をどのように生成すべきでしょうか。トランスフォーマーベースのアーキテクチャを扱う場合、すべてをフラットにデコードすべきでしょうか。純粋な畳み込みアーキテクチャを扱う場合、アップサンプリングすべきでしょうか、などです。通常、拡散ネットワークでは、拡散の別のパラメータ化を扱っていない限り、入力形状は出力形状と正確に等しくなります。他のパラメータ化もありますが、拡散モデルを通過する入力が拡散モデルが生成すべき出力と等しくなるのを見る方がはるかに一般的です。
そして、ここに少し歴史があります。DDPM、この分野におけるすべての初期の研究、つまりDDPM潜在拡散モデルは、すべてUNetベースのアーキテクチャを使用していました。歴史的に言えば、UNetはこの分野をかなり長い間支配してきたと思います。StyleGANのように、すべてがUNetベースのアーキテクチャを持っていました。
そしてSDXLまで、これは2023年のものなので、かなり最近だと言いたいです。登場したすべてのアーキテクチャの年代学を構築しようとしている場合、SDXLはかなり適切だと主張したいと思います。その使用状況に基づいても、適切だと思います。SDXLまで、すべての研究はUNetに依存していました。ですから、このパラダイムにおけるUNetベースのアーキテクチャを議論し、その後、なぜ本当にトランスフォーマーに移行する必要があるのかを見始めることは理にかなっていると思います。
もちろん、拡散のためのUNetは巨大です。それを取り除きたいと思う理由の1つでもあります。しかし、それだけが話の終わりではありません。しかし、私たちの巨大なUNetに関わるさまざまなコンポーネントが何であるかを見てみましょう。もちろん、入力に直接作用する入力畳み込みステムが必要です。
そして、一連のダウンブロックがあります。これは基本的に、正規化層と畳み込み層で構成されたカスタム残差ブロックで構成されています。そして、カスタムトランスフォーマーブロックがあります。再び、正規化、投影、そして通常のトランスフォーマーブロックです。そして、アップサンプリングのための畳み込み層があります。潜在空間で作業している場合、より高い解像度にアップサンプリングしたくなるでしょう。
そして、標準的なUNetアーキテクチャにあるようなミドルブロックがあり、解像度の変更はありません。そして、ダウンブロックでアップサンプリングした出力を基本的にダウンサンプリングする一連のブロックがあります。最終的に、入力と同じ形状を持つ出力を生成します。
基本的には、ダウンブロック対応と同じブロックに似ています。しかし、アップサンプリングを行う代わりに、ダウンサンプリング層があります。そして、心配すべき雑多なことがいくつかあります。例えば、タイムステップ埋め込み、タイムステップをどのように埋め込むべきか、そして追加の埋め込みです。例えば、クラス条件付きモデルの場合、それらを埋め込む方法は異なります。
テキストから画像へのモデルのようなテキストの場合、テキスト埋め込みを埋め込む方法は異なります。基本的に、すべての条件付き埋め込みを調整する方法は、扱っている条件の種類によって変わります。そして、ここが基本的にUNetアーキテクチャのダウンブロックがどのように見えるかです。非常に、非常に巨大なので、転置する必要がありました。頭の中で考えるのも非常に苦痛です。
アーキテクチャをかなり扱う人であれば、これは悪いことだと厳粛に同意しなければならないと思います。これはすでに悪いニュースです。頭の中で想像することすらできません。そして、これがUNetのダウンブロックコンポーネントに何が入るかの少しズームインした様子です。
前述したように、カスタムResNetブロックがたくさんあります。前述したように、カスタムトランスフォーマーブロックがたくさんありますが、特別に残酷なものはありません。すでに見たことのないものはありません。それらのブロックの一連の構成にすぎません。そして、各段階での解像度変更についても言及しようと試みました。すべてをまとめると、このようになります。
かなり短くしようと試みましたが、頭の中で想像しようとすると、非常に苦痛になるでしょう。そして、ブロックはただ、まったく。画像生成のタスクにとって、非常に禁止的な性質です。それが完全な視点です。期待するほど完全ではないかもしれませんが、すべてのUNetを単一の画面に収めるのも難しいです。
そしてもちろん、次に試みたであろう自然な次のステップは、畳み込み層をMLPブロックに置き換えて、かなり簡略化しようとすることでしょう。そして、GoogleのチームがUViTアーキテクチャでそれを試みました。それはありました。それが純粋なトランスフォーマーベースのアーキテクチャへの前兆でしたが、完全ではありませんでした。
UNetベースの設計で見たような、アーキテクチャの複雑さと苦痛なところをまだかなり持っていました。では、なぜ本当に純粋なトランスフォーマーベースのアーキテクチャが必要なのかを動機付けようと思います。最初のポイントはおそらく非常に明白です。トランスフォーマーベースのアーキテクチャで起こっている進歩から恩恵を受けたいと思うでしょう。Noam Shazeerが神の恵みと呼ぶのが好きなようなものです。
geluが欲しいでしょう、クイック正規化が欲しいでしょう、並列MLP層などが欲しいでしょう。それが1つです。もちろん、優れたスケーリング特性などもあります。そして、純粋なトランスフォーマーベースの拡散アーキテクチャ、つまりバックボーンを、例えば純粋なLLMベースのバックボーンなどの他のバックボーンと接続したい場合を考えましょう。統合が非常に簡単になります。
そして、巨大なUNetを取り除くことができます。これが私の主な動機だと思います。しかし、アーキテクチャのパラダイムシフト、主にUNetデザインから着想を得たアーキテクチャにおけるパラダイムシフトがなぜ必要なのかについて、かなり強く説得できたと思います。そして、これはすでに目の保養です。これは珍しいことではありません。私たち全員がこれがビジョントランスフォーマーネットワークにおける標準的なフォワードパスであることを知っています。
この時点で非常に馴染みがあるはずです。私がここで言いたいポイントは、これを画像生成に外挿する場合、これをそれほど大きく変更する必要はないということです。そして、これはあまり変わっていないことに同意していただけると思います。すべてのコアコンポーネントがそこにあります。パッチ化もあります、位置埋め込みもあります。
もちろん、クラス埋め込みの方法は異なります。y埋め込みビットです。タイムステップを埋め込むコンポーネントを持つ必要があります。それは異なります。しかし、他のコンポーネントはまだそこにあります。ブロックを反復処理しています。最終的に出力をデコードするための最終層などがあり、非パッチ化層があります。
これは標準的な幅でどのように行うかと非常に似ています。しかし、もちろん、生成ヘッドも同時に考慮する必要があります。私の言いたいポイントは、標準的な幅のフォワードパスをあまり変更していないということです。より詳しく見ると、これもいくつかの変更を除いて非常に馴染みがあるはずです。スケールとシフトのパラメータがいくつかありますが、これについては少し後で説明します。
しかし、他のブロックの残りは同じレイヤーナウを持っています、パッチ化層を持っています、いくつかの埋め込みなどを持っています、それから線形と再形成操作があります。ほとんどは馴染みがあるはずです。しかし、明らかに少し異質なものについては、今から説明します。
タイムステップビットから始めましょう。実際にタイムステップをどのように埋め込むのでしょうか。タイムステップについてはかなり話してきました。しかし、実際にタイムステップをどのように埋め込むかを見てみましょう。タイムステップは本当に重要です。そして、期待される形状、出力形状も示します。
この場合、これはバッチサイズ、カンマ、期待しているトランスフォーマーブロックの隠れ次元です。タイムステップをどのように埋め込むのでしょうか。タイムステップは0から1,000の範囲です。0はノイズがないことを意味し、1,000は完全にノイズが乗っていることを意味します。各tは正弦波周波数に埋め込まれ、位相を認識できるようにします。ネットワークがどの時点でも、非常に低い周波数と非常に高い周波数を見ています。
そして、変調すべき位相の種類を認識している必要があります。だからこそ正弦波周波数が本当に役立ちます。その後、ネットワークがこれらの異なる周波数をどのように重み付けすべきか。そして、それらの重みをモデル化するために、基本的に非常に浅いMLPを通過させます。クラスラベルをどのように埋め込むのでしょうか。nn.Embedding層を取るだけです。それと同じくらい簡単です。
これは標準的なパッチ化です。畳み込みステムで行います。位置エンコーディングについては、標準的なサインコサインスキームを使用します。そして、最終的な条件付けは、まずタイムステップを埋め込み、次にクラスラベルを埋め込み、基本的にそれらを合計します。そして、トランスフォーマーブロックに入る最終的な条件を得ます。
これは、cがすべてのブロックで固定されたままであることに注意することが非常に重要です。これは非常に重要です。そして、おそらく条件付け、つまり実際の入力、ノイズの多い潜在変数との条件付けをモデル化するために、クロスアテンションを使用したいと思うでしょうが、数スライド後に見るように、そうではありません。
一歩下がって、トランスフォーマーブロックに条件付けビットをどのように注入できるかを考えてみましょう。アダプティブレイヤーノルムと呼ばれるものがあり、これは画像から得られるスタイリスティックな側面をモデル化できるようにするために非常に重要です。基本的にはこれです。標準的なレイヤーノルムがあり、そして追加のパラメータセットがあり、これを変調パラメータと呼びます。これは基本的に条件空間で動作します。
覚えておいてください、条件は基本的にタイムステップ埋め込みとクラス埋め込みの合計です。それがあなたの条件です。QKV、マルチヘッド自己アテンション、MLP層のような通常のトランスフォーマービットをスキップして、標準的なトランスフォーマーエンコーダーブロック内で行われる計算を支配する方程式を持っています。これはかなりよく知られています。
そして、この時点でおそらく知られていない部分は、条件付けビットをどのように調整するかです。実際にトランスフォーマーブロックに条件付けをどのように注入するのでしょうか。このように行います。かなり自然な選択だったであろうクロスアテンションを行う代わりに、実際にはクロスアテンションを行いません。
まだ自己アテンションを行っており、そして基本的に自己アテンションと一緒に条件付けを調整しています。方程式の下半分で見ることができます。そして、これらの変調パラメータは、これらのものを訓練しているモダリティから学習されます。そして、最終的な出力を得るために、基本的に単層デコーダーがあります。そして、基本的に入力と同じ形状を得るためにアンパッチ化します。
初期化に関する注意点ですが、初期化はかなり重要です。すべて標準的なビジョントランスフォーマーの初期化ですが、2つの重要な変更があります。各トランスフォーマーブロックは恒等ブロックとして初期化されます。ImageNet訓練における初期の研究からインスピレーションを得ています。ResNetブロックがたくさんある場合、通常、バッチ正規化層のベータパラメータを0として初期化します。これは訓練の安定性と安定化に役立ちます。
そして、ここでも同じケースであることがわかります。アダプティブレイヤー正規化についてですが、これは非常に重要であり、計算効率も高いです。前述したように、条件とノイズ入力間の依存関係をモデル化するには、クロスアテンションが自然な選択だったでしょう。しかし、グラフを見ると、それはまったくそうではありません。
実際、アダプティブレイヤーノルムが最も良いパフォーマンスを発揮し、クロスアテンションを大きく上回ります。そして、条件がモデル化するのがかなり単純だからではなく、画像のような連続的なモダリティで動作している場合、クロスアテンションで依存関係をモデル化することはそれほど自明ではないからです。
そして、条件がクラス埋め込みのように単純な場合、クロスアテンションでモデル化することは意味がありません。計算の無駄でもあり、グラフがそれを確認しています。そして、後の研究では、アダプティブレイヤーノルムのより計算効率的なバリアントも探求されており、数スライド後に説明します。そして、これらの条件をどのように調整するか、この場合、基本的にタイムステップ埋め込みとクラス埋め込みの合計で動作しています。
それを異なるトランスフォーマーブロック全体でどのように調整するかは、数ブロック後に見るように、非常に重要になります。そして予想通り、より多くの計算でかなり優雅にスケールします。UNetベースの訓練技術をすべて拡散トランスフォーマーに適用できることがわかります。それはかなりクールです。かなり優雅にスケールします。
同等サイズのユニット対応品と比較しても、良好にパフォーマンスします。そしてもちろん、この時点で、画像生成の空間では誰もクラス条件付きを本当に行わないと考えているはずです。そう、それが次に向かうところです。標準的な拡散トランスフォーマーアーキテクチャでテキストから画像への生成を可能にするために何が必要かを動機付けようと思います。なぜなら、その意味で問題にアプローチすることは理にかなっていると思うからです。
標準的な拡散トランスフォーマーに欠けているコンポーネントは何でしょうか。それもテキストから画像への生成のツールになるためには。そして、PixArt-alphaがそれを探求した初期の研究の1つだと思います。詳細に見ていきます。
2. 初期アーキテクチャ:UNetとその問題点
2.1 UNetベースアーキテクチャの歴史と構造
Sayak Paul: 歴史的な観点から見ると、DDPM、この分野におけるすべての初期の研究、つまりDDPM潜在拡散モデルは、すべてUNetベースのアーキテクチャを使用していました。歴史的に言えば、UNetはこの分野をかなり長い間支配してきたと思います。StyleGANのように、すべてがUNetベースのアーキテクチャを持っていました。
そしてSDXLまで、これは2023年のものなので、かなり最近だと言いたいです。なぜなら、登場したすべてのアーキテクチャの年代学を構築しようとしている場合、SDXLはかなり適切だと主張したいと思うからです。その使用状況に基づいても、適切だと思います。SDXLまで、すべての研究はUNetに依存していました。ですから、このパラダイムにおけるUNetベースのアーキテクチャを議論し、その後、なぜ本当にトランスフォーマーに移行する必要があるのかを見始めることは理にかなっていると思います。
もちろん、拡散のためのUNetは巨大です。それを取り除きたいと思う理由の1つでもあります。しかし、それだけが話の終わりではありません。それでは、私たちの巨大なUNetに関わるさまざまなコンポーネントが何であるかを見てみましょう。
まず、入力に直接作用する入力畳み込みステムが必要です。そして、一連のダウンブロックがあります。これは基本的に、正規化層と畳み込み層で構成されたカスタム残差ブロックで構成されています。そして、カスタムトランスフォーマーブロックがあります。再び、正規化、投影、そして通常のトランスフォーマーブロックです。そして、アップサンプリングのための畳み込み層があります。潜在空間で作業している場合、より高い解像度にアップサンプリングしたくなるでしょう。
そして、標準的なUNetアーキテクチャにあるようなミドルブロックがあり、そこでは解像度の変更はありません。そして、ダウンブロックでアップサンプリングした出力を基本的にダウンサンプリングする一連のブロックがあります。最終的に、入力と同じ形状を持つ出力を生成します。
基本的には、ダウンブロック対応と同じブロックに似ています。しかし、アップサンプリングを行う代わりに、ダウンサンプリング層があります。そして、心配すべき雑多なことがいくつかあります。例えば、タイムステップ埋め込み、つまりタイムステップをどのように埋め込むべきか、そして追加の埋め込みです。例えば、クラス条件付きモデルの場合、それらを埋め込む方法は異なります。
テキストから画像へのモデルのようなテキストの場合、テキスト埋め込みを埋め込む方法は異なります。基本的に、すべての条件付き埋め込みを調整する方法は、扱っている条件の種類によって変わります。
そして、ここが基本的にUNetアーキテクチャのダウンブロックがどのように見えるかです。非常に、非常に巨大なので、転置する必要がありました。頭の中で考えるのも非常に苦痛です。アーキテクチャをかなり扱う人であれば、これは悪いことだと厳粛に同意しなければならないと思います。これはすでに悪いニュースです。頭の中で想像することすらできません。
そして、これがUNetのダウンブロックコンポーネントに何が入るかの少しズームインした様子です。前述したように、カスタムResNetブロックがたくさんあります。前述したように、カスタムトランスフォーマーブロックがたくさんありますが、特別に残酷なものはありません。すでに見たことのないものはありません。それらのブロックの一連の構成にすぎません。そして、各段階での解像度変更についても言及しようと試みました。
すべてをまとめると、このようになります。かなり短くしようと試みましたが、頭の中で想像しようとすると、非常に苦痛になるでしょう。そして、ブロックはただ、まったく。画像生成のタスクにとって、非常に禁止的な性質です。それが完全な視点です。期待するほど完全ではないかもしれませんが、すべてのUNetを単一の画面に収めるのも難しいのです。
2.2 UNetの複雑さとトランスフォーマーへの移行の必要性
Sayak Paul: そしてもちろん、次に試みたであろう自然な次のステップは、畳み込み層をMLPブロックに置き換えて、かなり簡略化しようとすることでしょう。そして、GoogleのチームがUViTアーキテクチャでそれを試みました。それはありました。それが純粋なトランスフォーマーベースのアーキテクチャへの前兆でしたが、完全ではありませんでした。
UNetベースの設計で見たような、アーキテクチャの複雑さと苦痛なところをまだかなり持っていました。では、なぜ本当に純粋なトランスフォーマーベースのアーキテクチャが必要なのかを動機付けようと思います。
最初のポイントはおそらく非常に明白です。トランスフォーマーベースのアーキテクチャで起こっている進歩から恩恵を受けたいと思うでしょう。Noam Shazeerが神の恵みと呼ぶのが好きなようなものです。geluが欲しいでしょう、クイック正規化が欲しいでしょう、並列MLP層などが欲しいでしょう。それが1つです。もちろん、優れたスケーリング特性などもあります。
そして、純粋なトランスフォーマーベースの拡散アーキテクチャ、つまりバックボーンを、例えば純粋なLLMベースのバックボーンなどの他のバックボーンと接続したい場合を考えましょう。統合が非常に簡単になります。そして、巨大なUNetを取り除くことができます。これが私の主な動機だと思います。しかし、アーキテクチャのパラダイムシフト、主にUNetデザインから着想を得たアーキテクチャにおけるパラダイムシフトがなぜ必要なのかについて、かなり強く説得できたと思います。
そして、これはすでに目の保養です。これは珍しいことではありません。私たち全員がこれがビジョントランスフォーマーネットワークにおける標準的なフォワードパスであることを知っています。この時点で非常に馴染みがあるはずです。私がここで言いたいポイントは、これを画像生成に外挿する場合、これをそれほど大きく変更する必要はないということです。そして、これはあまり変わっていないことに同意していただけると思います。
すべてのコアコンポーネントがそこにあります。パッチ化もあります、位置埋め込みもあります。もちろん、クラス埋め込みの方法は異なります。y埋め込みビットです。タイムステップを埋め込むコンポーネントを持つ必要があります。それは異なります。しかし、他のコンポーネントはまだそこにあります。ブロックを反復処理しています。最終的に出力をデコードするための最終層などがあり、非パッチ化層があります。
これは標準的な幅でどのように行うかと非常に似ています。しかし、もちろん、生成ヘッドも同時に考慮する必要があります。私の言いたいポイントは、標準的な幅のフォワードパスをあまり変更していないということです。
より詳しく見ると、これもいくつかの変更を除いて非常に馴染みがあるはずです。スケールとシフトのパラメータがいくつかありますが、これについては少し後で説明します。しかし、他のブロックの残りは同じレイヤーナウを持っています、パッチ化層を持っています、いくつかの埋め込みなどを持っています、それから線形と再形成操作があります。ほとんどは馴染みがあるはずです。しかし、明らかに少し異質なものについては、今から説明します。
3. Diffusion Transformer (DiT)の登場
3.1 DiTの基本構造と条件埋め込み
Sayak Paul: タイムステップビットから始めましょう。実際にタイムステップをどのように埋め込むのでしょうか。タイムステップについてはかなり話してきました。しかし、実際にタイムステップをどのように埋め込むかを見てみましょう。タイムステップは本当に重要です。そして、期待される形状、出力形状も示します。
この場合、これはバッチサイズ、カンマ、期待しているトランスフォーマーブロックの隠れ次元です。タイムステップをどのように埋め込むのでしょうか。タイムステップは0から1,000の範囲です。0はノイズがないことを意味し、1,000は完全にノイズが乗っていることを意味します。各tは正弦波周波数に埋め込まれ、位相を認識できるようにします。ネットワークがどの時点でも、非常に低い周波数と非常に高い周波数を見ています。
そして、変調すべき位相の種類を認識している必要があります。だからこそ正弦波周波数が本当に役立ちます。その後、ネットワークがこれらの異なる周波数をどのように重み付けすべきか。そして、それらの重みをモデル化するために、基本的に非常に浅いMLPを通過させます。
クラスラベルをどのように埋め込むのでしょうか。nn.Embedding層を取るだけです。それと同じくらい簡単です。これは標準的なパッチ化です。畳み込みステムで行います。位置エンコーディングについては、標準的なサインコサインスキームを使用します。
そして、最終的な条件付けは、まずタイムステップを埋め込み、次にクラスラベルを埋め込み、基本的にそれらを合計します。そして、トランスフォーマーブロックに入る最終的な条件を得ます。これは、cがすべてのブロックで固定されたままであることに注意することが非常に重要です。これは非常に重要です。そして、おそらく条件付け、つまり実際の入力、ノイズの多い潜在変数との条件付けをモデル化するために、クロスアテンションを使用したいと思うでしょうが、数スライド後に見るように、そうではありません。
一歩下がって、トランスフォーマーブロックに条件付けビットをどのように注入できるかを考えてみましょう。アダプティブレイヤーノルムと呼ばれるものがあり、これは画像から得られるスタイリスティックな側面をモデル化できるようにするために非常に重要です。基本的にはこれです。標準的なレイヤーノルムがあり、そして追加のパラメータセットがあり、これを変調パラメータと呼びます。これは基本的に条件空間で動作します。
覚えておいてください、条件は基本的にタイムステップ埋め込みとクラス埋め込みの合計です。それがあなたの条件です。QKV、マルチヘッド自己アテンション、MLP層のような通常のトランスフォーマービットをスキップして、標準的なトランスフォーマーエンコーダーブロック内で行われる計算を支配する方程式を持っています。これはかなりよく知られています。
そして、この時点でおそらく知られていない部分は、条件付けビットをどのように調整するかです。実際にトランスフォーマーブロックに条件付けをどのように注入するのでしょうか。このように行います。かなり自然な選択だったであろうクロスアテンションを行う代わりに、実際にはクロスアテンションを行いません。
まだ自己アテンションを行っており、そして基本的に自己アテンションと一緒に条件付けを調整しています。方程式の下半分で見ることができます。そして、これらの変調パラメータは、これらのものを訓練しているモダリティから学習されます。そして、最終的な出力を得るために、基本的に単層デコーダーがあります。そして、基本的に入力と同じ形状を得るためにアンパッチ化します。
3.2 Adaptive Layer Normalizationと実験結果
Sayak Paul: 初期化に関する注意点ですが、初期化はかなり重要です。すべて標準的なビジョントランスフォーマーの初期化ですが、2つの重要な変更があります。各トランスフォーマーブロックは恒等ブロックとして初期化されます。ImageNet訓練における初期の研究からインスピレーションを得ています。ResNetブロックがたくさんある場合、通常、バッチ正規化層のベータパラメータを0として初期化します。これは訓練の安定性と安定化に役立ちます。そして、ここでも同じケースであることがわかります。
アダプティブレイヤー正規化についてですが、これは非常に重要であり、計算効率も高いです。前述したように、条件とノイズ入力間の依存関係をモデル化するには、クロスアテンションが自然な選択だったでしょう。しかし、グラフを見ると、それはまったくそうではありません。
実際、アダプティブレイヤーノルムが最も良いパフォーマンスを発揮し、クロスアテンションを大きく上回ります。そして、条件がモデル化するのがかなり単純だからではなく、画像のような連続的なモダリティで動作している場合、クロスアテンションで依存関係をモデル化することはそれほど自明ではないからです。
そして、条件がクラス埋め込みのように単純な場合、クロスアテンションでモデル化することは意味がありません。計算の無駄でもあり、グラフがそれを確認しています。そして、後の研究では、アダプティブレイヤーノルムのより計算効率的なバリアントも探求されており、数スライド後に説明します。
そして、これらの条件をどのように調整するか、この場合、基本的にタイムステップ埋め込みとクラス埋め込みの合計で動作しています。それを異なるトランスフォーマーブロック全体でどのように調整するかは、数ブロック後に見るように、非常に重要になります。
そして予想通り、より多くの計算でかなり優雅にスケールします。UNetベースの訓練技術をすべて拡散トランスフォーマーに適用できることがわかります。それはかなりクールです。かなり優雅にスケールします。同等サイズのユニット対応品と比較しても、良好にパフォーマンスします。
そしてもちろん、この時点で、画像生成の空間では誰もクラス条件付きを本当に行わないと考えているはずです。そう、それが次に向かうところです。標準的な拡散トランスフォーマーアーキテクチャでテキストから画像への生成を可能にするために何が必要かを動機付けようと思います。なぜなら、その意味で問題にアプローチすることは理にかなっていると思うからです。
標準的な拡散トランスフォーマーに欠けているコンポーネントは何でしょうか。それもテキストから画像への生成のツールになるためには。そして、PixArt-alphaがそれを探求した初期の研究の1つだと思います。詳細に見ていきます。
4. テキストから画像生成への拡張:PixArt-alpha
4.1 DiTからPixArt-alphaへの発展
Sayak Paul: 自然な疑問として、入力される自然言語テキストプロンプトをどのように埋め込むかという問題があります。答えは簡単です。テキストエンコーダーが必要になります。そして、それがまさにPixArt-alphaの研究が行っていることです。
そして、文脈依存性をどのように学習するかという問題です。今では、クラスの代わりに、タイムステップの上に自然言語テキストがあります。ノイズの多い潜在変数に対して自己アテンションを行い、そして、ノイズの多い潜在変数とテキストの間でクロスアテンションを行うことができるでしょう。注意してください、このテキストは単なるクラスではありません。
このテキストは自然言語の記述です。「月面で卵から孵化する赤ちゃん宇宙飛行士」のようなものです。ですから、これは自然言語の記述について話しているのです。単純なクラスラベルではありません。ですから、それは理にかなっているかもしれません。パッチ内の局所的な依存関係をモデル化するために、ノイズの多い潜在変数に対して自己アテンションを行い、そして、ノイズの多いパッチとテキスト埋め込みの間でクロスアテンションを行うことは理にかなっているかもしれません。
そして、タイムステップも調整する方法を見つけ出さなければなりません。DiTの研究で見たように、トランスフォーマーブロック全体でタイムステップ埋め込みを調整することが重要です。そして、クラス条件付き拡散トランスフォーマーにアクセスでき、それが互換性がある場合、そこからいくつかのブロックを初期化することも理にかなっているかもしれません。なぜ計算を無駄にするのでしょうか。訓練の安定化などに役立つかもしれません。
それがまさにPixArt-alphaが行っていることです。この時点で注意を払っていれば、これらのことを実装することは極めて困難ではないことに気付いたでしょう。しかし、それがまさにPixArt-alphaが行っていることであると知ることは役立ちます。プロンプトを埋め込むためにテキストエンコーダーを使用します。ノイズの多い潜在変数に対して自己アテンションを使用します。
ノイズの多い潜在変数とテキスト埋め込みの間の依存関係をモデル化するためにクロスアテンションを使用します。そして、訓練を加速するために、クラス条件付きDiTモデルから初期化も行います。ですから、これらのことについて考え、それが実践で実装されているのを見ることができるのは役立ちます。
4.2 テキストエンコーダの選択と計算効率化
Sayak Paul: テキストエンコーダーの使用に関する議論があります。PixArt-alphaは、本当にテキストレンダリング能力を得るために、Flan-T5-xxlを使用しました。Imagineのようないくつかの同時期の研究は、テキストエンコーダーをスケールすると、画像内でテキストをレンダリングしたい場合、より良いテキストエンコーダーを持つことが実際に役立つことを示しました。
また、長いプロンプト追従能力の問題もあります。なぜなら、SDXLのようなモデルは、テキストを埋め込むためにCLIPに依存しているからです。そして、CLIPは非常に短いコンテキスト長を持っています。77だと思います。しかし、T5-xxlを使えば、はるかに長いコンテキスト長が得られます。ですから、基本的により長いプロンプトを持つことができます。プロンプトをもう少し詳細に記述することができます。それがあります。また、テキストエンコーダーの空間を探求することは、まだ見てみる価値のある良い研究問題です。
そして、もし疑問に思っているなら、なぜT5の代わりに標準的な言語モデルを使わないのでしょうか。実際に使用することはそれほど難しくありません。Luminaのような多くの研究がかなり探求しています。そして、もし疑問に思っているなら、拡散モデルはすでに計算制約があります。
では、なぜ別の重いモデルを追加する負担を加えるのでしょうか。それを使用するのは問題ないと思います。なぜなら、プロンプト埋め込みを計算することは1ステップのプロセスだからです。ですから、大規模言語モデルのようなメモリ制約のあるモデルを混在させても問題ありません。
そして、ここで、アダプティブレイヤーノルムの復活を再び見ることになります。もし忘れていたら思い出してください、各拡散トランスフォーマーブロックに対して、タイムステップ埋め込みとクラス埋め込みの合計で動作していました。PixArt-alphaの場合、テキスト埋め込みを計算する方法がすでにありますが、それには触れたくありません。なぜなら、それらの埋め込みは専用のリッチなテキストエンコーダーですでに計算されているからです。
ですから、それらの埋め込みに触れて調整したくないかもしれません。拡散トランスフォーマーとは異なり、そこではクラス埋め込みも調整していました。すべての拡散トランスフォーマーエンコーダーブロックにアダプティブレイヤー正規化ブロックを持つ代わりに、基本的にテーブルを維持します。埋め込みテーブルを維持し、それらを合計します。
ですから、すべてのトランスフォーマーエンコーダーブロックに対して別の行列乗算を行う代わりに、基本的に加算で済ませることができます。別の埋め込みテーブルとの加算です。そして、計算をかなり削減するのに役立ちます。元の拡散トランスフォーマー計算の27%を削減するのに役立ちます。そして、このアイデアはかなり洗練されていると思います。パラメータを削減しながらパフォーマンスを維持する方法について、別の視点も提供してくれます。
これは良かったです。そして、これはかなりコンパクトなモデルにしては印象的なパフォーマンスだと言わなければなりません。わずか0.6億パラメータのモデルです。そして、すでにすべてのチャートを打ち破っています。2023年に登場したとき、かなり良かったです。Genevaスコアがあると思います。いいえ、ありません。
しかし、ここの最後のチャートは、基本的に人間の好みの評価を示しています。品質面では、全体的な画像品質です。そしてアライメント面では、テキストと生成された画像の間のアライメントです。そして、これらの側面の両方において、PixArt-alphaはかなり良好にパフォーマンスしました。
さて、これらのモデルの時間とメモリの複雑さに飛び込む前に、なぜなら、まだ二次の標準的なアテンションを使用しているからですが、この時点で何か質問があるかどうかを確認したいと思います。ですから、もし問題なければ、Stephen、質問のためにフロアを開きたいと思います。問題ないですか?問題ありません。
質疑応答セクション:
聴衆からの質問: 最先端の拡散モデルが複数のテキストエンコーダーに依存していると述べられましたが、それはなぜですか。同じテキストに対して複数の異なるタイプのエンコーディングを持つことの利点は何ですか。
Sayak Paul: もちろんです。質問は、なぜ複数のテキストエンコーダーを持ちたいのか、そしてそれが画像生成パフォーマンスを向上させるのに役立つのはなぜかということです。クラス条件付きDiTでは、タイムステップ埋め込みだけでなく、クラス埋め込みも調整していたのを見ました。ですから、自己アテンションと一緒に調整していた条件付き埋め込みは、クラス埋め込みとタイムステップ埋め込みの合計でした。
テキストから画像へのモデルの場合、それはそれほど自明ではありません。ですから、テキスト埋め込みとは別に、タイムステップ埋め込みもあります。しかし、テキスト入力から計算した他の条件の調整はどうでしょうか。表現がよりリッチであればあるほど、表現が多様であればあるほど、生成バックボーンにとってより良いことがわかります。
多くのモデルが複数のテキストエンコーダーを使用すると言ったとき、通常、CLIPとT5の組み合わせがあります。CLIPは完全に異なるモデルであり、T5は完全に異なるモデルです。CLIPでは、テキスト埋め込みにある種の対照的な性質を埋め込み、T5では、テキスト埋め込みに完全に異なる性質があります。
ですから、これらの埋め込みが多様であればあるほど、生成パフォーマンスにとってより良いのです。しかし、これについての体系的な研究はありません。それが一般的な信念です。しかし、単一の言語モデルを使用するだけで済む研究もあります。おそらく言語モデルは、優れた事前訓練の利点として両方を継承しているのかもしれません。
聴衆からの質問: 現在の最先端企業のほとんどは拡散トランスフォーマーを使用していますか。それとも、まだ畳み込みを使った元のUNetを使用しているところもありますか。それとも、ユースケースに依存しますか。
Sayak Paul: ほとんどが拡散トランスフォーマーを使用していると思います。その効率性のためと、適応が容易だからです。別の形式の制御を埋め込みたい場合、例えば、画像からのスタイリスティックな参照でモデルに追加でプロンプトを与えたい場合、数スライド後に見るように、拡散トランスフォーマーでそれを行う方が簡単です。
聴衆からの質問: どのように行列乗算を実際に避けるのですか。
Sayak Paul: もちろんです。もう少し詳しく説明できますか。はい、もちろんです。元の拡散トランスフォーマーブロックでは、すべての変調パラメータを基本的にアフィン層として初期化します。ですから、それを行うことができます。それをチャンクすることができ、そして異なる変調パラメータを持つことができます。そして、ここに行列乗算があります。そして、変調パラメータをどのように計算しているかに注目してください。
しかし、ここでは埋め込みテーブルを通じてのみ計算しています。アフィン変換は起こっていません。そして、タイムステップ埋め込みに追加することになります。それだけです。これが行列乗算を避ける方法です。そして、それが主に計算を27%削減できる理由です。
次のセクションに進む前に、最後の質問を1つ受け付けます。もしあれば。Zoom経由のものもあれば、オンラインのものもあります。いくつか質問します。誰かが、画像やビデオ生成にGANのポイントはまだあるのか、それとも基本的に拡散モデルに完全に置き換えられたのか、と疑問に思っています。
Sayak Paul: 完全に置き換えられたとは言いません。なぜなら、見てきたように、拡散モデルはまだ本質的に連続的な性質を持っているからです。ですから、本当に超リアルタイムの生成を求めているなら、GANがまだ進むべき道だと思いますし、実際に多くの企業が使用しています。ですから、本当にクールな一発生成を求めているなら、GANが道だと思います。
タイムステップ蒸留に関する文献があり、基本的に良い品質の画像を生成するために必要なタイムステップまたは推論ステップの数を削減することを目指しています。そこでは実際にGANロスが必要です。ですから、GANはまだ完全には置き換えられません。
なぜなら、GANにはモード崩壊のような多くの問題があると思っていたからです。ああ、そうです、あります。しかし、特定のユースケースがあり、かなり良いデータセットがある場合、それでも良いGANを訓練できます。
今回はオンラインからもう1つ質問できます。画像生成は一般的に、特に拡散モデルの場合、訓練に多くのデータを必要とします。低データ領域のための技術やアーキテクチャの選択はありますか。
Sayak Paul: それは良い質問です。短い答えはノーです。ユースケースと少し相関していると思います。医療画像の場合、おそらくそれほど多くの多様性は必要ありません。しかし、かなり良好で汎用的な生成モデルが必要な場合、探している種類のバイアスをすべて継承するために、多くのデータで訓練する必要があると思います。
自然画像の分布で訓練したい場合、モデルが常にリアルな画像を生成することを望むなら、多くのデータ、少なくとも多様なデータが必要だと思います。なぜなら、最近LLMでは、事前訓練後にゼロショット、少数ショット学習があるからです。拡散モデルのインコンテキスト学習について少し話します。しかし、事前訓練されたモデルにアクセスできることを前提としています。ですから、それがあります。
5. 計算効率の改善:SANAアーキテクチャ
5.1 線形アテンションと圧縮潜在空間
Sayak Paul: さて、この講演の次の段階を、二次の時間とメモリ複雑性の議論を少し行うことから始めたいと思います。なぜなら、今、私たちは画像生成の領域にいるからです。
4K画像のような本当に高解像度の画像を生成しようとする場合、標準的なアテンションは、潜在空間で動作している場合でも、極めて禁止的になります。潜在変数の次元を見てください。潜在チャンネル数が16で、潜在次元が512×512だとしましょう。それでもあまりにも大きすぎます。VLM空間で見慣れているものよりもはるかに大きいです。そして、ここにいくつかのダミー計算があります。もちろん、これはフラッシュアテンションを使用していません。
ダミーの推定値を提供するなら、浮動小数点16で約190GBになります。そして、これはすべて合理的なデフォルトです。24のアテンションヘッドがあります。バッチサイズは1です。シーケンス長は平坦化されています。190GBが必要になります。そして、もちろん、これはフラッシュアテンションを使用していません。
しかし、本当に高品質で高解像度の画像を扱う場合、拡散モデルで通常使用する二次アテンションの禁止的な計算空間のアイデアは得られます。では、何ができるでしょうか。できる2つの簡単なことは、さらに圧縮された空間で動作することです。このような、この1×16×512×512という空間です。この空間はすでに十分に圧縮されています。
しかし、圧縮率をさらに増やすことはできるでしょうか。そして、2番目の明白なことは、n×nの乗算を行わない何らかの形式の線形アテンションを使用することです。それが私の次のアーキテクチャ、SANAアーキテクチャに繋がります。そして、それは両方を使用します。
さらに圧縮された潜在空間を使用し、アテンションメカニズムの線形バリアントも使用します。では見てみましょう。一方、線形アテンションがあります。そして、もちろん、アテンションメカニズムの線形複雑性によるパフォーマンス損失が予想されるかもしれません。そして、失われたパフォーマンスを補償するために、Mix-FFNを使用します。詳細については少し後で説明します。
しかし、簡単な概要を提供したかったのです。SANAは自己アテンション、自己線形アテンションを行います。しかし、ノイズの多い潜在変数と提供しているテキストプロンプトの間の依存関係をモデル化するために、クロスアテンションを行います。そして、自己アテンションではn×nの計算は起こっていません。方程式がそれを明確にしています。
KV投影から計算された共有項があります。そして、これらはすべてのクエリに対して再利用されます。そして、この方法で、基本的にかつ効果的にn×nの乗算を行っていません。すべての乗算はnに上限が設けられています。だからこそ、オーダーmn²からオーダーnに削減できるのです。
そして、前述したように、二次アテンションメカニズムを使用していないため、何らかの形式の説明責任がなければなりません。ですから、Mix-FFNブロックを使用します。基本的に、局所的な依存関係をモデル化するために、一連の反転残差ブロックとポイントワイズ畳み込みです。なぜなら、ソフトマックスを画像から取り除くと、局所性の概念がすべて失われることがわかるからです。
すべてとは言いませんが、局所性の概念の大部分も取り除かれます。だからこそ、局所性の側面もモデル化するためのいくつかのコンポーネントが必要なのです。そして、Mix-FFNブロックがそのために使用されます。そして、初めてSANAは位置埋め込みビットを取り除きました。ですから、それを言うのは非常に面白いです。NoPe、つまり位置埋め込みなしです。
混合ブロックは実際に役立ちます。なぜなら、そこにいくつかの畳み込みブロックがあるからです。ですから、まだ畳み込みの議論に戻っていますが、それほどではありません。完全に畳み込みではありません。そこにいくつかの畳み込み層が投入されているだけです。ですから、主にDiTベースです。しかし、線形MLPを使用する代わりに、局所的な相互作用を考慮するために2つの畳み込み層があります。
そして、本当に良好にパフォーマンスします。そのコンパクトなサイズにしては、かなり良好にパフォーマンスします。カーネル融合と彼らが使用している高度なDPMソルバーを考慮に入れるべきではないと言わなければなりません。しかし、4行目まで、それでもかなり良好にパフォーマンスしていると思います。非常に適切な一般的なパフォーマンスを提供しています。非常に適切なDPGパフォーマンスを提供しています。
そして、これらはすべて、構成性、忠実度、全体的な品質などの観点から、与えられた画像を評価するメトリクスです。そして、これらのメトリクスは、現実の観点からかなりよく根拠付けられています。
5.2 Mix-FFNによる局所依存性のモデリング
Sayak Paul: そして、これはおそらく、他のトピックに移る前に議論する最後のアテンションのフレーバーになると思います。そして、これは少し新しいと思います。VLM空間では実際には誰もやっていないという意味で新しいです。では、異なるモダリティの依存関係を別々の空間でモデル化するとどうなるでしょうか。見てみましょう。
この背後にある1つの動機は、テキスト埋め込みかもしれません。大規模言語モデルでテキスト埋め込みを計算している場合、そこから多くのバイアスを継承することになります。単方向性バイアスが存在するでしょう。標準的な自己回帰型大規模言語モデルを使用している場合、単方向性バイアスを継承することになります。ですから、バイアスがあり、それらがあらゆる種類の異なる方法で生成モデルに忍び込む可能性があります。
ですから、1つのアイデアは、QKV投影を別々に行うことです。テキスト埋め込みに対してQKV投影を行い、ノイズの多い潜在変数に対しても別のQKV投影パラメータのセットを維持します。そして、アテンションを計算する前にそれらを連結します。ですから、実際にアテンションを行う前に、連結された表現で動作します。
そして、概念的には、これは基本的にこうなります。画像潜在変数に対してQKVを別々に投影し、テキスト埋め込みとは別に行います。実際にアテンションを計算する前にそれらを連結します。基本的にそれだけです。これがStable Diffusion 3の論文で導入されたMMDiTです。彼らの動機は、テキスト埋め込みに存在する可能性のある異なるバイアスを取り除くことでした。
そして、テキスト埋め込みが画像埋め込みとどれほど質的に異なるかも示しました。ですから、なぜ異なるテキスト埋め込みが必要なのか、お互いのバイアスを継承せず、ミックスにより多様性を持たせるためのヒントが得られると思います。
基本的にこのように見えます。少し複雑に感じるかもしれません。しかし、これほど大きい理由は、モデル化している異なるモダリティに対して別々の投影行列があるからです。左側にはキャプションがあります。そして右側には、ノイズの多い潜在変数があります。そして、別々のモダリティに対して別々のQKV投影とアダプティブレイヤーノルム行列があります。だからこそ大きく感じるのです。しかし、概念的には基本的にこれです。
別々のモダリティに対して別々のアダプティブレイヤーノルム行列があります。別々のQKV投影行列があります。別々の出力投影行列があります。そして、別々の、すべてが別々です。すべてが、取り組んでいる2つのモダリティから別々になっています。
ある意味で、これは、画像生成という与えられたタスクのために取り組んでいる2つの異なるモダリティからの2つの埋め込みを共進化させる方法を提供します。また、クロスアテンションに非常に慣れている場合、この方法でアテンションを計算する場合、そもそもマスキングをどのように行うのか尋ねたくなるかもしれません。そして、それは実際に活発な研究分野です。MMDiTバリアントのアテンションを行う場合、マスキングを総合的にどのように行うかは分かっていません。
そして、変調はタイムステップと動作している条件付き埋め込みの両方で行われます。Stable Diffusion 3は、通常CLIPから計算される異なるセットのプールされたテキスト埋め込みを使用し、T5ベースのテキストエンコーダーからではありません。繰り返しますが、持っていた他のテキストエンコーダーからのバイアスを継承しないために、何らかの形式の多様性が必要です。
Stable Diffusion 3は3つ使用しますが、推論中にそれらを混合してマッチングすることができます。本当に良いテキストレンダリング機能が必要な場合はT5が必要であることを示しました。しかし、それ以外では、彼らが使用する2つのCLIPでまだ多くのことができます。そして、テキストレンダリングタスクに専念していない場合は、T5を削除することができます。
そして、もちろん、これはかなり重要です。MMDiTが本当に重要なのか尋ねたくなるかもしれません。そして、実際に重要であることがわかります。あらゆる形式の異なるアテンションバリアントを試しました。crossDiTを試し、UViTを試し、MMDiTが最も低い検証損失を与えるバリアントのようです。そして、検証損失が、Genevaなどのような、私たちが気にする種類の画像生成メトリクスとかなりよく相関していることも示しています。
そして、かなりよくスケールしますが、QK正規化が必要です。そして、同時期の一連の研究のおかげで、QK-normをゼロから再発明する必要はありませんでした。ですから、通常のトランスフォーマー文献における発展のおかげで、訓練の不安定性の問題を解決するためにQK-normを使用することができました。
そして、Stable Diffusion 3は基本的にこの画像なしでは不完全だと思います。そして、この画像を楽しみのためだけに見せているのではなく、このプロンプトがどれほど複雑で、Stable Diffusion 3がこのプロンプトを解釈して、このような生き物を得ることができたかを示すためでもあります。ですから、この種のプロンプトを考え出したStable Diffusion 3の著者に称賛を送らなければなりません。しかし、かなり良好に機能します。
印象的なプロンプト追従能力を示した最初の種類のモデルの1つであり、同時に私たちが気にする詳細を保持しながらです。それはクールでした。
6. マルチモーダル拡散トランスフォーマー (MMDiT)
6.1 MMDiTの設計思想とStable Diffusion 3
Sayak Paul: そして、MMDiTはここで止まりませんでした。議論したいMMDiTの異なるフレーバーがあります。Stable Diffusion 3では、すべてのトランスフォーマーブロックがMMDiTフレーバーのアテンションに従っていました。そして、それは計算的に要求が厳しいです。トランスフォーマーエンコーダーで作業したことがある人なら、MMDiTの計算と計算強度を理解できるでしょう。なぜなら、作業している異なるモダリティに対して別々の投影行列を維持しなければならないからです。ですから、計算的に極めて要求が厳しいです。
ですから、もしかしたら、MMDiTブロックと通常のDiTブロックを組み合わせて、flopsをより良く活用できるかもしれません。概念的には、これがこうなります。いくつかのメモリブロックがあります。最終的な表現を連結し、次に連結された空間で動作し、基本的に標準的なDiTを行います。MMDiTは行わず、flopsを少し良く活用することになります。
そして、それがまさにBlack Forest LabsのFluxのような最近のモデルが行っていることです。別のひねりを加えたものは、モダリティAがあり、それを一連のトランスフォーマーブロックに通すことで出力Aを計算することです。そして、モダリティB、例えばテキスト埋め込みがあります。それを別のトランスフォーマーブロックのセットに通します。これらの出力を連結し、次にそれらを別のトランスフォーマーブロックのセットに通します。そして、基本的に最終的な出力を得ます。
そして、この方法で、すべての異なるブロックを独自の方法で構成できます。モダリティAのトランスフォーマーブロックは、モダリティBに使用するトランスフォーマーブロックとは異なることができます。ですから、この方法で、より大きなレベルの柔軟性と制御を持つことができます。そして、それがLumina2の研究が行ったことです。
見ての通り、条件については、別のトランスフォーマーブロックのセットに通します。ノイズの多い潜在変数については、別のトランスフォーマーブロックのセットに通します。そして、それらを連結し、次に再び別のトランスフォーマーブロックのセットを持ちます。ですから、RHSの大きなブロックの左側のトランスフォーマーブロックは、ノイズの多い潜在変数をモデル化するために使用されるトランスフォーマーブロックとは異なることができます。
ですから、より大きな柔軟性と制御を持つことができます。そして、この時点で複雑に感じるかもしれないので、このすべての設計をどのように簡略化できるかについての感覚を提供したいと思います。なぜなら、複雑に感じるかもしれないからです。しかし、分かりません、かなり簡略化できるかもしれません。しかし、この時点で質問があるかどうかを素早く確認したいと思います。
質疑応答セクション:
Zoom経由で質問はありますか。ええ、オンラインでいくつか質問があります。見てみましょう。誰かがちょうど尋ねました、GPT-4は完全に異なるアーキテクチャですか。それは拡散トランスフォーマーとどのように比較されますか。
Sayak Paul: それは良い質問です。ハイブリッドアーキテクチャを使用していると思います。間違いなく、画像を生成するように進化したLLMコンポーネントを持っています。このハイブリッドアーキテクチャについては、すぐに説明します。
そして、誰かが疑問に思っています、評価について、画像やビデオ生成のための良い自動メトリクスはありますか、それとも主に創造的な執筆と同様に人間ベースの主観的評価ですか。
Sayak Paul: さまざまなメトリクスのアンサンブルだと思います。単一のメトリクスで画像を評価することはできません。また、正確に何を求めているかによります。構成性により興味がある場合、メトリクスは変わります。美学により興味がある場合、メトリクスは変わります。ですから、それは依存します。
見てみましょう。画像生成モデルが指などを生成することに失敗することについての一般的な視点があると誰かが指摘しました。Redditの投稿などでもそれを見ます。それらはまだカウントや空間的一貫性のようなものに苦労していますか、それともそれらの基本的なことはほぼ解決されていますか。
Sayak Paul: Fluxのようなモデルは、間違いなくはるかに良くなっていると思います。そして質問があります。画像生成と比較したビデオ生成の主な追加の課題は何ですか、そしてそれらを克服する方法は。
まあ、最初の問題は時間です。なぜなら、拡散ベースの画像生成モデルはすでに計算集約的だからです。そして、ビデオ生成モデルでは、時間性という別の次元があります。ですから、より計算集約的になるだけです。そして、対処すべきより多くの次元の呪いがあります。
そして、より多くのフレームを生成している場合、それらはますます計算集約的になるだけです。ですから、それらをより効率的にする方法は、間違いなく喫緊の課題です。また、時間的依存性のようなものも追加されます。
聴衆: ええ、まさに。別の依存関係の軸をモデル化します。そして、基本的にフル3Dアテンションを行っていることになります。これは考えることすら極めて禁止的です。
Sayak Paul: フレームごとにゼロから生成する必要はありません。すでに何かがほぼ理解されており、そして小さな変更を行うだけです。
Sayak Paul: すみません、質問が聞き取れませんでした。ビデオでは、2D画像生成モデルを取り、それを空間・時間生成も行えるように統合しようとする場合、うまく機能しないことがわかります。少なくとも現実的な設定では。映画的なフレームを生成したい場合、うまく機能しません。なぜなら、空間・時間の一貫性が失われるだけだからです。
聴衆の発言が聞き取れない
Sayak Paul: しかし、制限があるに違いありません。前の入力としてそれほど多くのフレームで動作している場合、キューも極めて禁止的になります。ですから、時間次元を効果的にどのように圧縮できるかを見つけ出さなければなりません。可変数のフレームがあるとしましょう。それを潜在時間レベルにどのようにマッピングして、効率的でありながら、まだ何らかの意味を持つようにできるでしょうか。
ですから、ビデオを行っている場合、もはや空間圧縮だけでなく、時間圧縮もあります。そして、進歩するにつれて、2つをどのようにモデル化するかということです。他に質問はありますか。
1つだけ受け付けます。誰かがZoom上で尋ねました、アダプティブレイヤー正規化についていくつかの直感を提供してもらえますか、そしてなぜそれがそれほどうまく機能するのですか。
Sayak Paul: ああ、そうですね。ですから、レイヤーノルムについては、基本的に訓練を安定化するためにレイヤーノルムを使用していると言えます。ブロック全体でより安定した表現があります。しかし、画像については、標準的な表現を計算している以外に、モデル化したい特定の種類の特性があります。
そして、それらの特徴をトランスフォーマーブロックに自由に流れさせなければなりません。だからこそ変調パラメータが必要なのです。そうでなければ、正規化パラメータと通常のアテンション特徴、あるいは計算しているどんなMLP特徴との間の相互作用は、生成パフォーマンスに利益をもたらす方法で相互作用することができません。
理解だけを扱っている場合、あるいは多分識別パフォーマンスだけを扱っている場合、それほど重要ではなかったでしょう。しかし、スタイリスティックな側面と忠実度を気にするなら、視覚的な手がかりから得られている追加の特徴を調整する必要があります。
他に質問はありますか。ええ。ミッションのようなものです。MMDiTについてはまだ分かっていません、マスキングをどのように行うか。MMDiTについて。何が次善の策ですか。マスキングの代替手段はありますか。多分それは直感です。なぜMMDiTにマスキングが必要なのでしょうか。
Sayak Paul: それは良い質問です。MMDiTは、恩恵を受けるために行われました。テキスト埋め込み表現に存在する可能性のある単方向性バイアスを取り除くために行われました。それが1つです。2つ目は、本当に長いプロンプトがある場合、そもそもマスクを計算する必要はありません。
そして、短いプロンプトを持つよりも、記述的なプロンプトのような長いプロンプトを持つ方が常に良いこともわかります。ですから、この質問に答えるための少し手を振るような方法ですが、長い話を短く言えば、MMDiTアテンションを行っている場合、マスクを追加することは本当に自明ではありません。ですから、それがあります。
聴衆: テキストの両方で別々にQKVを行うことについてでしたが。画像側ではどうですか。
Sayak Paul: 画像のインタラクションを行っている場合、理論的にはマスクを行うことができます。しかし、再び、どのように問題を組み立てるでしょうか。どこでマスクを追加することになるでしょうか。テキストから画像だけを行っている場合、多分。別の形式の条件制御がある場合、多分そこでいくつかのインタラクションをマスクしたいかもしれません。
しかし、テキストから画像だけに制限されている場合、そもそもどこにマスクを追加するでしょうか。私が尋ねているのは、マスキングを避けるためです。ああ。ええ、ええ、ええ。おそらくそれが彼らがそもそもマスキングを行わなかった理由です。多分彼らの動機は。ええ、ええ、ええ。まさに、まさに。
もしあれば、最後の質問を1つ受け付けます。OK、クールです。
6.2 MMDiTのバリエーション:FluxとLumina2
Sayak Paul: そして、MMDiTはここで止まりませんでした。議論したいMMDiTの異なるフレーバーがあります。Stable Diffusion 3では、すべてのトランスフォーマーブロックがMMDiTフレーバーのアテンションに従っていました。そして、それは計算的に要求が厳しいです。
トランスフォーマーエンコーダーで作業したことがある人なら、MMDiTの計算と計算強度を理解できるでしょう。なぜなら、作業している異なるモダリティに対して別々の投影行列を維持しなければならないからです。ですから、計算的に極めて要求が厳しいです。ですから、もしかしたら、MMDiTブロックと通常のDiTブロックを組み合わせて、flopsをより良く活用できるかもしれません。
概念的には、これがこうなります。いくつかのメモリブロックがあります。最終的な表現を連結し、次に連結された空間で動作し、基本的に標準的なDiTを行います。MMDiTは行わず、flopsを少し良く活用することになります。そして、それがまさにBlack Forest LabsのFluxのような最近のモデルが行っていることです。
別のひねりを加えたものは、モダリティAがあり、それを一連のトランスフォーマーブロックに通すことで出力Aを計算することです。そして、モダリティB、例えばテキスト埋め込みがあります。それを別のトランスフォーマーブロックのセットに通します。これらの出力を連結し、次にそれらを別のトランスフォーマーブロックのセットに通します。そして、基本的に最終的な出力を得ます。
そして、この方法で、すべての異なるブロックを独自の方法で構成できます。モダリティAのトランスフォーマーブロックは、モダリティBに使用するトランスフォーマーブロックとは異なることができます。ですから、この方法で、より大きなレベルの柔軟性と制御を持つことができます。そして、それがLumina2の研究が行ったことです。
見ての通り、条件については、別のトランスフォーマーブロックのセットに通します。ノイズの多い潜在変数については、別のトランスフォーマーブロックのセットに通します。そして、それらを連結し、次に再び別のトランスフォーマーブロックのセットを持ちます。ですから、RHSの大きなブロックの左側のトランスフォーマーブロックは、ノイズの多い潜在変数をモデル化するために使用されるトランスフォーマーブロックとは異なることができます。
ですから、より大きな柔軟性と制御を持つことができます。
7. 設計の簡素化と構造制御
7.1 DiT-Airによるアーキテクチャの簡素化
Sayak Paul: そして、この時点で複雑に感じるかもしれないので、このすべての設計をどのように簡略化できるかについての感覚を提供したいと思います。なぜなら、複雑に感じるかもしれないからです。しかし、分かりません、かなり簡略化できるかもしれません。
では、パラメータ共有はどの程度有用でしょうか。すでに見たadaLNや、計算を27%削減したPixArt-alphaの研究のようなもの。その種のパラメータ共有はどの程度有用でしょうか。すでにadaLNは見ました。QKVOとMLPも、Albertのように共有できるでしょうか。これは昔からありましたが、Albertでは数層にわたってすべての投影行列を共有しました。MLP行列なども共有しました。
そして、本当に自己アテンションとクロスアテンションが必要でしょうか、それとも本当にMMDiTが必要でしょうか。これはおそらくあなたの質問に答えることになると思いますので、楽しみにしています。本当にこれらのものが必要でしょうか。なぜなら、ある意味で、これは設計空間をかなり複雑にするからです。簡略化できるでしょうか。
ですから、この連結された空間で基本的に自己アテンションを行うことができるでしょうか。ノイズの多い潜在変数に対して自己アテンションを行う必要はありません。ノイズの多い潜在変数とテキストに対してクロスアテンションを行う必要はありません。MMDiTを行う必要はありません。すべての画像トークンとテキストトークンを基本的に連結し、その上で自己アテンションを計算できるでしょうか。それができるでしょうか。
そして、テキストエンコーダー、秘密のソースは何でしょうか。3つ使っています、2つ使っています。何が役立つのでしょうか。結局のところ、テキストから画像への生成の大義を何が助けるのでしょうか。
物事をかなり簡略化できることがわかります。できることの1つは、かなりパラメータ共有できることです。効率性を求めている場合、QKVOをパラメータ共有できます。間違いなくアダプティブレイヤーノルムパラメータをパラメータ共有できます。
そして、画像トークンとテキストトークンの連結された表現空間で基本的に自己アテンションを行うことができます。ですから、これは良いニュースだと思いますが、Appleがこの研究をオープンソース化しなかったので、それほど良くありません。ですから、私たち自身で行わなければなりません。しかし、設計をかなり簡略化できることを知るのは良いことです。
極右側が、私が話していた簡略化された設計です。基本的に連結された空間で動作しています。アダプティブレイヤーノルムパラメータをかなり削減しています。そして、QKV投影とMLP層もパラメータ共有しています。そして、実践ではうまく機能することがわかります。かなり、うまく機能すると言わなければなりませんが、実践では。緑色のものが簡略化された設計であり、常に最も低い損失量を得ています。
そして、前述したように、アダプティブレイヤーノルムパラメータを共有する以外に、品質をある程度妥協でき、効率性のみを目標としている場合、QKVパラメータやMLPも共有できます。そして、テキストエンコーダーについては、Appleの人々は、双方向CLIPとテキストのみのLLMがより良いことを発見しました。
ですから、CLIPとT5の組み合わせを使用する代わりに、CLIPと通常の大規模言語モデルを使用すれば、テキスト表現にとってより良いのです。パフォーマンスはかなり良好です。最終行がAppleの研究です。DiT-Airと呼ばれています。かなりうまく機能することがわかります。DiTからのすべての太字の数字です。かなりうまく機能することがわかります。
長い話を短く言えば、設計をかなり簡略化できます。MMDiTは必要ないことがわかります。しかし、見ていくことになると思います。
7.2 追加制御信号の注入とビデオ生成
Sayak Paul: では、この時点であなたが持っているに違いない緊急の質問は、テキストから画像への変換は解放的ですが、より多くの制御、より多くの制御のソースをどのように注入すればよいのでしょうか。テキストから画像へのモデルに対してより構造的な入力を行いたい場合、どのようにそれを行うのでしょうか。多分、モデルに特定のポーズに従ってほしいと思うかもしれません。
多分、モデルに特定のセグメンテーションマップなどに従ってほしいと思うかもしれません。そして、どのようにそれを行うのでしょうか。複数の構造的シグナルを同時に組み合わせることはできるでしょうか。1つは、構造的画像シグナルから顕著な表現を計算する方法を提供する補助ネットワークを学習することかもしれません。
そして、多分、それらの構造的シグナルをベース拡散モデルに注入する方法を見つけ出すのかもしれません。それが1つの方法かもしれません。そして、ControlNet、これらの一連の研究は、基本的にこの哲学に従っています。そして、多分、ベース拡散トランスフォーマーモデルを変更することもできるかもしれません。基本的に、より多くの制御を受け入れるために入力チャンネルを増やします。
そして、それがFluxControlフレームワークが行っていることです。そして、多分、すべての条件とノイズの多い潜在トークンの間の依存関係をモデル化するために、小さなアダプターネットワークを学習することもできるかもしれません。また、ここで重要な指摘は、構造的制御は常に空間的対応を持つということですが、被写体駆動型生成や画像編集のような他のタスクでは、直接的な空間的対応がない場合があります。
では、それらのケースで何をすればよいのでしょうか。そして、これも活発な研究分野です。そして、ビデオについては、位置エンコーディングにはRoPEがかなりうまく機能します。そして、前述したように、アテンションの計算空間ははるかに禁止的になります。なぜなら、それは完全な3Dだからです。
そして、何らかの形式の因数分解されたアテンションを考えている場合、それは機能しません。それについて非常に明示的でした。そして、効率性について、特にビデオモデルに関する効率性関連の文献に特に興味がある場合、LTX-Videoの研究をチェックすることを強くお勧めします。
そして、パフォーマンスについて、忠実度、フォトリアリズムなどのようなものについては、Wanが私のお気に入りでなければなりません。かなり良いです。ここに小さなデモがあります。それほど悪くありません。まだ短編ビデオですが、これらのビデオのリアリズムの側面と忠実度の側面は、かなり改善されていると思います。
8. 次世代アーキテクチャと今後の展望
Sayak Paul: そして、いくつかの次世代アーキテクチャについてです。講演の終わりに近づいています。次世代アーキテクチャのフレーバーと感覚も提供したいと思いました。おそらくこの質問があると思います、拡散モデルでインコンテキスト学習をどのように可能にするのでしょうか。言語モデルでは、非常に一般的です、ゼロショット学習などです。拡散モデルでインコンテキスト学習をどのように可能にするのでしょうか。
現在のアーキテクチャは、合理的な時間でそれを可能にするには明らかに十分ではありません。基本的なアイデアは、LLMモデルを取り、いくつかのコンポーネントを追加して、Bagelのような最近の研究のように、画像生成にも熟達するようにすることです。
そして、彼らは基本的にこの一連の研究に従う研究があります。彼らは必ずしも拡散ベースではありませんが、同様の哲学を共有しています。基本的に、事前訓練されたLLMから始めて、画像生成にも熟達するようにコンポーネントを追加します。例えば、離散トークンに対して自己回帰を行うことができます。
そして、同時に、連続トークンに対して拡散を行うこともできます。それがTransfusionと呼ばれる一連の研究です。前述したように、Playground v3があり、FuseDiTがあり、Transfusionがあります。FuseDiTは私たちのグループからのものです。
インコンテキスト学習の問題に取り組み、これらのアーキテクチャを総合的な方法でどのように探求するかを見つけることができる唯一のオープンソースの研究です。そして、もしすでにインスピレーションを感じているなら、これらのアーキテクチャを探求するためにインスピレーションを感じることを願っていますが、Hugging Faceで私が取り組んでいるライブラリをチェックすることを心から歓迎します。diffusersと呼ばれています。
今日議論したすべてのモデルの合理的にクリーンな実装があり、これらのものをハックして調整するためのインスピレーションを与えるはずです。そして、カバーできなかったことがたくさんあります。少し時間をオーバーしていると思います。1分オーバーしていると思います。おそらく次の1分で終わらせます。申し訳ありません。
MoEはカバーしませんでした。再び注目のトピックです。しかし、MoEは拡散コミュニティで道を切り開いています。HiDreamと呼ばれています。訓練については全くカバーしませんでした。そこにはあらゆる種類のトリックがあります。データをどのように扱うか。アライメントをどのように行うか。ポストトレーニングをどのように行うか。安全性の緩和をどのように行うか。記憶の緩和などをどのように行うか。
そしてもちろん、これらのアーキテクチャは画像やビデオ生成をはるかに超えています。ロボティクス、遺伝子合成などのあらゆる種類のものにアプリケーションを見つけます。そして、メカニスティック解釈可能性に興味がある場合、これらの獣の解釈は全く自明ではありません。ですから、それらは私にかなり興味を持たせます。そして、それが全てです。ありがとうございました。