【爆死レポ】古い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に書き換えて実行した。以下は元のアプリだ。
動いたよ。たしかに動くには動いた。
でも、process_transcription_files関数(音声認識する関数)が終わったあとに、呼び出し元にも戻らずプログラムが終了してしまう。
例外処理にもキャッチされない。
なんでやねん。
AIにも聞いて対策もしてみたが、結局うまくいってない。
device="cpu"にするか、もしくはmodel_sizeを"small"にしたら問題は発生しなくなったが、これでは実用に耐えない。
たぶん、largeモデルを扱うにはGPUのメモリかなんかが足りんのだろう。知らんけど。
結局、ここまでくるのに結構時間を消費していたから、潔くあきらめた。
📝 まとめ
それで最初の結論に戻るわけだ。
GTX 1660 SUPERでlarge-v3を動かすのは、
無免許でジェット機飛ばすくらい無謀。やめとけ。
素直にopenai/whisperのturboモデル使おう。そっちの方が安定する。
ストレスで髪が抜ける前に。
✉️ P.S.未来の自分へ。
「安いGPUでデカいモデル動かそうとするな。」
いいな?二度とだぞ。
Discussion