2 ポイント 投稿者 GN⁺ 2023-12-14 | 1件のコメント | WhatsAppで共有
  • Apple Silicon向けのMLXフレームワークでWhisper largeモデルを動かし、10分の音声文字起こしにおけるノートPCと高性能GPUの差を比較
  • 標準条件ではM1 Pro MacBookが216秒、RTX 4090が186秒で、RTX 4090が約30秒、約16%高速だった
  • RTX 4090でinsanely-fast-whisperを使うとwhisper-large-v3の文字起こしは8秒まで短縮され、モデルや実装の最適化がハードウェア比較を大きく変え得る
  • macOS MPSでの実行は4分23秒かかり、M2 Ultra 76 GPUコアとM3 Max 40 GPUコアはM1より大幅に速く、互いにはほぼ同等の速度だった
  • 消費電力の増加はRTX 4090搭載PCがアイドル時比で**+242W**、M1 Pro MacBookが**+38W**で、全体の結果は厳密なベンチマークではなく、MLXの性能感を見るための比較

MLXでWhisperベンチマークを実行

  • AppleがApple Silicon向け機械学習フレームワークMLXを公開し、同梱されたサンプルのうちWhisperがベンチマークに使われた
  • 既存のWhisperベンチマーク用リポジトリに新しいファイルを追加し、すでにダウンロード済みのwhisper largeモデルで同じ音声ファイルを文字起こしした
  • 実行コードはtranscribe(audio=audio_file, model='large')を呼び出した後、開始時刻と終了時刻の差で全体時間を測定する
  • 返される結果はセグメントのリストで、各セグメントにはavg_logprobcompression_ratiostartendtexttokensなどのフィールドが含まれる
  • この結果構造は、RTX 4090でPython Whisperを実行した場合と同じ

基本結果: M1 ProとRTX 4090

  • 10分の音声ファイル基準で、M1 Pro + MLXの実行時間は0:03:36.296329、約216秒
  • 同じファイルでのNvidia RTX 4090の実行時間は0:03:06.707770、約186秒と測定された
  • RTX 4090はM1 Proより約30秒速く、比率では約**16%**高速という水準
  • 測定中はM1 Proのすべてのグラフィックコアが完全に使用され、他のプログラムを終了し、デスクトップ背景などの要素も無効化した
  • ただし、Nvidia最適化モデルを使うとRTX 4090の文字起こし時間は8秒まで短縮される

テストハードウェア

  • MacBook

    • 14インチMacBook M1 Pro、2021年モデル
    • CPUコア8個: 性能コア6個、効率コア2個
    • RAM 32GB
    • GPUコア16個
  • PC

    • Intel Core i7-12700KF 8×3.60GHz
    • RAM 2×32GB 3200MHz DDR4 Kingston FURY Beast
    • Kingston KC3000 PCIe 4.0 NVMe 1000GB SSD
    • 読み込み7000MB/s、書き込み6000MB/s
    • GeForce RTX 4090 24GB GDDR6X、Palit RTX 4090 GameRock OmniBlack

insanely-fast-whisperが変えた比較

  • Hacker Newsのコメントで、同じ10分のファイルをinsanely-fast-whisperとRTX 4090で実行した結果が示された
  • whisper-large-v3基準の文字起こしは8秒未満で終わり、文字起こし開始前のモデル読み込み時間まで含めると15秒だった
  • その後、直接実行したinsanely-fast-whisper --file-name audio.mp3 --flash Trueコマンドでも8秒での文字起こしが確認された
  • 出力ログにはFlash Attention 2関連の警告とGPUへの移動関連の警告があったが、文字起こしは完了し、output.jsonが生成された
  • macOSでは--device mps --batch-size 4で実行でき、同じファイルの文字起こしに0:04:23かかった

M2 UltraとM3 Maxの更新

  • Ivanが同じ音声ファイルをM2 Ultra 76 GPUコアM3 Max 40 GPUコアで実行した
  • 両システムはM1 Proよりはるかに高速な結果を出し、互いには同程度の速度だった
  • 比較値は100%正確なベンチマークと見るのは難しく、他のプロセス、読み込み時間、コールドスタートとウォームスタートが結果に影響し得る

消費電力と測定上の限界

  • アイドル状態とGPU実行状態の消費電力差はShellyプラグで測定した
  • PCはRTX 4090実行時、アイドル時比で**+242W**増加した
  • MacBookはM1 GPU 16コア実行時、アイドル時比で**+38W**増加した
  • 消費電力測定も100%正確な数値というより、傾向を示す参考値に近い
  • テスト全体は科学的な測定というより、MLXフレームワークがどの程度の性能を出せるのかを大まかに示す比較

実際の利用背景

  • テスト目的はポッドキャスト検索エンジンpodpodgogo.comの運営と関連している
  • 数万本のポッドキャストエピソードを文字起こしし、全文検索を可能にし、一部のデータマイニングも行っている
  • 更新履歴
    • 12月11日: ハードウェア仕様とモデル読み込みなしの追加テストを追加
    • 12月12日: RTX 4090を最速のコンシューマー向けグラフィックカードとして整理し、M2/M3の数値を更新
    • 12月13日: Hacker NewsでNvidia最適化Whisper関連のコメントを確認

1件のコメント

 
GN⁺ 2023-12-14
Hacker Newsの意見
  • Whisperを4090で極端に非効率に動かしたのでない限り、この結果は疑わしく見える
    3090とM1 Max 32GBを持っている。Whisperは試していないが、LlamaとStable Diffusionの推論性能差は大きく、特にStable DiffusionでSDXLは3090が約9秒、M1 Maxは1分10秒ほどかかった

    • SDXLのような潜在拡散モデルの推論値を持ってきて、Whisperのようなエンコーダ・デコーダ型Transformerの推論に一般化している
      2つのモデル構造には共通点がほとんどなく、Stable DiffusionはCLIPの事前学習済みテキストエンコーダを使ってはいるが、それもエンコーダ・デコーダ型Transformerとはかなり違う
    • Apple SiliconでのWhisper最適化はすでにかなり進んでおり、whisper.cppはその利点をうまく活用している例
      さらにこの記事は新しいApple MLXフレームワークを扱っているので、LlamaやStable Diffusionのテストではおそらく使っていなかった可能性が高い
    • まだ初期ドキュメントではあるがMLXの文書を見ると、GAN、特にStable Diffusionで多用される畳み込みはMLXで意味のある向上をほとんど得られておらず、場合によってはCPUより遅く見えることもある
      ハードウェアの限界なのかMLXライブラリの最適化不足なのかは分からないが、これほど目立つユースケースを単に無視したとは考えにくい
      畳み込みが高い精度とずっと大きなタイル集合を使うため、変換全体がGPUに収まらないときに高コストなコンテキスト切り替えが必要になる、という方がもっともらしい
    • 4090とM1 Max 64GBを持っているが、Llama 2では4090の方がはるかに優れている
    • Whisperをかなり使ってみると、同じ品質でメモリ使用量は少ないのに性能が1〜2桁良いバージョンがあり、その理由は完全には理解していない
      なので同じソフトウェアと同じモデルでない限り、Whisper性能に関する直感は非常に慎重であるべき
      たとえ同じでも、プラットフォーム別の最適化が望まれる点を考えると、比較の意味はなお限定的
  • これはOpenAI Whisperリポジトリを使っているように見える
    きちんと比較するなら、4090上のfaster-whisperinsanely-fast-whisperとMLXを比べるべき
    faster-whisperは逐次実行で、insanely-fast-whisperは音声を30秒区間にまとめて処理する
    本番環境でWhisperを使っているが、前の区間のテキストを含めると品質が良くなると考えているのでfaster-whisperを使っている
    おおよそfaster-whisperはOpenAI/whisperより通常4〜5倍速く、insanely-fast-whisperはさらにfaster-whisperより3〜4倍速くなり得る

    • insanely-fast-whisperがCPUでもリアルタイム文字起こしできるほど速いのか気になる
      ここのモデルは量子化モデルではなく、まだfp16に見えるので、さらに速くなる余地がありそう
      追記: まだCPU推論をサポートしていないと見た。追加されれば面白そう
    • insanely-fast-whisperがビームサイズ5を使うのか1を使うのか気になる
      5に設定したときの速度比較も知りたいし、理想的にはそのパラメータをユーザーに公開すべき
      音質が非常に悪い音声を扱っていて文字起こし品質が重要なので、品質を犠牲にした速度比較は自分にはあまり意味がない
  • この記事の要点は、新しく公開されたApple MLXを活用していて、コードがApple専用の最適化を使っている点
    https://news.ycombinator.com/item?id=38539153

    • 最適化されたNvidia実装と比較したわけでもない
      Whisperにはもっと速い実装がある
      追記: 釣られたついでに、記事で使われた10分のファイルをダウンロードして4090でinsanely-fast-whisperを走らせてみた。インストールはコマンド2つで済んだ
      whisper-large-v3ではファイルの文字起こしは8秒未満で終わり、文字起こし開始前のモデル読み込み時間まで含めると15秒だった
      この追加時間は当然、音声の長さには依存しない
      すると4090はAppleの最高性能より6〜12倍速いことになる
      すでに挿せるゲーミングPCがあるならM2 Ultraよりずっと安いし、4090搭載の完成品PCを新しく買ってもまだ安い
      驚くことではないが、ハイエンドMacを持つ人たちが自分の機材は何でもうまくこなせると信じたがる希望的観測が多く見える
      Apple Mシリーズチップは非常に印象的で大容量RAMも素晴らしいが、高性能機械学習ではNvidiaと競争するのは難しい
    • 正直、なぜ気にする必要があるのか分からない
      MacがあればそのMacの性能を使うし、ゲーミングPCがあればそのPCの性能を使う
      両方あっても、結局は毎日使う機材で動くAIを使う可能性が高い
  • insanely-fast-whisperと比べるとどうなのか気になる: https://github.com/Vaibhavs10/insanely-fast-whisper
    最適化を使わなければ1対1の比較ができるという点は分かるが、その最適化がMLXに移植されていないなら、やはり4090を使うほうがよさそう
    最近MLXを見てみたが、Macでは確実に人気が出そうだし、Swiftバインディングが出ればiOSでもそうなりそう: https://github.com/ml-explore/mlx/issues/15
    ただ現時点ではC++20のコンパイル問題が妨げになっている可能性もある

    • Nvidiaの強みはまさにここ
      どんなハードウェアがベンチマークで勝っても、人気モデルならたいてい非常に手作業で最適化されたCUDA実装が出てきて、他を圧倒する
      まれな例外もあるにはあるが、たとえばPyTorchがtorch.compileに力を入れたおかげで、AMD上のGPT-Fastが特定の狭いユースケースでうまく動く程度
      Apple Siliconではそうした例外は一つも思い浮かばない
    • きちんと比較するなら、4090でinsanely-fast-whisperのコードを走らせる必要がある
      元のベンチマークのどちらにも軽く勝ちそうだが、バッチサイズは24よりずっと小さくする必要がありそう
      最近の基準ではWhisperがリアルタイムの3〜4倍だとかなり遅い部類なので、このベンチマークはCPUでも勝てる可能性がある
    • 記事がinsanely-fastの結果で更新されている
  • これが他のモデルにも当てはまるのか、それともWhisperの逐次的な特性と整数演算のために選ばれたのか気になる
    https://github.com/ml-explore/mlx-examples/tree/main/stable_...を見ると、そういう方向を示唆しているように見える

    At the time of writing this comparison convolutions are still some of the least optimized operations in MLX.
    重要なのは、CPU/GPUに直結した64GB以上の非常に高速なRAMを使え、レイテンシと共有アクセス性の面で利点があるという事実のようだ
    これらのシステムの電力パッケージを見ると、数字は確かに印象的
    ただし、最小RAM構成のM3 Maxシステムの価格が4090のおよそ2倍である点も考慮する必要がある

    • Apple Siliconのメモリが速いというのは、長らく2チャネルメモリにとどまっていたコンシューマ向けCPUと比べた場合の話
      4コア時代には問題なかったが、現代的なコア数では筋が通らない
      GPUのメモリ拡張性は、コンシューマ向けでもはるかに優れている
  • Mac M1でWhisperを実行するのは簡単だが、デフォルトではMLXを使わない
    MLXを使うには何をインストールして設定すればいいのか調べるのに1〜2時間かかり、正体不明のPythonエラーやTorchエラーが出た
    結局あきらめてGPU付きのVMを借りたところ、数分でWhisperを実行できた

  • Xの作業に対して絶対的にどの選択肢が最高かという議論は多いだろうが、これほど低い消費電力でこれだけの性能が出る点が気に入っている

  • 代わりにこのWhisper派生リポジトリを使えば、ほとんどのGPUで1時間の音声も1分以下で文字起こしされる: https://github.com/Vaibhavs10/insanely-fast-whisper

    • 体感ではctranslate2のほうがinsanely-fast-whisperより速いこともあった
      L4でctranslate2のバッチサイズを4のように低くしても、flash attention 2を使ったA100を除けば、そちらのベンチマークをすべて上回る
      faster-whisperにバッチモードが結局入らなかったのは残念で、そのせいで人々がctranslate2を気軽に試せていないように思う
    • これがどうして可能なのか、そして元のものと比べて品質差があるのか詳しく知りたい
      https://github.com/SYSTRAN/faster-whisperのようなリポジトリは、なぜ元の実装より速いのかすぐ理解できるし、他のものも量子化精度を下げることで速くなる一方、結果が悪くなるという形
      だがこれは、なぜ速いのかが特に明確ではない
      はるかに速いことを考えると、なおさら気になる
  • AppleのVision Proを考えると特に興味深い
    モデルを電力効率よく動かせることは、ノートPCでは誰にとっても重要とは限らないが、すでに多くの電力を消費するヘッドセットには大きな利点

  • 助けを求めたい
    良いオープンソースの文字起こしと話者分離アプリやワークフローはあるだろうか?
    https://github.com/thomasmol/cog-whisper-diarizationhttps://about.transcribee.net/を見たが、どちらもクラッシュするなど、うまく動かなかった

    • 自前のソリューションを作ったが、かなり単純
      MP3をWhisperが処理できる断片に分けてから、APIに一つずつ送って文字起こしさせる
      今のところ期待どおりに動いていて、Pythonコード数行で済む