AIやフルスタック開発でお悩みですか?私たちのエキスパートが、お客様に合わせたアドバイスや技術的な統合など、様々な面でサポートいたします。連絡先 [email protected].

GenAI推論エンジン:TensorRT-LLM vs vLLM vs Hugging Face TGI vs LMDeploy

ジェネレーティブAI(GenAI)の台頭は、自然言語処理からクリエイティブなコンテンツ生成まで、業界を変革してきた。しかし、これらの強力なモデルを効率的にスケール展開することは、依然として課題となっている。

TensorRT-LLM、vLLM、Hugging Face TGI、LMDeploy

推論エンジンは、パフォーマンスを最適化し、待ち時間を短縮し、リソースを最大限に活用する上で重要な役割を果たす。この記事では、4つの主要なソリューションを紹介する:TensorRT-LLM、vLLM、Hugging Face TGI、そしてLMDeployだ。

NVIDIAのハードウェアアクセラレーションによる高精度、vLLMの革新的なメモリ管理、TGIの生産対応エコシステム、LMDeployのスピードとシンプルさなど、それぞれがユニークな強みを発揮します。GenAIのワークロードに最適なエンジンを見つけるために、これらのエンジンを比較してみましょう。

TensorRT-LLM:最適化された推論のためのNVIDIAのパワーハウス

TensorRT-LLMは、大規模な言語モデルを高速かつスムーズに実行するためのNVIDIAの答えです。TensorRTフレームワーク上に構築され、NVIDIA GPUの性能を一滴残らず引き出すように設計されています。これは、レイヤ・フュージョン、精度の微調整(FP16、INT8、FP8...)、モデルの精度を壊すことなく計算時間を短縮するカーネル最適化などのトリックによって実現されています。

TensorRT-LLM

スピードだけではない。TensorRT-LLMは、メモリをスマートに管理することで、大きなモデルを効率的に処理するので、実行中にクラッシュすることはありません。また、動的バッチ処理にも対応しており、メモリを使い果たすことなく、複数のリクエストを一度に処理することができます。すでにNVIDIAハードウェアを使用しているのであれば、CUDAやcuDNNのようなNVIDIAのエコシステムと緊密に連携しており、NVIDIAのTriton Inference ServerやNVIDIA Dynamoとも統合されているため、何の問題もありません。

とはいえ、誰にとっても完璧というわけではありません。NVIDIAのツールに慣れていない場合、セットアップは面倒かもしれませんし、NVIDIA以外のハードウェアを使用している場合、柔軟性に欠けます。それでも、NVIDIA GPUにおける生のパワーと最適化については、これに勝るものはない。

vLLM:ページド・アテンションによる高スループット推論

vLLMは大量の推論ジョブを高速に処理するのが得意だ。vLLMはオープンソースのプロジェクトで、速度を落とさずに高いスループットが必要なときに威力を発揮する。その秘密はPagedAttentionにある。PagedAttentionは、他のものよりもはるかに優れたメモリー管理を行うトリックだ。すべてを一度にロードしてRAMを消費する代わりに、キー・バリュー・キャッシュをチャンクに分割し、必要なものだけを取り込む。無駄を省き、より高速に。

ブイエルエルエム

柔軟性も高い。LLaMAやMistralのような一般的なモデルですぐに動作し、NVIDIAやAMD GPUを含む多くのハードウェアをサポートします。また、リクエストを効率的にグループ化し、パイプラインをスムーズに走らせるためのダイナミックバッチングも利用できる。PythonとPyTorchに慣れていれば、セットアップはとても簡単です。

vLLMの主な限界は、市場での相対的な未成熟さである。つまり、より確立されたソリューションで利用可能な包括的な機能セットをまだ提供していない可能性がある。しかし、高性能な推論を提供する効率的なソリューションを求める組織にとって、vLLMは優れた選択肢となる。

ハギング・フェイスTGI:テキスト生成のためのプロダクション・レイディ・ソリューション

Hugging Face TGI (Text Generation Inference)は、頭を悩ませることなくモデルを立ち上げて実行したい人のために作られました。Hugging Faceチームによって構築されたツールなので、BERTやGPTなど、彼らの膨大な事前学習済みモデルのライブラリとうまく連携する。これは、チャットボットや、テキスト生成が高速に動作しクラッシュしない必要があるアプリに力を与えるような、実世界での使用のために設計されている。

ハグする顔 TGI

TGIは、古いリクエストの終了と同時に新しいリクエストをスワップすることで、システムを忙しくさせる連続バッチ処理などの機能で、重労働を処理する。GPUアクセラレーションをサポートしており、ハードウェアがあればスケールアップも可能だ。さらに、不良出力をフィルタリングするような安全機能も組み込まれている。Dockerを使って数ステップでデプロイできるので、セットアップも比較的簡単だ。

難点は?Hugging Faceのエコシステムと連動しているため、その世界にまだいないのであれば、制限を感じるかもしれない。それでも、すぐに使えるプラグアンドプレイのオプションとしては、TGIは素晴らしい選択だ。

LMDeploy:優れたデコード速度による効率的なデプロイメント

LMDeploy は MMRazor と MMDeploy チームによるツールキットで、大規模な言語モデルを圧縮、デプロイ、実行するために開発されました。LMDeployの特徴は?A100 GPU上で、vLLMの1秒あたり1.8倍のリクエスト数という優れたデコード速度を持っている。これは、持続的バッチ処理、ブロックKVキャッシング、GPUを忙しくさせる巧妙なCUDAカーネルなどのトリックのおかげだ。

LMDeploy

エンジンは2つある:最大のパフォーマンスを発揮するTurboMindと、より簡単にいじれるPyTorchだ。TurboMindはFP16の2.4倍の速度で4ビット推論を推し進め、Llama-2 70Bのような大きなモデルも簡単に扱うことができる。重みやKVキャッシュを量子化して、精度を損なわずにメモリを節約することもできる。デプロイも簡単で、1つのコマンドで複数のマシンにまたがるサーバーをセットアップできる。さらに、複数ラウンドのトークでチャットの履歴を記憶するので、古い作業をやり直す時間の無駄もない。

欠点は?TurboMindは気難しく、Mistralのようなスライディング・ウィンドウのアテンション・モデルとはまだ相性が良くない。NVIDIAのGPUでなければ、より遅いPyTorchエンジンから抜け出せない。それでも、適切なハードウェア上でスピードとシンプルさを求めるのであれば、LMDeployは素晴らしい選択だ。

パフォーマンス比較:レイテンシ、スループット、スケーラビリティ

これらのエンジンが、レイテンシー(1つのリクエストが終了するまでの時間)、スループット(どれだけ多くのリクエストを取り込むことができるか)、スケーラビリティ(より大きな負荷やより多くのハードウェアにどれだけ対応できるか)について、どのように積み重なるかを分解してみよう。

TensorRT-LLMは、NVIDIA GPUを使用している場合、レイテンシで輝きます。NVIDIAハードウェアに高度に最適化されているため、単一のリクエストはすぐに終了する。スループットも優れており、特にダイナミック・バッチ処理に優れています。BentoMLによるベンチマークでは、このエンジンは、A100 80GB GPU上のLlama 3 70B Q4で、100人の同時ユーザーで、1秒間に700トークンに達しています。TensorRT-LLMは、長い入力と高いリクエストレートのシナリオで強力な性能を発揮し、良好なスループットを提供します。複数のGPUでのスケーラビリティは、優れたパフォーマンスですぐにサポートされます。

vLLMはスループットも良好で、特にデコードの多いワークロードでは、最近のアップデート後に高いスループットと低いレイテンシーを実現しています。BentoMLによるベンチマークによると、このエンジンは、A100 80GB GPU上で、Llama 3 70B Q4の100同時ユーザで、600-650トークン/秒に達します。レイテンシは良好だが、TensorRT-LLMほどではない。TensorRT-LLMは、GPUのブランドを混在させてもうまくスケールしますが、巨大なセットアップには向いていません。

Hugging Face TGIはvLLMと同様のパフォーマンスを発揮し、パフォーマンスと使いやすさのバランスを提供する。レイテンシは良好なGPUで50-70msとまずまずです。BentoMLによるベンチマークによると、このエンジンは、A100 80GB GPU上で、Llama 3 70B Q4の100同時ユーザーで、毎秒600~650トークンに達します。本番用にスケールするように作られているので、特にDockerを使えば、より多くのユーザーやマシンをスムーズに処理できます。

LMDeploy はデコード速度で勝る。特に小さなモデルのトークン生成速度に優れ、量子化された大きなモデルの最初のトークンまでの時間(TTFT)が短い。レイテンシは40-60msと低い。スループットも優れています。BentoMLによるベンチマークによると、このエンジンは、A100 80GB GPU上のLlama 3 70B Q4において、100人の同時ユーザーで毎秒700トークンに達しています。スケーリングはサーバーセットアップで簡単ですが、最高の結果を得るためにはNVIDIA GPUに強く依存します。

結論:TensorRT-LLMとLMDeployは、生のスピードでリードしている。ハードウェアと処理するリクエストの数によって選ぶことができる。

量子化能力

量子化によってモデルの精度を下げることで、メモリ使用量を減らし、推論を高速化することができる。各エンジンのパフォーマンスは以下の通り:

TensorRT-LLMは、FP8、FP4、INT4とAWQ(Activation-aware Weight Quantization)、およびINT8とSmoothQuantをサポートしており、NVIDIA GPUのパフォーマンスを最適化するための強力なオプションを提供します。

vLLMはGPTQ、AWQ、INT4、INT8、FP8で柔軟性を提供し、さまざまなハードウェアと精度のニーズに適応する。

Hugging Face TGIは、8ビットと4ビットの量子化用のbitsandbytesと、ウェイトのみの量子化用のGPT-Qを統合しており、プロダクション展開に適している。

LMDeployは、4ビットAWQ、8ビット量子化、オンラインINT8/INT4 KVキャッシュ量子化を提供し、限られたハードウェア上の大規模モデルの効率を向上させます。

ハードウェアの互換性

ハードウェア・サポートは、これらのエンジンをどこに配置できるかを決定し、スケーラビリティとパフォーマンスに影響を与える:

TensorRT-LLMはNVIDIA CUDA専用であり、GPUアクセラレータを活用して高い性能を発揮します。

vLLMはNVIDIA CUDA、AMD ROCm、AWS Neuron、CPUをサポートし、多様なセットアップに幅広い互換性を提供します。

Hugging Face TGIは、NVIDIA CUDA、AMD ROCm、Intel Gaudi、AWS Inferentiaで動作し、様々なハードウェア環境に柔軟に対応します。

LMDeploy は NVIDIA CUDA 向けに最適化されており、NVIDIA GPU 上で最高のパフォーマンスを発揮するが、他のプラットフォームへの対応は限定的である。

使いやすさ

セットアップと統合のプロセスは、開発スケジュールに影響を与えます。各エンジンの評価は以下の通りです:

TensorRT-LLMは、チェックポイントを変換し、TensorRTエンジンを構築し、パラメータを設定する必要があるため、エンジニアにとって困難で時間がかかる。

vLLMは、包括的なドキュメント、簡単なインストール、シームレスなPythonライブラリ統合により、ユーザーフレンドリーです。

Hugging Face TGIはHugging Faceのエコシステムから恩恵を受け、迅速なデプロイのためにビルド済みのDockerイメージと徹底したドキュメントを提供します。

LMDeploy は、サーバを起動するためのコマンドと、カスタマイズのための Python API からなるシンプルなセットアップを特徴としており、容易さと柔軟性のバランスをとっている。

結論

適切なエンジンを選ぶには、ユースケース、ハードウェア、スキルによる。

TensorRT-LLMは、NVIDIA GPU上で大きなモデルを実行し、あらゆる速度が必要な場合に最適な推論エンジンです(リアルタイムチャットボットやAIアシスタントのような、ミリ秒単位で返信を生成する必要がある低レイテンシのアプリケーションを考えてみてください)。すでにNVIDIAの世界に深く入り込んでいる企業には最適だが、シンプルさを求めるのであればやりすぎかもしれない。

vLLMはスピードとシンプルさのトレードオフの関係にある。スタートアップ企業や、柔軟で迅速なセットアップを望む研究者にとっては、非常に効果的だ。

Hugging Face TGIは、スピードとシンプルさにおいてvLLMと同等です。デプロイが簡単で、スムーズにスケールし、ハギング・フェイスのモデル・ハブと連携するため、手間のかからないソリューションを求めるチームに最適だ。

LMDeployは、TensorRT-LLMのようにパフォーマンスで輝く。シンプルなセットアップと最高のパフォーマンスを求めるNVIDIA GPUを持つユーザーには適しているが、モデルがTurboMindとうまく動作しない場合にはあまり便利ではない。

自分でGenAIモデルをデプロイできない、またはデプロイしたくない場合は、NLPクラウドを使用し、プロダクションでスケールの大きな高速生成AIモデルを活用することができます。 今すぐNLPクラウドで高速推論をお試しください!

推論エンジン全般についてご質問があれば、遠慮なくお尋ねください!

Julien
NLPクラウドCTO