性能#

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 时设置的最大流数。在针对您的部署衡量性能时,您可以通过两种方式修改模型和最大流数。

  1. 修改配置文件:

    您可以通过修改以下内容来更新用于部署的配置文件
    • 更新 deployment_config.yaml 文件中的 common.stream_number 值。

    • 更新 stylization_config.yaml 文件中的 a2f.inference_model_ida2f.blendshape_id 值。

    有关此方法的更详细文档,请参阅A2F-3D NIM 手动容器部署和配置

  2. 使用环境变量:

    或者,您可以通过在部署 Audio2Face-3D NIM 时提供 PERF_MAX_STREAMPERF_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.3claire_v2.3james_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 计算资源