LLM推論基盤プロビジョニング講座 第4回 推論エンジンの選定

LLM推論基盤プロビジョニング講座 第4回 推論エンジンの選定

こんにちは!前回までの講座では、LLMサービス構築に必要なリクエスト数の見積もりや、使用モデルの推論時消費メモリ計算について詳しく解説してきました。今回は7ステッププロセスの4番目、「推論エンジンの選定」について詳しく掘り下げていきます。

推論エンジンとは何か

推論エンジンとは、GPU上でLLMモデルの推論計算(テキスト生成)を効率的に行うために設計された専用のソフトウェアプログラムです。一般的なディープラーニングフレームワーク(PyTorch、TensorFlowなど)でも推論は可能ですが、実運用環境では専用の推論エンジンを使用することで、大幅なパフォーマンス向上とリソース効率化が期待できます。

推論エンジンは単なる実行環境ではなく、様々な最適化技術を実装しています。特定のモデルアーキテクチャに特化した最適化機能を実装したものや、推論速度の高速化に特化したもの、前回解説したKVキャッシュのメモリ効率化機能を備えたものなど、それぞれ特徴が異なります。そのため、自社で採用したLLMモデルや運用環境、要件に合致した推論エンジンを選定することが重要です。

推論エンジン選定のアプローチ

推論エンジンの選定は、理想的には複数の候補を実際に試してベンチマークを取ることが望ましいですが、時間や資源の制約がある場合は、まずは大まかな絞り込みから始めるアプローチも有効です。

特に重要なのは、自社で採用したLLMモデルとの互換性です。最初の段階で、採用予定のLLMに対応していない推論エンジンを除外することで、後続の負荷テストの対象を絞り込むことができます。モデルとエンジンの相性は非常に重要で、すべての推論エンジンがすべてのモデルに最適なパフォーマンスを発揮するわけではありません。

互換性の確認後は、パフォーマンス(推論速度、メモリ効率)、使いやすさ(セットアップの難易度、ドキュメンテーションの充実度)、拡張性(分散推論のサポート)、サポート体制(コミュニティの活発さ、商用サポートの有無)などの観点から評価していきます。

主要な推論エンジンの比較

市場には多数の推論エンジンが存在しますが、ここではChatStream(当社のLLM推論システム)がサポートしている主要な推論エンジンについて詳細に見ていきましょう。(ChatStreamを使用しなくても、ご紹介する推論エンジン単体でもちろん使用できます)

ChatStreamとは
ChatStreamはChatGPTやClaudeのような多ユーザー、大規模LLMサービスの構築を目的として構築された当社のLLMサービス構築ワンストップソリューションです。UIからバックエンドの推論環境、負荷分散に対応しておりローカルLLMを使用してチャットアプリケーションのみならずあらゆるLLMサービスを効率的に開発することが可能です。

さて、各推論エンジンにはそれぞれには固有の長所と短所があります。

1. QCT(Qualiteg Classic Transformer)

概要
当社
Qualitegが開発した推論エンジンで、HF Transformer(Hugging Face Transformers)をベースにしています。従来型の推論アーキテクチャを採用したクラシックエンジンと位置づけられますが、幅広いモデルとの互換性を重視して設計されています。

メリット

  • ほぼすべてのTransformerベースのLLMに安定的に対応しているため、モデルの互換性を重視する場合に適しています。
    たとえば、多くの推論エンジンがサポートしていない(または、一部動作するが不具合が多い)LLMも安定動作いたします。
    例えば FUGAKU LLM がリリースされたときも当社環境に公開したところ官公庁含め多くの皆様にご試用いただけました。
  • 10年以上前の古いGPUでも動作可能なため、既存のハードウェア資産を活用できます。
  • セットアップが比較的簡単で、特別な環境設定が少なくて済みます。

デメリット

  • 最新の最適化技術を採用していないため、推論速度は最新のエンジンに比べて低速です。
  • 同時に処理できるリクエスト数(Concurrency)が限られており、大量のリクエストを捌く用途には不向きです。
  • メモリ効率化機能が限定的なため、大規模モデルや長いコンテキスト処理に課題があります。

2. vLLM

概要
PagedAttentionと呼ばれる革新的なKVキャッシュ管理技術を搭載した高速推論エンジンです。2023年にUC Berkeleyの研究チームによって開発され、オープンソースとして公開されました。短期間で広く採用され、現在最も人気のある推論エンジンの一つとなっています。

メリット

  • 高速な推論速度を実現し、従来のエンジンと比較して2〜5倍の高速化が可能です。
  • PagedAttention技術により、KVキャッシュのメモリ使用効率が大幅に向上し、同時に処理できるリクエスト数が増加します。
  • 継続的に活発な開発が行われており、新機能やパフォーマンス改善が頻繁に提供されています。

デメリット

  • 対応しているアテンションヘッドの次元数(dim_head)が含まれていないと動作しないという制約があります。
  • Linux環境での使用が前提となっており、Windows環境での導入には追加の工夫が必要です。
  • 旧式GPUは非対応で、比較的新しいNVIDIA GPUが必要となります。

3. DeepSpeed

概要
Microsoft社が開発した高速推論エンジンで、大規模モデルの分散トレーニングと推論に強みを持っています。vLLMのライバル的存在で、特に大規模な分散環境での実行に適しています。

メリット

  • 高速な推論性能を発揮し、特に複数GPU間での分散推論に優れています。
  • ZeRO-Inferenceなどの独自のメモリ最適化技術により、限られたGPUメモリでも大規模モデルの実行が可能です。
  • Microsoft社による継続的な開発とサポートが期待できます。

デメリット

  • vLLMと比較して、対応しているモデルの種類が少ない傾向があります。
  • セットアップと設定の複雑さがあり、初心者にはハードルが高い場合があります。
  • 最新モデルへの対応が若干遅れる場合があります。

4. Text Generation Inference (TGI)

概要
Hugging Face社が開発した推論エンジンで、同社のTransformersライブラリと緊密に統合されています。多くのモデルに対応し、特にHugging Faceエコシステムを活用している場合に相性が良いエンジンです。

メリット

  • 高速な推論性能を提供し、特に短〜中程度のコンテキスト長での処理に効率的です。
  • Hugging Face Hubで公開されている多数のモデルに対応しているため、様々なLLMを試す場合に便利です。
  • Hugging Faceの他のツールやサービスと統合しやすい設計になっています。

デメリット

  • セットアップが複雑で、特に初期設定に時間がかかる場合があります。
  • 最適化されていないモデルでは、他のエンジンと比較して推論速度が低下することがあります。
  • 大規模な分散環境での利用に関しては、vLLMやDeepSpeedに機能面で劣る場合があります。

5. TensorRT-LLM

概要
NVIDIA社が開発した高速推論エンジンで、同社のGPUに最適化されています。特にNVIDIA A100やH100などの最新GPUで最大のパフォーマンスを発揮するように設計されています。

メリット

  • NVIDIA製GPUを「使い切る」ように最適化されておりvLLMやDeepSpeedを超える超高速な推論性能を実現し、特に最新のNVIDIA GPUでは最高クラスの速度を達成します。
  • 多彩な並列化技術を実装しており、複数GPUを効率的に活用できます。
  • NVIDIA社による継続的な最適化とアップデートが期待できます。

デメリット

  • NVIDIA GPU専用ですので、NVIDIA製 GPU にロックインされます。
  • セットアップが非常に複雑で、専門知識が必要となる場合が多いです。
  • NVIDIA GPU専用であり、他のGPUベンダー(AMD、Intelなど)のハードウェアでは使用できません。
  • 配布されるモデルをそのまま使用することはできず、専用のモデルとするためにモデルの変換プロセスが必要です。また、すべてのモデルがスムーズに変換できるわけではありません。NVIDIA GPUに最適化するために「コンパイル」するようなイメージです。
    (有名なオープンモデルは既にNVIDIA NIMというマイクロサービス化されているため、オープンもでるとそのまま使いたい場合は、自分で TensorRT LLM をいじるよりも、NVIDIAのクラウドプラットフォームに乗っかってしまう、という手もあります)

推論エンジン選定の実践的アプローチ

実際のプロジェクトでは、以下のステップで推論エンジンを選定することをお勧めします

  1. 要件の明確化
    LLMサービスの要件(推論速度、同時リクエスト処理能力、対応モデル、拡張性など)を明確にします。
  2. 互換性の確認
    採用予定のLLMモデルと互換性のある推論エンジンをリストアップします。ここでは公式ドキュメントやコミュニティの情報を参考にします。
  3. 初期評価
    2〜3の有力候補を選び、簡単なベンチマークテストを実施します。推論速度、メモリ使用量、セットアップの容易さなどを評価します。
  4. 詳細ベンチマーク
    初期評価で良好な結果を示した候補について、より詳細なベンチマークを実施します。実際のユースケースに近い条件でのテストが重要です。
  5. 拡張性テスト
    サービスの成長を見据えて、スケールアウト(複数GPUへの分散)やスケールアップ(より大きなモデルへの対応)のテストも行います。
  6. 総合評価
    パフォーマンス、拡張性、使いやすさ、コスト、コミュニティサポートなどを総合的に評価し、最終決定を行います。

重要なのは、「最も新しい」や「最も人気がある」という理由だけで推論エンジンを選ばないことです。自社の特定のニーズと制約に最も適したエンジンを選定することが、長期的な成功につながります。

ケーススタディ別の推論エンジン選択指針

異なるユースケースで適した推論エンジンが異なる場合があります。以下にいくつかの典型的なケースとおすすめの選択肢を紹介します

ケース1:多様なモデルを試行錯誤したい研究開発環境

  • おすすめ:QCT、TGI
  • 理由:幅広いモデルへの対応性と、セットアップの容易さが優先される

ケース2:高トラフィックの本番サービス環境

  • おすすめ:TensorRT-LLM、vLLM、DeepSpeed
  • 理由:高い推論速度と同時リクエスト処理能力が求められる

ケース3:限られたGPUリソースでの運用

  • おすすめ:vLLM、DeepSpeed
  • 理由:メモリ効率化機能により、限られたリソースでも効率的な運用が可能

ケース4:エンタープライズ向け大規模分散環境

  • おすすめ:DeepSpeed、TensorRT-LLM
  • 理由:OSSとはいえ、ベンダーの関与が高いためベンダーサポートが期待できる。複数GPU・複数ノードでの分散推論に優れた機能を持つ

まとめと次のステップ

推論エンジンの選定は、LLMサービス構築における重要な決断の一つです。適切なエンジンを選ぶことで、パフォーマンスを最大化し、コストを最適化し、将来の拡張にも対応できる基盤を整えることができます。

今回紹介した各推論エンジンは、それぞれ長所と短所を持っており、すべての状況に最適な「万能」のエンジンは存在しません。自社のLLMモデル、ハードウェア環境、要件に基づいて慎重に選定し、可能であれば実際にベンチマークテストを行うことをお勧めします。

次回のSTEP5「GPUノード構成見積もり」では、選定した推論エンジンを用いて、実際のGPUノード構成をどのように設計するかについて詳しく解説していきます。推論エンジンの特性を踏まえたGPU台数の見積もり、メモリ要件の計算、コスト最適化の方法などを学んでいきましょう。

それでは、次回またお会いしましょう!

Read more

AIがよく間違える「クロージャ問題」の本質と対策

AIがよく間違える「クロージャ問題」の本質と対策

こんにちは! 本日は「クロージャ問題」に関する話題となります。 Pythonでループ内に関数を定義したことはありますか? もしあるなら、あれれ?な挙動に遭遇したことがあるかもしれません。 本稿では、Pythonプログラマーなら一度は経験する「クロージャ問題」について、初心者にもわかりやすく解説してみたいとおもいます クロージャとは何か? そもそも ”クロージャ” とは何でしょうか。 クロージャ(closure)とは、関数が自分の定義されたスコープの変数を覚えて持ち運ぶ仕組み のことです。 もう少し分解すると、次の2つがポイントとなります 1. 内側の関数が、外側の関数の変数を使える 2. 外側の関数が終了しても、その変数は生き続ける 普通の関数とクロージャ―を使った関数を比較してみましょう 普通の関数との比較 まずは普通の関数から、 def add(x, y): return x + y print(add(3, 5)) # 8 print(add(3, 7)

By Qualiteg プロダクト開発部
フリーランスHub様にQualiteg Blogをご紹介いただきました

フリーランスHub様にQualiteg Blogをご紹介いただきました

この度、フリーランス向け案件検索サービス「フリーランスHub」様の特集記事「トレンドをキャッチアップ!AIに関する情報が得られるメディア・ブログまとめ」にて、弊社が運営する「Qualiteg Blog」をご紹介いただきました。 掲載記事について フリーランスHub様の記事では、AI技術の最前線で活躍するエンジニアや開発者の方々に向けて、価値ある情報源となるメディア・ブログが厳選して紹介されています。 その中で、Qualiteg Blogを「AI技術の専門知識を実践的なビジネス活用につなげる貴重な情報源」として取り上げていただきました。 特に以下の点を評価いただいております * 実践的なビジネス活用事例の提供 AI新規事業創出や事業選定方法など、経営者やビジネスリーダーが直面する課題への具体的な解決策 * 技術的な深掘りコンテンツ リップシンク技術など、実際のサービスで使用されている技術の開発現場目線での詳細な解説 * 多様な情報発信 代表執筆記事、AIトピックス、講演会動画など、幅広いフォーマットでの情報提供 今後も価値ある情報発

By Qualiteg ニュース
PyTorchの重いCUDA処理を非同期化したらメモリリークした話と、その解決策

PyTorchの重いCUDA処理を非同期化したらメモリリークした話と、その解決策

こんにちは!Qualitegプロダクト開発部です! 今回は同期メソッドを非同期メソッド(async)化しただけなのに、思わぬメモリリーク※に見舞われたお話です。 深層学習モデルを使った動画処理システムを開発していた時のことです。 「処理の進捗をリアルタイムでWebSocketで通知したい」という要件があり、「単にasync/awaitを使えばいいだけでしょ?」と軽く考えていたら、思わぬ落とし穴にはまりました。 プロ仕様のGPUを使っていたにも関わらず、メモリ不足でクラッシュしてしまいました。 この記事では、その原因と解決策、そして学んだ教訓を詳しく共有したいと思います。同じような問題に直面している方の参考になれば幸いです。 ※ 厳密には「メモリリーク」ではなく「メモリの解放遅延」ですが、 実用上の影響は同じなので、この記事では便宜上「メモリリーク」と表現します。 背景:なぜ進捗通知は非同期である必要があるのか モダンなWebアプリケーションの要求 最近のWebアプリケーション開発では、ユーザー体験を向上させるため、長時間かかる処理の進捗をリアルタイムで表示することが

By Qualiteg プロダクト開発部
ゼロトラスト時代のLLMセキュリティ完全ガイド:ガーディアンエージェントへの進化を見据えて

ゼロトラスト時代のLLMセキュリティ完全ガイド:ガーディアンエージェントへの進化を見据えて

こんにちは! 今日はセキュリティの新たな考え方「ゼロトラスト」とLLMを中心としたAIセキュリティについて解説いたします! はじめに 3つのパラダイムシフトが同時に起きている いま、企業のIT環境では3つの大きな変革が起ころうとしています。 1つ目は「境界防御からゼロトラストへ」というセキュリティモデルの転換。 2つ目は「LLMの爆発的普及」による新たなリスクの出現。 そして3つ目は「AIエージェント時代の到来」とそれに伴う「ガーディアンエージェント」という新概念の登場です。 これらは別々の出来事のように見えて、実は密接に関連しています。本記事では、この3つの変革がどのように結びつき、企業がどのような対策を取るべきかを解説いたします 目次 1. はじめに:3つのパラダイムシフトが同時に起きている 2. 第1の変革:ゼロトラストという新しいセキュリティ思想 3. 第2の変革:LLM時代の到来とその影響 4. 第3の変革:AIエージェントとガーディアンエージェント 5. 3つの変革を統合する:実践的なアプローチ 6. 実装のベストプラクティス 7. 日本

By Qualiteg コンサルティング