あなたが ChatGPT、Claude、または DeepSeek に文章を入力すると、モデルは数百ミリ秒のうちに文字ごとに返答を始めます――この一連の流れは簡単に見えますが、実際には現代の計算における最も精緻なエンジニアリングの一つです。この記事では、AIエンジニアの Akshay Pachaar が行う推論プロセスを完全に整理し、tokenization、embedding、attention から prefill/decode の2段階、KV cache、量子化、そして DeepSeek V4 がなぜキャッシュ容量を元の 10% まで削減できたのかを解説します。
中核となる心のモデル:LLM は「次のトークンを当てる」だけ、そしてそれを繰り返す
大規模言語モデルの本質は、ただ一つのことを行うことにあります。それは「次の token を予測する」ことです。モデルは入力された token 列を受け取り、次の token の確率分布を計算し、そこから token をサンプリングして生成します。生成したその token を入力の末尾に接ぎ足し、さらに次の token を予測する――この動作を止め記号が出るか上限に達するまで、ひたすら繰り返します。
推論プロセスにおける重要な問題は、「それはどうやって予測するのか」ではなく、「なぜ2つ目の token は1つ目よりずっと速いのか」です。この答えは、現代の LLM サービスで最も重要な2つの概念へとつながります。prefill と decode の2段階、そして KV cache です。
Step 1:Tokenization が文字を数字にする
ニューラルネットワークは文字を読みません。ベクトルだけを読みます。したがってプロンプトはまず tokenization を経て、「token」に分割され、各 token は整数 ID に対応します。現代の LLM の多くは BPE(Byte Pair Encoding、バイト対エンコーディング)を採用します。原始の文字から出発し、最もよく一緒に現れる文字ペアを順次マージし、最後に約 5 万個の一般的な token の語彙表を得ます。
このステップの影響は、多くの人が想像するよりはるかに大きいです。tokenizer の学習データでの比重が低い言語は、より細かく token に切られ、推論コストが増えて、速度も遅くなります。中国語や繁体字中国語は、多くの英語寄りの tokenizer では、1 文字が 2〜3 個の token に分割されることが多く、これは中国語利用者の推論コストが高くなりやすい根本原因の一つです。
Step 2:Embedding が整数をベクトルに変え、位置情報を注入する
各 token の整数 ID は、大きな「embedding 表」を引きます。モデルの語彙が 50K、隠れ次元が 4096 なら、この表の形状は [50000, 4096] です。各 token はこの表から1行のベクトルを取り出し、それが 4096 次元の表現になります。
これらのベクトルはランダムではありません。学習では、意味が近い token は同じ空間の領域へ押し寄せます。king と queen はある方向に近く、python(言語)と javascript は別の方向に近く、python と snake(ヘビ)はさらに別の方向に近い、という具合です。
位置情報もこの段階で注入されます。attention 機構自体は、どの token が前でどれが後かを知りません。現在の主流モデルは多くの場合 RoPE(Rotary Position Embedding、回転位置エンコーディング)を採用し、token の位置に応じてベクトルを回転させ、順序情報をベクトルそのものに内包させます。
Step 3:Self-Attention は Transformer の核心
ベクトル列は続いて 32 層(またはそれ以上)の transformer 層へ入り、各層は2つのことを行います。self-attention で token 間に情報を混ぜ、次に feed-forward で各 token の内部に情報を混ぜます。
self-attention の動作はこうです。各 token は学習で得た3つの重み行列 Wq、Wk、Wv を通して、それぞれ query(クエリ)、key(キー)、value(値)という3つのベクトルを生成します。各 token は自分の query を使って他の全 token の key との内積を計算し、「この token は他の token からどれだけ情報を取り込むべきか」を表す重みを得ます。そしてその重みで value を加重混合します。
これが attention の魔法です。各 token 自身が、文脈中のどの位置を見ればよいかを決め、役に立つ情報を自分のベクトルへ引き込みます。32 層重ねることで、モデルは数千 token にまたがって指示対象を追跡できます。attention の後に続く feed-forward ネットワークは、モデルの知識の大部分を担い、attention は情報の運搬、feed-forward は情報処理を担います。
Prefill と Decode:同じ GPU、でもまったく異なるボトルネック
ここが本記事の最も重要な区切りです。200 文字程度の返信を生成する場合、それは実際には性質がまったく違う2つのタスクであり、同じ1枚の GPU 上で実行されます。
prefill 段階――あなたがプロンプトを送ると、モデルはまずすべての入力 token を1回通し、その後で最初の token を生成しなければなりません。この段階では、すべての入力 token を「並列」に処理できます。各 token の Q、K、V を同時に計算し、attention は巨大な行列どうしの乗算になります。GPU はこの種の演算のために作られており、演算ユニット(Tensor Cores)が満載に稼働し、ボトルネックは「演算力」にあります。この段階の遅延指標は TTFT(Time to First Token、先頭トークンまでの時間)です。
decode 段階――最初の token が出た後、モデルはモードを切り替えます。51 個目の token を生成するときには、その新しい token の Q、K、V だけ計算すればよく、過去 50 個の token の K、V はすでに計算済みなので、やり直す必要はありません。問題は、各 token の計算量は小さいのに、GPU はそれでも顯存(VRAM)からモデルの重み全体と KV の履歴全体を読み込み、わずかな計算を1回行って、それを戻す必要があることです。ボトルネックは「演算力」から「メモリ帯域」へと反転します。この段階の遅延指標は ITL(Inter-Token Latency、token 間の遅延)で、モデルが「打鍵」感覚で速いかどうかを決めます。
つまり prefill は compute-bound(演算律速)、decode は memory-bound(メモリ律速)です。同じモデル、同じハードウェアでも、性能特性は完全に異なります。
KV Cache:LLM 推論を成立させる鍵となる最適化
decode 段階で「過去の token を再計算しない」ために使うのが KV cache です。各 transformer 層は2つのテンソルを維持します。過去のすべての token の K と V を保存し、新しい token の K、V を計算した後、それらを append して追加し、attention 時には履歴の全体をそのまま読み取ります。
KV cache がない場合、1,000 token の生成では、生成の各ステップで成長していくシーケンス全体を再計算する必要があり、計算量は二次方程式的に爆発します。KV cache があると、長い生成は 5 倍以上の高速化が可能です。ただし代償もあります。cache は GPU の顯存に保存され、token を1つ生成するたびに cache もその分だけ増えます。13B 規模のモデルでは、各 token がだいたい 1MB を占めます。4K 上下文ではこの cache だけで 4GB の顯存を使い切ります。
これが「長いコンテキストは遅い、しかも高い」本当の理由です。モデルが「考え切れない」からではなく、cache が顯存を食い尽くし、1枚の GPU で同時にサービスできるユーザー数が下がるからです。よくある最適化手法としては、cache を INT8 や INT4 に量子化すること、sliding window で古すぎる token を捨てること、grouped-query attention(GQA)で複数の attention head が同じ K、V を共有すること、あるいは vLLM が採用する PagedAttention で cache をページ分割して管理すること(OS のメモリ管理に似ています)などがあります。
DeepSeek V4 のキャッシュ革命:1M context で元の 10% へ
量子化とページ分割により、KV cache を「固定コスト」として最適化できます。DeepSeek は 2025 年末に予告した V4 シリーズで、さらに攻めた方針を採ります。最初から cache を小さくするために、attention を根本から再設計するのです。
V4 は混合メカニズムを採用し、疎密の2種類の圧縮 attention 変種を組み合わせ、どちらも高度に圧縮された KV フロー上で動作します。百万 token の上下文で、V4-Pro の報告では KV cache の体積は前世代の約 10% にとどまり、token あたりの計算量も約 27% です。意味は「DeepSeek がまた安くなった」だけではありません。KV cache が、LLM 領域全体で最適化が必要なボトルネックになっているからです。attention 機構自体を再設計して cache を縮小するなら、その時点で技術コミュニティの「制約条件」が完全に場所を移したことになります。
台湾の読者にとってより実用的な情報はこうです。DeepSeek V4-Flash はすでに Ollama Cloud と米国ホストで利用可能です(abmedia の 4/24 報道参照)。また Claude Code、OpenClaw でもワンクリックで接続でき、長いコンテキスト場面における新世代 attention の優位性を、自前で立てずに検証できます。
Quantization:精度を使って速度と顯存を得る
学習では高精度が必要ですが、推論では不要です。多くの正式なデプロイでは FP32 をやめて FP16 か BF16 に切り替え、直ちに顯存と throughput が倍になります。より攻めたやり方では、重みを INT8、あるいは INT4 に量子化します。
直感できる数字:FP32 の 7B パラメータモデルは 28GB、FP16 なら 14GB、INT8 なら 7GB、INT4 ならわずか 3.5GB です。だからこそ、一般的なノートPCの GPU でも 7B モデルを動かせます。GPTQ や AWQ などの手法では、チャネルごとのスケーリング係数を選び、誤った(有損)圧縮による品質低下を最小化します。設計のうまい INT4 は、多くのベンチマークで元のモデルに対して 1 パーセントポイント以内の差で済みます。
すべてのステップをつなぐ:一つのプロンプトの完全な旅程
上のすべての要素をつなげると、1回の推論における完全な流れは次のとおりです。 (1)Tokenize――文字を整数 ID に変換。(2)Embed――ID をベクトルに変換し、位置情報を注入。(3)Prefill――すべての層がすべての入力 token に対して並列演算を行い、compute-bound であり、KV cache が作られ、最初の出力 token が生成される。(4)Decode loop――毎回新しい token だけを Q に投影し、cache 内の K、V に対して attention を行い、feed-forward を回し、出力をサンプリングし、新しい K、V を cache に書き戻す。memory-bound に属する。(5)Detokenize――token ID を文字へ戻し、画面へストリーミング出力。
vLLM、TensorRT-LLM、Text Generation Inference などのサービスフレームワークは、このループの外側で連続バッチ(異なるユーザーの token を同じ GPU step でインターリーブ)、speculative decoding(小モデルが下書きを打ち、大モデルが検証)、そしてきめ細かなメモリ管理を追加します。これが 1枚の GPU で数十人にサービスする方法です。
開発者のための実務的な学び:あなたは TTFT と ITL どちらを気にすべきか?
推論プロセス全体像が見えると、いくつかの実務判断が自然に浮かび上がります。
長いプロンプトは TTFT を増幅し、長い出力は ITL を増幅します。負荷の種類が違うので、最適化のリソースを間違った指標に使わないでください。Context は無料ではありません。コンテキストを2倍にすれば、計算が2倍になるだけでなく、KV cache が収容できるバッチサイズも圧迫されます。量子化は現時点で最大のレバレッジを持つツールです。FP16 を INT8 に置き換えると遅延が半分程度になることがよくあり、品質損失は極めて小さいです。GPU 利用率(utilization)もまた誤解を招きやすい指標です。prefill 段階では GPU を満載にして回し、decode 段階では GPU 使用率が 30% 程度しか使われないことがあります。その解決策は「もっと計算力」ではなく、より速いメモリ、またはより小さい cache です。
Transformer アーキテクチャは注目を集めがちですが、推論の性能は実際には「退屈な細部」で決まります。メモリ配置、cache 管理、ビット幅です。「このモデルは遅い」と誰かが言ったら、次に聞くべき質問は「GPU を変える」ではありません。「遅いのは『開始』なのか、『ストリーミング』なのか?」です。答えが最適化の道筋全体を決めます。
この記事の LLM 推論の完全チュートリアル:KV cache と DeepSeek V4 のキャッシュ革命 は、最初に 鏈新聞 ABMedia に掲載されました。