性能#

评估过程#

本节介绍 Riva 文本到语音 (TTS) 服务在不同 GPU 上的延迟和吞吐量数据。TTS 服务的性能是在不同数量的并行流下测量的。每个并行流对来自 LJSpeech 数据集的 10 个输入字符串执行 20 次迭代。每个流向 Riva 服务器发送请求,并等待接收到所有音频块后才发送另一个请求。测量了到第一个音频块的延迟、连续音频块之间的延迟以及吞吐量。下图显示了延迟的测量方式。

Schematic Diagram of Latencies Measured by Riva Streaming TTS Client

测试了 FastPitch 和 HiFi-GAN 模型。

Riva 镜像中提供的 Riva TTS 性能客户端 riva_tts_perf_client 用于测量性能。客户端的源代码可以从 https://github.com/nvidia-riva/cpp-clients 获取。

以下命令用于生成下表

riva_tts_perf_client \
    --num_parallel_requests=<num_streams> \
    --voice_name=English-US.Female-1 \
    --num_iterations=<20*num_streams> \
    --online=true \
    --text_file=$test_file \
    --write_output_audio=false

其中 test_file 是指向 ljs_audio_text_test_filelist_small.txt 文件的路径。

结果#

以下表格报告了到第一个音频块的延迟、音频块之间的延迟和吞吐量。吞吐量以 RTFX(生成的音频时长 / 计算时间)为单位进行测量。

注意

--num_iterations 对于 Xavier AGX、Xavier NX 和 Orin AGX 等于 100,对于所有其他测量等于 20。

注意

表格中的值是 3 次试验的平均值。表格中的值根据 3 次试验计算的标准偏差四舍五入到最后一位有效数字。如果标准偏差小于平均值的 0.001,则将对应的值四舍五入,就好像标准偏差等于该值的 0.001。

有关收集这些测量的硬件规格,请参阅硬件规格部分。请注意,

  • AWS 和 GCP 上的结果是使用 Riva 2.4.0 计算的

  • 本地结果是使用 Riva 2.15.0 计算的。

AWS 和 GCP 的云实例描述。

流数

首个音频延迟 (毫秒)

音频块之间延迟 (毫秒)

吞吐量 (RTFX)

平均值

p90

p95

p99

平均值

p90

p95

p99

1

22

24.2

25

25.3

2.84

3.1

3.15

4.02

150.8

4

40

50

60

70

5

8

9

12

340

8

63

84

90

100

8

12

14

18

420

16

120

143

154

200

14.3

17.8

19.4

23

460

32

323

340

355

390

14.5

17.9

19.9

23.9

440

本地硬件规格#

GPU

NVIDIA DGX A100 40 GB

CPU

型号

AMD EPYC 7742 64 核处理器

每核线程数

2

插槽数

2

每插槽核心数

64

NUMA 节点数

8

频率加速

已启用

CPU 最大 MHz

2250

CPU 最小 MHz

1500

内存

型号

Micron DDR4 36ASF8G72PZ-3G2B2 3200MHz

配置内存速度

2933 MT/s

内存大小

32x64GB (总共 2048GB)

性能考虑因素#

当服务器负载较高时,请求可能会超时,因为服务器在完全生成前一个请求之前不会开始新请求的推理,以便可以释放推理槽。这样做是为了最大限度地提高 TTS 服务的吞吐量并允许实时交互。