NVIDIA NIM と Hugging Face の統合

NVIDIA NIM は、単一の統合 Docker コンテナを提供し、最適化と提供プロセスを自動化することで、Hugging Face から 100,000 以上の大規模言語モデル(LLM)の迅速なデプロイを可能にしました。この統合により、さまざまな推論フレームワークを手動で管理するボトルネックが解消され、異なるモデルアーキテクチャ間で最高性能を実現できます。

LLM デプロイのための統合推論マイクロサービス

NVIDIA NIM は、NVIDIA TensorRT-LLM、vLLM、SGLang などの主要な推論フレームワークを統合した単一の Docker コンテナを提供し、幅広い LLM のデプロイが可能です。コンテナは、モデルの重みファイルから稼働中の推論サーバーへの移行を、以下の 4 つの異なる適応フェーズを通じて自動化します。

  • Model Analysis: NIM はモデル形式を自動的に識別し、Hugging Face モデル、TensorRT-LLM チェックポイント、または事前構築された TensorRT-LLM エンジンをサポートします。
  • Architecture and Quantization Detection: システムはモデルのアーキテクチャ(例:Llama、Mistral)と量子化形式(例:FP16、FP8、INT4)を検出します。
  • Backend Selection: NIM は前述の分析に基づき、最適な推論バックエンド(TensorRT-LLM、vLLM、または SGLang)を選択します。
  • Performance Setup: コンテナは選択されたモデルとバックエンドに対して事前設定された設定を適用し、手動でのチューニングなしに推論サーバーを起動します。

サポートされているモデル重み形式

広範な互換性を確保するため、NIM コンテナは複数の一般的な重み形式をサポートしています。

  • Hugging Face Transformers Checkpoints: .safetensors ファイルを使用してリポジトリから直接デプロイします。
  • GGUF Checkpoints: Hugging Face またはローカルストレージからの量子化された GGUF チェックポイントをサポートします。
  • TensorRT-LLM Checkpoints: trtllm_ckpt ディレクトリにパッケージされたモデルです。
  • TensorRT-LLM Engines: 最大の GPU パフォーマンスのために trtllm_engine ディレクトリからの事前構築エンジンです。

デプロイワークフローと構成

NIM を使用してモデルをデプロイするには、CUDA 12.1 以上のドライバーを備えた NVIDIA GPU、Docker、NVIDIA NGC アカウント、そして認証済みモデル用の Hugging Face API トークンが必要です。

モデルデプロイ例

ユーザーは NIM_MODEL_NAME 環境変数を使用して Hugging Face から直接モデルをデプロイできます。例として、Codestral-22B をデプロイするには、モデル URI hf://mistralai/Codestral-22B-v0.1 を指定して NIM Docker イメージを実行します。

ローカルに保存されたモデルの場合、NIM_MODEL_NAME はローカルディレクトリのパスを指し、そのディレクトリは Docker コンテナにマウントする必要があります。

バックエンドのカスタマイズと量子化

NIM がバックエンド選択を自動化する一方で、ユーザーは list-model-profiles コマンドで互換性のあるプロファイルを確認し、NIM_MODEL_PROFILE 環境変数を設定してバックエンドを手動で指定できます。

NIM は量子化モデル(例:AWQ や GGUF)のデプロイも簡素化します。システムは量子化形式を自動的に検出し、フル精度モデルと同じ標準デプロイコマンドを使用して対応するバックエンドを選択します。

高度なパフォーマンスチューニング

エンタープライズ向けデプロイでは、NIM は微調整用の環境変数を提供します:

  • NIM_MAX_MODEL_LEN: コンテキスト長を調整します。
  • NIM_TENSOR_PARALLEL_SIZE: 大規模モデルのマルチ GPU デプロイを有効にします。これには、マルチ GPU 通信を容易にするために Docker に --shm-size フラグを渡す必要があります。

Sources