0
OpenAI Whisper 音声文字起こし、18 個の GPU でベンチマーク: 最大 3,000 WPM

最高のグラフィックカードはゲームだけに使えるわけではありません。特にAIベースのアルゴリズムが大流行している今、なおさらです。データセンターのハードウェアで動作するChatGPT、Bard、Bing Chat(別名Sydney)に加え、Stable Diffusion、Text Generation、そしてOpenAIのWhisperといった様々なツールのローカル版を独自に実行することも可能です。Whisperは本日のテーマで、GPUを使ったリアルタイム音声文字変換よりもはるかに高速で、プロセス全体をローカルで無料で実行できます。CPUでも実行できますが、速度は大幅に低下します。

Whisper は、Windows や Dragon NaturallySpeaking のようなリアルタイム音声認識にも使用できます。ただし、今回はパフ​​ォーマンスの確認を重視していたため、そのように使用することはしませんでした。リアルタイム音声認識に必要なのは、1分間に100~150語程度(早口の人の場合はもう少し長いかもしれません)です。そこで、様々な GPU の性能を少し試し、どれほどの速度で処理できるかを見せたかったのです。

Whisper を Windows などで実行するには、いくつかの選択肢があります。もちろん、OpenAI GitHub もあります(手順と詳細は下記)。また、Const-Me プロジェクトである WhisperDesktop も存在します。これは C++ で記述された Windows 実行ファイルです。PyTorch ではなく DirectCompute を使用しているため、DirectX 11 対応の GPU であればどれでも動作します。Intel 統合型グラフィックスなども対象です。また、Nvidia の Tensor コアや Intel の XMX コアのような特殊なハードウェアも使用していません。

WhisperDesktop の実行は非常に簡単でした。ただし、誰かの署名なし実行ファイルをダウンロードして実行することに抵抗がなければの話です(私はそうしましたが、もしよければ自分でコードをコンパイルしてみるのも良いでしょう)。WhisperDesktop.zip をダウンロードして、どこかに解凍するだけです。EXE と DLL に加えて、OpenAI モデルを 1 つ以上用意する必要があります。これらはアプリケーションウィンドウのリンクからダウンロードできます。GGML バージョンも必要です。テストでは ggml-medium.en.bin (1.42GiB) と ggml-large.bin (2.88GiB) を使用しました。

リアルタイム音声認識(5~10秒程度の遅延があるため、一部の商用アプリケーションほど正確ではありません)と音声ファイルの書き起こしが可能です。ベンチマークでは後者を選択しました。書き起こしは、大規模なモデルを使用しても完璧ではありませんが、十分に正確で、私たちが入力するよりもはるかに速く完了します。

実は、これは控えめな表現です。テストした中で最も遅いGPU(Arc A380)でさえ、毎分700語以上を処理できました。これは世界最速のタイピストの2倍以上の速度で、はるかに速いです。これは中程度の言語モデルを使用した場合で、3GB以上のVRAMを搭載したカードで動作します。一方、大規模モデルは少なくともWhisperDesktopでは5GB以上のVRAMを必要とします。また、大規模モデルの速度はおよそ半分です。

OpenAI版をご利用になる場合は、要件がかなり厳しくなることにご注意ください。中規模モデルでは5GB、大規模モデルでは10GBです。それに応じて計画を立ててください。

ウィスパーテストのセットアップ

テストハードウェア

テストPCは、基本的に最高性能のパーツを搭載した標準のGPUテストシステムです(常識の範囲内で)。やや低速のCore i9-12900Kでいくつかテストを実行したところ、少なくともWhisperDesktopではパフォーマンスがわずかに低下しただけでした。ただし、CPUスタックをどの程度まで下げるとパフォーマンスに実際に影響が出るかは不明です。

テスト入力音声には、昨年投稿したAsus RTX 4090 UnboxingのMP3ファイルを使用しました。13分間の動画なので、高速GPUの実力を十分に発揮するのに十分な長さです。

前述の通り、Whisperモデルの2つの異なるバージョン(medium.enとlarge)を実行しました。各カードを複数回実行し、最初の実行結果を破棄し、残りの3回の実行結果のうち最も高い結果を使用しました。そして、結果を1分あたりの単語数に換算しました。medium.enモデルでは1,570語、largeモデルでは1,580語でした。

また、Nvidia PCAT v2デバイスを使用して、トランスクリプション実行中のGPU電力消費量データも収集しました。電力消費量の記録はトランスクリプション開始直前に開始し、トランスクリプション終了直後に停止しました。GPUは通常、ワークロード実行中に100%負荷に近づくことはないため、消費電力はGPUの定格TGPをかなり下回ります。結果は以下の通りです。

WhisperDesktop ミディアムモデル、GPUパフォーマンス

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

基本的なパフォーマンステストでは中規模モデルを使用していますが、このモデルは全体的に精度がやや劣る傾向があります。大規模モデルでは正しく書き起こされなかったものの、中規模モデルでは正しく書き起こされたケースもいくつかありましたが、その逆のケースの方がはるかに多く見られました。おそらくCPUの限界にも近づいているか、少なくともスケーリングが期待通りではないようです。

NvidiaのRTX 4090とRTX 4080が、1分あたり3,000語強弱の文字起こし速度でトップ2を獲得しました。AMDのRX 7900 XTXと7900 XTがこれに続き、RTX 4070 Tiと4070、RTX 3090と3080が続きます。そして、RX 6950 XTがRTX 3070をわずかに上回りますが、これは明らかに予想外の結果です。

当社の GPU ベンチマーク階層を確認し、ラスタライズ パフォーマンスだけを見ると、6950 XT は 3090 や 4070 Ti に近い位置になり、6800 XT は 3080 や 4070 に近い位置になると予想されます。RX 6750 XT も 3070 より上になるはずで、6650 XT と 3060 についても同様です。

一方、IntelのArc GPUはチャートの下位に位置しています。繰り返しになりますが、通常であればA770とA750はRTX 3060にかなり近いパフォーマンスを発揮すると予想されます。ただし、ここではゲームとは異なる種類のワークロードを想定しており、Arc Alchemistアーキテクチャはゲーム処理をうまく処理できない可能性があります。あるいは、単にドライバーの非効率性が影響している可能性もあります。

より複雑な大規模モデルで何が起こるかを見てみましょう。

WhisperDesktop 大規模モデル、GPU パフォーマンス

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

ラージモデルはGPUへの負荷が明らかに大きくなります。RTX 4090はミディアム.enモデルではRTX 3050の2.36倍の速度でしたが、ラージモデルでは2.7倍の速度です。しかし、ゲームベンチマークで見られるようなスケーリング性能は、RTX 4090がRTX 3050の3.7倍(1440p)という結果とは全く異なります。

ランキングにも若干の変動があり、7900 XTXは今回RTX 4080をわずかに上回りました。6950 XTも3080を僅差で上回り、6800 XTは3070を、6650 XTは3060を上回りました。しかしながら、IntelのArc GPUは依然としてRTX 3050よりも下位に留まっています。

RTX 40シリーズGPUの大容量L2キャッシュは、ゲームよりもこの分野でより効果を発揮しているようです。大容量モデルではパフォーマンスの向上はそれほど大きくありませんが、例えばゲームパフォーマンスでは3080が4070をわずかに上回ることが多いのに対し、この分野では4070がリードしています。

WhisperDesktop GPUの電力使用量と効率

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

最後に、中規模モデルと大規模モデルの実行時の消費電力を見てみましょう。大規模モデルではすべてのGPUでより多くの電力を必要としますが、大きな増加ではありません。例えばRTX 4090はわずか6%の電力増加です。最も大きな変化が見られたのはRX 6650 XTで、14%の電力増加が見られました。RTX 4090とRX 6950 XTでは消費電力が10%増加しましたが、他のGPUでは1~3%の増加にとどまりました。

一つ明らかなのは、新しいNvidia RTX 40シリーズGPUは、AMDの同等製品と比べて、一般的に電力効率がはるかに優れているということです。一方、RTX 30シリーズ(特に3080と3090)は、それほど電力効率が良いとは言えません。しかし、AMDの新しいRX 7900カードは、最も電力を消費する製品の一つとなっています。

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

WhisperDesktop GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

ワットあたりのワード数/分で効率を換算すると、消費電力とパフォーマンスのバランスをより明確に把握できると言えるでしょう。Ada Lovelace RTX 40シリーズカードは、競合製品よりもはるかに高い効率性を示しています。次に、3070、3060、3050といった下位グレードのAmpere RTX 30シリーズGPUが続き、さらにRX 6000/7000カードとArc A380が続きます。

グラフの下部では、Arc A750とA770は、少なくともこのワークロードでは全体的に最も効率が低いです。RTX 3090、RX 6950 XT、RX 6750 XT、RTX 3080、RX 7900 XTXはいずれも10.6~11.2 WPM/ワットと比較的似ています。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

ウィスパー OpenAI GitHub テスト

理由は後ほど明らかになりますが、現時点ではWhisperDesktopがPCでWhisperを使用する最適な方法です。比較的新しいGPUであれば動作するだけでなく、少なくとも現時点ではOpenAIのPyTorch版よりもはるかに優れたパフォーマンスを発揮します。公式リポジトリを試してみたい方は、追加のテスト結果もご用意しています。

WhisperをNvidia GPUで動作させるのは比較的簡単です。Linuxをお使いの場合は、AMD GPUでROCm経由でCUDAブランチを動作させる方法については、こちらの手順をご確認ください。今のところ、私は面倒なことは避け、Nvidiaのみを使用しています。(おそらくAMDとIntelではWhisperDesktopを使用するでしょう。)

試してみる場合は、Nvidia GPU の場合の手順を以下に示します。

1. Windows 用の Miniconda 64 ビット版をダウンロードしてインストールします。(このページの一番上のリンクを使用しましたが、他のリンクでも問題ありません。)

2. Miniconda プロンプトを開きます(スタート メニューから)。

3. Whisper 用の新しい conda 環境を作成します。

conda create -n Whisper

4.環境をアクティブ化します

conda activate Whisper

5.一連の前提条件をすべてインストールします。

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia ffmpeg

注:この作業には少なくとも数分かかりますが、CPU速度とインターネット帯域幅によってはそれ以上かかる場合があります。Pythonなどのパッケージをダウンロードしてコンパイルする必要があるためです。

6. OpenAI の Whisper をダウンロードします。

pip install -U openai-whisper

7.言語、モデル、デバイスを交互に指定して、 音声ファイルを書き起こします。CUDA対応のNvidia GPUを使用しているため、コマンドは以下のとおりです。

whisper.exe [audiofile] --model medium.en --device cuda

より大きなモデルを使用してより良い転写をしたい場合、または他の言語を転写したい場合:

whisper.exe [audiofile] --model large --device cuda --language en

モデルを初めて実行する際は、ダウンロードする必要があります。medium.en モデルは 1.42GiB、large モデルは 2.87GiB です。(ちなみに、モデルは%UserProfile%\.cache\Whisperに保存されています。)

Pythonが指定されたファイルの処理準備を整えるまで、通常は数秒(GPUによっては最大10~15秒)の遅延が発生します。その後、タイムスタンプとトランスクリプトが表示され始めます。タスクが完了すると、ソースオーディオファイルのプレーンテキスト、JSON、SRT、TSV、VTT形式のファイルも生成されます。必要に応じて字幕として使用できます。

Nvidia GPU での Whisper PyTorch テスト

テストPCは上記と同じですが、今回はCPUの影響が大きいようです。旧型のCore i9-9900KとRTX 4070 Tiで簡単なテストを実行したところ、同じ文字起こしを完了するのにCore i9-13900Kの2倍以上の時間がかかりました。つまり、PyTorch版Whisperでは、より高速なNvidia GPUを使用しているため、CPUのボトルネックが現実のものとなっているということです。

ここで注意すべき点は、PyTorchですべての計算がどのように行われているかを正確には把握していないということです。モデルはTensor Coreハードウェアを活用しているのでしょうか?おそらくそうではないでしょう。FP32も使用されている可能性があり、FP16と比較してパフォーマンスにかなり大きな影響を与えるでしょう。つまり、さらなる最適化の余地がかなりあるということです。

前回と同様に、Whisperモデルの2つの異なるバージョン、medium.enとlarge(large-v2)を実行しています。テストスイートに使用した8GBのカードでは、PyTorchを使用してlargeモデルを実行できませんでした。また、大きなモデルはGPUへの負荷が高くなるため、CPUの負荷はやや小さくなります。

音声ファイルの書き起こしにかかる時間(起動時間を含む)を測定するスクリプトを作成しました。また、Nvidia PCAT v2デバイスを使用して、書き起こし実行中のGPU電力消費量に関するデータも収集しました。結果は以下の通りです。

Whisper PyTorch 中規模モデル、GPU パフォーマンス

Whisper AI GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

前述の通り、PyTorch版(少なくとも上記のインストール手順を使用した場合)のパフォーマンスはWhisperDesktop版よりもはるかに低くなります。最速GPUでも速度は半分程度で、3,000WPM以上から1,600WPM弱に低下します。同様に、RTX 3050では1,328WPMから565WPMに低下したため、場合によってはPyTorchの速度は半分以下になることもあります。

RTX 4090とRTX 4080がほぼ同じ結果を示していることからもわかるように、CPUの限界に達しています。確かに4090は技術的には0.5%速いですが、これは誤差の範囲です。

チャートを下の方に進むと、RTX 3090とRTX 4070 Tiはほぼ同点、RTX 4070とRTX 3080も同様です。最下位2枚までは、各層とも上位層よりも約10~15%遅くなっています。RTX 3060はRTX 3070より24%遅く、RTX 3050は3060より27%遅くなっています。

より複雑な大規模モデルで何が起こるかを見てみましょう。

Whisper PyTorch 大規模モデル、GPU パフォーマンス

Whisper AI GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

大規模モデルではPyTorch使用時にVRAM要件が約10GBに増加するため、RTX 3070とRTX 3050では文字起こしの実行すら不可能になります。ほとんどのGPUでパフォーマンスは約40%低下しますが、4090と4080ではCPUの制限によりパフォーマンスの低下は比較的小さくなります。

Const-Me C++版がどれだけ高速化するかは驚きです。おそらく、DX11認証に必要なFP16演算が使えるからでしょう。動作が速いだけでなく、PyTorchコードでは少なくとも10GBのカードが必要なのに対し、6GBのカードでも大規模なモデルを実行できます。

Whisper PyTorch、GPUパワーと効率

Whisper AI GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

電力使用量は中程度のモデルで実行中のみ収集しました。これは主に、テストを開始するまで電力データを収集することを思いつかなかったためです。最速のカードではCPUの限界に達しているため、4090と4080が定格TGP(Total Graphics Power)を大幅に下回っているのは当然のことです。

4090は200W弱の電力を必要としますが、4080は180W未満とやや効率が良いです。しかし、どちらのGPUもPyTorchを使用するとWhisperDesktop使用時よりも多くの電力を消費します。RTX 3080と3090は、TGPにやや近づきます。

Whisper AI GPUパフォーマンスチャート

(画像提供:Tom's Hardware)

ワットあたりのワード数/分で効率を換算すると、Ada Lovelace RTX 40シリーズカードはAmpere RTX 30シリーズGPUよりも43%から103%効率が高くなります。各世代の高速GPUは、トップの座を占めるRTX 4080を除き、わずかに効率が低くなる傾向があります。

繰り返しになりますが、OpenAIのGitHubソースコードは、最高のパフォーマンスを引き出すための完全なチューニングが施されていないことは明らかです。というか、それに全く近づいていません。NvidiaのTensorコアを実際に使用するコンパイル済みのC++コードでは、パフォーマンスはどうなるのか、どうしても気になります。もしかしたら既にそのようなプロジェクトがあるかもしれませんが、私の検索では何も見つかりませんでした。

Whisper AIのまとめ

これまで何度も指摘してきたように、CUDA経由のNvidia GPUサポートは、昨今の多くのAIプロジェクトにおいて事実上の標準となりつつあります。人気の高いプロジェクトは、最終的にはAMD GPUサポートを獲得することが多く、場合によってはIntelフォークさえあります。Whisperの場合、現時点ではいくつかの選択肢があります。Linux上で動作するROCmとCUDA変換、あるいははるかにコンパクトで高性能なDirectCompute実装です。まるでPythonがコーディングに最適な方法ではないかのようです。

使用するWhisperのバージョンによって、ハードウェア要件も大きく異なります。WhisperDesktopでは基本的にモデルを保存できるだけのVRAMが必要ですが、PyTorchバージョンでは約2倍のVRAMが必要です。

つまり、4GBのメモリを搭載したGPUでも動作可能なStable Diffusionと同様に、WhisperDesktopはVRAMをそれほど必要としません。しかし、PyTorch版は他の大規模言語モデル(LLM)に非常に似ており、より多くのメモリ、場合によってははるかに多くのメモリを必要とします。OpenAIはWhisper(GPT-2ベース)向けに約10GBのメモリを必要とする大規模モデルをリリースしたばかりですが、追加のVRAMを必要としながらも、精度と品質をさらに向上させることは確かに可能です。

Whisperのテストでは、コーディングと最適化がハードウェアよりも優れている場合が多いことも明らかになりました。理論上、NvidiaのTensorコアを搭載するGPUは、FP16演算性能に基づくと、RTX 4090のようなGPUはRX 7900 XTXの2.7倍、スパース性を適用すれば5.4倍の高速化が期待できます。しかし、WhisperDesktopはTensorコアを使わないため、FP16 GPUのシェーダー演算性能しか利用できません。あるいは、理論上はRDNA3 GPUのFP16性能が2倍であれば、Ada GPUよりも性能が上回るため、それ以上の性能にはならないかもしれません。

他にテストしてほしいAIワークロードや、NvidiaのTensorコアやIntelのXMXコアをより有効に活用できるWhisperの別バージョンについてご提案がありましたら、コメント欄でお知らせください。GPUパフォーマンスを定量化するための、有用かつ興味深いテストを常に探しています。

結局のところ、Whisperは必ずしも多くの人が便利だと感じるツールではありません。他にも文字起こしサービスや音声認識アプリケーションは存在します。しかし、価格(過去10年ほどの間に製造されたGPUをお持ちであれば無料)を考えると、WhisperはAI学習アルゴリズムの可能性を改めて示しています。これは間違いなく、将来的に検討すべきツールです。

ジャレッド・ウォルトンは、Tom's Hardwareのシニアエディターで、GPU全般を専門としています。2004年からテクノロジージャーナリストとして活躍し、AnandTech、Maximum PC、PC Gamerなどで執筆活動を行っています。初代S3 Virgeの「3Dデセラレータ」から最新のGPUまで、ジャレッドは最新のグラフィックストレンドを常に把握しており、ゲームパフォーマンスに関する質問は彼にお任せください。