• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • Data Center / Cloud / Edge

    NVIDIA NIM でファインチューニングされた AI モデルのデプロイ

    Reading Time: 2 minutes

    ドメイン固有のデータで AI 基盤モデルを適応させている企業にとって、ファインチューニングされたモデルを迅速に作成し、デプロイする能力は、企業の生成 AI アプリケーションで効率的に価値を提供するための鍵となります。

    NVIDIA NIM は、Parapeter-efficient Fine-tuning (PEFT) を用いてカスタマイズしたモデルのシームレスなデプロイなど、最新の AI 基盤モデル向けにビルドされたパフォーマンスを最適化した推論マイクロサービスを提供します。

    場合によっては、Low-rank Adaptation (LoRA) を使用した PEFT とは異なり、継続事前學習、DPO、教師ありファインチューニング (SFT: Supervised Fine-tuning)、モデル マージなどの手法を利用し、基礎となるモデルの重みをトレーニングやカスタマイズの過程で直接調整するのが理想的です。このような場合、新しい重みを考慮した最適なパフォーマンスを実現するには、モデルの推論ソフトウェア構成を更新する必要があります。

    この長時間を要するプロセスに負擔を割くのではなく、NIM は、調整されたモデルと GPU に合わせて最適化した TensorRT-LLM 推論エンジンをローカル環境でビルドし、ロードし、それを単一ステップのモデル デプロイ プロセスの一環として推論を実行できます。

    この投稿では、パフォーマンスを最適化した TensorRT-LLM 推論エンジンをローカルでビルドして、SFT でカスタマイズされたモデルに対する NIM マイクロサービスを迅速にデプロイする方法を説明します。必要なコマンドと便利なオプションもご紹介しますので、是非今すぐお試しください。

    前提條件

    このチュートリアルを実行するには、80 GB の GPU メモリを持つ NVIDIA アクセラレーテッド コンピューティング環境と git-lfs のインストールが必要です。

    NVIDIA アクセラレーテッド コンピューティング環境で、NIM マイクロサービスを pull してデプロイするには、NGC API キーも必要です。

    1. NVIDIA API カタログのモデル一覧から Meta Llama 3 8B Instruct に移動します。
    2. 右上の [Login] を選択し、指示に従ってください。
    3. ログインしたら、モデル ページ[Build with this NIM] を選択します。
    4. [Self-Hosted API] を選択し、いずれかのオプションに従って、NIM マイクロサービスへアクセスします。
      • NVIDIA 開発者プログラムのメンバーであれば、研究、開発、テストに限り NIM に無料でアクセスすることができます。
      • 90 日間の NVIDIA AI Enterprise ライセンスには、NVIDIA Enterprise サポートへのアクセスが含まれています。

    選択したアクセス方法に必要な詳細情報を提供したら、NGC API キーをコピーして、NIM を進める準備をします。詳細については、Launch NVIDIA NIM for LLMs を參照してください。

    NIM マイクロサービスをはじめる

    利用中のコンピューティング環境の環境変數として、NGC API キーを提供します。

    export NGC_API_KEY=<<YOUR API KEY HERE>>

    また、最適化処理中にキャッシュとして使用するディレクトリを作成して、パーミッションを変更して、指定する必要があります。

    export NIM_CACHE_PATH=/tmp/nim/.cache
    mkdir -p $NIM_CACHE_PATH
    chmod -R 777 $NIM_CACHE_PATH

    NIM でファインチューニングされたモデルをデプロイするために、最適な TensorRT-LLM 推論エンジンをローカルでビルドする実証には、SFT によってカスタマイズしたモデルが必要です。このチュートリアルでは、OpenMathInstruct-2 データセットを使用して、Meta の Llama-3.1-8B をカスタマイズした NVIDIA OpenMath2-Llama3.1-8B モデルを使用します。

    ベース モデルは、ダウンロード可能な NIM for LLMs として利用可能でなければなりません。ダウンロード可能な NIM マイクロサービスの詳細については、NVIDIA API カタログの「NIM Type: Run Anywhere filter」を參照してください。

    必要なのはこのモデルの重みだけで、これはさまざまな方法があります。この投稿では、以下のコマンドを使用してモデル リポジトリをクローンします。

    git lfs install
    git clone https://huggingface.co/nvidia/OpenMath2-Llama3.1-8B
    export MODEL_WEIGHT_PARENT_DIRECTORY=$PWD

    これでモデルの重みが収集できたので、次のステップのマイクロサービスの起動に進みます。

    利用可能なパフォーマンス プロファイルから選択する

    選択したモデルとハードウェアの構成に基づいて、利用可能なものの中から最も適切な推論パフォーマンス プロファイルが自動的に選択されます。ローカル推論エンジンの生成には、以下の 2 つのパフォーマンス プロファイルが利用できます。

    • レイテンシ: レイテンシに最適化された NIM マイクロサービスの提供に重點を置きます。
    • スループット: バッチ スループットに最適化された NIM マイクロサービスの提供に重點を置きます。

    利用可能な精度など、サポート機能の詳細については、NVIDIA NIM ドキュメントのサポート情報のトピックを參照してください。

    SFT モデルを使用した例

    以下のコマンドを実行して、ローカル環境でビルドした OpenMath2-Llama3.1-8B 用の TensorRT-LLM 推論エンジンを作成します。

    docker run -it --rm --gpus all \
        --user $(id -u):$(id -g)\
        --network=host \
        --shm-size=32GB \
        -e NGC_API_KEY \
        -e NIM_FT_MODEL=/opt/weights/hf/OpenMath2-Llama3.1-8B \
        -e NIM_SERVED_MODEL_NAME=OpenMath2-Llama3.1-8B \
        -v $NIM_CACHE_PATH:/opt/nim/.cache \
        -v $MODEL_WEIGHT_PARENT_DIRECTORY:/opt/weights/hf \
        nvcr.io/nim/meta/llama-3.1-8b-instruct:1.3.0

    このコマンドは、NIM マイクロサービスをデプロイするために使用する典型的なコマンドとほぼ同じです。この場合、追加の NIM_FT_MODEL パラメーターを追加し、OpenMath2-Llama3.1-8B モデルを指しています。

    これにより、NIM は最適化された推論エンジンをローカル環境でビルドします。この新しい NIM マイクロサービスを使用して推論を行うには、以下の Python コード サンプルを実行します。

    from openai import OpenAI
     
    client = OpenAI(
      base_url = "http://localhost:8000/v1",
      api_key = "none"
    )
     
    completion = client.chat.completions.create(
      model="OpenMath2-Llama3.1-8B",
      messages=[{"role":"user","content":"What is your name?"}],
      temperature=0.2,
      top_p=0.7,
      max_tokens=100,
      stream=True
    )
     
    for chunk in completion:
      if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")
    動畫 1. ファインチューニングされた AI モデルをデプロイする方法

    カスタム パフォーマンス プロファイルで最適化された TensorRT-LLM エンジンのビルド

    サポートされている GPU なら、同様のコマンドを使用して、NIM マイクロサービスを起動できます。モデル プロファイルの手順に従ってマイクロサービスを起動し、どのプロファイルにアクセスできるかを確認します。

    export IMG_NAME="nvcr.io/nim/meta/llama-3.1-8b-instruct:1.3.0"
    docker run --rm --gpus=all -e NGC_API_KEY=$NGC_API_KEY $IMG_NAME list-model-profiles

     H100 GPU を使用していると仮定すると、以下のプロファイルが利用可能であることがわかります。

    • tensorrt_llm-h100-bf16-tp2-pp1-latency
    • tensorrt_llm-h100-bf16-tp1-pp1-throughput

    コマンドを再実行し、目的のプロファイルを指定する環境変數を追加します。

    docker run --rm --gpus=all \
        --user $(id -u):$(id -g)\
        --network=host \
        --shm-size=32GB \
        -e NGC_API_KEY \
        -e NIM_FT_MODEL=/opt/weights/hf/OpenMath2-Llama3.1-8B \
        -e NIM_SERVED_MODEL_NAME=OpenMath2-Llama3.1-8B \
        -e NIM_MODEL_PROFILE=tensorrt_llm-h100-bf16-tp2-pp1-latency \
        -v $NIM_CACHE_PATH:/opt/nim/.cache \
        -v $MODEL_WEIGHT_PARENT_DIRECTORY:/opt/weights/hf \
        $IMG_NAME

    目的のプロファイルで NIM マイクロサービスを再起動したので、Python を使用してモデルとやり取りします。

    from openai import OpenAI
     
    client = OpenAI(
      base_url = "http://localhost:8000/v1",
      api_key = "none"
    )
     
    completion = client.chat.completions.create(
      model="llama-3.1-8b-instruct",
      messages=[{"role":"user","content":"What is your name?"}],
      temperature=0.2,
      top_p=0.7,
      max_tokens=100,
      stream=True
    )
     
    for chunk in completion:
      if chunk.choices[0].delta.content is not None:
        print(chunk.choices[0].delta.content, end="")

    まとめ

    モデルのカスタマイズに PEFT または SFT を使用している場合でも、NIM は、高性能な推論のためにカスタマイズされたモデルのデプロイをわずかなステップで簡単に高速化します。最適化された TensorRT-LLM 推論エンジンをローカル環境で自動的にビルドすることで、NIM は、高速化された AI 推論をどこにでも迅速にデプロイできるよう新たな可能性を引き出しています。詳細については、NVIDIA API カタログにアクセスし、NVIDIA NIM ドキュメントのファインチューニングされたモデルのサポートをご覧ください。NVIDIA NIM 開発者フォーラムでは、NVIDIA および NIM マイクロサービス コミュニティとの交流することもできます。


    関連情報

    0

    Tags

    人人超碰97caoporen国产