\u200E
部署“桨”坛 | 基于EasyDL的全流程模型开发和Atlas 200 DK部署
发布日期:2021-10-29T11:59:00.000+0000 浏览量:1669次



本期【洞见AI硬件,部署讲坛】主要分享基于飞桨的昇腾310及相关硬件的多方案部署教程,包括:

1. Paddle Lite在Atlas 200 DK上部署实战; 

2. 通过Paddle2ONNX在Atlas 200 DK上部署模型; 

3. 基于EasyDL的全流程模型开发和Atlas 200 DK部署。



本篇教程以Atlas 200 DK为例,介绍基于EasyDL的“NonCode”模式的部署流程。基于百度EasyDL零门槛AI开发平台,可以实现全程可视化零代码训练CV模型,一键发布昇腾310专项适配SDK,一行代码即可完成调用。


使用EasyDL完成昇腾310相关硬件(本教程用的是Atlas 200 DK)部署,整体可分为三个流程:

  1. 在EasyDL平台上完成训练并发布部署包。

  2. 在运行环境验证部署包的运行效果。

  3. 通过SDK或服务接口将模型嵌入到用户程序中。


目前在Atlas 200和Atlas 300上,EasyDL已经支持图像分类和物体检测两类任务;以下性能数据仅供参考,实际数值根据使用线程数、芯片利用率等情况可能有所波动


模型类型

模型算法

芯片类型

SDK类型

实测硬件

单次预测耗时

EasyDL 图像分类

高性能

Atlas 200

Atlas 200

Atlas 200DK

9ms

EasyDL 图像分类

高精度

Atlas 200

Atlas 200

Atlas 200DK

12ms

EasyDL 物体检测

高性能

Atlas 200

Atlas 200

Atlas 200DK

11ms

EasyDL 物体检测

高精度

Atlas 200

Atlas 200

Atlas 200DK

31ms




  1. 打开EasyDL官网(https://ai.baidu.com/easydl/),选择合适的目标任务类型,这里我们以图像分类任务为例。



  1. 在EasyDL图像分类的操作台中创建模型,点击训练模型,依次选择「EasyEdge本地部署」-「通用小型设备」,然后根据对精度或者性能的侧重选择适合场景的算法,就可以开始训练。


注:模型训练需要准备训练数据,目前平台支持已标注数据上传和数据在线标注。



训练成功后可以看到「训练成功」字样。如下图所示。



  1. 训练完成后点击上图中的「申请发布」,然后如下图所示,选择「EasyEdge-纯离线服务」,再选择「华为昇腾Atlas开发板」,点击「发布」,将模型发布为专项适配昇腾310的SDK服务。



  1. 发布完成后,在图中位置点击「下载SDK」,同时在百度智能云控制台申请序列号用于后续本地部署时联网授权。





在Atlas 200 DK

上测试发布包




  1. 下载SDK并拷贝到本地,并从控制台获取EasyDL的测试序列号即可开始在Atlas 200 DK上的部署流程。首先,在本地解压SDK文件,进入Demo文件夹目录,运行build_and_run.sh一键编译并生成Demo:



  1. 然后设置Demo运行所需要依赖库搜索路径:


  1. 运行Demo;在运行程序时,需要在终端输入输入「Demo文件 模型地址 输入图片地址 序列号」,如图可见,输入图片被识别为“dog”的概率为0.998。




通过SDK或服务接口

将模型嵌入到用户程序中




  1. 同步接口使用流程
// step 0: 设置序列号
global_controller()->set_licence_key("set your license here");

// step 1: 配置模型资源目录
AtlasConfig config; 
config.model_dir = {模型文件目录};

// step 2: 创建并初始化Predictor; 
auto predictor = global_controller()->CreateEdgePredictor(config);
int ret = predictor->init();
# 若返回非0,请查看输出日志排查错误原因。
auto img = cv::imread({图片路径});
// step 3: 预测图像
std::vector<EdgeResultData> result2;
predictor->infer(img, result2);
# 解析result2即可获取结果
  1. 异步接口使用流程
// step 0: 设置序列号
global_controller()->set_licence_key("set your license here");

// step 1: 配置模型资源目录
AtlasConfig config; 
config.model_dir = {模型文件目录};

// step 3: 创建Predictor;这这里选择合适的引擎
auto predictor = global_controller()->CreateEdgePredictor(config);

// step 4: 设置异步回调
predictor->set_result_handler(YOUR_HANDLER);

// step 5: 初始化
int ret = predictor->init();
# 若返回非0,请查看输出日志排查错误原因。

// step 6: 预测图像
auto img = cv::imread({图片路径});
color_format = kBGR;
float threshold = 0.1;

uint64_t seq_id;
predictor->infer_async(img, color_format, 0.1, nullptr, seq_id);
# YOUR_HANDLER里面有seq_id的回调结果
  1. 设置序列号

请在网页控制台中申请序列号,并init初始化前设置。LinuxSDK 首次使用需联网授权。
virtual int set_licence_key(const std::string& license) 0;


  1. 日志配置

设置EdgeLogConfig的相关参数。

EdgeLogConfig log_config;
log_config.enable_debug = true;
global_controller()->set_log_config(log_config);


同时,SDK中还包含AI Serving等程序,可以启动HTTP Serving服务,通过调用HTTP接口进行服务调用,具体可以参考EasyDL官方文档教程以及常见问题解答(https://ai.baidu.com/ai-doc/EASYDL/7k7q0uipo)。


为了向大家提供更易用、更好用的AI推理部署工具,我们诚邀您参与调研,分享您使用推理部署工具时的需求和期待!

问卷地址(点击阅读原文即可跳转):

https://iwenjuan.baidu.com/?code=323o1l


如有相关AI硬件部署的技术问题,欢迎加入飞桨硬件部署交流群提问交流:609865659(QQ群)




长按下方二维码立即

Star

更多信息:

  1. 飞桨官方QQ群:793866180

  2. 飞桨官网网址:

    www.paddlepaddle.org.cn/

  3. 飞桨开源框架项目地址:

    GitHub:

    github.com/PaddlePaddle/Paddle 
    Gitee:

    gitee.com/paddlepaddle/Paddle

  4. 欢迎在飞桨论坛讨论交流~~

    http://discuss.paddlepaddle.org.cn