• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 數據中心/云端

    利用 NVIDIA NIM 實現 AI 模型微調部署

    對于使用特定領域數據調整 AI 基礎模型的組織而言,快速創建和部署微調模型的能力是高效地通過企業生成式 AI 應用提供價值的關鍵。

    NVIDIA NIM 為最新的 AI 基礎模型提供預構建、性能優化的推理微服務,包括使用參數高效微調 (PEFT) 自定義的模型的 無縫部署

    在某些情況下,理想的做法是使用持續預訓練、DPO、監督微調(SFT)或模型合并等方法,這些方法直接在訓練或自定義過程中調整基礎模型權重,這與使用低階適應(LoRA)的 PEFT 不同。在這些情況下,必須更新模型的推理軟件配置,以便在給定新權重時獲得最佳性能。

    NIM 可以自動構建針對本地環境中調整后的模型和 GPU 優化的 TensorRT-LLM 推理引擎性能,然后加載該引擎,以便在單步模型部署流程中運行推理,而無需承擔這一通常漫長的過程。

    在本文中,我們將探討如何使用本地構建的性能優化型 TensorRT-LLM 推理引擎,為通過 SFT 自定義的模型快速部署 NIM 微服務。我們提供了所有必要的命令以及一些實用的選項,因此您可以立即自行試用。

    預備知識?

    要運行本教程,您需要一個可訪問 80 GB GPU 內存且已安裝 git-lfs 的 NVIDIA 加速計算環境。

    在 NVIDIA 加速計算環境中拉取和部署 NIM 微服務之前,您還需要 NGC API 密鑰。

    1. 前往 NVIDIA API Catalog 中的 Meta Llama 3 8B Instruct 模型列表。
    2. 選擇右上角的“ Login ”并按照說明操作。
    3. 登錄后,在 模型頁面 選擇“ 使用此 NIM 構建 ”。
    4. 選擇自托管 API 并按照任一選項訪問 NIM 微服務:
      • NVIDIA 開發者計劃會員可以免費訪問 NIM,僅用于研究、開發和測試。
      • 90 天 NVIDIA AI Enterprise 許可證,包括對 NVIDIA 企業支持的訪問權限。

    在為所選訪問方法提供必要的詳細信息后,請復制 NGC API 密鑰,并準備好繼續使用 NIM。有關更多信息,請參閱 為 LLMs 啟動 NVIDIA NIM

    NIM 微服務入門?

    將 NGC CLI 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

    要演示在本地構建、優化的 TensorRT-LLM 推理引擎,以便使用 NIM 部署微調模型,您需要一個已通過 SFT 進行自定義的模型。在本教程中,請使用 NVIDIA OpenMath2-Llama3.1-8B 模型,這是使用 OpenMathInstruct-2 數據集對 Meta 的 Llama-3.1-8B 進行的自定義。

    基礎模型必須作為可下載的 NIM 提供給 LLMs。有關可下載的 NIM 微服務的更多信息,請參閱 NVIDIA API Catalog 中的 NIM Type:Run Anywhere 過濾器

    您只需獲得此模型的權重,即可通過多種方式獲得。為此,請使用以下命令克隆模型資源庫:

    git lfs install
    git clone https://huggingface.co/nvidia/Llama-3.1-Nemotron-70B-Instruct-HF
    export MODEL_WEIGHT_PARENT_DIRECTORY=$PWD

    現在您已收集模型權重,請繼續下一步:啟動微服務(microservice)。

    從可用性能配置文件中進行選擇?

    系統會根據您選擇的模型和硬件配置,自動選擇最適用的可用推理性能配置文件。生成本地推理引擎有兩種可用的性能配置文件:

    • 延遲: 專注于提供針對延遲進行優化的 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/llama3_1-8b: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 微服務。按照“ Model Profile ”說明啟動您的微服務,并確定可對其訪問的配置文件。

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

    假設您使用的是 H100 GPU,您應該會看到以下可用配置文件:

    • tensorrt_llm-h100-fp8-tp1-throughput
    • tensorrt_llm-h100-fp8-tp2-latency

    重新運行命令并提供額外的環境變量以指定所需的配置文件。

    docker run --rm --runtime=nvidia --gpus=all $IMG_NAME list-model-profiles \
    -e NGC_API_KEY=$NGC_API_KEY \
    -e NIM_MODEL_PROFILE=tensorrt_llm-h100-fp8-tp2-latency

    現在,您已使用所需的配置文件重新啟動 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 和 NIM 微服務社區互動,請參閱 NVIDIA NIM 開發者論壇

    ?

    ?

    +1

    標簽

    人人超碰97caoporen国产