2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Faster-Whisperを使ってみたいけど、環境構築が面倒だなーと感じている私のような輩のために、比較的カンタンでクリーンな環境構築の方法を紹介します。
ここで"クリーンな環境"とは「OSのパッケージを汚さずに設定できてカンタンに元通り」という意味合いです。

この記事は、前回の記事の追加情報です。

結論

pipコマンドのパッケージだけで、お手軽にFaster-Whisperの実行環境が作れます。
nvidiaからdudaのパッケージをダウンロードシてインストールという超絶面倒な手順は不要です。

前回の記事からの続き

VoiceVoxのライブラリを間借りしたり、NVIDIAのパッケージからファイルを抽出したりして、Faster-Whisperを動かしてみましたが、やっぱりもっと簡単にできるのでは?

情報収集して試行錯誤した結果、本家Whisperでは、CUDAとCUDNNがOSにインストールされていなくても大丈夫なようです。そしてどうやら、cudaとdudnnのpipパッケージがあるらしい。
今回はこのpipパッケージを使って、faster-whisperを動くようにしてみます。

試した環境

OS: Ubuntu 22.04 LST
GPU: nvidia t1000 8GB (nvidia-driver-535)

この記事はLinux環境向けです。Windowsの場合は以下が参考になりそうです。

発見したパッケージ

ネットを徘徊してパッケージを発見しました。なんか怪しいぞ?と思ったけれど、よくみたらメンテナはnvidiaさん。つまり公式です。だよね?

手順

それでは、このパッケージをつかって環境構築していきます。一応全部の手順を書いていきます。

まずは、恒例のpython仮想環境を作成。

$ mkdir ~/LLM/faster-whisper                         #ディレクトリを作る
$ cd ~/LLM/faster-whisper                            #ディレクトリに移る
$ python3 -m venv .venv --prompt 'Whisp'             #プロンプトを指定して仮想環境を作る
$ source .venv/bin/activate                          #仮想環境に入る
$ .venv/bin/python3 -m pip install -U pip setuptools #念の為pipを最新版へ

次に、faster-whisperのインストール。もちろんpython仮想環境で。

$ pip install faster-whisper

そしてに、cublasとcudnnをインストール。(cublasは11と12が必要でした)
nvidia-cudnn-cu11は依存関係でインストールされます。

$ pip install nvidia-cublas-cu11 nvidia-cublas-cu12

インストール結果

(Voice) hogehoge@mx130:~/LLM/CrabVoice$ pip list | grep nvidia
nvidia-cublas-cu11     11.11.3.6
nvidia-cublas-cu12     12.4.2.65
nvidia-cuda-nvrtc-cu11 11.8.89
nvidia-cudnn-cu11      8.9.6.50

コレだけでは、まだ動きません。LD_LIBRARY_PATHを指定しないとライブラリを読んでくれないようです。では、ライブラリはどこにあるのか?

(Voice) hogehoge@mx130:~/LLM/CrabVoice$ find . -name 'libcublas.so*' -o -name 'libcudnn_ops*'
./.venv/lib/python3.11/site-packages/nvidia/cublas/lib/libcublas.so.11
./.venv/lib/python3.11/site-packages/nvidia/cublas/lib/libcublas.so.12
./.venv/lib/python3.11/site-packages/nvidia/cudnn/lib/libcudnn_ops_infer.so.8
./.venv/lib/python3.11/site-packages/nvidia/cudnn/lib/libcudnn_ops_train.so.8

2箇所に別れてますね。これをLD_LIBRARY_PATHに設定します。

export LD_LIBRARY_PATH=$(find $PWD \( -name 'libcublas.so*' -o -name 'libcudnn_ops*' \) -printf '%h\n' | sort -u | paste -sd ':')

実行してみましょう

(Voice) hoge@mx130:~/LLM/CrabVoice$ python3 transcribe_simple.py 
#Load model
#Start
Detected language 'ja' with probability 1.000000
[0.00s -> 5.12s] はいすいませんどちらまで
[5.12s -> 6.84s] ナンバーグランドカ月まで
[6.84s -> 7.66s] ナンバーグランドカ月
[7.66s -> 9.38s] 1000日前の
[9.38s -> 11.08s] 1000日前の
[11.08s -> 14.62s] ナンバーグランドカ月さんお願いします
[14.62s -> 18.50s] 帰りましたでしょ新大阪のタクシー乗り場
[18.50s -> 22.62s] そうですねあそこなんか行き先とかいろいろ分かれてたのか
[22.62s -> 24.64s] もう今全部一緒になりましたね
[24.64s -> 29.80s] 小型の乗り場ももうなくなりましたね
 :

出来ました。あとは、LD_LIBRARY_PATHをどこで設定するか?
仮想環境の中に設定できるファイル等があるか調べたのですが、私の調査では発見出来ませんでした。今回は、activateスクリプトを修正することにします。

.venv/bin/activateの修正箇所
# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

deactivate () {

    (途中省略)

    if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then
        PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}"
        export PYTHONHOME
        unset _OLD_VIRTUAL_PYTHONHOME
    fi

+    if [ -n "${_OLD_LD_LIBRARY_PATH:-}" ] ; then
+        export LD_LIBRARY_PATH="${_OLD_LD_LIBRARY_PATH#EMPTY}"
+        unset _OLD_LD_LIBRARY_PATH
+    fi

    # This should detect bash and zsh, which have a hash command that must

    (途中省略)
}

(途中省略)

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
export PATH

+_OLD_LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-EMPTY}"
+export LD_LIBRARY_PATH="$(find $PWD \( -name 'libcublas.so*' -o -name 'libcudnn_ops*' \) -printf '%h\n' | sort -u | paste -sd ':'):$LD_LIBRARY_PATH"

# unset PYTHONHOME if set
# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
# could use `if (set -u; : $PYTHONHOME) ;` in bash
(途中省略)

うまく働くか、試してみます。
仮想環境へ入る前にLD_LIBRARY_PATHへ目印となる文字列を設定しておきます。

hoge@mx130:~/LLM/CrabVoice$ export LD_LIBRARY_PATH="関西電気保安協会"
hoge@mx130:~/LLM/CrabVoice$ echo $LD_LIBRARY_PATH
関西電気保安協会

仮想環境に入って、LD_LIBRARY_PATHが設定されているか確認します。

hoge@mx130:~/LLM/CrabVoice$ source .venv/bin/activate
(Voice) hoge@mx130:~/LLM/CrabVoice$ echo $LD_LIBRARY_PATH
/home/hoge/LLM/CrabVoice/.venv/lib/python3.11/site-packages/nvidia/cublas/lib:/home/hoge/LLM/CrabVoice/.venv/lib/python3.11/site-packages/nvidia/cudnn/lib:関西電気保安協会

仮想環境を抜けて、LD_LIBRARY_PATHが復元されるか確認します。

(Voice) hoge@mx130:~/LLM/CrabVoice$ deactivate 
hoge@mx130:~/LLM/CrabVoice$ echo $LD_LIBRARY_PATH
関西電気保安協会

うまく設定と復帰ができているようです。これで仮想環境でのFaster-Whisperの動作環境が出来上がりました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?