Ollama 0.32.14 では、sm_86 CUDA カーネルが省略されたことにより、RTX 30 シリーズの GPU サポートが失われました。そのため、ランタイムは静かに CPU へとフォールバックし、モデルの生成速度が極端に低下します。
0.32.14 で何が変わったのか
新しいバイナリは、演算アーキテクチャ 7.5、8.9、10.0、および 12.0 のみを対象にビルドされています。NVIDIA の RTX 30 シリーズ、A40、A6000 のコードネームであるアーキテクチャ 8.6 が欠落しています。ランチャーが一致するカーネルを探しても見つからないため、ollama ps で GPU の「split」が報告され、アクセラレーションなしで処理が続行されます。
なぜ以前のフォールバックが機能しなくなったのか
以前のリリースでは、プライマリカーネルが失敗した場合に CUDA 12 ライブラリをロードするセカンダリパスが用意されていました。そのライブラリには依然として sm_86 用のコードが含まれていたため、同じハードウェアでモデルを実行することができました。0.32.14 では、このフォールバックコードが意図せず削除されたため、ランチャーは GPU を完全にスキップし、ホストプロセッサ上で実行されます。
影響を受けるユーザー
RTX 3080、3080 Ti、3090、3090 Ti、A40、A6000、または演算能力(compute capability)8.6 ベースのその他のカードを使用しているすべてのユーザーに、速度低下が発生します。この変更は、エラーメッセージもクラッシュも発生しないため、見た目には分かりませんが、スループットの顕著な低下として現れます。
CPU で動作していることを確認する方法
- 生成を開始し、別のターミナルで
nvidia-smiを実行します。「Memory-Used」列が 0 MiB のままの場合、処理は CPU で行われています。 - Ollama のログを確認し、
library=CUDA compute=8.6を含む行があるか探します。この行がない場合は、フォールバックが一度も機能しなかったことを意味します。 - 既知の GPU ベースラインと比較して、1秒あたりのトークン数(tokens per second)を確認します。以前のリリースでは数分で終わっていた大規模なモデルが、現在は数十分かかるようになります。
CUDA_VISIBLE_DEVICES などの環境変数を設定しても、この問題は解決しません。欠落しているカーネルは実行時のフラグではなく、コンパイル時の省略によるものだからです。
迅速な解決策:0.32.13 に固定する
Windows
- 現在の Ollama をアンインストールします。
- プロジェクトの GitHub リリースページから 0.32.13 のインストーラーをダウンロードします。
- インストーラーを実行し、Ollama サービスを再起動します。
Linux
sudo systemctl stop ollama
# replace <package> with the 0.32.13 .deb or .rpm you downloaded
sudo dpkg -i <package> # for Debian-based
# or sudo rpm -Uvh <package> # for RPM-based
sudo systemctl start ollama
ダウングレード後、再度 nvidia-smi による確認を行ってください。VRAM 使用量が 0 ではなくなり、生成速度が大幅に向上しているはずです。
今後のリリースで注意すべき点
sm_86 の欠落は、意図的な非推奨化ではなく、ビルドスクリプトにおける見落としであると思われます。メンテナーが欠落したカーネルを復元するか、CUDA 12 のフォールバックを再度有効にするまでは、0.32.13 以降へのアップグレードには同様のリスクが伴います。8.6 カーネルを再追加するパッチが当たっていないか、プロジェクトの Issue トラッカーを注視し、アップデート後はすぐに GPU 使用状況をテストしてください。
結論: 0.32.14 リリースでは、意図せず RTX 30 シリーズのアクセラレーションが無効化されています。nvidia-smi で GPU のアクティビティを確認してください。これらのカードを使用している場合は、欠落したカーネルが復元されるまで 0.32.13 にロールバックしてください。
