Ollama 0.31: マルチトークン予測によるGemma 4のパフォーマンス向上
Ollama 0.31は、Apple Silicon上のGemma 4に対してマルチトークン予測(MTP)を実装しました。これにより、コーディングエージェントのベンチマークにおいて、トークン生成速度が平均で約90%向上しました。このパフォーマンス向上はデフォルトで有効になっており、モデルの出力内容自体は変更されません。
マルチトークン予測(MTP)の仕組み
Gemma 4は、メインモデルと並行して動作する、小さくて高速なドラフトモデルを使用して、次に続く複数のトークンを提案します。メインモデルは、これらの提案を一度のパスで検証し、ドラフトモデルの予測が正しい場合には、1トークン分のコストで複数のトークンを確定させます。
このアプローチは、コード生成において特に効果的です。コード生成には、閉じ括弧、繰り返される識別子、ボイラープレートといった予測可能なパターンが多く含まれるためです。その結果、ファイルを読み込み、ツールを実行するためにモデルを継続的に呼び出すコーディングエージェントのレスポンスが大幅に向上します。
技術的な実装
Ollama 0.31における高速化は、主に3つの技術的な最適化によって実現されています:ドラフト長の自動チューニング、エンジンレベルの投機的デコーディング、およびGPUカーネルの最適化です。
ドラフト長の自動チューニング
理想的なドラフトトークン数は、モデル、量子化、ハードウェア、およびテキストの予測可能性によって異なるため、Ollamaは実行時にドラフト長を決定します。システムは、提案の受理率と検証パスの所要時間を追跡し、1秒あたりのトークン数を最大化する長さを選択します。提案が継続的に拒否される場合は、投機的デコーディングがパフォーマンスを低下させないよう、システムは自動的に標準的な1トークンずつのデコーディングに切り替わります。
投機的デコーディング・エンジン
生成プロセスは、CPUへのラウンドトリップを避けるために、GPU上で完全に実行される特定のシーケンスに従います:
- ドラフト作成: ドラフトモデルがトークンのシーケンスを予測します。
- サンプリングと検証: メインモデルが、提案された一連のトークンを一度のパスで検証します。
- 確定: 受理されたトークンは保持されます。拒否されたトークンについては、エンジンは各提案の前に記録されたロールバックポイントを使用して、以前の状態を再計算することなく、最後に受理されたトークンまで巻き戻ります。
MLXカーネルの最適化
検証プロセスは、このプロセスの中で最も計算負荷の高い部分です。ドラフトのバッチサイズは通常小さいため(2〜8トークン)、単一トークンのデコードと大規模バッチのプリフィルの中間的なサイズとなり、標準的な行列演算カーネルでは非効率的になります。
Ollamaは、MLXに対して、各重みのブロックを一度だけ読み込み、展開してバッチ全体で再利用する特化型カーネルをMLXに提供しました。M5 Maxを使用し、nvfp4を使用する場合、この最適化により、冗長な計算を排除しつつ同一の計算結果を維持することで、Gemma 4の最大の行列演算を2倍から2.5倍高速化します。
ベンチマークと利用可能性
パフォーマンスは、コーディングエージェントによる実際のプログラミングタスクをシミュレートするAider polyglotベンチマークを使用して測定されました。その結果、M5 Max上のGemma 4 12B (nvfp4) において、生成速度が約90%向上したことが示されました。
これらの改善を利用するには、macOS用のOllama 0.31以降をダウンロードする必要があります。以前にGemma 4をダウンロードしたユーザーは、以下のコマンドを使用してモデルを再取得(re-pull)してください:
ollama pull gemma4:12b-mlx
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch