Zenn
💣

【爆死レポ】古いGPUで faster-whisper large-v3 を動かそうとしたら地獄だった件

に公開

🛠 うちの環境

とりあえず、うちの環境をあげておく。

  • NVIDIA GTX 1660 SUPER
  • faster-whisper 1.1.1 model: large-v3
  • CUDA 12.3
  • cuDNN 8.9.6

❌ 結論:やめとけ

GTX 1660 SUPERでlarge-v3を動かすのは、
無免許でジェット機飛ばすくらい無謀。やめとけ。

素直にopenai/whisperのturboモデル使おう。そっちの方が安定する。
ストレスで髪が抜ける前に。

🚗 試行錯誤ルート

結論はおいておいて、やったうえで分かったことを書いておく。

📌 faster-whisperのインストール

faster-whisperの公式リポジトリにある通りにすればいい。

pip install faster-whisper

ただし、これだとcuDNNの9.x系が必要になるから、うちの環境じゃ動かない。

もちろん、試しにcuDNN 9.8.0をダウンロードしてインストールしてみたよ。でもまともに動かなかった。

CUDA 12とcuDNN 8でfaster-whisperを動かすには、以下のコマンドを実行してCTranslate2のバージョンを下げればよい。

pip install --force-reinstall ctranslate2==4.4.0

📌 faster-whisperを動かす

ここまでくれば、公式リポジトリのサンプル通りにすれば動くことは動く。

from faster_whisper import WhisperModel

model_size = "large-v3"

# Run on GPU with FP16
model = WhisperModel(model_size, device="cuda", compute_type="float16")

segments, info = model.transcribe("audio.mp3", beam_size=5)

print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

でも、モデルのロードが滅茶苦茶遅い。
初回時だけだと思うじゃん?
違うんだよ。毎回遅い。5分くらいかかってるんじゃないかな。

問題はこの処理だ。

WhisperModel(model_size, device="cuda", compute_type="float16")

この処理の中で毎回モデルをネットから取得しているじゃないか、って思うほど遅い。
さんざん悩んだ挙句、ひとつの解決方法を見つけた。
それがこれだ。

WhisperModel(model_size, device="cuda", compute_type="float16", local_files_only=True)

WhisperModelのコンストラクタにlocal_files_only=Trueを追加してある。
こうすることで何らかのチェックがパスされ、ローカルPC上にキャッシュされているモデルが直接ロードされる。
ロードが爆速になった。素晴らしい!

📌 新たな問題

喜び勇んで早速アプリに組み込んでみた。
手前味噌で申し訳ないが、自分で作ったアプリのopenai/whisperの部分をfaster-whisperに書き換えて実行した。以下は元のアプリだ。

https://github.com/led-mirage/whisper-local-transcriber

動いたよ。たしかに動くには動いた。
でも、process_transcription_files関数(音声認識する関数)が終わったあとに、呼び出し元にも戻らずプログラムが終了してしまう。
例外処理にもキャッチされない。
なんでやねん。

AIにも聞いて対策もしてみたが、結局うまくいってない。
device="cpu"にするか、もしくはmodel_sizeを"small"にしたら問題は発生しなくなったが、これでは実用に耐えない。
たぶん、largeモデルを扱うにはGPUのメモリかなんかが足りんのだろう。知らんけど。

結局、ここまでくるのに結構時間を消費していたから、潔くあきらめた。

📝 まとめ

それで最初の結論に戻るわけだ。

GTX 1660 SUPERでlarge-v3を動かすのは、
無免許でジェット機飛ばすくらい無謀。やめとけ。

素直にopenai/whisperのturboモデル使おう。そっちの方が安定する。
ストレスで髪が抜ける前に。

✉️ P.S.未来の自分へ。
「安いGPUでデカいモデル動かそうとするな。」
いいな?二度とだぞ。

Discussion

ログインするとコメントできます