创建算法包组件
算法包组件使用场景
算法包组件适合处理复杂的场景,如承载算法模型的任务。在使用时,算法包组件将被配置为一个独立的服务,以供各组件进行访问。
算法包组件使用规范
- 打包格式:算法包需要打包成tar包或tar.gz格式,不支持其他格式。解压后的目录结构不应包含第一层文件夹,应为以下结构:
- main.py - dependency/ - lib/ (可选:C/C++运行文件) - requirements.txt - ...
- main.py文件:main.py文件为必选项,其中需要实现一个名为AlgoProcessor的类。这个类中的__init__函数可以实现模型初始化等操作,process函数则实现调用方法。包中引用代码应遵循标准,采用绝对路径。如软件包名为A,内部各模块引入时应为from A.xxx import xxx。
#!/usr/bin/env python # -*- coding: utf-8 -*- from rest.process_base import ProcessBase class AlgoProcessor(ProcessBase): """ Algorithm Processor """ def __init__(self): super(AlgoProcessor, self).__init__(url="") def process(self, req): rst = {'result': "success", 'suggestion': "pass"} return rst, 200
- dependency文件夹:dependency文件夹为必选项,用于存放基础镜像中未包含或版本不一致的依赖包,可以是自己打的依赖包,也可以是开源依赖包。这些依赖包将配合requirements.txt一起安装。
- simon-1.0.8-py3-none-any.whl
- lib文件夹:lib文件夹为可选项,用于存放在Linux环境下编译的C/C++代码的****.so动态库,以及其他依赖包。
- Width_Spread.so
- requirements.txt文件:requirements.txt文件为必选项,用于列出dependency文件夹中包含的依赖包。
dependency/simon-1.0.8-py3-none-any.whl
- 其他代码文件:其他代码文件为可选项,可以自行组织存放并正确引用。
创建算法包组件
- 登录ModelArts Studio平台,进入所需空间。
- 在左侧导航栏中选择“垂域应用开发 > 应用组件 > 组件管理”,在“自定义”页签,单击右上角“创建组件”,选择“算法组件包”算法类型,单击“确定”。
图1 算法包组件
- 进入“创建算法包组件”页,参考表1设置基础信息。
表1 创建算法包组件参数说明 参数名称
说明
英文名称
组件的英文名称。
中文名称
组件的中文名称。
业务类型
用于区分算法包组件的业务场景。包括以下类型:
数据读写、数据预处理、数据后处理、特征加工、优化场景定义、机理模型、过程控制、图像组件、视频组件、其他。
行业
用于区分算法包组件的行业类型,按行业类型进行组件筛选,非必填项,包括以下行业:
汽车、政务、交通、电力、钢铁、矿山、油气、供热。
标签
- 用于给组件绑定标签,支持绑定已有或者自定义的新标签,每个组件最多可绑定10个标签。
- 标签输入框支持创建新的标签和删除已有标签,单个空间最多可创建200个标签。
- 创建标签:输入框中输入标签名称并回车即可创建该标签。
图2 创建标签
- 删除标签:下拉框单击指定标签的“X”号,单击“确认”,即可删除标签。
图3 删除标签注意:
如果已有组件绑定该标签,删除操作会同步删除该组件与标签的绑定关系,且删除后不可找回,请谨慎操作。
- 创建标签:输入框中输入标签名称并回车即可创建该标签。
架构类型
算法支持的硬件架构类型:
- ALL:算法支持x86和arm两种架构。
- X86:算法仅支持x86架构。
- ARM:算法仅支持arm架构。
卡类型
算法包组件在进行部署时,支持的卡类型。
是否区分架构
算法包是否区分架构。
算法包
上传算法包。
图4 创建算法包组件 - 基础信息设置完成后,参考表2设置属性参数。
属性参数具备多种功能。例如,在编排静态应用时,通常需要组合多个组件来实现某一功能,不同的组件需要定义清楚输入、输出参数的引用关系,实现数据在不同的组件间流转。
表2 创建属性参数说明 参数名称
说明
英文名称
参数的英文名称。
中文名称
参数的中文名称。
参数类型
- 入参:在编排应用时,该节点的入参,支持三种方式,包括:界面填写、其他组件节点的输出参数作为当前节点的入参、画布参数传入。
- 出参:表示执行组件后生成的结果,出参可以被其他组件节点使用。
- 流式出参:nlp等场景下支持流式出参,支持出参以流式方式展示,使用时组件应该仅包含一个流式出参,并且不包含其他出参。
- 环境变量:在组件运行时可用的全局变量,可以用环境变量存储一些共享的配置信息。例如应用需要从数据库中获取待处理的数据,可以用环境变量存储数据库的位置信息、账密信息、API密钥等。
数据类型
组件参数的数值类型。
业务类型
参数的业务类型。非必填参数,默认为空,支持模型和模型服务两种类型。
模型:用于在静态应用界通过“选择模型”,自动填充所选模型的obs地址;
模型服务:用于在静态应用界通过“选择服务”,自动填充所选模型服务的访问地址,实现组件服务调用所选模型服务。
父参数
父参数通常用于配置复杂的结构体,可以使用一个已经添加的数据参数作为这个结构的父参数,即父参数必须是一个已经定义的组件参数。
配置复杂结构体使用,父参数只能是已经添加的数据类型为对象的组件参数。
默认值
参数的默认值。
有效值
参数可以接受的合法取值范围。举例:整数:[0,10],浮点数:[0.1,10.1],枚举:A|B|C。
是否必填
该参数是否为必填参数。
是否敏感
设置参数是否为敏感参数,敏感参数将不允许在画布中填入,只能通过画布参数传入。
是否为数组
该参数是否为数组类型。如果一个参数是数组类型,意味着它可以包含多个值。例如,一个名为“标签”的参数可以是一个字符串数组,其中包含多个标签名称。如果参数不是数组类型,那么它只能接受单个值。
- 参数填写完成后,单击“立即创建”。
- 组件创建完成后,在算法包列表页面,单击操作列“编辑”可以对中文名称、参数、算法包等进行修改更新。其中,组件参数支持批量导入功能。如果一个组件参数比较多,并且这些参数在其他组件中已经创建,可以通过复制参数代码,并在需要导入参数的组件中通过“导入参数”功能填入代码,从而实现参数的批量导入。
图5 查看参数代码图6 导入参数
- 组件开发完成后,单击“保存并生效”后,该组件可用于部署算法包组件和创建静态应用中使用。
- 在组件列表页面,可基于名称、标签、行业对组件进行筛选。
图7 组件列表