5. 推理示例#

在本节中,我们将给出在您的 Run:ai on DGX Cloud 集群上部署 NVIDIA NIM 的示例。该示例使用 llama-3.1-8b-instruct 模型,但其他模型也类似。

5.1. 使用用户界面#

5.1.1. 先决条件和要求#

  • 已确定要使用的 Run:ai 项目命名空间(新的或现有的)

  • 已添加具有 NIM 访问权限的 NGC 凭据到 Run:ai 集群。 请在此处查看详细信息。

5.1.2. 创建环境#

为每个模型创建单独的环境。

要使用 Run:ai UI 创建新环境

  1. 在左侧导航菜单中,选择 环境。您将进入环境概览页面,其中显示有关集群中现有环境的信息。

  2. 单击页面左上角的 + 新建环境。您将进入新建环境创建页面。

  3. 为环境选择范围。这决定了哪些集群、部门、组或项目可以部署该环境。

  4. 输入环境名称和描述。示例 llama3-8b-nim

  5. 插入容器镜像的 URL。示例 nvcr.io/nim/meta/llama-3.1-8b-instruct

  6. 选择推理作为工作负载的类型。

  7. 添加 HTTP 端口 8000 作为推理服务端点。

  8. 在运行时设置中,添加新的环境变量。类型 NGC_API_KEY 作为名称。选择凭据源,选择您添加了 NGC 凭据的密钥作为凭据名称,然后键入 NGC_API_KEY 作为密钥

  9. 单击 创建环境。您将返回到环境概览页面,您的环境将列在该表中。

5.1.3. 可选:创建 PVC 数据存储#

您可以创建 PVC 数据存储用于模型缓存。有关更多信息,请参阅 PVC

5.1.4. 创建工作负载#

  1. 转到工作负载概览页面,然后单击左上角的 + 新建工作负载 按钮。将出现一个下拉菜单。从下拉菜单中,选择推理。您将进入新建推理创建页面。

  2. 选择要运行 NIM 的所需集群。

  3. 选择要在其中运行作业的所需项目。

  4. 添加推理名称 - 示例:nim-llama3

  5. 单击页面右下角的 继续

  6. 选择您创建的环境。确保 NGC 凭据已正确填充为环境变量。

  7. 选择一个带有一个 GPU 的计算资源。

  8. 可选:增加自动伸缩的最大副本数。如果您这样做,将出现其他自动伸缩选项。

  9. 可选:在数据源部分,选择您的 PVC。

  10. 转到页面底部,然后单击 创建

  11. 可选:监控 NIM Pod 日志

    $ kubectl get pod
    NAME                                                 READY   STATUS    RESTARTS   AGE
    nim-llama3-00001-deployment-5ffcfd48c8-kbmbg         2/2     Running   0          6m2s
    
    $ kubectl logs nim-llama3-00001-deployment-5ffcfd48c8-kbmbg -f
    
  12. 获取 NIM 公开的外部 URL。该 URL 是第二列中的值,在本例中为 https://nim-llama3-runai-nemo-ms.inference.<cluster>.ai

    kubectl get ksvc
    NAME               URL                                                       LATESTCREATED            LATESTREADY              READY   REASON
    nim-llama3         https://nim-llama3-runai-nemo-ms.inference.<cluster>.ai   nim-llama3-yasen-00001   nim-llama3-yasen-00001   True
    
  13. 测试服务

    curl -X POST https://nim-llama3-runai-nemo-ms.inference.<cluster>.ai/v1/chat/completions  -H 'accept: application/json'  -H 'Content-Type: application/json'  -d '{  "messages": [    {      "content": "You are a polite and respectful chatbot helping people plan a vacation.",      "role": "system"    },    {      "content": "What should I do for a 4 day vacation in Spain?",      "role": "user"    }  ],  "model": "meta/llama-3.1-8b-instruct",  "max_tokens": 16,  "top_p": 1,  "n": 1,  "stream": false,  "stop": "\n",  "frequency_penalty": 0.0}' |jq
    

    预期结果是

    {
      "id": "chat-69e0148a09344875a1cfff1919f3aa46",
      "object": "chat.completion",
      "created": 1731544970,
      "model": "meta/llama-3.1-8b-instruct",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "Spain is a wonderful destination! With 4 days, you'll have a great"
          },
          "logprobs": null,
          "finish_reason": "length",
          "stop_reason": null
        }
      ],
      "usage": {
        "prompt_tokens": 43,
        "total_tokens": 59,
        "completion_tokens": 16
      }
    }