入门指南#

前提条件#

设置#

  • NVIDIA AI Enterprise 许可:Riva NMT NIM 在 NVIDIA AI Enterprise (NVAIE) 许可下可用于自托管。

  • NVIDIA GPU:Riva NMT NIM 可在任何具有足够 GPU 内存的 NVIDIA GPU 上运行,但某些模型/GPU 组合经过优化。有关更多信息,请参阅支持的模型

  • CPU:此版本仅支持 x86_64 架构

  • 操作系统:任何 Linux 发行版,只要它们

  • CUDA 驱动程序:请遵循安装指南。 我们建议

    • 使用网络存储库作为软件包管理器安装的一部分,跳过 CUDA 工具包安装,因为库在 NIM 容器中可用

    • 安装开放内核以获得特定版本

      主要版本

      EOL

      数据中心和 RTX/Quadro GPU

      GeForce GPU

      > 550

      待定

      X

      X

      550

      2025年2月

      X

      X

      545

      2023年10月

      X

      X

      535

      2026年6月

      X

      525

      2023年11月

      X

      470

      2024年9月

      X

  1. 安装 Docker

  2. 安装 NVIDIA Container Toolkit

安装工具包后,请按照 NVIDIA Container Toolkit 文档中配置 Docker部分中的说明进行操作。

为了确保您的设置正确,请运行以下命令

docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

此命令应产生类似于以下内容的输出,您可以在其中确认 CUDA 驱动程序版本和可用的 GPU。

   +-----------------------------------------------------------------------------------------+
   | NVIDIA-SMI 550.54.14              Driver Version: 550.54.14      CUDA Version: 12.4     |
   |-----------------------------------------+------------------------+----------------------+
   | GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
   |                                         |                        |               MIG M. |
   |=========================================+========================+======================|
   |   0  NVIDIA H100 80GB HBM3          On  |   00000000:1B:00.0 Off |                    0 |
   | N/A   36C    P0            112W /  700W |   78489MiB /  81559MiB |      0%      Default |
   |                                         |                        |             Disabled |
   +-----------------------------------------+------------------------+----------------------+

   +-----------------------------------------------------------------------------------------+
   | Processes:                                                                              |
   |  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
   |        ID   ID                                                               Usage      |
   |=========================================================================================|
   |  No running processes found                                                             |
   +-----------------------------------------------------------------------------------------+

为 Windows 安装 WSL2#

某些可下载的 NIM 可以在带有 Windows System for Linux (WSL) 的 RTX Windows 系统上使用。要启用 WSL2,请执行以下步骤。

  1. 请确保您的计算机可以运行 WSL2,如 WSL2 文档的先决条件部分所述。

  2. 通过按照安装 WSL 命令中的步骤,在您的 Windows 计算机上启用 WSL2。 默认情况下,这些步骤安装 Ubuntu Linux 发行版。 有关其他安装,请参阅更改默认安装的 Linux 发行版

NGC 身份验证#

生成 API 密钥#

要访问 NGC 资源,您需要一个 NGC API 密钥。 您可以在此处生成密钥:生成个人密钥

创建 NGC API 个人密钥时,请确保从“包含的服务”下拉列表中至少选择“NGC Catalog”。 如果此密钥要重复用于其他目的,则可以包含更多服务。

注意

个人密钥允许您配置到期日期、使用操作按钮撤销或删除密钥,以及根据需要轮换密钥。 有关密钥类型的更多信息,请参阅NGC 用户指南

导出 API 密钥#

将 API 密钥的值作为 NGC_API_KEY 环境变量传递给下一节中的 docker run 命令,以便在启动 NIM 时下载适当的模型和资源。

如果您不熟悉如何创建 NGC_API_KEY 环境变量,最简单的方法是在您的终端中导出它

export NGC_API_KEY=<value>

运行以下命令之一,使密钥在启动时可用

# If using bash
echo "export NGC_API_KEY=<value>" >> ~/.bashrc

# If using zsh
echo "export NGC_API_KEY=<value>" >> ~/.zshrc

注意

其他更安全的选项包括将值保存在文件中,以便您可以使用 cat $NGC_API_KEY_FILE 检索它,或使用 密码管理器

Docker 登录到 NGC#

要从 NGC 拉取 NIM 容器镜像,首先使用以下命令向 NVIDIA Container Registry 进行身份验证

echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin

使用 $oauthtoken 作为用户名,NGC_API_KEY 作为密码。 $oauthtoken 用户名是一个特殊名称,表示您将使用 API 密钥而不是用户名和密码进行身份验证。

启动 NIM#

以下命令在任何受支持的 GPU 上启动 Docker 容器。

docker run -it --rm --name=riva-nmt \
  --runtime=nvidia \
  --gpus '"device=0"' \
  --shm-size=8GB \
  -e NGC_API_KEY=$NGC_API_KEY \
  -e NIM_TAGS_SELECTOR=name=megatron-riva-1b \
  -e NIM_HTTP_API_PORT=9000 \
  -e NIM_GRPC_API_PORT=50051 \
  -p 9000:9000 \
  -p 50051:50051 \
  nvcr.io/nim/nvidia/riva-nmt:1.3.0

支持的模型#

模型

语言

模型类型

计算能力 (CC)

GPU 内存

megatron-riva-1b

支持的语言

预构建

>=7.0

9 GB

运行推理#

注意

从 Docker 容器启动到容器准备就绪并开始接受请求,根据您的网络速度,可能需要长达 30 分钟。

  1. 打开一个新的终端并运行以下命令,以检查服务是否已准备好处理推理请求

curl -X 'GET' 'http://127.0.0.1:9000/v1/health/ready'

如果服务已准备就绪,您将收到类似于以下内容的响应。

{"status":"ready"}
  1. 安装 Riva Python 客户端

Riva 使用 gRPC API。 您可以从 Riva gRPC Proto 文件下载 proto 文件,并使用 Protoc 编译器将它们编译为目标语言。 您可以在以下位置找到 C++ 和 Python 语言的 Riva 客户端。

安装 Riva Python 客户端

sudo apt-get install python3-pip
pip install nvidia-riva-client

下载 Riva 示例客户端

git clone https://github.com/nvidia-riva/python-clients.git
  1. 运行文本到文本翻译推理

python3 python-clients/scripts/nmt/nmt.py --server 0.0.0.0:50051 --text "This will become German words" --source-language-code en --target-language-code de

上面的命令会将文本从英语翻译成德语,输出将如下所示。

## Das werden deutsche Wörter

示例客户端在向 gRPC 端点发出转录请求时支持许多选项,如下所述。

  • --text - 要翻译的文本。

  • --list-models - 列出可用模型和支持的语言。

  • --source-language-code - 源语言代码。 有关支持的语言代码,请参阅支持的语言部分。

  • --target-language-code - 目标语言代码。 有关支持的语言代码,请参阅支持的语言部分。

支持的语言#

Riva NMT NIM 支持从以下 36 种语言中任意两种语言对之间的翻译。

  • 简体中文 (zh-CN)

  • 繁体中文 (zh-TW)

  • 俄语 (ru)

  • 德语 (de)

  • 欧洲西班牙语 (es-ES)

  • 拉丁美洲西班牙语 (es-US)

  • 法语 (fr)

  • 丹麦语 (da)

  • 希腊语 (el)

  • 芬兰语 (fi)

  • 匈牙利语 (hu)

  • 意大利语 (it)

  • 立陶宛语 (lt)

  • 拉脱维亚语 (lv)

  • 荷兰语 (nl)

  • 挪威语 (no)

  • 波兰语 (pl)

  • 欧洲葡萄牙语 (pt-PT)

  • 巴西葡萄牙语 (pt-BR)

  • 罗马尼亚语 (ro)

  • 斯洛伐克语 (sk)

  • 瑞典语 (sv)

  • 日语 (ja)

  • 印地语 (hi)

  • 韩语 (ko)

  • 爱沙尼亚语 (et)

  • 斯洛文尼亚语 (sl)

  • 保加利亚语 (bg)

  • 乌克兰语 (uk)

  • 克罗地亚语 (hr)

  • 阿拉伯语 (ar)

  • 越南语 (vi)

  • 土耳其语 (tr)

  • 印度尼西亚语 (id)

  • 捷克语 (cs)

  • 泰语 (th)

容器的运行时参数#

标志

描述

-it

--interactive + --tty (参见 Docker 文档)

--rm

在容器停止后删除容器(参见 Docker 文档)。

--name=<容器名称>

为 NIM 容器命名。 使用任何首选值。

--runtime=nvidia

确保 NVIDIA 驱动程序在容器中可访问。

--gpus '"device=0"'

在容器内公开 NVIDIA GPU 0。 如果您在具有多个 GPU 的主机上运行,则需要指定要使用的 GPU。 有关挂载特定 GPU 的更多信息,请参阅 GPU 枚举

--shm-size=8GB

为多 GPU 通信分配主机内存。

-e NGC_API_KEY=$NGC_API_KEY

为容器提供从 NGC 下载足够模型和资源所需的令牌。 请参阅 NGC 身份验证

-e NIM_HTTP_API_PORT=<端口>

指定用于 HTTP 端点的端口。 端口可以具有除 8000 之外的任何值。 默认为 9000。

-e NIM_GRPC_API_PORT=<端口>

指定用于 GRPC 端点的端口。 默认为 50051。

-p 9000:9000

转发 NIM HTTP 服务器在容器内发布的端口,以便从主机系统访问。 : 的左侧是主机系统 ip:port(此处为 9000),而右侧是 NIM HTTP 服务器发布的容器端口。 容器端口可以是除 8000 之外的任何值。

-p 50051:50051

转发 NIM gRPC 服务器在容器内发布的端口,以便从主机系统访问。 : 的左侧是主机系统 ip:port(此处为 50051),而右侧是 NIM gRPC 服务器发布的容器端口。

模型缓存#

在初始启动时,容器将从 NGC 下载模型。 您可以通过在本地缓存模型,并在以后的运行中使用缓存目录来跳过此下载步骤,如下所示。

# Create the cache directory on the host machine:
export LOCAL_NIM_CACHE=~/.cache/nim
mkdir -p $LOCAL_NIM_CACHE
chmod 777 $LOCAL_NIM_CACHE

# Run the container with the cache directory mounted in the appropriate location:
docker run -it --rm --name=riva-nmt \
      --runtime=nvidia \
      --gpus '"device=0"' \
      --shm-size=8GB \
      -e NGC_API_KEY \
      -e NIM_HTTP_API_PORT=9000 \
      -e NIM_GRPC_API_PORT=50051 \
      -p 9000:9000 \
      -p 50051:50051 \
      -v $LOCAL_NIM_CACHE:/opt/nim/.cache \
      nvcr.io/nim/nvidia/riva-nmt:1.3.0

在后续运行中,模型将从缓存加载。

停止容器#

以下命令通过停止并删除正在运行的 Docker 容器来停止容器。

docker stop riva-nmt
docker rm riva-nmt