入门指南#
以下步骤将帮助您设置和运行 Audio2Face-3D NIM,并使用我们的示例应用程序接收 blendshape、音频和情感。
前提条件#
查看支持矩阵,确保您拥有受支持的硬件和软件堆栈。
阅读与您的操作系统对应的说明。
Windows 系统 - 使用适用于 Linux 的 Windows 子系统 (WSL)
这些说明是为 WSL 2.0 内的 Ubuntu 22.04 编写的。除非另有说明,否则请在 WSL 终端内运行所有步骤。
在没有 Docker Desktop 的情况下设置 Docker
使用便捷脚本安装 docker
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh将您的用户帐户添加到 docker 组
$ sudo groupadd docker $ sudo usermod -aG docker <username>注销并重新登录您的系统,然后进行健全性检查
$ docker run hello-world您应该看到打印出的“Hello from Docker!”。
安装 Docker Compose 插件
$ sudo apt-get update $ sudo apt-get install docker-compose-plugin运行以下命令检查安装是否成功
$ docker compose version设置 iptables 兼容性
$ sudo update-alternatives --config iptables当出现提示时,选择选项1,路径为/usr/sbin/iptables-legacy。
通过关闭终端窗口或在 Powershell 中键入来关闭 WSL 实例
$ wsl --shutdown Ubuntu-22.04启动 WSL 实例并检查 Docker 状态
$ service docker status您应该在消息中看到“active (running)”。要退出,按 q。
安装 CUDA 工具包
一旦 Windows 系统上安装了 Nvidia 驱动程序,CUDA 就会在 WSL 2 中可用。因此,用户不得在 WSL 2 中安装任何 Nvidia Linux 驱动程序。
对于
cuda-toolkit-12-6
,运行以下说明$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin $ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget https://developer.download.nvidia.com/compute/cuda/12.6.2/local_installers/cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb $ sudo dpkg -i cuda-repo-wsl-ubuntu-12-6-local_12.6.2-1_amd64.deb $ sudo cp /var/cuda-repo-wsl-ubuntu-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/ $ sudo apt-get update $ sudo apt-get -y install cuda-toolkit-12-6或者,要安装最新的 CUDA 工具包,请访问NVIDIA Developer - CUDA downloads WSL并按照说明进行操作。
安装 NVIDIA Container Toolkit
如果以下任何步骤失败,请改为遵循官方NVIDIA Container Toolkit 文档。
配置生产存储库
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list(可选)配置存储库以使用实验性软件包
$ sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list从存储库更新软件包列表
$ sudo apt-get update$ sudo apt-get install -y nvidia-container-toolkit
使用 NVIDIA Container Toolkit 配置 docker
运行以下说明
$ sudo nvidia-ctk runtime configure --runtime=docker $ sudo systemctl restart docker如果一切顺利,那么您应该能够启动 Docker 容器并在其中运行
nvidia-smi
,以查看容器内有关您的 GPU 的信息。我们在下面提供了一个示例,但请记住,数字会因您的硬件而异。$ sudo docker run --rm --gpus all ubuntu nvidia-smi +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 | |-----------------------------------------+----------------------+----------------------+ | 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 GeForce RTX 4090 Off | 00000000:01:00.0 Off | Off | | 0% 41C P8 7W / 450W | 287MiB / 24564MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| +---------------------------------------------------------------------------------------+
Linux 系统 - 使用 Ubuntu 22.04
在没有 Docker Desktop 的情况下设置 Docker
使用便捷脚本安装 docker
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh ./get-docker.sh将您的用户帐户添加到 docker 组
$ sudo groupadd docker $ sudo usermod -aG docker <username>注销并重新登录您的系统,然后进行健全性检查
$ docker run hello-world您应该看到打印出的“Hello from Docker!”。
安装 Docker Compose 插件
$ sudo apt-get update $ sudo apt-get install docker-compose-plugin运行以下命令检查安装是否成功
$ docker compose version设置 iptables 兼容性
$ sudo update-alternatives --config iptables当出现提示时,选择选项1,路径为/usr/sbin/iptables-legacy。
重启您的系统并检查 Docker 状态
$ service docker status您应该在消息中看到“active (running)”。要退出,按 q。
安装 CUDA 工具包
对于
cuda-toolkit-12-6
,运行以下说明$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb $ sudo dpkg -i cuda-keyring_1.1-1_all.deb $ sudo apt-get update $ sudo apt-get -y install cuda-toolkit-12-6或者,要安装最新的 CUDA 工具包,请访问NVIDIA Developer - CUDA downloads Ubuntu 22.04,并按照说明进行操作。
安装 NVIDIA Container Toolkit
如果以下任何步骤失败,请改为遵循官方NVIDIA Container Toolkit 文档。
配置生产存储库
$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list(可选)配置存储库以使用实验性软件包
$ sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list从存储库更新软件包列表
$ sudo apt-get update$ sudo apt-get install -y nvidia-container-toolkit
使用 NVIDIA Container Toolkit 配置 docker
运行以下说明
$ sudo nvidia-ctk runtime configure --runtime=docker $ sudo systemctl restart docker如果一切顺利,那么您应该能够启动 Docker 容器并在其中运行
nvidia-smi
,以查看容器内有关您的 GPU 的信息。我们在下面提供了一个示例,但请记住,数字会因您的硬件而异。$ sudo docker run --rm --gpus all ubuntu nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.183.06 Driver Version: 535.183.06 CUDA Version: 12.6 | |-------------------------------+----------------------+----------------------+ | 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 A10G On | 00000000:01:00.0 Off | 0 | | 0% 33C P8 18W / 300W | 0MiB / 23028MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| +-----------------------------------------------------------------------------+
NVAIE 访问权限#
要下载 Audio2Face-3D NIM 微服务,您需要有效订阅 NVIDIA AI Enterprise 产品。
请通过此表格联系销售代表,并请求访问 NVIDIA AI Enterprise Essentials
。
NGC 个人密钥#
如果您尚未设置 NGC 个人密钥,请进行设置。
当提示您填写生成个人密钥
表单时,选择您的密钥名称和到期时间,然后为包含的服务
选择所有服务。
然后您将获得您的个人密钥,请务必将其保存在安全的地方。
导出 API 密钥#
导出在上一步中生成的 API 密钥,将其放入 NGC_API_KEY
环境变量中,以便运行 A2F-3D NIM,方法是运行
$ export NGC_API_KEY=<value>
为了在启动时使密钥可用,如果您使用的是 bash,请运行以下命令。确保将 <value>
替换为实际的 API 密钥。
$ echo "export NGC_API_KEY=<value>" >> ~/.bashrc
Docker 登录到 NGC#
要拉取 NIM 容器镜像,您需要登录到 nvcr.io docker 注册表。用户名是 $oauthtoken
,密码是之前生成的并存储在 NGC_API_KEY
中的 API 密钥。您可以简单地运行以下命令登录
$ echo "$NGC_API_KEY" | docker login nvcr.io --username '$oauthtoken' --password-stdin
Login Succeeded
启动 Audio2Face-3D NIM#
有两种快速启动 Audio2Face-3D NIM 的方法:使用为受支持的 GPU 预生成的 TRT 引擎,或者为您的 NVIDIA GPU 生成 TRT 引擎。受支持的 GPU 可以在下表中找到
支持的模型#
GPU |
NIM_MANIFEST_PROFILE |
---|---|
A10G |
009c006e7958606db6ce0923059aac8d2002c4e33d0807652486ca3821dcbfff |
A100 |
044e16bb7cbfdca9d5d39a191261adc117edbbebb63f7372f9cfdbf83485b230 |
H100 |
2ec560cc5ce6c80ae7c7b5b44a2c348c7b4bd024355cdb111cdf08855331750c |
RTX6000 |
8dd2ad5b0bd70c8cbed7c36d68c8a435b3f95f9014c832299053b3bcd37eb9d8 |
RTX4090 |
d6ecb540a388274c7e6191995371cabcede89ad87725c74c9837df64a73fffd7 |
L40S |
5e21ca4dcb2ba7792e170a331fa25dccc4b5bae0b8ed91e9253f7a68b47d7802 |
对于受支持的 GPU,使用预生成的 TRT 引擎启动
运行此命令并将
<manifest_profile_id>
更改为上表中与您的 GPU 对应的值$ export NIM_MANIFEST_PROFILE=<manifest_profile_id> $ docker run -it --rm --name audio2face-3d \ --gpus all \ --network=host \ -e NGC_API_KEY=$NGC_API_KEY \ -e NIM_MANIFEST_PROFILE=$NIM_MANIFEST_PROFILE \ nvcr.io/nim/nvidia/audio2face-3d:1.2
对于其他 NVIDIA GPU,启动并生成 TRT 引擎
$ docker run -it --rm --name audio2face-3d \ --gpus all \ --network=host \ -e NGC_API_KEY=$NGC_API_KEY \ -e NIM_DISABLE_MODEL_DOWNLOAD=true \ nvcr.io/nim/nvidia/audio2face-3d:1.2
注意
当您启动服务时,您可能会遇到标记为 GStreamer-WARNING 的警告。出现这些警告是因为容器中缺少某些库。但是,这些警告可以安全地忽略,因为 Audio2Face-3D 不使用这些库。
展开此部分以获取有关上面使用的 docker 命令的更多详细信息
Docker 标志说明
您可以在此表中找到上述 docker 命令中每个标志的说明
标志 |
描述 |
---|---|
|
|
|
在容器停止后删除容器(请参阅Docker 文档) |
|
为 NIM 容器命名。使用任何首选值。 |
|
在容器内公开所有 NVIDIA GPU。有关挂载特定 GPU 的信息,请参阅配置页面。 |
|
将容器连接到主机网络。(请参阅Docker 文档) |
|
在容器中添加 |
|
在容器中添加 |
|
在容器中设置 |
运行推理#
Audio2Face-3D 使用 gRPC API。您可以使用 A2F-3D Python 交互应用程序快速试用 API。按照以下说明进行设置
$ git clone https://github.com/NVIDIA/Audio2Face-3D-Samples.git
$ cd Audio2Face-3D-Samples/scripts/audio2face_3d_microservices_interaction_app
$ python3 -m venv .venv
$ source .venv/bin/activate
$ pip3 install ../../proto/sample_wheel/nvidia_ace-1.2.0-py3-none-any.whl
$ pip3 install -r requirements.txt
检查服务是否已准备好处理推理请求
$ python3 a2f_3d.py health_check --url 0.0.0.0:52000
在示例音频之一上运行推理
$ python3 a2f_3d.py run_inference ../../example_audio/Claire_neutral.wav config/config_claire.yml -u 0.0.0.0:52000
此命令将打印出结果的保存位置,日志类似于
Input audio header info:
Sample rate: 16000 Hz
Bit depth: 16 bits
Channels: 1
Receiving data from server...
.............................
Received status message with value: 'sent all data'
Status code: '0'
Saving data into output_000001 folder...
然后,您可以通过运行以下命令并替换 <output_folder>
为运行推理命令打印的文件夹名称来浏览 A2F-3D NIM 输出动画。
$ ls -l <output_folder>/
-rw-rw-r-- 1 user user 328 Nov 14 15:46 a2f_3d_input_emotions.csv
-rw-rw-r-- 1 user user 65185 Nov 14 15:46 a2f_3d_smoothed_emotion_output.csv
-rw-rw-r-- 1 user user 291257 Nov 14 15:46 animation_frames.csv
-rw-rw-r-- 1 user user 406444 Nov 14 15:46 out.wav
out.wav:包含接收到的音频
animation_frames.csv:包含 blendshape
a2f_3d_input_emotions.csv:包含在 gRPC 协议中作为输入提供的情感
a2f_3d_smoothed_emotion_output.csv:包含随时间推移平滑的情感
模型缓存#
首次运行时,Audio2Face-3D NIM 将从 NGC 下载模型。您可以使用 Docker 卷挂载在本地缓存此模型。按照以下示例操作,并将 LOCAL_NIM_CACHE
环境变量设置为所需的本地路径。确保本地路径具有执行、读取和写入权限(777
权限)。
$ mkdir -p ~/.cache/audio2face-3d
$ chmod 777 ~/.cache/audio2face-3d
$ export LOCAL_NIM_CACHE=~/.cache/audio2face-3d
然后只需运行 Audio2Face-3D NIM,并将文件夹挂载到 Docker 容器中的 /tmp/a2x
中
$ docker run -it --rm --name audio2face-3d \
--gpus all \
--network=host \
-e NGC_API_KEY=$NGC_API_KEY \
-e NIM_MANIFEST_PROFILE=$NIM_MANIFEST_PROFILE \
-v "$LOCAL_NIM_CACHE:/tmp/a2x" \
nvcr.io/nim/nvidia/audio2face-3d:1.2
对于后续使用缓存运行 Audio2Face-3D NIM 的情况,请将 NIM_DISABLE_MODEL_DOWNLOAD
设置为 true
$ docker run -it --rm --name audio2face-3d \
--gpus all \
--network=host \
-e NGC_API_KEY=$NGC_API_KEY \
-e NIM_MANIFEST_PROFILE=$NIM_MANIFEST_PROFILE \
-e NIM_DISABLE_MODEL_DOWNLOAD=true \
-v "$LOCAL_NIM_CACHE:/tmp/a2x" \
nvcr.io/nim/nvidia/audio2face-3d:1.2
停止容器#
您可以通过将其名称传递给 docker stop
和 docker rm
命令来轻松停止和删除正在运行的容器
$ docker stop audio2face-3d
$ docker rm audio2face-3d