当前位置:   article > 正文

高性能部署Yolov5 Triton service_triton 部署 yolo5

triton 部署 yolo5

YOLOV5 optimization on Triton Inference Server

在Triton中部署yolov5目标检测服务, 并分别进行了如下优化:

  1. 轻量化Detect层的Output
  2. 集成TensorRT的BatchedNMSPlugin到engine中
  3. 通过Triton Pipelines部署

其中Pipelines分别通过EnsembleBLS两种方式来实现,Pipelines的infer模块是基于上述1中精简后的TensorRT Engine部署, Postprocess模块则通过Python Backend实现, 工作流参考如何部署Triton Pipelines

相关代码链接


Environment

  • CPU: 4cores 16GB
  • GPU: Nvidia Tesla T4
  • Cuda: 11.6
  • TritonServer: 2.20.0
  • TensorRT: 8.2.3
  • Yolov5: v6.1

Benchmark

一台机器部署Triton Inference Server, 在另外一台机器上通过Perf_analyzer通过gRPC调用接口, 对比测试BLS PipelinesEnsemble PipelinesBatchedNMS这三种部署方式在并发数逐渐增加条件下的性能表现。

  • 生成真实数据

    python generate_input.py --input_images <image_path> ----output_file <real_data>.json
    
    • 1
  • 利用真实数据进行测试

    perf_analyzer  -m <triton_model_name>  -b 8  --input-data <real_data>.json  --concurrency-range 1:10  --measurement-interval 10000  -u <triton server endpoint> -i gRPC  -f <triton_model_name>.csv
    
    • 1

数据显示BatchedNMS这一方式整体性相对更好,更快在并发数较大的情况下收敛到最优性能,在低时延下达到较高的吞吐; 而Ensemble PipelinesBLS Pipelines则在并发数较小时性能更好,但是随着并发数的增加,性能下降的幅度更大。

请添加图片描述

选取了六个指标进行对比,每个指标均通过处理,并归一化到0-1区间,数值越大表示性能越好。每个指标的原始释义如下:

  • Server Queue: 数据在Triton队列中的等待时间
  • Server Compute Input: Triton处理Input Tensor的时间
  • Server Compute Infer: Triton执行推理的时间
  • Server Compute Output: Triton处理Output Tensor的时间
  • latency: 端到端延迟的90分位数
  • throughput: 吞吐

请添加图片描述


REFERENCES

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/443578
推荐阅读
相关标签
  

闽ICP备14008679号