👂

Windows11のGPU環境でPython版のWhisperを使う

2023/04/11に公開

Windows11でPython版のWhisperを使いたかったけどPythonに触るのも久しぶりだったので色々調べながら。備忘録として残しておきます。

筆者の環境(念のためハードウェアも)

  • OS:Windows11
  • CPU:Intel Core i7 13700K
  • グラフィックボード:GeForce RTX 3700 (8GB)
  • メモリー:64GB(DDR4 3200MHz 32GB × 2枚)
  • マザーボード:ASUS TUF Gaming Z690-Plus WiFi D4

Pythonの準備

pyenvのインストール

Whisperが対応しているのはPython 3.8-3.10ですが、手元の環境は3.11だったためバージョンを切り替えられるようにします。

https://max999blog.com/how-to-manage-python-version-with-pyenv-win/

を参考にしながら、進めました。

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

環境変数のセットもこのコマンドの中で行われるようです。
設定を反映するためにPowerShellを再起動しましょう。

pyenv install -l でインストール可能なバージョンのリストを確認して、執筆時点で3.10系のうち最新だった3.10.11をインストールします。

pyenv install 3.10.11

これでバージョンを切り替える準備が整いました。
プロジェクトルートに移動し、以下を実行します。

pyenv local 3.10.11

aaa
.python-version ファイルが作成され、python3 --version でバージョンを確認すると切り替わっていることがわかります。

PS C:xxx> python3 --version
Python 3.10.11

venvのセットアップ

次に

https://packaging.python.org/ja/latest/guides/installing-using-pip-and-virtual-environments/

を見ながら進めます。

プロジェクトルートで以下を実行して、仮想環境を新しく作成します。

python3 -m venv env

以下で仮想環境を有効化します。

.\env\Scripts\activate 

プロンプト文字列の先頭に (env) `とついていれば成功です。

(env) PS C:\xxx>

これでpip installする準備が整いました。

メモ:仮想環境の無効化

以下で無効にできます。

deactivate

メモ:依存関係の保存

仮想環境の中でたくさんの依存関係をインストールすることになりますが、以下のコマンドでリストにして保存することができます。

py -m pip freeze > requirements.txt

仮想環境に入り、requirements.txtがある状態で以下を実行するとまとめてインストールすることができます。

py -m pip install -r requirements.txt

envディレクトリはGitHubにpushするのには向かないので、代わりにrequirements.txtをpushしておけば、あとで環境を再構築することができます。

Whisperのセットアップ

Whisperのインストール

py -m pip install -U openai-whisper でWhisperをインストールします。

(env)  PS C:\xxx> py -m pip install -U openai-whisper
Collecting openai-whisper
  Using cached openai-whisper-20230314.tar.gz (792 kB)
  
  中略
  
Successfully installed MarkupSafe-2.1.2 certifi-2022.12.7 charset-normalizer-3.1.0 colorama-0.4.6 ffmpeg-python-0.2.0 filelock-3.11.0 future-0.18.3 idna-3.4 jinja2-3.1.2 llvmlite-0.39.1 more-itertools-9.1.0 mpmath-1.3.0 networkx-3.1 numba-0.56.4 numpy-1.23.5 openai-whisper-20230314 regex-2023.3.23 requests-2.28.2 sympy-1.11.1 tiktoken-0.3.1 torch-2.0.0 tqdm-4.65.0 typing-extensions-4.5.0 urllib3-1.26.15

ffmpegのインストール

READMEによるとffmpegも必要らしいのでインストールします。
自分の環境ではPowerShellを管理者権限で実行しないとインストールできませんでした。

choco install ffmpeg

(この方法でインストールするには、先にChocolatelyをインストールする必要があります)

インストールが完了したら ffmepg コマンドを使えるようになっているはずです。

ffmpeg --version

Whisperの実行

Pythonの仮想環境に入って、以下のコマンドでwavファイルを文字起こしできます。

 whisper ./sample.wav --language ja --model small

PyTorch/CUDAのセットアップがされていない場合、CPUで実行されます。結構遅いようです。

GPU実行環境(PyTorch/CUDA)のセットアップ

せっかくなのでGPUでも動かせるようにします。

以下を参考にしました。

https://www.kkaneko.jp/ai/win/whisper.html

https://qiita.com/TrashBoxx/items/2e884998cd1193f73e2f

https://wolfin.hatenablog.com/entry/2022/10/24/203145

CUDAのインストール

https://developer.nvidia.com/cuda-toolkit-archive からCUDAをインストールします。

PyTorchのStable(2.0.0)ではCUDAのv11.7かv11.8に対応しているようなので、ここではv11.8をインストールすることにします。

インストールが完了すると、システム環境変数にCUDA_PATHCUDA_PATH_V11_8が追加されているはずです。

PowerShellを再起動して、nvcc -V を実行すると、インストールできているかどうかがわかります。

PS C:\xxx> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

cuDNNのインストール

金子邦彦研究室の人工知能応用,データ応用,3次元のまとめによると、

NVIDIA cuDNN は, NVIDIA CUDA ツールキット上で動作するディープラーニング・ライブラリである. 畳み込みニューラルネットワークや リカレントニューラルネットワークなど,さまざまなディープラーニングで利用されている.

とのこと。

https://developer.nvidia.com/cudnn からダウンロード可能ですが、アカウント作成が必要です。

ダウンロードしたら、フォルダの中身(lib, bin, include)を C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8 の中にコピーします。
重複するファイルはないので上書きはされないはず。

システム環境変数 CUDNN_PATH を追加して以下をセットしてください。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8

PowerShellを再起動して、gcm cudnn64_8.dll でパスが通っていることを確認します。

PS C:\xxx> gcm cudnn64_8.dll

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     cudnn64_8.dll                                      10.0.10... C:\Program Files\NVIDIA GPU Computing ...

PyTorchのインストール

PowerShellで仮想環境に入ったい状態で、以下を実行します。

py -m pip install -U torch torchvision torchaudio numpy numba --index-url https://download.pytorch.org/whl/cu118

(2~3GBほどストレージを食われます)

これでCUDAでPyTorchを利用する準備が整ったはずです。

py -c "import torch; print(torch.__version__, torch.cuda.is_available())"

を実行して、

2.0.0+cu118 True

のように出てくればOKです。

Discussion