T2I 拡散モデルの設計メモ
目次
テキストエンコーダー
CLIP や T5 が長らく使われてきたが、軽量 LLM を使うケースが増えている。
- phi-3:OmniGen
- Qwen2.5-VL-3B-Instruct:OmniGen2
- Gemma 2:Lumina-Image 2.0, SANA
- Llama3-8B:Playground v3
主な LLM と VLM
性能比較

Params(M) は間違いで、数値は FP32 精度の時のファイルサイズ
出典:SANA: Efficient High-Resolution Text-to-Image Synthesis with Linear Diffusion Transformers. Enze Xie et al. Table 9. https://openreview.net/forum?id=N8Oj1XhtYZ
むしろ T5-Large がコスパがよい。fp16(性能劣化なし)だと 1.6GB、GGUF Q8_0 量子化すると 900MB になる。
T5-XXL を使うよりは軽量 LLM の方が速いし性能もよい。
T5 と LLM を混ぜて使う場合は注意が必要だ。T5 は LLM に比べて出力の分散が小さい。なので LLM の出力に RMSNorm などの Normalization レイヤーが必要になる。
VAE
VAE の圧縮率を決めるパラメータは3つある。
- F:解像度の縮小率
- C:潜在空間のチャンネル数
- P:パッチサイズ
VAE の隠れ層の次元数は以下のようになる。
H x W x 3 -> H/PF x W/PF x C
SD3 や FLUX は F8C4P2 や F8C16P2 を使っており、SANA は F32C32P1 を使っている。
D2iT
D2iT は圧縮率の異なる2つの潜在空間表現にエンコード可能な VAE を使う。ディティールの細かい部分は低圧縮率、情報の少ない部分は高圧縮率と使い分ける。デノイザもディティールの細かい部分は多くのネットワークが通過する。
SANA
SANA は高圧縮の VAE を利用することで通常の VAE 比で 10 倍高速化している。従来の VAE は8倍の圧縮率だったが、SANA は 32 倍の圧縮率の VAE を採用している。
SANA の VAE は dc-ae-f32c32-sana-1.1-diffusers からダウンロードできる。モデルの定義は efficientvit。
細部が大きく崩れるので、等倍では使い物にならない。Detailer の使用がほぼ必須で、顔なら解像度は 1024 x 1024 は欲しい。
参考文献
Conditional VAE Semi-Supervised Learning with Deep Generative Models
VQ-VAE Neural Discrete Representation Learning
Generating Diverse High-Fidelity Images with VQ-VAE-2
SoftVQ-VAE: Efficient 1-Dimensional Continuous Tokenizer
Instella-T2I: Pushing the Limits of 1D Discrete Latent Space Image Generation
1次元バイナリ潜在空間に圧縮することで VQ-VAE 比で 32 倍の圧縮率を達成している。
コンディショニング
拡散トランスフォーマーではコンディショニングとして、タイムステップやテキストをトークン化せずに入力する。
しかしコンディショニングをトークンにして入力する方法が 2025 年現在のトレンドだ。OmniGen はコンディショニングをすべてトークンにして入力している。 しかし OmniGen2 では Time step をトークン化しない方法を選択している。

出典:Qi Qin et al. Lumina-Image 2.0: A Unified and Efficient Image Generative Framework. Figure 3.
https://arxiv.org/abs/2503.21758
図の位置の改変は筆者
コンディショニングの方法はいくつかある。
- トークン化してノイズやプロンプトと結合(OmniGen)
- Cross Attention(PixArt-α, Hunyuan-DiT, SANA)
- zero-Initialized gated cross-attention(Lumina-Image 2.0)
- Mod(Stable Diffusion 3)
- Scale, adaLN-Zero(DiT, Lumina-Image 2.0)
Mod
xout = xin⊚(1 + γ) + β
adaLN
Layer Nomalization のガンマとベータは学習可能なパラメータだ。adaLN はこれを線形変換などを使用して動的に変更するもの。つまり
c = プロンプトやタイムステップ γ = Linear(c) β = Linear(c)
Unveiling the Secret of AdaLN-Zero in Diffusion Transformer
ゼロではなくガウス分布を利用した初期化をする adaLN-Gaussian を提唱している。
位置埋め込み
SD3 以前は Sinusoidal Encoding 使われてきたが、FLUX 以降は RoPE を使うのが一般的。ViT の RoPE については Rotary Position Embedding for Vision Transformer が詳しい。
SANA は RoPE ではなく Mix-FFN を採用している。
RoFormer: Enhanced Transformer with Rotary Position Embedding
Rotary Position Embedding for Vision Transformer
mRoPE(Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution)
mRoPE は動画を処理するために時間情報も RoPE に含めている。なので、画像のみを対象にする場合は、mRoPE は候補から外れる。
Mix-FFN
3x3 の畳み込みによって RoPE なしでも相対位置情報を取得できる。SegFormer の Mix-FFN は以下のようになる。
xout = MLP(GELU(Conv3x3(MLP(xin)))) + xin
SANA の Mix-FFN は GELU ではなく SiLU を使っている。SiLU(Swish) は ReLU に形が似ていて、(0, 0) を通る。0を境界に導関数が急に変化する ReLU と違い、SiLU は導関数が滑らかに変化する。
GELU も SiLU も ReLU のような形で導関数が滑らかに変化するように設計されたもの。GELU の方が性能が良いが、SiLU の方が計算が速く、どちらも ReLU より性能が良い。
損失関数
ノイズを予測させる epsilon prediction から、ノイズ差分を予測させる v prediction へトレンドが移り、2025 年では Rectified Flow を使うのが一般的になっている。
ブロック図
DiT
Pointwise Feedforward Network と Position-wise Feed-Forward Network とはほぼ同じ意味。バッチ・系列長・埋め込み次元のテンソルにおいて、各位置 i にあるベクトル x_i に対して、まったく同じ重みの MLP を適用する。数式は以下のようになる。
FFN(x) = max(0, xW1 + b1)W2 + b2

2022年
出典:Scalable Diffusion Models with Transformers. William Peebles et al. Figure 3. https://arxiv.org/abs/2212.09748
PixArt-α

2023年
出典:PixArt-α: Fast Training of Diffusion Transformer for Photorealistic Text-to-Image Synthesis. Junsong Chen et al. Figure 4. https://arxiv.org/abs/2310.00426
Stable Diffusion 3

2024年
出典:Scaling Rectified Flow Transformers for High-Resolution Image Synthesis. Patrick Esser et al. Figure 2. https://stability.ai/news/stable-diffusion-3-research-paper
Playground v3
発表は 2024/09/16、設計の終了と学習の開始は Stable Diffusion 3(2024/02/22)の論文の発表前。
EDM スケジューラーを使っている。

2024年
出典:Playground v3: Improving Text-to-Image Alignment with Deep-Fusion Large Language Models. Bingchen Liu. Figure 2. https://arxiv.org/abs/2409.10695
Hunyuan-DiT

2024年
出典:Hunyuan-DiT: A Powerful Multi-Resolution Diffusion Transformer with Fine-Grained Chinese Understanding. Zhimin Li et al. Figure 7. https://arxiv.org/abs/2405.08748
Lumina-Image 2.0
RMSNorm は Layer Normalization の計算コストを削減したもの。具体的には各層の活性化に対して、平均の計算を省略し、二乗平均平方根 (Root Mean Square: RMS) のみを用いて正規化を行う。RMSNorm は LayerNorm と同等の性能を達成しつつ、計算時間を 7% 〜 64% 削減できる。

2025年
Element-wise Addition と Element-wise Multiplication は記号が逆
出典:Lumina-Image 2.0: A Unified and Efficient Image Generative Framework. Qi Qin et al. Figure 2. https://arxiv.org/abs/2503.21758
SANA

2025年
出典:SANA: Efficient High-Resolution Text-to-Image Synthesis with Linear Diffusion Transformers. Enze Xie et al. Figure 5. https://openreview.net/forum?id=N8Oj1XhtYZ
3x3 の前の 1x1 の畳み込みによって計算量を削減している。1x1 の畳み込みはチャンネル数の次元を削減するのに使われることが多い。例えば (C, H, W) = (3, 8, 8) に 1x1 の畳み込みを実行して (1, 8, 8) にする。その後で計算コストの高い 3x3 の畳み込みを実行し、1x1 の畳み込みで (3, 8, 8) へチェンネル数を復元する。これはピクセル単位の MLP を実行しているとみることもできる。
Linear Attention は高速だが性能は低下する。その低下分を Mix-FFN でカバーしている。Mix-FFN は RoPE を排除できるので、追加の高速化も実現している。
Exploring 1x1 Convolutions in Deep Learning

2025年
出典:SANA 1.5: Efficient Scaling of Training-Time and Inference-Time Compute in Linear Diffusion Transformer. Enze Xie et al. Figure 10. https://arxiv.org/abs/2501.18427
データセット
LAION-5B:低品質な画像が多く使われなくなってきている
DOCCI Descriptions of Connected and Contrasting Images
動画の切り出し
OmniGen2 は動画から画像を切り出して、学習に使用している。
キャプショニング
データセットが提供するキャプションを使うのではなく、LLM で画像のキャプション付けを行うのが一般化している。ローカルで実行する場合はパラメータ数 70B のような高性能なものを使用することが多い。VILA-3B/13B や InternVL2-8B/26B もよく使われる。
解像度を下げる場合は、キャプションを作り直す必要はない。しかし画像をクロップした場合は、キャプションを作り直す。
LLM で以下の情報を抽出する。単に「車」と記述するのではなく、「通りを走る車」のようにアクションを記述させる。
- 人
- 人数
- 人の表情・感情
- ポーズ・姿勢:例:「走っている子供」、「ベンチに座っている人」
- 身体属性:例:「長い金髪の女性」、「ふわふわの毛の犬」
- 年齢・身長・性別
- 相互作用:例:「握手している二人」、「ボールで遊んでいる犬」
- 物
- 物の画面内での位置
- オブジェクト間の相対的位置
- 物色、パーツの色
- 形状
- 材質
- サイズ
- 時間帯
- 照明条件:例:「明るい昼光」、「薄暗い夕方の光」
- 季節
- 天候
- 背景の詳細: 例:「都市の景観」、「穏やかな森」
- 服の種類
- 動物の種類
- 室内か屋外か
- 全体的な雰囲気/ムード:例:「賑やかな通り」、「平和な庭」
- 文字の位置と文字
キャプションが複数ある場合は、キャプションをクリップスコアで評価し、正規化することで確率的にキャプションを選択する手法がある。
長すぎるプロンプト問題
DetailMaster: Can Your Text-to-Image Model Handle Long Prompts? では長すぎるプロンプトが性能を低下させることを報告している。
Collage Prompting
従量課金の MLLM は画像枚数あたりで課金されるため、Collage Prompting では複数の画像を1枚にまとめてキャプションを作成する方法を紹介している。
プロンプト戦略
戦略カテゴリ | 説明 | プロンプト |
---|---|---|
直接キャプショニング | 画像全体を包括的に記述する。MLLMのゼロショット能力を活用。 | 「この画像を詳細に記述してください。」 「画像の内容を包括的な段落で説明してください。」 |
きめ細かい指示生成(Q&A形式) | 特定のオブジェクト、属性、関係性について質問と回答のペアを生成させる | 「画像内のオブジェクトの色、サイズ、素材、形状について質問と回答のペアを生成してください。」 「画像内の人物の行動と、彼らが他のオブジェクトとどのように相互作用しているかについて質問と回答を生成してください。」 |
属性ベースの拡張 | 既存の簡潔なキャプションに、きめ細かい属性(色、サイズなど)や空間的関係を追加して詳細化させる。 | 「このキャプションを、画像内のすべてのオブジェクトの具体的な色、サイズ、素材、形状、およびそれらの正確な空間的配置を含めて拡張してください。」 |
シーン・文脈の豊かさ | 画像の全体的な雰囲気、照明、時間帯、背景の詳細などを記述させる。 | 「この画像の全体的なムード、時間帯、照明条件、および背景の環境を詳細に記述してください。」 |
人物・動物のインタラクション強調 | 画像内の人物や動物の行動、感情、相互作用に焦点を当てて記述させる。 | 「画像内の人物の表情、ポーズ、および彼らが互いに、または周囲のオブジェクトとどのように相互作用しているかを詳しく説明してください。」 |
T2Iモデル向け最適化 | T2Iモデルの訓練データ分布に合わせた構造や表現でキャプションを生成させる。 | 「Text-to-Imageモデルのプロンプトとして最適化された形式で、この画像を記述してください。タグ形式または詳細な段落形式で、可能な限り多くの視覚的詳細を含めてください。」 |
コスト効率化(コラージュプロンプティング) | 複数の画像を1つの入力として処理し、それぞれの詳細を記述させる。 | 「提供されたコラージュ内の各画像を個別に識別し、それぞれについて詳細なキャプションを生成してください。」 |
参考文献
Unleashing Text-to-Image Diffusion Prior for Zero-Shot Image Captioning
To See is to Believe: Prompting GPT-4V for Better Visual Instruction Tuning
DetailMaster: Can Your Text-to-Image Model Handle Long Prompts?
学習方法
低解像度で学習した後、高解像度の学習を行い、最後に高品質な画像だけを使った仕上げを行う。
8倍圧縮の VAE の場合は 256 x 256 の解像度で事前学習を行うが、32 倍圧縮の VAE を使う SANA では 512 x 512 から事前学習を始めている。
Scaling Laws For Diffusion Transformers によると、事前学習の loss もスケーリング則に従う。スケーリング則から、最適なモデルサイズと必要なデータセットの量が計算できる。
On the Scalability of Diffusion-based Text-to-Image Generation
隠れ層の次元を増やすよりトランスフォーマーブロックを増やした方が性能が上がる。データセットは質と多様性が重要で、量は重要ではない(現状十分な量の画像が手に入る)。
Classifier Free Guidance
一定確率でキャプションなしで学習させることで、CFG が使えるようになる。CFG は品質を大きく向上させるが、蒸留モデルでは使えないことが多い。蒸留モデルのみを公開する場合は CFG 学習をしない選択もある。
ノイズスケジューラ―
Stable Diffusion 1.5 や XL はスケジューラーにバグがあり、色の再現性の低下や高解像度での分裂などの問題を引き起こしていた。Stable Diffusion 3 ではタイムステップを以下の式で変換することで高解像度での分裂等に対処している。色の再現性は Rectified Flow を採用することで改善されている。
ファインチューン
マルチモーダルモデルのファインチューンは ShareGPT-4o-Image が詳しい。
小さいモデルを先に訓練する
SANA 1.5 では 1.6B を作成した後、学習済みの 1.6B にブロックを追加して 4.8B にしてから学習させることで、4.8B の学習時間を 60% 削減している。
小さいモデルの性能を上げるには高性能モデルから蒸留する
性能向上の面から見れば小さいモデルは、大きなモデルから蒸留した方が性能はよくなる。
大きいモデルのブロックを削減して小さいモデルを作成する
SANA 1.5 では大きなモデルの推論時のブロックの入力と出力との類似度を計算し、性能に貢献していないブロックを削除する。その後でファインチューニングすることで小さいモデルを作成している。ブロック削除後のファインチューニングはたった 100 ステップ程度で十分。
SLEB: Streamlining LLMs through Redundancy Verification and Elimination of Transformer Blocks ではトランスフォーマーブロックの入力と出力との類似度をコサイン類似度で計算している。
Do Language Models Use Their Depth Efficiently? はコサイン類似度と残差ストリームとを使用して分析している。
省メモリ学習
- accumulation steps, automatic mixed-precision
- 8-bit Optimizers(AdamW, CAME)
- Gradient Checkpointing
- Freezing embeddings
実例
PixArt-α
学習に $28,400(2025年のドル円レートで、およそ 400 万円)しかかかっていない安価なモデル。学習にかかった時間は 64 台の V100 で 26 日。ちなみに Stable Diffusion 1.5 の学習コストは $320,000。

出典::PixArt-α: Fast Training of Diffusion Transformer for Photorealistic Text-to-Image Synthesis. Junsong Chen et al. Table 4. https://arxiv.org/abs/2310.00426
V100 は 14 TFLOPS、RTX5090 は 105 TFLOPS なので、RTX5090 1台だと学習に 160 日かかる。
オプティマイザーは AdamW。
Stable Diffusion 3
データセットは conceptual-12m と ImageNet。
バッチサイズは 1,024 でオプティマイザーは AdamW、lr = 1e-4 で、1,000 ステップの線形ウォームアップ。
Lumina-Image 2.0
32 台の A100(FP32 は 19.5 TFLOPS) を使用。3段階の訓練でそれぞれ、191, 176, 224 GPU*Days。191 + 176 + 224 = 591GPU*Days、32 台で割ると学習日数は 18.5 日。オプティマイザーは AdamW。

出典:Lumina-Image 2.0: A Unified and Efficient Image Generative Framework. Qi Qin et al. Table 3. https://arxiv.org/abs/2503.21758
SANA
64 台の A100 を使用、かかった時間は非公開。512 x 512 の解像度で 1e-4 の学習率で 200K ステップ以上事前学習を行い、1024 から 4096 へ解像度を増やしながら、2e-5 の学習率で最大 10K ステップの教師ありファインチューニングを行う。オプティマイザーは 8bit CAME。1.6B のモデルで、CAME 8bit は AdamW 8bit よりわずかに性能がよく、メモリ使用量は若干少ない(43GB vs 45GB)。
dmodel = 2,240、dFFN = 5,600。
性能検証
論文で使われるベンチは基本的にプロンプトと生成された画像との忠実性を計測する。以下の要素があっても減点されることはない。
- 指の本数を間違える
- 細部が溶けている
- 画質が悪い
- 直線がゆがんでいる
- 文字がおかしい
- オブジェクトの細部がおかしい
- 水平線がずれている
ベンチ
高速化
Delta-DiT: A Training-Free Acceleration Method Tailored for Diffusion Transformers
デノイズの初期段階では DiT ブロックの後方をキャッシュし、後半では前方をキャッシュする事で高速化する。これは DiT ブロックが画像の概形(前方のブロック)と詳細(後方のブロック)を生成する役割の違いに基づいている。
FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning
Lightning Attention-2: A Free Lunch for Handling Unlimited Sequence Lengths in Large Language Models
ZeRO: Memory Optimizations Toward Training Trillion Parameter Models
PixArt-Σ
PVT v2 に似た key/value の圧縮によって高速化する。
SANA: Efficient High-Resolution Text-to-Image Synthesis with Linear Diffusion Transformers
- 従来の VAE は圧縮率8倍だが、SANA の VAE は 32 倍
- Linear Attention の採用
- RoPE ではなく Mix-FFN を採用
- テキストエンコーダーに Gemma 2 を採用
- Flow-DPM-Solver でサンプリングを高速化
SANA 1.5: Efficient Scaling of Training-Time and Inference-Time Compute in Linear Diffusion Transformer
- 16K 以上のパラメータの Linear と 1x1 畳み込みを8bit 整数で量子化
LittleBit: Ultra Low-Bit Quantization via Latent Factorization
行列を LoRA のように分解してから量子化することで、最大 0.1 BPWを達成している。
Transformers without Normalization
Normalization Layer を DyT(x) = tanh(αx) で置き換えると計算が速くなる。性能は-1~1ポイント上下する。レイヤー単体では 40~50% 高速になり、モデル全体では8%程度高速になる。学習が8%高速化するのは大きい。ただし torch.compile した場合両者に速度差はない。
Understanding Transformer from the Perspective of Associative Memory
活性化関数には速度と記憶容量とのトレードオフが存在する。ReLU は高速だがパラメータあたりの記憶量は小さくなる。Softmax は遅いがパラメータあたりの記憶容量が多くなる。
Data Efficacy for Language Model Training
データセットをスコアリングし厳選することで、データ量を半減させても同じ性能を出す手法の解説。
参考文献
Janus: Decoupling Visual Encoding for Unified Multimodal Understanding and Generation
SANA: Efficient High-Resolution Text-to-Image Synthesis with Linear Diffusion Transformers GitHub
CogView3: Finer and Faster Text-to-Image Generation via Relay Diffusion
Playground v3: Improving Text-to-Image Alignment with Deep-Fusion Large Language Models
Flow Matching for Generative Modeling
Unveiling the Secret of AdaLN-Zero in Diffusion Transformer
GELU の論文:Bridging Nonlinearities and Stochastic Regularizers with Gaussian Error Linear Units
GELU Activation Function in Deep Learning: A Comprehensive Mathematical Analysis and Performance
Understanding Batch Normalization
Normalization はそれ自身に性能を上げる効果はない。Normalization を入れることで高い学習率でも学習が安定するようになり、その結果、速い学習と局所的最適解の回避とが実現している。