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 で動作していることを確認する方法

  1. 生成を開始し、別のターミナルで nvidia-smi を実行します。「Memory-Used」列が 0 MiB のままの場合、処理は CPU で行われています。
  2. Ollama のログを確認し、library=CUDA compute=8.6 を含む行があるか探します。この行がない場合は、フォールバックが一度も機能しなかったことを意味します。
  3. 既知の 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 にロールバックしてください。