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上で完全に実行される特定のシーケンスに従います:

  1. ドラフト作成: ドラフトモデルがトークンのシーケンスを予測します。
  2. サンプリングと検証: メインモデルが、提案された一連のトークンを一度のパスで検証します。
  3. 確定: 受理されたトークンは保持されます。拒否されたトークンについては、エンジンは各提案の前に記録されたロールバックポイントを使用して、以前の状態を再計算することなく、最後に受理されたトークンまで巻き戻ります。

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