AICS组件根据来源分为平台组件和自定义组件。平台组件为系统内置的组件,用户不可编辑;自定义组件是用户自己编辑上架的组件。目前AICS支持Python脚本、Python组件、算法包组件三种自定义组件。本文介绍自定义算法包组件的模板及上架流程。
算法包模板
以样例算法包algo_package_sample.zip为例,介绍算法包的模板。
算法包解压后结构如下:
common放工具包
lib放第三方包
# 导入第三方包的方式 third_path = env_util.get_workspace() + "/lib" os.system('pip3 install simpy==3.0.11 -i https://pypi.tuna.tsinghua.edu.cn/simple -t '+str(third_path)) os.system('pip3 install ortools==8.0.8283 -i https://pypi.tuna.tsinghua.edu.cn/simple -t '+str(third_path)) # 使用第三方包 import simpy import ortools
固定有一个main.py文件,是算法调用入口文件。
# -*- coding: utf-8 -*- # @author: xxx # @E-mail: xxx@alibaba-inc.com # @Date : 2021/1/5 5:50 下午 # @File : main.py # framework import start from algo_sdk import storage # framework import end ### # User import package start # from src.sample_code import sample # User import end ### # User code start def main(input_data, context): # 通过context拿到日志对象 context['log'].info("data log info!") context['log'].info('算法主流程input: {}'.format(input_data)) # input_data 是输入的参数 # IN1是端口1的参数标识在搭建组件的时候填写的 # key1是这个控件的参数key 如果是批量参数则是在组件上架的时候填写的,如果是动态参数则是在搭建画布的时候需要填写的 # 使用sdk读写外部缓存 storage.external_save("key", "value") storage.external_read("key") # 这里的key为igate测点 value = input_data["IN1"]["key1"]["value"] response = {'code': 0, 'data': value} context['log'].info('算法主流程output: {}'.format(response)) return response
src放用户业务代码
压缩算法包时,需要同时选择以上四项进行压缩。
算法包组件上架
左侧导航栏单击组件管理 > 自定义组件。
在自定义组件页面,单击右上角的新增组件。
在新增组件面板,正确填入参数,单击左下角确定。
参数
说明
控制场景
实时算法编排或工业分析建模。
如选择实时算法编排,该自定义组件只能在实时算法编排的画布中使用;选择工业分析建模,该自定义组件只能在工业分析建模的画布中使用。
组件名称
自定义组件的名称。
标识
自定义组件的唯一标识。
类型
Python脚本:画布通过Python编译器编写脚本。
Python组件:上架组件前编写好脚本,画布通过控件运行脚本。
算法包组件:上传算法包方式运行组件。
此处选择算法包组件。
分组
目前选择默认分组。
运行方式
service实时调用:画布可实时调用组件,组件超时一分钟运行失败。此调用为常驻服务。
service异步回调:组件运行超过一分钟,服务挂起状态,走异步逻辑。此调用为常驻服务。
job:只有算法包组件类型可使用。调用一次启动一次pod,运行完成自动销毁。
图标
为自定义组件选择一个图标。
描述
选填,自定义组件的描述信息。
Python脚本
根据用户的业务来书写的Python代码。
组件控件添加。
序号
操作
1
新增输入端口。
2
新增输出端口。
3
从左侧控件栏拖入需要配置的控件。
4
分别选中各个控件,在右侧控件配置栏进行配置。其中,参数标识和算法包参数对应。
5
保存编辑。
回到自定义组件页面,选中刚刚新建的Python脚本组件,在操作栏中单击发布,填写版本号,选择发布类型,即可上架该组件。