2. TopsInference Application Sample

2.1. 简介

本文档包含共7个样例,以便向用户展示 TopsInference2.0 接口(以下简称为2.0接口)的变化以及使用方式。它们分别是4个基于 C++ 开发的样例以及3个基于 Python 开发的样例。所有的样例代码均发布在Github:tops_inference_sample

2.2. 总览

标题

样例名称及代码仓库

简介

Bert C++ Sample

cpp:sampleONNXBert

基于 C++ 的应用,使用 GCU 完成 ONNX Bert 模型推理,包含 CPU 上的前后处理过程,可以获得端到端的结果

ResNet C++ Sample

cpp:sampleONNXResNet

使用 GCU 和 2.0 接口完成 ResNet50 ONNX 模型推理的 C++ 应用

Yolov5 C++ Sample

cpp:sampleONNXYolov5

一个端到端的 C++ 应用,使用 GCU 完成 Yolov5 ONNX 模型的推理,包含图片的前处理、推理结果的后处理以及图片的渲染

Paralle Pipeline C++ Sample

cpp:sampleParallelPipeline

C++ 模拟 GCU 并行业务模式,检测和分类同一时刻运行在不同的线程中,同一线程中对多 batch 通过 stream 分组异步执行

Serial Pipeline C++ Sample

cpp:sampleSimpleSerialPipeline

C++ 模拟 GCU 串行业务线模式(同一线程中先检测后分类)

Bert Python Sample

python:sampleONNXBert

基于 Python 的应用,使用 GCU 完成 ONNX Bert 模型推理,包含 CPU 上的前后处理过程,可以获得端到端的结果

ResNet Python Sample

python:sampleONNXResNet

使用 GCU 和 2.0 接口完成 ResNet50 ONNX 模型推理的 Python 应用

Yolov5 Python Sample

python:sampleONNXYolov5

一个端到端的 Python 应用,使用 GCU 完成 Yolov5 ONNX 模型的推理,包含图片的前后处理

2.3. 必要条件

无论开发 C++ 或是 Python 应用程序时,用户都需要保证2.0接口被正确安装,详细参见TopsInference 安装

2.4. 各 Sample 简介

此次基于2.0接口开发的样例程序,以具有代表性的 Bert、ResNet、Yolov5 的推理向用户展示2.0接口的变化。同时基于 C++ 实现多线程单模型并行推理、单线程多模型串行推理样例应用以模拟业务场景。

2.4.1. C++ Sample

C++ Bert、ResNet、Yolov5 模型推理及前后处理,此外,亦开发了模拟业务场景 Pipeline 的应用。

2.4.1.1. Bert C++ Sample

样例展示通过 C++ 2.0 接口在 GCU 上进行 ONNX Bert 模型的推理。样例的构建运行等参见 GitHub:cpp/sampleONNXBert/README.md。该样例包含了 CPU 上的文字前后处理过程,获得端到端的结果。其输入要求 json 格式的文本文件,输出为 json 格式的文本文件。

2.4.1.2. ResNet C++ Sample

样例展示 GCU 上完成 ONNX ResNet50 模型推理的全过程。样例构建运行参考 GitHub:cpp/sampleONNXResNet/README.md。样例完成图片的前处理后送入 GCU 推理。在屏幕上打印接口的耗时和分类的索引信息。

2.4.1.3. Yolov5 C++ Sample

样例完成 GCU 上使用 YoloV5 完成端到端的图片识别任务。样例构建运行参考 GitHub:cpp/sampleONNXYolov5/README.md

2.4.1.4. Paralle Pipeline C++ Sample

样例模拟多线程同时使用 GCU,并行完成检测和分类推理任务的业务场景。样例构建运行参考 GitHub:cpp/sampleParallelPipeline/README.md

2.4.1.5. Serial Pipeline C++ Sample

样例模拟串行的业务场景,在单线程中先后使用 GCU 完成检测和分类。样例构建运行参考 GitHub:cpp/sampleSimpleSerialPipeline/README.md

2.4.2. Python Sample

Python Bert、ResNet、Yolov5 模型推理及前后处理。

2.4.2.1. Bert Python Sample

Bert C++ Sample,该样例展示通过 Python 2.0 接口在 GCU 上进行 ONNX Bert 模型的推理。样例的构建运行等参见 GitHub:python/sampleONNXBert/README.md

2.4.2.2. ResNet Python Sample

ResNet C++ Sample,Python 代码仓库见 GitHub:python/sampleONNXBert

2.4.2.3. Yolov5 Python Sample

Yolov5 C++ Sample,Python 代码仓库见 GitHub:python/sampleONNXYolov5