見出し画像

How to fix bitsandbytes to CUDA12.8 on Forge

2025年6月18日、bitsanbytesの最新版が0.46.0に更新され、triton-windowsが最新のbitsandbytesに対応した為、記述を変更しています。

以下記事の、xformers絡みの速度検証テストをやっている過程で、久々にForgeを起動したんですが、

例によってあるあるですが、いつの間にか見慣れない警告が発生していました…今度は、bitsandbytesかよ…やれやれ。

WARNING:bitsandbytes.cextension:Could not find the bitsandbytes CUDA binary at WindowsPath('D:/USERFILES/forge/venv/Lib/site-packages/bitsandbytes/libbitsandbytes_cuda126.dll')
WARNING:bitsandbytes.cextension:The installed version of bitsandbytes was compiled without GPU support. 8-bit optimizers, 8-bit multiplication, and GPU quantization are unavailable.

Cursor先生の返答は以下です。

これらの警告は以下を意味します:

  1. bitsandbytes(機械学習の最適化ライブラリ)がCUDAバイナリファイルを見つけられていません。

  1. インストールされているbitsandbytesのバージョンがGPUサポートなしでコンパイルされているため、以下の機能が使用できません:

  • 8ビット最適化

  • 8ビット乗算

  • GPU量子化

この問題を解決するには:

  1. CUDA Toolkitが正しくインストールされていることを確認

  1. bitsandbytesを再インストール:

  1. もし特にGPUを使用する必要がない場合は、これらの警告は無視しても問題ありません。CPUモードで動作します。

いやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいやいや、待てよ、めっちゃ問題あるやん。

CUDAメインの環境においては、CPUモードで動作します=激遅になりますと同義ですから。

別にコマンドで確認しなくても自分で認識していますが、CUDAは最新の12.8をインストールしています。(Pytorchに内装されているCUDAも12.8に手動更新している)

必要なbitsandbytesのバージョンは、以下の通り>0.45.3です。

しかし、ここで問題が起きました。

pip installで普通に更新は出来たんですが、Forgeを起動すると勝手に0.43.3に戻されてしまうんですよ。

これは最初、例の「こいつ」かと思ったんですが、bitsandbytesの定義はないんですよね。

Cursor先生に再調査してもらい、定義は、/forge/modules_forge/bnb_installer.pyにあることがわかりました。

確かに、ド直球で0.43.3指定になっていたので、これを0.46.0を力ずくで適用する形に変えました。

これで下図のように、CUDA12.8に対応する0.46.0(下図は0.45.3だが、現在の最新は0.46.0)が適用されることになり、警告も消えました。

この処ひたすらComfyUIしか触っておらず、久々にForgeを使いましたが、CUDAやCuDNNの更新は常にかけているので、こういうのはあるあるです。

かつ、このbitsandbytesの更新によって、別の問題が発生します。

この状態でForgeにおいてxformersを使用する為には、当然A1111と違ってtriton-windowsが必須になる訳ですが、そのtriton-windowsは最新の3.3.1.post19が必要になります。

ただ、以下記事でも最後に触れていますがForge系に関しては、xformersとCross-Attentionの速度比較テストをした結果、ほとんど差が生じなかったので、私が解説してきた従来のインストール方法通り、Forge系に関してはCross-Attentionのままで良いかと思います。


いいなと思ったら応援しよう!