部署模型SDK至Atlas200DK

智能边缘 BIE

  • 产品描述
    • 名词解释
    • 使用限制
    • 产品概述
    • 产品优势
    • 应用场景
  • 配置文件说明
    • baetyl-rule
    • baetyl-remote-object
    • baetyl-function
    • baetyl-broker
  • 快速入门
    • 融合模式节点安装
    • 快速入门指南
    • 离线安装k3s+docker
    • 进程模式节点安装
      • 在linux上安装
      • 在windows上安装
  • 典型实践
    • OPC-UA使用
    • 使用BIE函数计算调用文心一言
    • 边缘规则引擎实战
      • 集成Kuiper流式计算引擎
      • 边缘规则实例
    • 将AI中台模型部署至边缘节点
      • 获取AI中台模型部署包进行应用部署
      • 部署模型SDK至Atlas200DK
      • 模型中心1.0
        • 通过AI中台转换模型并下发至边缘
        • 通过AI中台直接将模型下发至边缘
      • 模型中心2.0
        • 将物体检测模型部署至边缘
        • 将图像分类模型部署至边缘
    • 部署PaddleServing模型
      • 使用BIE下发PaddleOCR模型
      • 制作GPU版本Paddle Serving推理镜像
      • 通过BIE部署Paddle Serving
    • Modbus协议采集温湿度传感器
      • 连接边缘baetyl-broker
      • 使用内置modbus驱动采集数据并进行边缘函数计算
      • 数据从baetyl-broker上传至IoTCore
    • 部署EasyDL模型SDK
      • 部署EasyDL烟火检测模型至ARM64节点
    • 部署EasyEdge模型SDK
      • 进程模式下发python SDK模型
      • 使用EasyEdge模型转换获取边缘模型
      • 部署模型SDK至Windows设备
      • 部署模型SDK至Intel Movidius设备
      • 部署模型SDK至Jetson Xavier
    • 部署自定义容器镜像模型
      • 部署mnist手写数字识别模型
      • 部署物体检测模型
    • video-infer实现边缘视频AI推断
      • 使用Movidius VPU加速边缘视频推断
      • 使用CPU实现边缘视频推断
  • 操作指南
    • 主子用户鉴权
    • 设备管理
      • 设备模拟器
      • 子设备数据云边交互方式
      • 进程模式软网关设备接入指南
      • 子设备数据云边交互方式-v2
      • 视频流管理
        • IPC子设备和驱动
        • 边缘转发RTSP视频流
      • 设备接入
        • 设备模型管理
        • 接入模板
        • 设备管理
        • 子设备绑定
      • 驱动管理
        • 进程模式软网关自定义驱动开发
        • 驱动管理
        • GO语言实现示例
        • 自定义驱动开发指南
      • 不同协议设备接入
        • BACnet设备接入
        • OPC-UA设备接入
        • Modbus 设备接入
        • IEC104设备接入
        • OPC-DA设备接入
    • 节点管理
      • 边缘应用获取云端STS鉴权
      • 进程模式节点
      • 远程MQTT消息下发
      • 节点运行模式说明
      • 节点影子
      • 远程调用
      • 容器模式节点
      • 远程调试
      • 远程SSH边缘节点
      • 边缘节点OpenAPI
      • 证书管理
      • 节点预配
    • 业务编排
      • 单元管理
      • 技能管理
      • 常见技能
    • 应用管理
      • 业务模版
      • 应用部署
        • 应用运行模式与分类说明
        • 函数应用
          • 自定义函数与依赖包解耦下发
          • 从CFC引入多个函数下发
          • 典型使用说明
          • 使用函数调用边缘AI模型
          • 自定义函数与依赖包整体下发
        • 容器应用
          • subpath子路径使用说明
          • workdir工作目录使用说明
          • Job类型容器应用
          • 容器应用状态说明
          • 原生yaml接入使用说明
          • 端口映射说明
          • 容器应用工作负载类型说明
          • Deployment类型容器应用
          • DaemonSet类型容器应用
          • QPS监控
          • emptyDir卷使用说明
          • 边缘服务调用
        • 进程应用
          • 进程应用概述
          • 可执行二进制程序类型进程应用
          • 可执行脚本类型进程应用
      • 配置管理
        • 证书
        • 函数
        • 镜像仓库凭证
        • 配置项
        • 密文
        • 镜像
        • 进程程序包
    • AI加速卡
      • AI加速卡通用资源调度方法
      • 自定义加速卡算力指标采集
      • 华为昇腾
        • 昇腾310资源监控
      • 英伟达
        • GPU资源调度-显存隔离
        • Jetson资源监控
        • GPU资源调度-显存共享
        • Jetson依赖说明
        • NVIDIA GPU资源监控
      • 寒武纪
        • MLU270资源监控
      • 百度昆仑
        • 昆仑芯片资源监控
      • 比特大陆
        • 挂载比特大陆边缘计算盒子tpu资源
        • BM-SE5资源监控
  • 服务等级协议SLA
    • 服务等级协议SLA(V1.0)
  • 备份
    • 进程模式应用
    • 部署通用CPU模型
    • 部署模型SDK至Atlas200DK
    • 适配列表
    • 连接边缘节点本地baetyl-broker
    • 使用自定义modbus应用采集
    • NVIDIA GPU资源管理
    • FAQ
    • NVIDIA Jetson专用模型部署-进程模式
    • 容器模式应用
    • 连接边缘节点本地baetyl-broker服务
    • DaemonSet类型和job类型服务部署
    • 通用CPU模型部署-容器模式
    • NVIDIA Jetson专用模型部署-容器模式
    • 功能发布记录
    • 在BIE控制台部署从AI中台下载的模型
    • EasyEdge概述
    • Nvidia_Jetson
      • 使用NVIDIA官方镜像运行模型-容器模式
      • 二进制程序运行模型-进程模式
      • 使用edgekit镜像运行模型-容器模式
    • 下载专区
      • 相关资源下载
  • 产品定价
    • 产品定价
所有文档
menu
没有找到结果,请重新输入

智能边缘 BIE

  • 产品描述
    • 名词解释
    • 使用限制
    • 产品概述
    • 产品优势
    • 应用场景
  • 配置文件说明
    • baetyl-rule
    • baetyl-remote-object
    • baetyl-function
    • baetyl-broker
  • 快速入门
    • 融合模式节点安装
    • 快速入门指南
    • 离线安装k3s+docker
    • 进程模式节点安装
      • 在linux上安装
      • 在windows上安装
  • 典型实践
    • OPC-UA使用
    • 使用BIE函数计算调用文心一言
    • 边缘规则引擎实战
      • 集成Kuiper流式计算引擎
      • 边缘规则实例
    • 将AI中台模型部署至边缘节点
      • 获取AI中台模型部署包进行应用部署
      • 部署模型SDK至Atlas200DK
      • 模型中心1.0
        • 通过AI中台转换模型并下发至边缘
        • 通过AI中台直接将模型下发至边缘
      • 模型中心2.0
        • 将物体检测模型部署至边缘
        • 将图像分类模型部署至边缘
    • 部署PaddleServing模型
      • 使用BIE下发PaddleOCR模型
      • 制作GPU版本Paddle Serving推理镜像
      • 通过BIE部署Paddle Serving
    • Modbus协议采集温湿度传感器
      • 连接边缘baetyl-broker
      • 使用内置modbus驱动采集数据并进行边缘函数计算
      • 数据从baetyl-broker上传至IoTCore
    • 部署EasyDL模型SDK
      • 部署EasyDL烟火检测模型至ARM64节点
    • 部署EasyEdge模型SDK
      • 进程模式下发python SDK模型
      • 使用EasyEdge模型转换获取边缘模型
      • 部署模型SDK至Windows设备
      • 部署模型SDK至Intel Movidius设备
      • 部署模型SDK至Jetson Xavier
    • 部署自定义容器镜像模型
      • 部署mnist手写数字识别模型
      • 部署物体检测模型
    • video-infer实现边缘视频AI推断
      • 使用Movidius VPU加速边缘视频推断
      • 使用CPU实现边缘视频推断
  • 操作指南
    • 主子用户鉴权
    • 设备管理
      • 设备模拟器
      • 子设备数据云边交互方式
      • 进程模式软网关设备接入指南
      • 子设备数据云边交互方式-v2
      • 视频流管理
        • IPC子设备和驱动
        • 边缘转发RTSP视频流
      • 设备接入
        • 设备模型管理
        • 接入模板
        • 设备管理
        • 子设备绑定
      • 驱动管理
        • 进程模式软网关自定义驱动开发
        • 驱动管理
        • GO语言实现示例
        • 自定义驱动开发指南
      • 不同协议设备接入
        • BACnet设备接入
        • OPC-UA设备接入
        • Modbus 设备接入
        • IEC104设备接入
        • OPC-DA设备接入
    • 节点管理
      • 边缘应用获取云端STS鉴权
      • 进程模式节点
      • 远程MQTT消息下发
      • 节点运行模式说明
      • 节点影子
      • 远程调用
      • 容器模式节点
      • 远程调试
      • 远程SSH边缘节点
      • 边缘节点OpenAPI
      • 证书管理
      • 节点预配
    • 业务编排
      • 单元管理
      • 技能管理
      • 常见技能
    • 应用管理
      • 业务模版
      • 应用部署
        • 应用运行模式与分类说明
        • 函数应用
          • 自定义函数与依赖包解耦下发
          • 从CFC引入多个函数下发
          • 典型使用说明
          • 使用函数调用边缘AI模型
          • 自定义函数与依赖包整体下发
        • 容器应用
          • subpath子路径使用说明
          • workdir工作目录使用说明
          • Job类型容器应用
          • 容器应用状态说明
          • 原生yaml接入使用说明
          • 端口映射说明
          • 容器应用工作负载类型说明
          • Deployment类型容器应用
          • DaemonSet类型容器应用
          • QPS监控
          • emptyDir卷使用说明
          • 边缘服务调用
        • 进程应用
          • 进程应用概述
          • 可执行二进制程序类型进程应用
          • 可执行脚本类型进程应用
      • 配置管理
        • 证书
        • 函数
        • 镜像仓库凭证
        • 配置项
        • 密文
        • 镜像
        • 进程程序包
    • AI加速卡
      • AI加速卡通用资源调度方法
      • 自定义加速卡算力指标采集
      • 华为昇腾
        • 昇腾310资源监控
      • 英伟达
        • GPU资源调度-显存隔离
        • Jetson资源监控
        • GPU资源调度-显存共享
        • Jetson依赖说明
        • NVIDIA GPU资源监控
      • 寒武纪
        • MLU270资源监控
      • 百度昆仑
        • 昆仑芯片资源监控
      • 比特大陆
        • 挂载比特大陆边缘计算盒子tpu资源
        • BM-SE5资源监控
  • 服务等级协议SLA
    • 服务等级协议SLA(V1.0)
  • 备份
    • 进程模式应用
    • 部署通用CPU模型
    • 部署模型SDK至Atlas200DK
    • 适配列表
    • 连接边缘节点本地baetyl-broker
    • 使用自定义modbus应用采集
    • NVIDIA GPU资源管理
    • FAQ
    • NVIDIA Jetson专用模型部署-进程模式
    • 容器模式应用
    • 连接边缘节点本地baetyl-broker服务
    • DaemonSet类型和job类型服务部署
    • 通用CPU模型部署-容器模式
    • NVIDIA Jetson专用模型部署-容器模式
    • 功能发布记录
    • 在BIE控制台部署从AI中台下载的模型
    • EasyEdge概述
    • Nvidia_Jetson
      • 使用NVIDIA官方镜像运行模型-容器模式
      • 二进制程序运行模型-进程模式
      • 使用edgekit镜像运行模型-容器模式
    • 下载专区
      • 相关资源下载
  • 产品定价
    • 产品定价
  • 文档中心
  • arrow
  • 智能边缘BIE
  • arrow
  • 备份
  • arrow
  • 部署模型SDK至Atlas200DK
本页目录
  • 1、概述
  • 2、获取Atlas类型SDK
  • 3、对原始SDK包的修改
  • 4、 编译和测试
  • 5、利用BIE进程模式部署
  • 5.1 制作程序包
  • 5.2 添加程序包配置项
  • 5.3 添加模型文件
  • 5.4 创建进程应用
  • 5.5 创建对应节点并将应用部署到节点上
  • 5.6 进程模式安装节点
  • 5.7 验证边缘节点AI推断服务

部署模型SDK至Atlas200DK

更新时间:2025-08-21

1、概述

本文将描述如何将EasyEdge SDK打包成一个二进制程序,然后通过BIE云边协同将二进制程序和模型文件下发至边缘节点并运行。

2、获取Atlas类型SDK

参考模型转换的章节,生成一个Atlas类型的SDK

进入我的模型界面,点击生成端模型。选择Atlas 200DK 和Linux操作系统,点击发布。

截屏2021-10-13 下午2.28.28.png

过几分钟,可以在离线计算SDK界面看到生成的Atlas SDK。

image.png

3、对原始SDK包的修改

原始sdk包没有demo_serving.cpp这个文件,需要增加这个文件,文件内容如下:

Plain Text
1/***************************************************************************
2
3 * 
4 * Copyright (c) 2021 Baidu.com, Inc. All Rights Reserved
5 * **************************************************************************/
6
7/**
8
9 * @author Baidu
10 * @brief demo_serving
11 * **/
12
13#include <iostream>
14#include <algorithm>
15#include <thread>
16#include "easyedge/easyedge.h"
17#include "easyedge/easyedge_cann_config.h"
18
19struct DemoConfig {
20    bool is_batch_model = false;
21    int batch_size = 1;
22    int device_id = 0;
23} g_config;
24
25using namespace easyedge;
26
27int main(int argc, char *argv[]) {
28    if (argc < 2) {
29        std::cerr << "Usage: ./easyedge_serving {res_dir} {serial_key} {host} {port}" << std::endl;
30        exit(-1);
31    }
32
33    std::string host = "0.0.0.0";
34    int port = 24401;
35    std::string service_id = "";
36    std::string res_dir = argv[1];
37    std::string serial_num = "";
38    
39    if (argc >= 3) {
40        serial_num = argv[2];
41    }
42    if (argc >= 4) {
43        host = argv[3];
44    }
45    if (argc >= 5) {
46        port = std::stoi(argv[4]);
47    }
48    
49    EdgeLogConfig log_config;
50    log_config.enable_debug = true;
51    global_controller()->set_log_config(log_config);
52    
53    EdgePredictorConfig config;
54    config.set_config(easyedge::params::PREDICTOR_KEY_CANN_BATCH_ENABLED, g_config.is_batch_model);
55    config.set_config(easyedge::params::PREDICTOR_KEY_CANN_DEVICE_ID, g_config.device_id);
56    config.model_dir = res_dir;
57    
58    // 在这里设置序列号 或者 通过环境变量 EDGE_PREDICTOR_KEY_SERIAL_NUM 设置序列号
59    // 如果设置为空,SDK会自动寻找本地已经激活过的license
60    if (!serial_num.empty()) {
61        config.set_config(params::PREDICTOR_KEY_SERIAL_NUM, serial_num);
62    }
63    
64    int inst_num = global_controller()->get_config(params::CONTROLLER_KEY_SERVING_INSTANCE_NUM, 1);
65    return global_controller()->start_http_server(config, host, port, service_id, inst_num);
66
67}

首先修改CMakeLists.txt。 下面"# 增加部分"标记的就是修改部分。

Plain Text
1cmake_minimum_required(VERSION 3.0)
2 
3set(CMAKE_CXX_STANDARD 14)
4set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
5#set(CMAKE_BUILD_TYPE Debug)
6#set(CMAKE_VERBOSE_MAKEFILE ON)
7 
8# 增加部分
9set(CMAKE_SYSTEM_PROCESSOR aarch64)
10set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu)
11# 为了能让cmake 到/usr/aarch64-linux-gnu 找到Opencv
12#set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)
13set(CMAKE_C_COMPILER "gcc")
14set(CMAKE_CXX_COMPILER "g++")
15 
16 
17 
18# 有些系统里设置了RUNPATH不起作用,只能用RPATH
19set(CMAKE_EXE_LINKER_FLAGS "-Wl,--disable-new-dtags")
20 
21project(easyedge_demo)
22 
23set(OpenCV_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/opencv)
24set(OpenCV_INCLUDE_DIRS ${OpenCV_DIR}/include)
25file(GLOB_RECURSE OpenCV_LIBS ${OpenCV_DIR}/lib/*)
26 
27message(STATUS "OpenCV library status:")
28message(STATUS "    libraries: ${OpenCV_LIBS}")
29message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
30 
31find_package(Threads REQUIRED)
32 
33include_directories(
34        ${OpenCV_INCLUDE_DIRS}
35        ${CMAKE_SOURCE_DIR}/../include/
36)
37link_directories(
38        ${CMAKE_SOURCE_DIR}/../lib/
39        /usr/local/Ascend/nnrt/latest/arm64-linux/acllib/lib64
40        /usr/local/Ascend/driver/lib64
41)
42add_executable(easyedge_demo demo.cpp)
43# 增加部分
44add_executable(easyedge_serving demo_serving.cpp)
45 
46target_link_libraries(easyedge_demo ${OpenCV_LIBS} verify easyedge verify)
47# 增加部分
48target_link_libraries(easyedge_serving ${OpenCV_LIBS} easyedge verify)

4、 编译和测试

运行该脚本来进行编译

image.png

执行serving

./easyedge_serving /home/HwHiAiUser/easyedge/RES "02F3-181F-DD3D-3F22" 0.0.0.0 24401

序列号在EasyDL平台获取,点击上图当中的获取序列号激活,进入到序列号管理界面,点击新增测试序列号来获取测试序列号,如下图所示:

image.png

点击下载获得获得最红编译好的atlas的sdk

5、利用BIE进程模式部署

本章节介绍如何使用进程模式下发模型二进制执行程序和模型文件。

通过本地验证,我们知道,程序在边缘运行的命令如下:

Plain Text
1./easyedge_serving /home/HwHiAiUser/easyedge/RES "测试序列号" 0.0.0.0 24401

如果要使用BIE实现模型下发并运行,需要将上述本地验证命令分割为以下几部分:

  • 下发文件

    • 程序包:包含easyedge_serving和program.yml配置文件的压缩包,上传对象存储。在program.yml配置文件当中定义了entry。
    • 配置项:模型资源文件,上传对象存储
  • 启动参数

    • 模型资源文件下发以后的工作目录。
    • 模型序列号
    • 服务暴露IP
    • 服务暴露端口

基于上述需要的内容,我们开始后面的的操作。

5.1 制作程序包

进程应用创建没有镜像,由程序包代替。程序包由对应平台的可执行文件和程序配置文件program.yml组成,在本demo中:

  • easyedge_serving:华为Atlas 200DK 的可执行文件。该文件在sdk文件的 /demo/build目录中。
  • program.yml:可执行文件的配置文件,在其中定义了entry,对应本地验证程序当中的./easyedge_serving命令。详细配置如下:

image.png

5.2 添加程序包配置项

将这两个文件压缩成zip文件并上传到对象存储中,然后在BIE程序包中引入这个压缩文件。

制作压缩包建议使用zip压缩命令,执行命令如下:

Bash
1#  查看当前目录下的文件,应该只有easyedge_serving 和 program.yml
2$ ls
3easyedge_serving    program.yml
4# 将当前目录下的2个文件压缩到压缩包当中
5$ zip -r native-atlas.zip * 

image.png

5.3 添加模型文件

将模型资源文件RES目录压缩,并上传至对象存储,然后在BIE配置项中引入这个压缩文件。

制作压缩包建议使用zip压缩命令,执行命令如下:

Bash
1#  查看当前目录下的文件,应该可以看到RES目录
2$ ls
3RES	cpp	python
4# 将RES目录压缩
5$ zip -r RES.zip RES

image.png

5.4 创建进程应用

添加进程服务,将模型以卷的形式添加到服务中。这里的目录填的是工作目录下的相对路径,如下图所示。

image.png

添加启动参数如下:

image.png

因为上面的RES.zip解压以后,会带有一个RES目录,所以启动参数当中的模型资源文件路径为var/lib/baetyl/sdk/RES。是相对于上述卷配置当中模型文件配置项相对路径var/lib/baetyl/sdk多了一层RES。

5.5 创建对应节点并将应用部署到节点上

image.png

5.6 进程模式安装节点

image.png

5.7 验证边缘节点AI推断服务

通过浏览器打开在线推断服务:http://「ip」 :24401/,上传测试图片,获取测试结果

上一篇
部署通用CPU模型
下一篇
适配列表