CUDA環境上のOpenAI WhisperをCPUで動かす方法

この記事は公開から2年以上経過しています。

Linux(openSUSE Leap15.3)のNVIDIA QUADRO P1000(VRAM 4GB)環境でOpenAI Whisperのlargeモデルを試したところエラーで実行できなかったため、そのときの対応についての備忘録。

2023.8.22追記:
torch.cuda.is_available = lambda: Falseからload_model(device='cpu')にコードを修正しました。


問題

CUDA環境でOpenAI Whisperのモデルを実行すると

RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB (GPU 0; 3.94 GiB total capacity; 2.12 GiB already allocated; 54.62 MiB free; 2.30 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

のようなランタイムエラーが発生してしまう。


原因

CUDA(GPU)のVRAMが不足している(largeモデルの場合VRAMが〜10GB必要)。


対応

モデルの設定でCUDA(GPU)ではなくCPUを利用するように強制する。

充分なVRAMが搭載されている環境でOut Of Memoryが発生する場合は「Stable Diffusion(PyTorch)でOutOfMemoryが出るときの解決策」が役立つかもしれません。

import torch
import whisper

# モデルロード時のパラメータでCPUを指定
model = whisper.load_model(name='large', device='cpu')

try:
    result = model.transcribe('input.wav')
    print(result['text'])
except Exception as e:
    print(e)

CPUなのでCUDAよりも時間は掛かりますが、ひとまずこれでlargeモデルの威力を試すことができます。


参考ウェブサイトなど

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする