GLM の100万トークン文脈ウィンドウを解説

GLM の100万トークン文脈ウィンドウは、現行フラッグシップのGLMモデルを決定づける特徴であり、設定フラグの話ではありません。実用上の上限を200,000から1,000,000トークンへ引き上げるには、アテンションのアーキテクチャ、投機的デコード、配信スタックの3つに変更が必要でした。これらが揃って初めて、使えるウィンドウになります。

このページでは、その一つひとつを平易な言葉と公表された数値で説明します。要約すると、共有インデクサが100万トークン時のトークンあたり計算量を2.9分の1にし、再設計されたマルチトークン予測層が投機的デコードの受理長を約20%引き上げ、一連のメモリとカーネルの改良が KV-cache 容量の壁を取り除きました。すべての数値はモデル開発元の公表値です。

200Kから100万へ:何を変える必要があったか

長文脈の素朴な問題はアテンションコストが二次で増えることであり、スパースアテンションは原理的にこれを解決します。各トークンが過去のすべてではなく選ばれた部分集合にだけ注意を向けるからです。ただしスパースアテンションにはインデクサ(どのトークンに注意すべきかを決める軽量な仕組み)が必要で、それを全層で走らせると、文脈長とともに増えるコストが再び生じます。200,000トークンではこのオーバーヘッドは許容範囲ですが、100万では許容できません。

第2の問題は、数十万トークンを超えるとボトルネックが計算ではまったくなくなることです。KV-cache の容量、長文脈カーネルの効率、CPU 側のオーバーヘッド、つまり数学ではなくメモリとシステムの問題になります。アーキテクチャ上は百万トークンのウィンドウに対応できても、キャッシュが収まらなかったりスケジューラが詰まったりすれば、配信できません。

IndexShare:4層に1つのインデクサ

IndexShare がそのアーキテクチャ上の答えです。transformer の全層がそれぞれ top-k インデックスを計算するのではなく、4層ごとに軽量なインデクサを1つ共有します。インデクサは4層の最初に置かれ、その top-k インデックスを残り3層が再利用するため、4層のうち3層からインデクサの内積計算と top-k 選択が取り除かれます。

公表された結果は、100万トークン文脈でのトークンあたりFLOPsが2.9分の1になり、長距離での品質低下は報告されていない、というものです。IndexShare は推論時に後付けされたのではなく、中間学習以降、系列長128K で使われました。これは重要な点です。配信時にだけ導入した共有方式は、学習時の挙動と実行時の挙動の間に不整合を生むからです。

IndexShare と KVShare を用いた MTP

マルチトークン予測は、数トークン先を下書きしてから検証することで生成を高速化します。その効率は受理長、つまり下書きしたトークンのうち平均で何個が検証を通るかで測られます。前世代では MTP 層が学習時と推論時で使う KV キャッシュに不整合があり、7回の MTP ステップにおける受理長は4.56 に頭打ちでした。

現在の設計では、最初の下書きステップでインデクサを1回だけ実行し、以降のステップではそのインデックスを再利用して、インデックスと KV の状態を共有します。投機的デコード経路に棄却サンプリングを加え、さらにエンドツーエンドの全変動(TV)ロスを導入したことで、受理長は5.47 に上昇しました。検証1回あたりの受理トークンが約20%増えたことになります。公表されたアブレーションを以下に示します。

MTP 受理長のアブレーション
ベースライン4.56
+ IndexShare + KVShare5.10
+ 棄却サンプリング5.29
+ エンドツーエンド TV ロス5.47 (+20%)

このページの数値はすべてモデル開発元が公表した結果です。glmmodel.com はそれを掲載しているだけで、これらの評価を自ら実施してはいません。

100万トークン文脈を効率よく配信する

システム面には3つの変更で対応しています。LayerSplit ベースのメモリ管理により、モデルの状態をどう分割・並列化するかをより細かく制御でき、キャッシュ確保が全か無かではなくなります。長文脈向けにスケールさせたカーネル改良はキャッシュ転送パイプラインと協調させ、計算とメモリ移動を直列ではなく重ね合わせます。そして CPU 側のキャッシュ管理、リクエストスケジューリング、ランタイム経路のチューニングが、短い文脈では見えないが長い文脈では支配的になるオーバーヘッドを取り除きます。

報告されている効果は、文脈が長くなるほどスループットの優位が広がるというものです。プロンプトが長いほど、素朴な配信経路との差は大きくなります。100万トークンの文脈ウィンドウを仕様書上の存在から、負荷の下で実際に運用できるものへ変えているのがこの性質です。

正規化スループットの優位

文脈長の増加にともなう相対スループットの優位(モデル開発元の説明による)。

GLM の100万トークン文脈に関するよくある質問

GLM の100万トークン文脈ウィンドウは実際どれくらいですか?
1,000,000トークンで、前世代の200,000から拡大し、出力は最大128,000トークンです。モデル開発元はこれを単に受け付けるのではなく実用に耐えると説明しています。長いコーディングエージェント軌跡で学習されているため、実行が混沌としても品質が落ちず、ウィンドウ全体で保たれることが意図されています。
IndexShare とは何ですか?
IndexShare は、4層のスパースアテンション層ごとに軽量なインデクサを1つ共有する仕組みです。top-k インデックスは各グループの最初の層で計算され、残り3層が再利用するため、4層のうち3層からインデクサ処理が消え、100万トークン文脈でのトークンあたりFLOPsが2.9分の1になります。
100万トークン文脈の末端で品質は劣化しますか?
モデル開発元は IndexShare による長距離での品質低下はないと報告しており、ウィンドウが実用的であり続けるよう長文脈のコーディングエージェント軌跡で学習しています。とはいえ常のことながら、想定せず自分の長文脈タスクで検証してください。想起の挙動はワークロード依存です。
100万トークンの文脈ウィンドウを自分で配信できますか?
ウェイトは MIT ライセンスで、transformers、vLLM、SGLang、xLLM、ktransformers で動作しますが、百万トークンの KV キャッシュは大きなメモリ負担です。多くのセルフホスト環境では同じウェイトでより短いウィンドウを運用し、必要な場合にだけフル文脈を確保しています。
なぜ100万トークンの文脈がコーディングエージェントにとって重要なのですか?
検索層をクリティカルパスから外せるからです。どの断片をモデルに見せるかをパイプラインが選ぶのではなく、リポジトリ全体、そのテスト出力、エージェント自身のこれまでの試行が視界に残ります。ファイル横断のバグやシステム全体の不具合を見つけられるのは、まさにこのためです。

稼働中のAIモデルを無料で試す — アカウント不要

GLMモデルのベンチマークを読んだら、実際のモデルを動かしてみてください。上のプレイグラウンドは無料で、何の登録も必要ありません。より本格的なAIツールが必要なら、パートナーの無料プランをどうぞ。