入门指南#
先决条件#
查看支持矩阵以确保您拥有受支持的硬件和软件堆栈。
NGC 身份验证#
生成 API 密钥#
访问 NGC 资源需要 NGC API 密钥,密钥可以在这里生成:https://org.ngc.nvidia.com/setup/personal-keys。
创建 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 容器注册表进行身份验证
echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin
使用 $oauthtoken
作为用户名,NGC_API_KEY
作为密码。$oauthtoken
用户名是一个特殊名称,表示您将使用 API 密钥而不是用户名和密码进行身份验证。
启动 NIM 容器#
以下命令使用 gRPC 服务启动 Maxine 眼神交流 NIM 容器。查找有关容器运行时参数的参考此处
docker run -it --rm --name=maxine-eye-contact-nim \
--net host \
--runtime=nvidia \
--gpus all \
--shm-size=8GB \
-e NGC_API_KEY=$NGC_API_KEY \
-e MAXINE_MAX_CONCURRENCY_PER_GPU=1 \
-e NIM_MANIFEST_PROFILE=7f0287aa-35d0-11ef-9bba-57fc54315ba3 \
-e NIM_HTTP_API_PORT=9000 \
-e NIM_GRPC_API_PORT=50051 \
-p 9000:9000 \
-p 50051:50051 \
nvcr.io/nim/nvidia/maxine-eye-contact:latest
注意
标志 --gpus all
用于将所有可用的 GPU 分配给 docker 容器。要将特定 GPU 分配给 docker 容器(如果您的机器中有多个 GPU 可用),请使用 --gpus '"device=0,1,2..."'
如果命令成功运行,您将获得类似于以下的响应。
+------------------------+---------+--------+
| Model | Version | Status |
+------------------------+---------+--------+
| GazeRedirectionKey68 | 1 | READY |
| maxine_nvcf_eyecontact | 1 | READY |
+------------------------+---------+--------+
I0903 10:35:41.663046 47 metrics.cc:808] Collecting metrics for GPU 0: GPU Name
I0903 10:35:41.663361 47 metrics.cc:701] Collecting CPU metrics
I0903 10:35:41.663588 47 tritonserver.cc:2385]
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Option | Value |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| server_id | triton |
| server_version | 2.35.0 |
| server_extensions | classification sequence model_repository model_repository(unload_dependents) schedule_policy model_configuration system_shared_memory cuda_shared_memory binary_tensor |
| | _data parameters statistics trace logging |
| model_repository_path[0] | /opt/maxine/models |
| model_control_mode | MODE_NONE |
| strict_model_config | 0 |
| rate_limit | OFF |
| pinned_memory_pool_byte_size | 268435456 |
| cuda_memory_pool_byte_size{0} | 67108864 |
| min_supported_compute_capability | 6.0 |
| strict_readiness | 1 |
| exit_timeout | 30 |
| cache_enabled | 0 |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
I0903 10:35:41.664874 47 grpc_server.cc:2445] Started GRPCInferenceService at 0.0.0.0:8001
I0903 10:35:41.665204 47 http_server.cc:3555] Started HTTPService at 0.0.0.0:8000
I0903 10:35:41.706437 47 http_server.cc:185] Started Metrics Service at 0.0.0.0:8002
Maxine GRPC Service: Listening to 0.0.0.0:8004
注意
默认情况下,Maxine 眼神交流 gRPC 服务托管在端口 8004
上。您将必须使用此端口进行推理请求。
环境变量#
下表描述了可以作为添加到 docker run
命令的 -e
参数传递到 NIM 中的环境变量
ENV |
必需? |
默认值 |
注释 |
---|---|---|---|
|
是 |
无 |
您必须将此变量设置为您的个人 NGC API 密钥的值。 |
|
是 |
|
容器缓存模型工件的位置(在容器内)。 |
|
是 |
|
将 NIM 服务发布到容器内指定的端口。请确保调整传递给 docker run 的 |
|
是 |
|
请确保调整传递给 docker run 的 |
容器的运行时参数#
标志 |
描述 |
---|---|
|
|
|
在容器停止后删除容器(参见 Docker 文档) |
|
为 NIM 容器命名。使用任何首选值。 |
|
确保 NVIDIA 驱动程序在容器中可访问。 |
|
在容器内公开 NVIDIA GPU。如果您在具有多个 GPU 的主机上运行,则需要指定要使用的 GPU,您也可以指定多个 GPU。有关挂载特定 GPU 的更多信息,请参阅 GPU 枚举。 |
|
为多进程通信分配主机内存。 |
|
为容器提供从 NGC 下载足够模型和资源所需的令牌。请参阅上面。 |
|
每个 GPU 的 NIM 服务器要支持的并发推理请求数 |
|
转发 NIM HTTP 服务器在容器内发布的端口,以便从主机系统访问。 |
|
转发 NIM gRPC 服务器在容器内发布的端口,以便从主机系统访问。 |
停止容器#
以下命令可用于停止容器。
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME