性能#
Audio2Face-3D NIM 在最佳硬件配置上运行时,可提供 30 FPS 的实时性能,用于将音频转换为面部动画。该微服务支持并发输入流,这可能会影响性能。
有关最佳硬件配置的更多信息,请查看支持矩阵页面。
性能评估#
您可以使用提供的示例应用程序来获取有关当前 Audio2Face-3D 部署的性能信息。
# Clone the repository
git clone https://github.com/NVIDIA/Audio2Face-3D-Samples.git
# Navigate to the scripts directory
cd Audio2Face-3D-Samples/scripts/audio2face_3d_microservices_interaction_app
请按照 README.md 中的设置说明进行操作。用于性能评估的 Python3 脚本是 nim_performance_test.py。
该脚本可以如下使用
$ python3 nim_performance_test.py --help
usage: nim_performance_test.py [-h] --request-nb REQUEST_NB --max-stream-nb MAX_STREAM_NB --url URL
Call Audio2Face-3D NIM with different audiofiles. Outputs NIM performance in a csv file in output/ folder. Uses a2f_3d.py to create multiple clients to connect to A2F-3D NIM.
options:
-h, --help show this help message and exit
--request-nb REQUEST_NB
Number of requests to simulate for each audio file
--max-stream-nb MAX_STREAM_NB
Maximum number of A2F-3D streams
--url URL IP of the Audio2Face-3D NIM
例如,
$ python3 nim_performance_test.py --request-nb 100 --max-stream-nb 10 --url 127.0.0.1:52000
该脚本需要两个参数:要模拟的请求数和连接到 Audio2Face-3D 的并发流数。连接流的数量必须与用于启动 A2F-3D NIM 的
common.stream_number
选项匹配。此外,它接受 A2F-3D NIM 的
-u
参数。对于快速入门部署,请使用127.0.0.1:52000
。该脚本使用 6 个提供的音频文件,时长分别为 5 秒、10 秒、20 秒,采样率分别为 16khz 和 44.1khz。
修改部署配置以进行基准测试#
性能结果主要受两个关键因素影响:模型和部署 Audio2Face-3D NIM 时设置的最大流数。在针对您的部署衡量性能时,您可以通过两种方式修改模型和最大流数。
修改配置文件:
- 您可以通过修改以下内容来更新用于部署的配置文件
更新 deployment_config.yaml 文件中的
common.stream_number
值。更新 stylization_config.yaml 文件中的
a2f.inference_model_id
和a2f.blendshape_id
值。
有关此方法的更详细文档,请参阅A2F-3D NIM 手动容器部署和配置。
使用环境变量:
或者,您可以通过在部署 Audio2Face-3D NIM 时提供
PERF_MAX_STREAM
和PERF_A2F_MODEL
环境变量来修改模型和最大流数。例如docker run -it --rm --gpus all --network=host \ -e NGC_API_KEY=$NGC_API_KEY \ -e NIM_MANIFEST_PROFILE=$NIM_MANIFEST_PROFILE \ -e PERF_MAX_STREAM=26 \ -e PERF_A2F_MODEL='mark_v2.3' \ nvcr.io/nim/nvidia/audio2face-3d:1.2
PERF_A2F_MODEL
环境变量可以采用mark_v2.3
、claire_v2.3
或james_v2.3
值。
结果#
这将生成一个文件夹,其中包含 4 个文件。您可以通过运行以下命令来浏览结果,并将 <output_folder>
替换为 nim_performance_test.py
脚本打印的文件夹名称。
$ ls -l <output_folder>/
-rw-rw-r-- 1 user user 36 Nov 14 15:52 fps_stream_10_request_100.txt
-rw-rw-r-- 1 user user 203 Nov 14 15:52 latency_stream_10_request_100.txt
-rw-rw-r-- 1 user user 2908 Nov 14 15:52 stream_10_request_100.csv
-rw-rw-r-- 1 user user 140946 Nov 14 15:52 stream_10_request_100.png
fps_stream_10_request_100.txt:列出所有测量值的第 1 个百分位 FPS。低于 30 FPS 的值表示当前部署的潜在性能瓶颈。
示例输出
percentile1 FPS: 78.05 above 30: True
latency_stream_10_request_100.txt:总结所有测量值的延迟结果。高于 100 毫秒的平均延迟可能会影响实时应用程序的响应速度。
示例输出
Worst case scenario: 67.56 ms 99% of requests below: 67.56 ms Average scenario: 42.00 ms Average below 100 ms: True
stream_10_request_100.csv:包含有关每个音频配置的延迟和 FPS 的详细统计信息
流配置(最大流数、请求数、音频长度、采样率)
首包延迟统计信息(最小值、最大值、平均值、百分位数)
FPS 性能指标(最小值、最大值、平均值、百分位数)
成功请求数
stream_10_request_100.png:提供性能指标的可视化表示
上部面板:不同音频配置的延迟指标
下部面板:不同测试场景的 FPS 指标
颜色编码的条形图,便于指标比较
包括精确值读数的注释
性能基准#
下表列出了每个 GPU 支持的最新测量的最大流数。
GPU |
最大流数 |
---|---|
A10G |
33 |
RTX6000 |
51 |
RTX4090 |
53 |
L40S |
60 |
A100 |
95 |
H100 |
115 |
以下服务器配置用于对上述流数进行基准测试
GPU |
GPU SKU |
CPU |
内存 |
网卡带宽 |
---|---|---|---|---|
A10G |
PG133 SKU 210 |
1x AMD 9124 16 核 3.0GHz (3.75GHz Boost) |
4x 64GB (4800 MHz) 256GB |
25 Gbps |
RTX6000 |
PG133 SKU 510 |
1x AMD RYZEN 3700X 8 核 3.6GHz |
4x 32GB (3200MHz) 128GB |
25 Gbps |
RTX4090 |
PG136 SKU 530 |
1x AMD RYZEN 3700X 8 核 3.6GHz |
4x 32GB (3200MHz) 128GB |
25 Gbps |
L40S |
不适用 |
2x Intel Sapphire Rapids 8480+ 56 核 2 GHz (3.8 GHz Boost) |
1024 DDR5 |
25 Gbps |
A100 (SXM4 80GB) |
不适用 |
2x AMD EPYC 7742 64 核处理器 2.25 GHz(基本频率),3.4 GHz(最大睿频)) |
2TB |
25 Gbps |
H100 (HBM3 80GB) |
不适用 |
2x Intel Xeon Platinum 8480+ 56 核 2 GHz (3.8 GHz Boost) |
2TB |
25 Gbps |
性能故障排除#
如果您看到性能下降到 30 FPS 以下,请尝试降低接受的并发连接数。您可以通过更改 common.stream_number
配置选项并重新启动服务来执行此操作。流数必须低于 A2F 和 A2E 高级配置的 TRT 引擎最大形状。
如果您与其他 GPU 密集型应用程序共享资源,请查看共享 Audio2Face-3D 计算资源。