🗣️
whisper.cppのGPU対応を試す
前提
whisper.cppのGPU対応の兆しが前々からあったのですが、昨日ついにmainブランチにマージされたみたいなので早速試してみます。
また、環境は以下です。
- Ubuntu 22.04
- RTX3060(12GB)
- DockerにてGPU利用環境構築済み
whisper.cppのセットアップ
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
今回はDockerを使うので、以下のDockerfileを追加します。
FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04
WORKDIR /app
COPY . .
RUN make clean
RUN WHISPER_CUBLAS=1 make -j
CMD ["make", "large"]
最後にビルドします。
sudo docker build -t ${USER}:whisper.cpp . # sudoを付けるかは環境による
実行
$ sudo docker run --gpus all -it --rm ${USER}:whisper.cpp
<中略>
[00:00:00.000 --> 00:00:11.000] And so my fellow Americans, ask not what your country can do for you, ask what you can do for your country.
whisper_print_timings: load time = 2863.66 ms
whisper_print_timings: fallbacks = 0 p / 0 h
whisper_print_timings: mel time = 174.98 ms
whisper_print_timings: sample time = 11.01 ms / 27 runs ( 0.41 ms per run)
whisper_print_timings: encode time = 9552.53 ms / 1 runs ( 9552.53 ms per run)
whisper_print_timings: decode time = 3025.21 ms / 27 runs ( 112.04 ms per run)
whisper_print_timings: total time = 15830.64 ms
実行できました。
GPUを使っていることもnvtopで確認できました。
任意の音源の書き起こしをする場合は、volumeをマウントしてください。
sudo docker run --gpus all -it --rm -v $(pwd)/voices:/app/voices ${USER}:whisper.cpp \
./main -m models/ggml-large.bin -l ja -f /app/voices/audio.wav
ざっくりのパフォーマンス考察
僕の環境だと10分の音源の書き起こしにCPUだと24分、今回のGPUありで11分でした。
GPU使っていると2倍強速かったことにはなりますが、GPUを全然使い切れていないのが気になりました。
書き起こし中も停止している時間が断続的にあり、GPUを利用したとしても100%になってないので、今後に期待という感じですね(もしかしたら最適なパラメータを渡せば速くなるのかもしれませんが)
ちなみにwhisper高速化兄弟のwhisper-jaxだとGPUをほぼに使ってくれるので、RTX3600環境で10分の音源を3分程度で書き起こししてくれました。
GPU環境があるのであれば、whisper-jaxが最速の可能性があります。
faster-whisperもあるので、速度比較してみたいです。
→ 試しました。速報値としてはGPUを使うと10分の書き起こしが1分でした。10倍すごい…。
Discussion