数据中心/云端

使用 NVIDIA NIM 部署生成式 AI 的简单指南

无论您是在本地还是云端工作,NVIDIA NIM 推理微服务都能为企业开发者提供易于部署的社区、合作伙伴和 NVIDIA 优化的人工智能模型。NVIDIA AI Enterprise NIM 提供了安全、精简的前进路径,可快速迭代并为世界级产品构建创新 生成式人工智能解决方案

使用单个优化容器,您可以在不到 5 分钟的时间内轻松地在云或数据中心的加速 NVIDIA GPU 系统上,或在工作站和 PC 上部署 NIM。或者,如果您想避免部署容器,可以从 NVIDIA API 目录 中获取。

  • 使用预构建容器,这些容器可在 NVIDIA 加速基础设施上随时随地使用单个命令进行部署。
  • 保持数据 (最宝贵的企业资源) 的安全性和控制力。
  • 通过支持使用 LoRA 等技术微调的模型,实现更高的准确性。
  • 利用一致的行业标准 API 集成加速 AI 推理端点。
  • 使用最热门的生成式 AI 应用框架,例如 LangChain、Lamaindex 和干草堆栈。

本文将介绍 NVIDIA NIM 的简单 Docker 部署。您将能够在热门的生成式 AI 应用框架中使用 NIM 微服务 API,例如 HaystackLangChain 以及 LlamaIndex。 有关部署 NIM 的完整指南,请参阅 NIM 文档

如何在 5 分钟内部署 NIM

在开始之前,请确保您拥有 先决条件。遵循 NIM 文档。请注意,下载和使用 NIM 需要 NVIDIA AI Enterprise 许可证。

完成所有设置后,运行以下脚本:

# Choose a container name for bookkeeping
export CONTAINER_NAME=meta-llama3-8b-instruct

# Choose a LLM NIM Image from NGC
export IMG_NAME="nvcr.io/nim/meta/llama3-8b-instruct:24.05"

# Choose a path on your system to cache the downloaded models
export LOCAL_NIM_CACHE="~/.cache/nim"
mkdir -p "$LOCAL_NIM_CACHE"

# Start the LLM NIM
docker run -it --rm --name=$CONTAINER_NAME \
  --runtime=nvidia \
  --gpus all \
  -e NGC_API_KEY \
  -v "$LOCAL_NIM_CACHE:/opt/nim/.cache" \
  -u $(id -u) \
  -p 8000:8000 \
  $IMG_NAME

接下来,测试推理请求:

curl -X 'POST' \
    'http://0.0.0.0:8000/v1/completions' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
      "model": "meta-llama3-8b-instruct",
      "prompt": "Once upon a time",
      "max_tokens": 64
    }'

现在,您可以通过可控且优化的生产部署,安全地构建生成式 AI 应用。

NVIDIA 托管的 NIM 部署示例也可在 NVIDIA API 目录 中找到。

如何将 NIM 与您的应用集成 

虽然先前的设置应先完成,但如果您渴望在不自行部署的情况下测试 NIM,则可以使用 NVIDIA 托管的 API 端点 NVIDIA API 目录。请按照以下步骤操作。

集成 NIM 端点 

您可以从遵循 OpenAI 规范的 completions curl 请求开始。请注意,要实时流式传输输出,您应该将stream设置为True

要在 Python 代码中使用 NIM 和 OpenAI 库,请执行以下操作:

  • 如果您使用的是 NIM,则无需提供 API 密钥。

请务必将 base_url 更新到 NIM 运行的任何位置。

from openai import OpenAI

client = OpenAI(
  base_url = "http://nim-address:8000/v1,
)

completion = client.chat.completions.create(
  model="meta/llama3-70b-instruct",
  messages=[{"role":"user","content":""}],
  temperature=0.5,
  top_p=1,
  max_tokens=1024,
  stream=True
)

for chunk in completion:
  if chunk.choices[0].delta.content is not None:
    print(chunk.choices[0].delta.content, end="")

NIM 还集成到应用程序框架中,例如 Haystack, LangChain 以及 LlamaIndex,为已经使用这些热门工具构建令人惊叹的生成式 AI 应用的开发者提供安全、可靠、加速的模型推理。

查看以下每个框架中的 notebook,了解如何使用 NIM:

从 NIM 中获取更多内容 

借助使用 NVIDIA NIM 的快速、可靠和简单的模型部署,您可以专注于构建高性能和创新的生成式 AI 工作流程和应用。要进一步了解 NIM,请了解如何使用微服务 使用 LoRA 适配器自定义的大型语言模型

NIM 将定期发布和改进。请访问 API 目录,以获取用于视觉、检索、3D、数字生物学等领域的最新 NVIDIA NIM 微服务信息。

 

Tags