入门指南#
前提条件#
设置#
NVIDIA AI Enterprise 许可:Riva NMT NIM 在 NVIDIA AI Enterprise (NVAIE) 许可下可用于自托管。
NVIDIA GPU:Riva NMT NIM 可在任何具有足够 GPU 内存的 NVIDIA GPU 上运行,但某些模型/GPU 组合经过优化。有关更多信息,请参阅支持的模型。
CPU:此版本仅支持 x86_64 架构
操作系统:任何 Linux 发行版,只要它们
在
ld -v
的输出中具有glibc
>= 2.35
CUDA 驱动程序:请遵循安装指南。 我们建议
安装 Docker。
安装工具包后,请按照 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,请执行以下步骤。
请确保您的计算机可以运行 WSL2,如 WSL2 文档的先决条件部分所述。
通过按照安装 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
支持的模型#
运行推理#
注意
从 Docker 容器启动到容器准备就绪并开始接受请求,根据您的网络速度,可能需要长达 30 分钟。
打开一个新的终端并运行以下命令,以检查服务是否已准备好处理推理请求
curl -X 'GET' 'http://127.0.0.1:9000/v1/health/ready'
如果服务已准备就绪,您将收到类似于以下内容的响应。
{"status":"ready"}
安装 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
运行文本到文本翻译推理
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 端点发出转录请求时支持许多选项,如下所述。
支持的语言#
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)
容器的运行时参数#
标志 |
描述 |
---|---|
|
|
|
在容器停止后删除容器(参见 Docker 文档)。 |
|
为 NIM 容器命名。 使用任何首选值。 |
|
确保 NVIDIA 驱动程序在容器中可访问。 |
|
在容器内公开 NVIDIA GPU 0。 如果您在具有多个 GPU 的主机上运行,则需要指定要使用的 GPU。 有关挂载特定 GPU 的更多信息,请参阅 GPU 枚举。 |
|
为多 GPU 通信分配主机内存。 |
|
为容器提供从 NGC 下载足够模型和资源所需的令牌。 请参阅 NGC 身份验证。 |
|
指定用于 HTTP 端点的端口。 端口可以具有除 8000 之外的任何值。 默认为 9000。 |
|
指定用于 GRPC 端点的端口。 默认为 50051。 |
|
转发 NIM HTTP 服务器在容器内发布的端口,以便从主机系统访问。 |
|
转发 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