
Nvidiaは、AI/ML(人工知能/機械学習)およびLLM(大規模言語モデル)ツールスイートのさらなる改良に注力しています。最新のTensorRTとTensorRT-LLMは、Stable DiffusionやLlama 2テキスト生成といったタスクの実行において、コンシューマー向けGPUや多くの高性能グラフィックカードのパフォーマンスを最適化するように設計されています。私たちはTensorRTを用いてNvidiaの最新GPUのいくつかをテストし、Stable Diffusionのパフォーマンスが最大70%向上することを確認しました。TensorRTは現在NvidiaのGithubページからダウンロード可能ですが、今回の初期調査のために早期アクセスを行いました。
ここ1年ほど、Stable Diffusionには大きな進展がありました。当初はWindows版Nvidia GPUのみをサポートしていたAutomatic1111のWebUIを使用していましたが、その後、フォークや画像への代替テキストAI生成ツールの数が爆発的に増加し、AMDとIntelの両社はより細かく調整されたライブラリをリリースすることで、Nvidiaのパフォーマンスとの差をある程度縮めました。Stable Diffusionの最新のベンチマーク結果は、AMD RX 7800 XTとRX 7700 XTのレビューでご覧いただけます。そして今、NvidiaはTensorRTで再びその差を広げようとしています。
基本的な考え方は、AMDとIntelが既に行っているものと似ています。AIおよびMLモデルと演算子のためのオープンフォーマットであるONNXを活用し、ベースとなるHugging Face安定拡散モデルをONNXフォーマットに変換します。そこから、使用している特定のGPUに合わせてパフォーマンスをさらに最適化できます。TensorRTによるチューニングには数分(場合によってはそれ以上)かかりますが、完了するとパフォーマンスが大幅に向上し、メモリ使用率も向上します。
Nvidiaの最新RTX 40シリーズGPUすべてにチューニングプロセス(最適なパフォーマンスを得るにはそれぞれ個別に実行する必要があります)を施し、Stable Diffusionの基本パフォーマンスとXformersを使用したパフォーマンスをテストしました。最新の最適化ツールを用いて多数の追加GPUを再テストしているため、Stable DiffusionにおけるAMD、Intel、Nvidiaのパフォーマンス比較の完全なアップデートはまだ準備が整っていません。そのため、この初期段階ではNvidia GPUのみに焦点を当てています。TensorRTによるゲインがNvidiaのRTXライン全体にどのように適用されるかを示すため、RTX 30シリーズ(RTX 3090)とRTX 20シリーズ(RTX 2080 Ti)をそれぞれ1つずつ含めました。
画像
1
の
3

画像
1
の
3

上記のギャラリーは、512x512と768x768の解像度で、Stable Diffusion 1.5モデルを使用しています。クリエイターコミュニティでは一般的に1.5の結果を好む傾向があるため、2.1ではなく1.5を使用するように「後退」しました。ただし、新しいモデルでも結果はほぼ同じになるはずです。各GPUについて、異なるバッチサイズとバッチ数で実行し、最適なスループットを見つけ、1回の実行で合計24枚の画像を生成しました。その後、3回の実行のスループットを平均して全体の速度を算出しました。つまり、各モデル形式とGPUで合計72枚の画像が生成されました(破棄された実行は除く)。
全体的なスループットには様々な要因が影響します。GPUコンピューティングはメモリ帯域幅と同様に非常に重要です。VRAM容量は、より大きな画像解像度やバッチサイズに対応できる可能性を除けば、それほど重要ではありません。つまり、24GBのVRAMで実行できても、8GBではできないことがあるということです。L2キャッシュサイズも影響する可能性がありますが、これを直接モデル化することはしていません。基本的に同じ仕様(16GBはカスタムモデルのためクロックが若干異なります)の4060 Ti 16GBカードと8GBカードは、ほぼ同じパフォーマンスと最適なバッチサイズを実現しました。
使用するモデルフォーマットによって、相対的なパフォーマンスに若干の違いがあります。ベースモデルは最も遅く、Xformersを使用すると、512x512の画像では30~80%、768x768の画像では40~100%のパフォーマンス向上が見られます。TensorRTを使用すると、512x512でさらに50~65%、768x768でさらに45~70%のパフォーマンス向上が見られます。
興味深いのは、(これまでテストしたGPUの中で)パフォーマンス向上が最も小さかったのはRTX 3090であるということです。何が制限要因なのかは明確ではありませんが、確固たる結論を出すには他のGPUもテストする必要があります。RTX 40シリーズは第4世代Tensorコア、RTX 30シリーズは第3世代Tensorコア、RTX 20シリーズは第2世代Tensorコアを搭載しています(Voltaアーキテクチャは第1世代Tensorです)。つまり、新しいアーキテクチャの方が性能が高いはずですが、Stable Diffusionに必要な種類の処理では、主に生のコンピューティング性能とメモリ帯域幅がパフォーマンスに影響するようです。
Nvidiaと世界各国の性能比較を網羅するわけではありませんが、例えばRX 7900 XTXの最新テストでは、512x512解像度で1分あたり約18~19枚、768x768解像度で1分あたり約5枚という結果が出ています。AMD GPUについては、最新のAutomatic1111 DirectMLブランチを用いた完全テストを実施しており、完了次第、最新のStable Diffusion概要を公開する予定です。また、IntelのArc A770は、512x512解像度で1分あたり約15.5枚、768x768解像度で4.7枚という結果が出ています。
では、TensorRT でパフォーマンスがこれほど向上する仕組みは一体何なのでしょうか?この件について Nvidia と話をしたところ、主にリソースとモデル形式の最適化についての話でした。
ONNXは元々FacebookとMicrosoftによって開発されましたが、Apacheライセンスモデルに基づくオープンソースイニシアチブです。ONNXは、PyTorch、OpenVINO、DirectML、TensorRTなど、幅広いバックエンドでAIモデルを利用できるように設計されています。ONNXは、計算グラフモデル、必要な組み込み演算子、そして一連の標準データ型を提供することで、さまざまなAIモデルの共通定義を可能にします。これにより、モデルを様々なAIアクセラレーションフレームワーク間で容易に移行できます。
一方、TensorRTはNvidia GPUでより高いパフォーマンスを発揮するように設計されています。TensorRTを活用するには、開発者は通常、モデルをTensorRTが想定する形式に直接記述するか、既存のモデルをその形式に変換する必要があります。ONNXはこのプロセスを簡素化するため、AMD(DirectML)やIntel(OpenVINO)はStable Diffusionの調整されたブランチにONNXを使用しています。
最後に、TensorRTのオプションの一つとして、モデルを使って最適なパスをチューニングできる点があります。今回のケースでは、512x512と768x768の画像をバッチ処理しています。生成する汎用TensorRTモデルは、画像サイズが512x512から1024x1024まで変化し、バッチサイズは1から8まで、最適な構成は512x512、バッチサイズは1です。512x512のバッチを8つ処理すると、10%程度の速度低下が生じる可能性があります。そこで、 512x512x8、768x768x4など、特定のサイズをターゲットとする別のTensorRTモデルを作成することができます。そして、私たちは各GPUに最適な構成を見つけるために、これらすべてを実行しました。
AMDのDirectMLフォークにも同様のオプションがありますが、現時点ではいくつか制限事項があります(例えば、バッチサイズを1以外に設定できないなど)。AMDとIntelのモデルについても今後さらなる調整が予定されていますが、時間の経過とともにその効果は徐々に薄れていく可能性があります。
もちろん、TensorRTのアップデートはStable Diffusionだけに向けたものではありません。NVIDIAは上記のスライドで、TensorRTを用いたLlama 2 7B int4推論における改善点を詳細に説明しました。Llama 2 7Bは70億のパラメータを持つテキスト生成ツールです。
グラフが示すように、単一のテキストバッチを生成するだけでもわずかな効果は見られますが、この場合のGPU(RTX 4090)は十分に活用されていないようです。バッチサイズを4に増やすと全体のスループットが3.6倍向上し、バッチサイズを8にすると4.4倍の高速化が実現します。この場合、バッチサイズを大きくすることで複数のテキスト応答を生成できるため、ユーザーは好みの応答を選択したり、必要に応じて出力の一部を組み合わせたりすることも可能です。
TesorRT-LLM はまだリリースされていませんが、近い将来 developer.nvidia.com (無料登録が必要) で利用できるようになる予定です。
最後に、NvidiaはLLM向けのAIに重点を置いたアップデートの一環として、Llama 2をベースモデルとして使用し、ローカルデータをインポートすることでよりドメイン特化型で最新の知識を得られるTensorRT-LLMツールの開発にも取り組んでいます。この機能の一例として、Nvidiaは最近のNvidiaニュース記事30件をこのツールにインポートし、ベースとなるLlama 2モデルとこのローカルデータを使用したモデルの応答の違いを確認しました。
ベースモデルは意味のある文章を生成する方法などに関するすべての情報を提供しますが、最近のイベントや発表に関する情報は持ち合わせていません。この場合、Alan Wake 2には公式情報が一切公開されていないと考えられます。しかし、更新されたローカルデータを使用することで、より意味のある回答を提供できるようになります。
NVIDIAが示したもう一つの例として、こうしたローカルデータをユーザーのメールアドレスやチャット履歴と組み合わせるというものがあります。そうすれば、「去年クリスとどんな映画について話していたっけ?」といった質問をすれば、答えを返してくれるようになります。これは、ユーザー自身の情報を活用することで、よりスマートな検索オプションを実現できる可能性があります。
これは当社のHammerBotの潜在的なユースケースとして考えられますが、RTXカードが必要なため、当社のサーバーで使用できるかどうかは確認する必要があります。他のLLMと同様に、結果の品質はトレーニングデータと質問内容によって多少変動する可能性があります。
NVIDIAは、ビデオ超解像度(VSR)のアップデートも発表しました。RTX 20シリーズGPUのサポートとネイティブアーティファクト低減が追加されました。ネイティブアーティファクト低減により、1080pモニターで1080pのストリーミングを視聴する場合でも、VSRによるノイズ除去と画質向上が期待できます。VSR 1.5は、NVIDIAの最新ドライバーで利用可能です。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
ジャレッド・ウォルトンは、Tom's Hardwareのシニアエディターで、GPU全般を専門としています。2004年からテクノロジージャーナリストとして活躍し、AnandTech、Maximum PC、PC Gamerなどで執筆活動を行っています。初代S3 Virgeの「3Dデセラレータ」から最新のGPUまで、ジャレッドは最新のグラフィックストレンドを常に把握しており、ゲームパフォーマンスに関する質問は彼にお任せください。