メインコンテンツへスキップ

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


     
     
    小説を書いたり機械学習で遊んだり電子工作をしたりしています。

    あなたへのおすすめ