使用函数调用边缘AI模型

智能边缘 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
  • 应用管理
  • arrow
  • 应用部署
  • arrow
  • 函数应用
  • arrow
  • 使用函数调用边缘AI模型
本页目录
  • 1、场景
  • 2、方案
  • 3、操作指南
  • 3.1、前提说明
  • 3.2、取消部署bie-python
  • 3.3、创建测试AI应用并部署
  • 3.4、创建函数invoke-ai-func
  • 3.5、创建测试图片配置项
  • 3.6、创建函数应用invoke-ai-func并部署
  • 3.7、修改baetyl-rule
  • 3.8、测试

使用函数调用边缘AI模型

更新时间:2025-08-21

1、场景

边缘节点上部署了AI模型,现在希望使用函数触发式调用AI模型,并将AI模型返回结果发送到边缘Broker当中,供其他用户应用订阅。

2、方案

整体边缘函数调用结构如下图所示:

image.png

函数调用流程解析

  • 使用baetyl-rule调用invoke-ai-func这个函数
  • 调用函数是触发式的,只有当baetyl-rule在broker/topic1当中订阅到指定消息以后,才会触发调用函数
  • baetyl-rule触发调用函数,然后函数调用demo-ai-arm64这个边缘AI应用
  • 边缘AI应用返回结果给函数,函数将结果返回给baetyl-rule
  • baetyl-rule将函数调用的返回结果pub到broker/topic2当中

3、操作指南

3.1、前提说明

本demo基于自定义函数与依赖包解耦下发这个demo案例进行修改。需要先完成这个demo以后,再执行本demo。

3.2、取消部署bie-python

在自定义函数与依赖包解耦下发 demo当中部署了bie-python这个函数应用,先取消部署次函数应用

3.3、创建测试AI应用并部署

创建测试AI应用demo-ai-arm64,可以直接导入配置应用-demo-ai-arm64.json

3.4、创建函数invoke-ai-func

创建函数invoke-ai-func,代码如下

Python
1#!/usr/bin/env python3
2# -*- coding: utf-8 -*-
3
4import sys 
5sys.path.append("/var/lib/baetyl/python3") 
6sys.path.append("/var/lib/baetyl/pic") 
7import requests
8
9def handler(event, context):
10    """
11    data: {"action": "A"}
12    """
13    if 'action' in event:
14        if event['action'] == 'A':
15            with open('/var/lib/baetyl/pic/1.jpg', 'rb') as f:
16                img = f.read()
17                r = requests.post('http://demo-ai-arm64.baetyl-edge:8701/',
18                                  params={'threshold': 0.8}, data=img).json()
19                event['info'] = r
20        else:
21            event['info'] = 'action dismatch'
22    else:
23        event['error'] = 'action not found'
24
25    return event

函数解析如下:

  • sys.path.append添加两个容器内目录,与后面的函数应用配置项匹配
  • 调用的边缘ai服务地址为http://demo-ai-arm64.baetyl-edge:8701/

    • demo-ai-arm64:为边缘AI应用名称
    • baetyl-edge:为边缘namespace
    • 8701:是边缘应用容器内端口。

3.5、创建测试图片配置项

创建测试图片配置项test-pic,如下图所示:

image.png

测试图片URL地址:https://bie-document.gz.bcebos.com/test-images/1.jpg

3.6、创建函数应用invoke-ai-func并部署

创建函数应用invoke-ai-func,配置信息如下图所示:

image.png

  • 整体配置与bie-python这个函数应用类似
  • 基本信息

    • 函数配置项:invoke-ai-func
    • 运行时:python3
  • 函数列表

    • 函数名称:process
    • 函数入口:index.handler
    • 容器目录:.,点号。
  • 卷配置

    • python3-request-package,函数依赖包,容器内目录为:/var/lib/baetyl/python3,与3.3章节的函数代码一致
    • test-pic:前面创建的测试图片,容器内目录为:/var/lib/baetyl/pic,与3.3章节的函数代码一致

将应用部署至边缘节点,边缘节点完整应用如下图所示:

image.png

3.7、修改baetyl-rule

因为baetyl-rule调用的函数名称发生修改,因此需要修改baetyl-rule的配置,如下图所示:

image.png

将原先的bie-python修改为invoke-ai-func。

  • 在baetyl-rule当中调用函数,可以只写[函数名称/入口],即上图的invoke-ai-func/process。如果是非baetyl-rule调用,则需要填写完整的函数调用地址。完整的函数调用地址为:https://baetyl-function.baetyl-edge-system:50011/invoke-ai-func/process
  • 边缘服务调用可以参考:边缘服务调用

3.8、测试

1、使用mqtt-box连接边缘broker

2、订阅broker/topic1和broker/topic2两个主题

3、向broker/topic1主题发送{"action":"A"},如下图所示:

image.png

4、在broker/topic2得到AI模型返回结果,结果如下

JSON
1{
2    "cost_ms":51,
3    "error_code":0,
4    "results":[
5        {
6            "confidence":0.9939988851547241,
7            "frame":0,
8            "index":12,
9            "label":"dog",
10            "location":{
11                "height":399,
12                "left":103,
13                "top":688,
14                "width":378
15            },
16            "modelKind":2,
17            "name":"dog",
18            "score":0.9939988851547241,
19            "trackId":0,
20            "x1":0.14938443899154663,
21            "x2":0.6959803104400635,
22            "y1":0.6235374808311462,
23            "y2":0.9851128458976746
24        },
25        {
26            "confidence":0.9900777339935303,
27            "frame":0,
28            "index":15,
29            "label":"person",
30            "location":{
31                "height":1027,
32                "left":295,
33                "top":58,
34                "width":328
35            },
36            "modelKind":2,
37            "name":"person",
38            "score":0.9900777339935303,
39            "trackId":0,
40            "x1":0.4268679618835449,
41            "x2":0.9022936820983887,
42            "y1":0.053433746099472046,
43            "y2":0.9839787483215332
44        },
45        {
46            "confidence":0.9880090951919556,
47            "frame":0,
48            "index":15,
49            "label":"person",
50            "location":{
51                "height":300,
52                "left":543,
53                "top":332,
54                "width":99
55            },
56            "modelKind":2,
57            "name":"person",
58            "score":0.9880090951919556,
59            "trackId":0,
60            "x1":0.7854906320571899,
61            "x2":0.9289591312408447,
62            "y1":0.30136483907699585,
63            "y2":0.5735336542129517
64        },
65        {
66            "confidence":0.9520901441574097,
67            "frame":0,
68            "index":15,
69            "label":"person",
70            "location":{
71                "height":355,
72                "left":41,
73                "top":334,
74                "width":145
75            },
76            "modelKind":2,
77            "name":"person",
78            "score":0.9520901441574097,
79            "trackId":0,
80            "x1":0.05995462089776993,
81            "x2":0.26955661177635193,
82            "y1":0.3026267886161804,
83            "y2":0.6244725584983826
84        }
85    ]
86}

上一篇
典型使用说明
下一篇
自定义函数与依赖包整体下发