CLIPの「75トークンでチャンク分割」とは何か?2チャンク目は本当に弱いのか実験

CLIPの「75トークンでチャンク分割」とは何か?2チャンク目は本当に弱いのか実験

結論

チャンク分割で起きること

  1. 2チャンク目は「無視」ではなく「弱くなる」 — 実験1で藤・橋・灯篭などが部分的に反映されることを確認
  2. 2チャンク目の要素は安定しない — 生成ごとに出る要素が異なる。確実に反映させたければ1チャンク目に入れる
  3. 矛盾する指示は「先頭が圧倒的に勝つ」 — 赤髪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)

短い(約15トークン)
a 20yo japanese woman, portrait, soft smile, natural light, 85mm lens
結果1結果2結果3
短1短2短3

結果: シンプルなポートレート。背景は壁や街路、服はTシャツやワンピースなど。花園・白ドレス・桜の要素は出ていない。

中(約75トークン・ちょうど1チャンク)

中(約75トークン = 1チャンク)
a 20yo japanese woman, portrait, soft smile, natural light, 85mm lens, standing in a flower garden, wearing a white summer dress, long black hair, cherry blossoms falling, warm afternoon sunlight, shallow depth of field, gentle breeze blowing hair, looking at camera, delicate gold necklace, professional photography, photorealistic, detailed skin texture, magazine quality, elegant pose, spring atmosphere
結果1結果2
中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

長い(約150トークン = 2チャンク)
a 20yo japanese woman, portrait, soft smile, natural light, 85mm lens, standing in a flower garden, wearing a white summer dress, long black hair, cherry blossoms falling, warm afternoon sunlight, shallow depth of field, gentle breeze blowing hair, looking at camera, delicate gold necklace, professional photography, photorealistic, detailed skin texture, magazine quality, elegant pose, spring atmosphere, 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
長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が先頭

パターンA: red hairが先頭
red hair, a 20yo japanese woman, portrait, soft smile, natural light, 85mm lens, standing in a flower garden, wearing a white summer dress, long black hair, cherry blossoms falling
結果1結果2結果3
A1A2A3

結果: 3枚中2枚は赤髪が勝利(chunk-09, chunk-10)。残り1枚(chunk-11)は根元が赤で毛先が黒になっており、両方の指示が混ざっている。全体として先頭のred hairが優勢だが、後方のlong black hairも完全には無視されていない。

ラボ長コメント: 矛盾する指示を入れたら根元赤・毛先黒のグラデになるの、なんか事故って生まれたデザインカラーみたいで逆にいいかも

パターンB: red hairが末尾

パターンB: red hairが末尾
a 20yo japanese woman, portrait, soft smile, natural light, 85mm lens, standing in a flower garden, wearing a white summer dress, long black hair, cherry blossoms falling, red hair
結果1結果2結果3
B1B2B3

結果: 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チャンク目に詰めるのが確実みたいです