🚀

WSL2でもAlpaca-LoRAを使いたい!(RAMが足りなくて挫折)

2023/03/31に公開

WSL2でAlpaca-LoRAを使いたい!でも、なんかエラーが出て動かんワロス!

オチがアレなので、最初に書いて置きます

GPU RAMが足りなくて、動かせませんでした\(^o^)/
/(^o^)\

ですが、一応、プログラムは動かせるようになったので、それのノウハウを書いて置きます。
Windowsでハイスペックパソコンを持っている方で、WSL2で動かしたいよぉ~という人は、参考にしてね!

初期状態で動かない理由

  1. WSL2の設定が不足していてGPUが動かせないようになってない
  2. bitsandbytesを改変していない

です。

1. WSL2の設定が不足

1番目については、Microsoft先生の公式ページか、
https://learn.microsoft.com/ja-jp/windows/ai/directml/gpu-cuda-in-wsl

NVIDIA先生の解説ページに書いてあります。
https://docs.nvidia.com/cuda/wsl-user-guide/index.html#getting-started-with-cuda-on-wsl

この件については、ダウンロード&インストールするだけなので割と難しくはないです。

問題は、2番目のbitsandbytesです。

2. bitsandbytesを改変していない

はい。これは、マジでこけました。これの改善に、3日間をつぶしました。

参考資料

https://github.com/tloen/alpaca-lora/issues/17

何をしたのか?

最初に言っておきますと、参考資料の内容を、素直にそのままやっても動きません。
まず出てくるバグですが、私の場合は2つほどありました。

  1. libcudart.soが読み込めない。
  2. 環境がGPUに対応してない
  3. MarkupSafeでsoft_unicodeが見つからない

バグの表示がこれなんです。1番はいいとして、2番はWSL2の設定が合っていても出てきます。
では、何が悪いのかというと、bitsandbytesです。
bitsandbytesが、環境に対応してないからGPUを参照出来てないです。
(この「うそつきぃぃ」とは言えないけど、ちょっとそんな感じ)

「libcudart.soが読み込めない」対策

パッケージをrootインストールしているなら、
/usr/local/lib/python3.8/dist-packages/bitsandbytes/cuda_setup/
あたりにmain.pyがあると思います。
これを改変します。

260行以降あたりに'/usr/local/cuda/lib64'というところを参照するように書いてありますが、この
文を、ifの外に置きます。(「Add」と囲っているところが、追加で書いたものです)

これをしないと後で警告が出て面倒なので、起きます。

ADD

なお、この時に書くパスは、CUDAのlibcudart.soファイルがあるところを書いてください。

「環境がGPUに対応してない」対策

375行以降あたりに、「CUDAが無効ならば'libsbitsandbytes_cpu.so'」とするとありますが、
これを「CUDAが有効ならば'libbitsandbytes_cuda***.so'とする」に変更します。
これ書き換えないと、正常にsoファイルを見てくれません。

REMOVE

if not torch.cuda.is_available(): return 'libsbitsandbytes_cpu.so', None, None, None, None
self.lib = ct.cdll.LoadLibrary(binry_path)

ADD

if torch.cuda.is_available(): return 'libbitsandbytes_cuda117.so', None, None, None, None
self.lib = ct.cdll.LoadLibrary(str(binary_path))

今回は、libbitsandbytes_cuda117.soの117はCUDAのバージョンのことを指しています。なので、自分の環境のバージョンに合わせてください。
下の「other」に確認・変更方法を書いて置きます。確認してね!

other

ちなみにCUDAのバージョンは、

下記で確認できます。

nvidia-smi
nvcc

下記で変更できます。

 sudo update-alternatives –-config cuda

「MarkupSafeでsoft_unicodeが見つからない」対策

これは、WSL2関係ありませんが…

MarkupSafeのバージョン2.1.0から、soft_unicodeは無くなりました。
なので、それ以前のものを使う必要があります。

pip install markupsafe==2.0.0

こんな感じで、インストールしておけば大丈夫です。

オワリ!

終わりです。( ゚ω^ )ゝ 乙であります!
と言っても、自分の環境では完全に動かせなかったので、やや心残りですが…(´・ω・`)

Discussion