上云无忧 > 文档中心 > 百度智能云智能边缘 - 使用函数调用边缘AI模型
智能边缘
百度智能云智能边缘 - 使用函数调用边缘AI模型

文档简介:
1、场景: 边缘节点上部署了AI模型,现在希望使用函数触发式调用AI模型,并将AI模型返回结果发送到边缘Broker当中,供其他用户应用订阅。 2、方案: 整体边缘函数调用结构如下图所示:
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

1、场景

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

2、方案

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

函数调用流程解析

  • 使用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,代码如下

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys 
sys.path.append("/var/lib/baetyl/python3") sys.path.append("/var/lib/baetyl/pic")
 import requests def handler(event, context): """
    data: {"action": "A"}
    """ if 'action' in event: if event['action'] == 'A': with open('/var/lib/baetyl/pic
/1.jpg', 'rb') as f: img = f.read() r = requests.post('http://demo-ai-arm64.baetyl-edge:
8701/', params={'threshold': 0.8}, data=img).json() event['info'] = r else: event['info']
 = 'action dismatch' else: event['error'] = 'action not found' 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,如下图所示:

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

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

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

  • 整体配置与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章节的函数代码一致

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

3.7、修改baetyl-rule

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

将原先的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"},如下图所示:

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

{ "cost_ms":51, "error_code":0, "results":[ { "confidence":0.9939988851547241, "frame":0, "index":12,
 "label":"dog", "location":{ "height":399, "left":103, "top":688, "width":378 }, "modelKind":2, "name
":"dog", "score":0.9939988851547241, "trackId":0, "x1":0.14938443899154663, "x2":0.6959803104400635, 
"y1":0.6235374808311462, "y2":0.9851128458976746 }, { "confidence":0.9900777339935303, "frame":0, 
"index":15, "label":"person", "location":{ "height":1027, "left":295, "top":58, "width":328 }, 
"modelKind":2, "name":"person", "score":0.9900777339935303, "trackId":0, "x1":0.4268679618835449, 
"x2":0.9022936820983887, "y1":0.053433746099472046, "y2":0.9839787483215332 }, 
{ "confidence":0.9880090951919556, "frame":0, "index":15, "label":"person", "location":
{ "height":300, "left":543, "top":332, "width":99 }, "modelKind":2, "name":"person", "
score":0.9880090951919556, "trackId":0, "x1":0.7854906320571899, "x2":0.9289591312408447,
 "y1":0.30136483907699585, "y2":0.5735336542129517 }, { "confidence":0.9520901441574097, 
"frame":0, "index":15, "label":"person", "location":{ "height":355, "left":41, "top":334,
 "width":145 }, "modelKind":2, "name":"person", "score":0.9520901441574097, "trackId":0, 
"x1":0.05995462089776993, "x2":0.26955661177635193, "y1":0.3026267886161804, "y2":0.6244725584983826 } ] }

相似文档
  • 配置项是一种用于存储应用所需配置信息的资源类型,配置项允许您将配置文件从应用容器镜像中解耦,从而增强应用的可移植性。和密文类型配置存储敏感信息不同,配置项主要用于存储常规的配置信息,例如一组配置文件。
  • 函数配置项是配置项的子集,默认添加了函数标签。用于存储函数应用需要加载的程序脚本,支持 Python36、Nodejs10、SQL 等运行时。添加函数标签后,可以在创建函数应用时选择该配置项使用。
  • 1、简介: 进程程序包(简称“程序包”),是一种特殊的配置项,它指定了进程模式应用的程序服务入口。 一个程序包对应一个程序入口,一个进程模式应用可以包含多个程序包。即部署一个进程模式应用,可以下发多个程序服务。
  • 密文用于存储敏感数据,例如密码,令牌或密钥。它们可能包含一个或多个键值对。与添加配置项一样,应用服务将密文以数据卷挂载的方式使用。例如,在“卷配置”中挂载密文类型的卷,使其成为 Pod 中的文件。对于密文的任何更新,都会通过 Report/Desire 机制自动更新到正在使用它的 Pod 里。
  • 镜像库凭证是用于向私有Docker镜像库进行身份验证的凭据。资源创建完成后,可在添加应用时选择 "镜像库凭证" 引入凭证。更多信息请参阅 Kubernetes文档。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部