Windows11のGPU環境でPython版のWhisperを使う
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だったためバージョンを切り替えられるようにします。
を参考にしながら、進めました。
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のセットアップ
次に
を見ながら進めます。
プロジェクトルートで以下を実行して、仮想環境を新しく作成します。
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でも動かせるようにします。
以下を参考にしました。
CUDAのインストール
https://developer.nvidia.com/cuda-toolkit-archive からCUDAをインストールします。
PyTorchのStable(2.0.0)ではCUDAのv11.7かv11.8に対応しているようなので、ここではv11.8をインストールすることにします。
インストールが完了すると、システム環境変数にCUDA_PATH
とCUDA_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