性能#

您可以使用 perf_analyzer 工具来基准测试 NVIDIA NIM for Multimodal Safety 的性能。perf_analyzer 已预装在 NVIDIA Triton Inference Server SDK 容器中。

步骤#

创建目录 input_dir 并添加包含示例有效负载的 json 文件

mkdir input_dir

input_image_path="input.jpg"

# download an example image
curl https://assets.ngc.nvidia.com/products/api-catalog/sdxl/sdxl1.jpg > $input_image_path

image_b64=$(base64 $input_image_path)

echo '{
    "data": [
        {
            "payload": [
                {
                    "input": ["data:image/png;base64,'${image_b64}'"]
                }
            ]
        }
    ]
}' > input_dir/input.json
mkdir input_dir

input_image_path="input.jpg"

# download an example image
curl https://assets.ngc.nvidia.com/products/api-catalog/deepfake-image-detection/input/deepfake.jpg > $input_image_path

image_b64=$(base64 $input_image_path)

echo '{
    "data": [
        {
            "payload": [
                {
                    "input": ["data:image/png;base64,'${image_b64}'"]
                }
            ]
        }
    ]
}' > input_dir/input.json

使用以下示例来运行 Triton Inference Server SDK Docker 容器,挂载目录 input_diroutput_dir

export RELEASE="24.09"

docker run -it --rm --name=performance_benchmark \
    --runtime=nvidia \
    --network="host" \
    -v $(pwd)/input_dir:/input_dir \
    -v $(pwd)/output_dir:/output_dir \
    --entrypoint perf_analyzer \
    nvcr.io/nvidia/tritonserver:${RELEASE}-py3-sdk \
     -m ai-generated-image-detection --async \
    --service-kind openai \
    -u http://127.0.0.1:8003 \
    --endpoint v1/infer \
    --input-data /input_dir/input.json \
    --measurement-interval 15000 \
    --request-count 10 \
    --profile-export-file /output_dir/profile_export_ai-generated-image-detection.json \
    -f /output_dir/latency_report.csv \
    --verbose \
    --verbose-csv \
    -i http \
    --concurrency-range 1 \
    --max-threads 1
export RELEASE="24.09"

docker run -it --rm --name=performance_benchmark \
    --runtime=nvidia \
    --network="host" \
    -v $(pwd)/input_dir:/input_dir \
    -v $(pwd)/output_dir:/output_dir \
    --entrypoint perf_analyzer \
    nvcr.io/nvidia/tritonserver:${RELEASE}-py3-sdk \
     -m deepfake-image-detection --async \
    --service-kind openai \
    -u http://127.0.0.1:8003 \
    --endpoint v1/infer \
    --input-data /input_dir/input.json \
    --measurement-interval 15000 \
    --request-count 10 \
    --profile-export-file /output_dir/profile_export_deepfake-image-detection.json \
    -f /output_dir/latency_report.csv \
    --verbose \
    --verbose-csv \
    -i http \
    --concurrency-range 1 \
    --max-threads 1

perf_analyzer 工具会在 $(pwd)/output_dir 中创建两个文件。latency_report.csv 文件包含平均延迟和百分位数延迟数据。profile_export_stable-diffusion-xl.json 文件包含每个请求的详细结果。

您可以在文档的命令行选项部分查看 perf_analyzer 的完整命令行选项集。

模型结果#

在下表中,您可以找到模型的运行结果。延迟选项卡由 perf_analyzer 工具生成,而 throughput 是基于延迟计算得出的。

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.019

0.019

0.019

0.020

0.023

TensorRT

1

0.017

0.016

0.016

0.018

0.021

ONNX

2

0.021

0.020

0.023

0.024

0.026

TensorRT

2

0.019

0.018

0.020

0.021

0.022

ONNX

4

0.032

0.031

0.032

0.033

0.051

TensorRT

4

0.025

0.024

0.025

0.026

0.043

ONNX

8

0.064

0.063

0.064

0.066

0.096

TensorRT

8

0.050

0.050

0.058

0.063

0.081

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

51.549

53.660

52.372

51.000

44.006

TensorRT

1

59.716

62.996

60.890

54.363

47.188

ONNX

2

47.728

48.859

43.970

41.852

38.029

TensorRT

2

53.172

54.357

49.388

46.795

44.488

ONNX

4

31.528

31.969

31.108

30.170

19.701

TensorRT

4

40.737

41.733

39.404

38.494

23.527

ONNX

8

15.719

15.803

15.588

15.143

10.370

TensorRT

8

19.824

20.139

17.195

15.842

12.282

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.028

0.027

0.030

0.032

0.036

TensorRT

1

0.024

0.022

0.029

0.030

0.035

ONNX

2

0.026

0.026

0.026

0.027

0.037

TensorRT

2

0.024

0.023

0.026

0.028

0.035

ONNX

4

0.043

0.044

0.045

0.045

0.059

TensorRT

4

0.030

0.029

0.034

0.036

0.047

ONNX

8

0.084

0.084

0.085

0.085

0.121

TensorRT

8

0.061

0.061

0.074

0.076

0.092

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

35.877

37.365

32.900

31.207

27.956

TensorRT

1

41.386

45.000

34.538

33.011

28.441

ONNX

2

38.204

38.739

37.872

36.731

27.217

TensorRT

2

41.878

43.371

38.244

35.827

28.816

ONNX

4

23.358

22.958

22.407

22.288

17.069

TensorRT

4

33.574

34.999

29.802

28.080

21.103

ONNX

8

11.895

11.925

11.804

11.708

8.284

TensorRT

8

16.415

16.337

13.591

13.163

10.882

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.019

0.019

0.019

0.021

0.022

TensorRT

1

0.017

0.016

0.016

0.018

0.021

ONNX

2

0.021

0.020

0.021

0.021

0.025

TensorRT

2

0.019

0.018

0.020

0.020

0.033

ONNX

4

0.030

0.029

0.030

0.031

0.047

TensorRT

4

0.025

0.024

0.026

0.027

0.043

ONNX

8

0.059

0.059

0.060

0.062

0.091

TensorRT

8

0.050

0.050

0.057

0.058

0.073

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

51.345

53.208

52.029

48.714

44.649

TensorRT

1

60.230

62.802

61.561

56.539

46.520

ONNX

2

48.382

49.024

47.304

46.548

39.968

TensorRT

2

52.793

54.484

49.868

49.444

30.026

ONNX

4

33.655

34.337

33.080

31.800

21.474

TensorRT

4

40.406

41.535

37.981

36.584

23.359

ONNX

8

16.836

16.856

16.708

16.181

10.987

TensorRT

8

20.039

20.047

17.648

17.380

13.673

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.021

0.020

0.021

0.021

0.024

TensorRT

1

0.018

0.018

0.018

0.018

0.022

ONNX

2

0.021

0.021

0.021

0.022

0.027

TensorRT

2

0.020

0.019

0.023

0.025

0.032

ONNX

4

0.032

0.032

0.033

0.033

0.051

TensorRT

4

0.024

0.023

0.026

0.030

0.042

ONNX

8

0.064

0.062

0.063

0.068

0.099

TensorRT

8

0.054

0.053

0.061

0.066

0.088

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

47.939

49.490

48.365

47.929

41.721

TensorRT

1

55.794

56.718

55.060

54.289

45.681

ONNX

2

48.107

48.731

47.110

46.134

36.464

TensorRT

2

51.101

53.476

44.076

40.380

31.309

ONNX

4

30.902

31.454

30.610

29.928

19.714

TensorRT

4

41.341

42.713

37.887

33.756

24.096

ONNX

8

15.733

16.116

15.830

14.684

10.089

TensorRT

8

18.662

18.813

16.433

15.142

11.318

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.052

0.052

0.054

0.055

0.058

TensorRT

1

0.045

0.045

0.046

0.046

0.047

ONNX

2

0.066

0.066

0.068

0.069

0.088

TensorRT

2

0.054

0.054

0.054

0.055

0.055

ONNX

4

0.135

0.136

0.139

0.140

0.141

TensorRT

4

0.105

0.105

0.110

0.110

0.116

ONNX

8

0.260

0.262

0.273

0.273

0.301

TensorRT

8

0.207

0.213

0.215

0.218

0.237

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

19.068

19.247

18.379

18.211

17.234

TensorRT

1

22.057

22.072

21.914

21.868

21.317

ONNX

2

15.128

15.158

14.658

14.494

11.427

TensorRT

2

18.389

18.490

18.355

18.291

18.077

ONNX

4

7.380

7.378

7.200

7.153

7.086

TensorRT

4

9.485

9.550

9.121

9.097

8.601

ONNX

8

3.843

3.811

3.664

3.662

3.321

TensorRT

8

4.829

4.700

4.652

4.591

4.221

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.072

0.061

0.131

0.139

0.151

TensorRT

1

0.060

0.054

0.068

0.106

0.120

ONNX

2

0.155

0.153

0.196

0.207

0.230

TensorRT

2

0.130

0.130

0.159

0.173

0.192

ONNX

4

0.291

0.291

0.345

0.375

0.464

TensorRT

4

0.229

0.213

0.293

0.303

0.336

ONNX

8

0.595

0.605

0.717

0.779

0.804

TensorRT

8

0.498

0.511

0.605

0.670

0.712

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

13.927

16.274

7.652

7.202

6.603

TensorRT

1

16.738

18.420

14.677

9.410

8.346

ONNX

2

6.440

6.546

5.091

4.827

4.349

TensorRT

2

7.708

7.715

6.270

5.768

5.209

ONNX

4

3.436

3.434

2.895

2.664

2.156

TensorRT

4

4.361

4.703

3.417

3.303

2.974

ONNX

8

1.680

1.652

1.395

1.283

1.244

TensorRT

8

2.010

1.957

1.653

1.492

1.404

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.053

0.052

0.054

0.055

0.055

TensorRT

1

0.044

0.044

0.044

0.045

0.047

ONNX

2

0.065

0.064

0.067

0.067

0.069

TensorRT

2

0.052

0.051

0.053

0.053

0.053

ONNX

4

0.129

0.130

0.131

0.131

0.140

TensorRT

4

0.105

0.104

0.109

0.110

0.110

ONNX

8

0.252

0.258

0.261

0.263

0.290

TensorRT

8

0.201

0.204

0.208

0.209

0.231

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

18.985

19.092

18.464

18.326

18.084

TensorRT

1

22.625

22.665

22.582

22.422

21.205

ONNX

2

15.423

15.531

14.999

14.927

14.531

TensorRT

2

19.255

19.421

19.041

18.991

18.890

ONNX

4

7.738

7.677

7.614

7.610

7.133

TensorRT

4

9.525

9.616

9.156

9.126

9.115

ONNX

8

3.974

3.880

3.825

3.802

3.450

TensorRT

8

4.984

4.901

4.799

4.785

4.326

后端

客户端并发数

延迟 (秒)

平均值

p50

p90

p95

p99

ONNX

1

0.049

0.049

0.051

0.051

0.053

TensorRT

1

0.038

0.037

0.038

0.038

0.039

ONNX

2

0.069

0.069

0.071

0.071

0.077

TensorRT

2

0.048

0.048

0.048

0.049

0.052

ONNX

4

0.137

0.138

0.143

0.144

0.145

TensorRT

4

0.096

0.096

0.099

0.099

0.099

ONNX

8

0.273

0.281

0.284

0.285

0.300

TensorRT

8

0.186

0.190

0.194

0.195

0.217

后端

客户端并发数

吞吐量

平均值

p50

p90

p95

p99

ONNX

1

20.430

20.473

19.768

19.651

18.958

TensorRT

1

26.621

26.727

26.312

26.153

25.696

ONNX

2

14.547

14.552

14.141

14.007

12.949

TensorRT

2

20.882

20.933

20.695

20.390

19.282

ONNX

4

7.289

7.264

7.016

6.968

6.879

TensorRT

4

10.397

10.390

10.151

10.115

10.073

ONNX

8

3.666

3.562

3.519

3.511

3.335

TensorRT

8

5.366

5.262

5.157

5.117

4.598