はじめに
Faster-Whisperを使ってみたいけど、環境構築が面倒だなーと感じている私のような輩のために、比較的カンタンでクリーンな環境構築の方法を紹介します。
ここで"クリーンな環境"とは「OSのパッケージを汚さずに設定できてカンタンに元通り」という意味合いです。
この記事は、前回の記事の追加情報です。
結論
NVIDIAのパッケージから必要な部分だけを選び出すことで、OSを汚さずにFaster-Whisperを動かす環境を作成できます。
しかし、今回の手順は、難しく無いと思いますが、面倒かもしれません。
環境構築の手順
前回の記事でFaster-Whisperのやや古いバージョンを動かしましたが、今回は最新版を目指します。NVIDIAの公式パッケージは開発者向けに多くのファイルが含まれており、実際に必要なのはその中のごく一部です。必要なファイルを抽出して環境を構築します。
要するに、nvidiaの公式パッケージは、開発者向けに様々な関連ファイルがどっさり詰まっているので「OSですか?」とツッコミたくなる位の大容量なわけです。実行に必要なのは、その中のほんの一部だけ。
試した環境
OS: Ubuntu 22.04 LST
GPU: nvidia t1000 8GB (nvidia-driver-535)
手順
まずは、前回のおさらい。cudaがインストールされていない時は以下のようなエラー
(Whisper) hoge@mx130:~/LLM/fast-whisper/sample$ python3 test.py
Could not load library libcudnn_ops_infer.so.8. Error: libcudnn_ops_infer.so.8: cannot open shared object file: No such file or directory
中止 (コアダンプ)
このファイルをNVIDIAの公式パッケージから探してみます。
ダウンロードしようとしたらCuda9って書いてありました。ライブラリのファイル名からVer8が必要と思われます。"Archive of Previous Releases"から探してみたら、v8系のパッケージを発見できました。debパッケージやtarアーカイブもありますね。
自分は、もちろんtarアーカイブを選択!
cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz
しかし822MBってデカすぎでしょう。
ここから目的のファイルを探してみます。
tar -Jtvf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz | grep '/libcudnn'
lrwxrwxrwx svc-compute-packagin/sw-cuda-installer 0 2023-11-30 17:11 cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib/libcudnn_ops_infer.so -> libcudnn_ops_infer.so.8
lrwxrwxrwx svc-compute-packagin/sw-cuda-installer 0 2023-11-30 17:11 cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib/libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.9.7
-rwxr-xr-x svc-compute-packagin/sw-cuda-installer 90849728 2023-11-30 17:11 cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib/libcudnn_ops_infer.so.8.9.7
発見しました。このファイルだけ抽出します。
tar -Jxf cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib/libcudnn_ops_infer.so.8.9.7
出てきたlibcudnn_ops_infer.so.8.9.7を適当なフォルダに移して、シンボリックリンクでファイル名を整えます。
mkdir ~/LLM/faster-whisper/libs
mv libcudnn_ops_infer.so.8.9.7 ~/LLM/faster-whisper/libs/
cd ~/LLM/faster-whisper/libs
ln -s libcudnn_ops_infer.so.8.9.7 libcudnn_ops_infer.so.8
環境変数LD_LIBRARY_PATHを設定します。
export LD_LIBRARY_PATH=~/LLM/faster-whisper/libs
実行してみます。
(Whisper) hoge@mx130:~/LLM/fast-whisper/sample$ python3 test.py
:
(すいません、このエラーは記録していません)
:
次は、libcudnn_cnn_infer.so.8が無いって出てきたので、同じ手口でlibsにコピーします。
(Whisper) hoge@mx130:~/LLM/fast-whisper/sample$ python3 test.py
:
(すいません、このエラーは記録していません)
:
次に無いと言われたのが、libcublasLt.so.11で、これはさっきのtarアーカイブに含まれていませんでした。
ネットの情報から、なんとなくnvidiaのCUDA Toolkitに含まれてそうです。
最新はVer12っぽいですね。必要なのはVer.11だと思うのですが。
cuDNNと同じように"Archive of Previous CUDA Releases"からCUDA11.8
を選択してみたのですが、debパッケージしか有りませんでした。
またしばらくネットの記事を検索した結果、Faster-Whisperの公式README.mdにcuBLAS for CUDA 11のリンクがちゃんと記載されていました。READMEはまじめに読まないとダメですね。
nvhpc_2024_241_Linux_x86_64_cuda_multi.tar.gz
をダウンロード・・・
ってナニコレ?! 9GBもあるんですけど!!! OSですか? Windowsですか? Officeですか???
そして、この巨大なtarアーカイブから、libcublasLt.so.11を探して追加して、実行して足りないと言われたライブラリを探して追加して、を繰り返して必要なファイルをlibsフォルダに集めていきます。
最終的に音声認識ができるようになった段階でのlibsディレクトリの中身はこうなりました。
lrwxrwxrwx 1 hoge hoge 23 3月 5 15:39 libcublas.so.11 -> libcublas.so.11.11.4.17
-rwxr-xr-x 1 hoge hoge 94729912 1月 27 04:59 libcublas.so.11.11.4.17
lrwxrwxrwx 1 hoge hoge 21 3月 5 15:42 libcublas.so.12 -> libcublas.so.12.3.4.1
-rwxr-xr-x 1 hoge hoge 106679344 1月 27 05:01 libcublas.so.12.3.4.1
lrwxrwxrwx 1 hoge hoge 25 3月 5 15:38 libcublasLt.so.11 -> libcublasLt.so.11.11.4.17
-rwxr-xr-x 1 hoge hoge 574565176 1月 27 04:59 libcublasLt.so.11.11.4.17
lrwxrwxrwx 1 hoge hoge 23 3月 5 15:45 libcublasLt.so.12 -> libcublasLt.so.12.3.4.1
-rwxr-xr-x 1 hoge hoge 518358624 1月 27 05:01 libcublasLt.so.12.3.4.1
lrwxrwxrwx 1 hoge hoge 27 3月 5 15:05 libcudnn_cnn_infer.so.8 -> libcudnn_cnn_infer.so.8.9.7
-rwxr-xr-x 1 hoge hoge 563283840 11月 30 17:11 libcudnn_cnn_infer.so.8.9.7
lrwxrwxrwx 1 hoge hoge 27 3月 5 15:02 libcudnn_ops_infer.so.8 -> libcudnn_ops_infer.so.8.9.7
-rwxr-xr-x 1 hoge hoge 90849728 11月 30 17:11 libcudnn_ops_infer.so.8.9.7
一応、md5sumも記載しておきます。
5c3e7a7148161aa835ab9a55b21717ed libcudnn_ops_infer.so.8.9.7
12dfd61d1b8ec1c6ec4dceedea8f09a8 libcudnn_cnn_infer.so.8.9.7
b4396e1aa4147bd884a30b442c59dcd1 libcublasLt.so.11.11.4.17
98e84ac45b41f830350fc82fa48842b9 libcublas.so.11.11.4.17
aa0551868dd82ff3570b50022f57f654 libcublas.so.12.3.4.1
5e994ad31afab0cbdbe94f3951a979c5 libcublasLt.so.12.3.4.1
あとは起動スクリプトで起動するとか
#!/bin/bash
export LD_LIBRARY_PATH=~/LLM/faster-whisper/libs
source ~/LLM/faster-whisper/libs/.venv/bin/activate
python3 test.py
.bashrcで設定するとか
# なんか色々書いてある
# 最後に追加
export LD_LIBRARY_PATH="~/LLM/faster-whisper/libs:$LD_LIBRARY_PATH"
/usr/local/libあたりに環境構築するとか
お好みの方法を選択すると良いかと。
以上で、Faster-whisper最新版( 1.0.x )をローカルで実行する環境ができました。
いや、結構面倒だったわコレ・・・・