結論
チャンク分割で起きること
- 2チャンク目は「無視」ではなく「弱くなる」 — 実験1で藤・橋・灯篭などが部分的に反映されることを確認
- 2チャンク目の要素は安定しない — 生成ごとに出る要素が異なる。確実に反映させたければ1チャンク目に入れる
- 矛盾する指示は「先頭が圧倒的に勝つ」 — 赤髪vs黒髪の実験で、先頭に置いた色が優勢になり、末尾に置いた色はほぼ無視される傾向を確認。末尾でも稀に部分的に反映されるが、安定しない
実用的なガイドライン
| 配置 | 用途 |
|---|---|
| 1チャンク目(1〜75トークン) | 確実に反映させたい要素をすべて入れる。被写体・場所・服装・ポーズ・照明・スタイル |
| 2チャンク目(76トークン〜) | あると嬉しいが必須ではない補助的な要素。品質指示、背景ディテール等 |
| 入れない方がいい | coherent anatomy等の効果がない要素、矛盾する指示 |
推奨: 重要な要素は75トークン以内に
神プロンプトの夏祭りポラロイド(48トークン)やカフェスナップ(42トークン)が安定するのは、全要素が1チャンクに収まっているからです。75トークンを超えても画像は生成されますが、超過分の反映は不安定になります。
LLMとの違い
この制約はCLIPのアーキテクチャ固有の問題です。ChatGPTやClaudeのようなLLMは128K〜1Mトークンのコンテキストを一度に処理でき、チャンク分割は発生しません。Stable Diffusion系でプロンプトが短く感じるのは、CLIPの75トークン制限が原因です。
Flux.1はCLIPに加えてT5テキストエンコーダ(512トークン対応)を搭載しているため、長文プロンプトへの対応が改善されています。
関連記事
プロンプトの基本法則で「75トークンを超えると次のチャンクに分割され、影響力が弱くなる」と書きました。しかしチャンクとは何か、なぜ弱くなるのか、弱くなっても意味はあるのかが説明不足でした。
この記事ではその仕組みを解説し、実験で検証します。
チャンクとは何か
CLIPのテキストエンコーダは、入力テキストを最大77トークン(BOS/EOSトークン含む、実質75トークン)で処理するように設計されています。これはCLIPの学習時に固定された制約で、モデルのアーキテクチャ(Transformerの位置エンコーディング)に由来します。
75トークンを超えるプロンプトが入力された場合、Stable Diffusion系の実装(ComfyUI、A1111等)は以下のように処理します:
プロンプト: [A, B, C, D, E, F, G, ...](100トークンとする)
チャンク1: [BOS, A, B, C, ... 75トークン目, EOS] ← 独立してCLIPに入力
チャンク2: [BOS, 76トークン目, ... 100トークン目, パディング..., EOS] ← 独立してCLIPに入力
→ 2つの出力ベクトルを結合してU-Net/DiTに渡す
つまりチャンク = CLIPが1回で処理できる75トークンの塊です。75トークンを超えた部分は2つ目のチャンクとして、CLIPに別々に入力されます。
なぜ2チャンク目は「弱い」のか
以下は推定されるメカニズムであり、実験で直接確認されたものではない。
理由1: Cross-Attentionでの位置的不利
LDMのU-Net(またはDiTのTransformer)は、CLIPの出力をCross-Attentionで参照します。このとき、チャンク1の情報はCross-Attentionの初期ステップから参照されるのに対し、チャンク2は結合後の後方に位置するため、注目度が相対的に低くなります。
理由2: チャンク間の文脈断絶
CLIPは各チャンクを独立して処理します。つまり、チャンク1の文脈(「花園に立つ女性」)がチャンク2(「橋がある、蝶がいる」)に引き継がれません。チャンク2の要素は文脈なしで解釈されるため、チャンク1の被写体や場面との整合性が保証されません。
理由3: 拡散ステップの初期に決まる大枠
画像生成の初期ステップで全体の構図・色調・主要な被写体が決まります。このとき最も強く参照されるのがチャンク1です。後期ステップでチャンク2が参照されても、大枠が既に決まった後なのでディテールの追加にとどまります。
これはCLIP限定の話か?LLMとの違い
CLIPのチャンク分割はLLM(ChatGPT等)のコンテキスト制限とは根本的に異なります。
| CLIPのチャンク分割 | LLMのコンテキストウィンドウ | |
|---|---|---|
| 分割の仕組み | 75トークンで物理的にぶった切る | 制限内は全体を一度に処理 |
| 文脈の引き継ぎ | なし(各チャンクが独立) | あり(制限内は全トークンが相互参照) |
| 超過分の扱い | 2チャンク目として別処理 | 切り捨て or エラー |
| 位置の影響 | 先頭が最強、末尾も強い | 全体的に均一(ただしRecency Biasあり) |
LLMは128Kトークンのような長いコンテキストを一度に全体を処理できますが、CLIPは75トークンという極めて短い窓しか持たず、超過分は文脈なしで別処理されます。
実験: 2チャンク目の要素は反映されるか?
実験1: プロンプトの長さによる影響
同じテーマ(花園の女性)で短い・中・長いプロンプトを比較します。
短い(約15トークン・1チャンクの1/5)
| 結果1 | 結果2 | 結果3 |
|---|---|---|
![]() | ![]() | ![]() |
結果: シンプルなポートレート。背景は壁や街路、服はTシャツやワンピースなど。花園・白ドレス・桜の要素は出ていない。
中(約75トークン・ちょうど1チャンク)
| 結果1 | 結果2 |
|---|---|
![]() | ![]() |
結果: 花園+白ドレス+桜+ネックレスが反映。1チャンクに収まっているため全要素がフルに効いている。
長い(約150トークン・2チャンク)
中プロンプトに以下を追加: birds flying in the sky, distant mountains with snow caps, a small stream flowing nearby, wooden bridge in background, moss covered stone lantern, wisteria hanging from pergola, butterflies around flowers, dappled sunlight through leaves, mist in the valley below
| 結果1 | 結果2 | 結果3 |
|---|---|---|
![]() | ![]() | ![]() |
結果: 2チャンク目に入れた要素が部分的に反映されている。 藤(wisteria)、橋(wooden bridge)、灯篭(stone lantern)、鳥(birds)、蝶(butterflies)、山(mountains)が画面に出現。ただし全要素が毎回出るわけではなく、枚によって出る要素が異なる。
実験1のまとめ
| 長さ | チャンク数 | 1チャンク目の要素 | 2チャンク目の要素 |
|---|---|---|---|
| 短い(15トークン) | 1 | 全反映 | — |
| 中(75トークン) | 1 | 全反映 | — |
| 長い(150トークン) | 2 | 全反映 | 部分的に反映 |
2チャンク目は「無視される」のではなく「部分的に反映される」。 ただし安定性は低く、どの要素が出るかは生成ごとに異なる。
実験2: 矛盾する指示の位置で何が起きるか
red hair(赤髪)とlong black hair(黒髪)という矛盾する指示を、先頭と末尾に配置してどちらが勝つか検証します。
パターンA: red hairが先頭
| 結果1 | 結果2 | 結果3 |
|---|---|---|
![]() | ![]() | ![]() |
結果: 3枚中2枚は赤髪が勝利(chunk-09, chunk-10)。残り1枚(chunk-11)は根元が赤で毛先が黒になっており、両方の指示が混ざっている。全体として先頭のred hairが優勢だが、後方のlong black hairも完全には無視されていない。
ラボ長コメント: 矛盾する指示を入れたら根元赤・毛先黒のグラデになるの、なんか事故って生まれたデザインカラーみたいで逆にいいかも
パターンB: red hairが末尾
| 結果1 | 結果2 | 結果3 |
|---|---|---|
![]() | ![]() | ![]() |
結果: 3枚中1枚(chunk-12)で毛先にピンク〜赤のグラデーションが出たが、残り2枚(chunk-13, chunk-14)はほぼ純粋な黒髪。末尾のred hairはほぼ無視される傾向で、先頭寄りのlong black hairが圧倒的に優勢。
実験2のまとめ
| 配置 | 結果 | 解釈 |
|---|---|---|
red hairが先頭 | 赤髪が優勢(3枚中2枚で赤が勝利、1枚は赤黒混合) | 先頭の要素が最も強い(語順ルールの通り) |
red hairが末尾 | 黒髪がほぼ勝利(3枚中2枚で純黒髪、1枚のみ毛先に赤) | 末尾の指示はほぼ無視される傾向。反映されても部分的 |
ラボ長コメント: えっと、今回わかったのは「重要な要素は75トークン以内の先頭に置く」という鉄則ですね。2チャンク目は保険程度に考えて、核心は全部1チャンク目に詰めるのが確実みたいです























