更新时间:2025-07-30 GMT+08:00
分享

创建算法包组件

算法包组件使用场景

算法包组件适合处理复杂的场景,如承载算法模型的任务。在使用时,算法包组件将被配置为一个独立的服务,以供各组件进行访问。

算法包组件使用规范

  • 打包格式:算法包需要打包成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
  • 其他代码文件:其他代码文件为可选项,可以自行组织存放并正确引用。

创建算法包组件

  1. 登录ModelArts Studio平台,进入所需空间。
  2. 在左侧导航栏中选择“垂域应用开发 > 应用组件 > 组件管理”,在“自定义”页签,单击右上角“创建组件”,选择“算法组件包”算法类型,单击“确定”。
    图1 算法包组件
  3. 进入“创建算法包组件”页,参考表1设置基础信息。
    表1 创建算法包组件参数说明

    参数名称

    说明

    英文名称

    组件的英文名称。

    中文名称

    组件的中文名称。

    业务类型

    用于区分算法包组件的业务场景。包括以下类型:

    数据读写、数据预处理、数据后处理、特征加工、优化场景定义、机理模型、过程控制、图像组件、视频组件、其他。

    行业

    用于区分算法包组件的行业类型,按行业类型进行组件筛选,非必填项,包括以下行业:

    汽车、政务、交通、电力、钢铁、矿山、油气、供热。

    标签

    • 用于给组件绑定标签,支持绑定已有或者自定义的新标签,每个组件最多可绑定10个标签。
    • 标签输入框支持创建新的标签和删除已有标签,单个空间最多可创建200个标签。
      • 创建标签:输入框中输入标签名称并回车即可创建该标签。
        图2 创建标签
      • 删除标签:下拉框单击指定标签的“X”号,单击“确认”,即可删除标签。
        图3 删除标签
        注意:

        如果已有组件绑定该标签,删除操作会同步删除该组件与标签的绑定关系,且删除后不可找回,请谨慎操作。

    架构类型

    算法支持的硬件架构类型:

    • ALL:算法支持x86和arm两种架构。
    • X86:算法仅支持x86架构。
    • ARM:算法仅支持arm架构。

    卡类型

    算法包组件在进行部署时,支持的卡类型。

    是否区分架构

    算法包是否区分架构。

    算法包

    上传算法包。

    图4 创建算法包组件
  4. 基础信息设置完成后,参考表2设置属性参数。
    属性参数具备多种功能。例如,在编排静态应用时,通常需要组合多个组件来实现某一功能,不同的组件需要定义清楚输入、输出参数的引用关系,实现数据在不同的组件间流转。
    表2 创建属性参数说明

    参数名称

    说明

    英文名称

    参数的英文名称。

    中文名称

    参数的中文名称。

    参数类型

    • 入参:在编排应用时,该节点的入参,支持三种方式,包括:界面填写、其他组件节点的输出参数作为当前节点的入参、画布参数传入。
    • 出参:表示执行组件后生成的结果,出参可以被其他组件节点使用。
    • 流式出参:nlp等场景下支持流式出参,支持出参以流式方式展示,使用时组件应该仅包含一个流式出参,并且不包含其他出参。
    • 环境变量:在组件运行时可用的全局变量,可以用环境变量存储一些共享的配置信息。例如应用需要从数据库中获取待处理的数据,可以用环境变量存储数据库的位置信息、账密信息、API密钥等。

    数据类型

    组件参数的数值类型。

    业务类型

    参数的业务类型。非必填参数,默认为空,支持模型和模型服务两种类型。

    模型:用于在静态应用界通过“选择模型”,自动填充所选模型的obs地址;

    模型服务:用于在静态应用界通过“选择服务”,自动填充所选模型服务的访问地址,实现组件服务调用所选模型服务。

    父参数

    父参数通常用于配置复杂的结构体,可以使用一个已经添加的数据参数作为这个结构的父参数,即父参数必须是一个已经定义的组件参数。

    配置复杂结构体使用,父参数只能是已经添加的数据类型为对象的组件参数。

    默认值

    参数的默认值。

    有效值

    参数可以接受的合法取值范围。举例:整数:[0,10],浮点数:[0.1,10.1],枚举:A|B|C。

    是否必填

    该参数是否为必填参数。

    是否敏感

    设置参数是否为敏感参数,敏感参数将不允许在画布中填入,只能通过画布参数传入。

    是否为数组

    该参数是否为数组类型。如果一个参数是数组类型,意味着它可以包含多个值。例如,一个名为“标签”的参数可以是一个字符串数组,其中包含多个标签名称。如果参数不是数组类型,那么它只能接受单个值。

  5. 参数填写完成后,单击“立即创建”。
  6. 组件创建完成后,在算法包列表页面,单击操作列“编辑”可以对中文名称、参数、算法包等进行修改更新。其中,组件参数支持批量导入功能。如果一个组件参数比较多,并且这些参数在其他组件中已经创建,可以通过复制参数代码,并在需要导入参数的组件中通过“导入参数”功能填入代码,从而实现参数的批量导入。
    图5 查看参数代码
    图6 导入参数
  7. 组件开发完成后,单击“保存并生效”后,该组件可用于部署算法包组件创建静态应用中使用。
  8. 在组件列表页面,可基于名称、标签、行业对组件进行筛选。
    图7 组件列表

相关文档