8-bit optimizer(bitsandbytes)をWindows(非WSL)で動かす

概要

学習の省メモリ化に有効なbitsandbytesの8-bit optimizerですが、Windows用のDLLが提供されていないためそのままでは動きません。

以前の記事に8-bit optimizerをWindows(非WSL)で動かす方法について書きましたが、わかりやすいように記事として独立させました。

手順

仮想環境等を適宜設定しておいてください。

bitsandbytesのインストール

pipでインストールします。Windows対応のための変更スクリプトが0.35.0でしか動かないため、バージョンを指定してインストールします。
(10/28現在。将来的にはbitsandbytesがネイティブでWindowsに対応してくれることを期待します。)

pip install bitsandbytes==0.35.0

Windows用DLLのダウンロードとコピー

こちらのissueを参考に、有志の方がコンパイルされたWindows用DLLファイル、libbitsandbytes_cuda116.dllをこちらのページから落としてきます(CUDA 11.6用ですが、私はCUDA 11.3環境で動きました)。

DLLを仮想環境のbitsandbytesのディレクトリにコピーします。

DLLを仮想環境内など適切なところにコピー

スクリプトの書き換え

先のissueを参考にbitsandbytesのcuda_setup/main.pyと、cextension.pyを書き換えます(書き換え済みファイルも添付してあります)。

main.pyを修正
main.pyの$$$のある行を追加
cextension.pyを修正
cextention.pyの$$$の前の行を、$$$のある行のように、str()を追加する

動作確認

Pythonを起動し、import bitsandbytesとしてエラーが出なければOKです。

OK

0.35.0に対応した両ファイルを添付しておきます。それぞれの元ファイルをリネームし、同じ場所に入れてください。


この記事が気に入ったらサポートをしてみませんか?