更新时间:2024-08-29 GMT+08:00
分享

对接华为云ModelArts

背景信息

ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署AI智能模型,管理全周期AI工作流。更多ModelArts的介绍,请参见ModelArts官方网站

在AstroZero中,通过配置ModelArts连接器,可实现AstroZero与华为ModelArts对接,用于图像识别、文字识别等AI(人工智能)场景。

场景描述

对花卉类图片进行识别,识别出具体花卉品种。

前提条件

  • 已获取AK(Access Key ID)、SK(Secret Access Key),即访问密钥对,具体操作请参见获取AK/SK
  • 本场景是对花卉类图片进行识别,请提前在ModelArts上创建并部署上线用于花卉识别的模型,具体操作请参见使用AI Gallery的订阅算法实现花卉识别

创建ModelArts连接器

  1. 参考创建连接器入口中操作,进入创建连接器页面。
  2. 在左侧列表中,选择“AI > ModelArts”,单击“+”。

    图1 创建ModelArts连接器

  3. 设置ModelArts对接参数,单击“保存”。

    图2 创建ModelArts
    • 名称:连接器的名称。
    • 访问密钥ID:与私有访问密钥关联的唯一标识符,访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。配置为前提条件中“AK”的值。
    • 访问密钥:私有访问密钥,与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。配置为前提条件中“SK”的值。
    • 区域:选择对接ModelArts的服务区域。
    • 项目ID:ModelArts服务区域,对应的项目ID。
    • 描述:连接器的描述信息。
    • 打包当前配置:默认为选中,对信息敏感的场景,建议不勾选。

      选中该选项后,应用打包时会将当前配置的连接器信息(包括访问密钥和密钥)一并打出。例如,如果应用包发布到运行环境,当前配置默认会被同步到运行环境中。

  4. 测试是否可识别花卉图片。

    1. 在连接器详情页面,单击“测试”。
    2. 配置测试参数,单击“测试”。
      图3 配置测试参数

      • 选择类型:识别的主体可以是图片或者文本信息。本示例选择“图片文件”,并上传待识别的图片。
        • 图片URL:识别的主体是图片时,可选择“图片URL”并设置图片的URL。
        • 图片文件:识别的主体为图片时,可选择“图片文件”,直接拖入图片文件。
        • 文本信息:识别的主体为文本时,配置为“文本信息”,并填写具体的文本。
      • 模型Apig-Code:用于AstroZero调用ModelArts中,已上线的服务。
        1. 已执行前提条件中操作,即已部署上线用于花卉识别的模型。
        2. 在ModelArts管理控制台左侧菜单栏中,选择“部署上线 > 在线服务”,进入在线服务管理页面。
        3. 单击目标服务名称,进入服务详情页面。
        4. 选择“调用指南”页签,查看“API接口地址”。
          图4所示,该参数值为“API接口地址”中的一串字符串。
          图4 查看“API接口地址”
      • 模型Id:ModelArts管理控制台中,已上线服务的服务ID。
        1. 已执行前提条件中操作,即已部署上线用于花卉识别的模型。
        2. 在ModelArts管理控制台左侧菜单栏中,选择“部署上线 > 在线服务”,进入在线服务管理页面。
        3. 单击目标服务名称,进入服务详情页面。
        4. 查看服务ID值。

      弹出“成功”提示框,说明成功识别花卉图片,测试成功。

      图5 测试成功

在脚本中调用连接器

在脚本中,调用连接器,实现调用ModelArts的接口。

  1. 参考开发一个简单脚本实例中操作,创建一个空白脚本。

    图6 新建空白脚本

  2. 在脚本编辑器中,输入如下代码。

    import * as modelarts from 'modelarts';
    
    export class Input {
        @action.param({ type: "String", required: false, description: "the image url" })
        url: string;
    
        @action.param({ type: "String", required: false, description: "the base64 coded image" })
        image: string;
    
        @action.param({ type: "String", required: false, description: "" })
        apigCode: string
    
        @action.param({ type: "String", required: false, description: "" })
        modelId: string
    }
    
    export class Output {
        @action.param({ type: "string" })
        result: string;
    }
    
    
    export class testModelarts {
    
        @action.method({ input: "Input", output: "Output", description: "modelartspro test case" })
        run(input: Input): void {
            // 填写实例化的modelartspro连接器名称
            let client = modelarts.newClient("testArts")
            let result = null
            result = client.modelArtsWithURL(input.url, input.apigCode, input.modelId);
            console.log(result)
            return result
        }
    }
    

    其中,代码modelarts.newClient("testArts")中“testArts”为连接器的名称。如果连接器名称中带有命名空间前缀,代码中也需要携带。

  3. 单击脚本编辑器页面上方的,保存脚本。
  4. 保存成功后,单击,运行脚本。
  5. 在页面底部“输入参数”中,设置输入请求参数,单击测试窗口右上角的

    {
        "url": "https://XXXXXXXXX/testmodelarts.jpg",
        "apigCode": "bec274062225485b95fbcd4d6e8f128a",
        "modelId": "5ecac550-eefe-4437-9767-57eca07fa91f"
    }

    其中,“url”请设置为图片的URL。

  6. 在输出参数页签,可查看到识别的结果。

    {
        "predicted_label": "roses",
        "scores": [
            [
                "roses",
                "0.947"
            ],
            [
                "daisy",
                "0.050"
            ],
            [
                "tulips",
                "0.002"
            ],
            [
                "dandelion",
                "0.000"
            ],
            [
                "sunflowers",
                "0.000"
            ]
        ]
    }

  7. 单击脚本编辑器页面上方的,启用脚本。

在服务编排中调用连接器

在服务编排中,调用连接器,实现与ModelArts的对接。

  1. 参考如何开发服务编排中操作,创建一个空白服务编排。

    图7 添加服务编排

  2. 创建该服务编排的入参和出参变量。

    由于该服务编排调用的是ModelArts服务接口,需要定义该服务编排的入参和出参,与接口的入参和出参类型保持一致。
    表1 服务编排变量

    变量类型

    参数名

    参数类型

    Input/Output Type

    说明

    普通变量

    image

    文本

    Input Only

    图像数据,base64编码。

    普通变量

    apigCode

    文本

    Input Only

    模型Apig-Code。

    普通变量

    modelID

    文本

    Input Only

    模型Id。

    普通变量

    result

    任意

    Output Only

    输出的查询结果。

    普通变量

    error

    文本

    Output Only

    报错时的错误信息。

    1. 在服务编排设计页面右侧,选择
    2. 在全局上下文页面,单击“变量”后的加号。
      图8 创建变量
    3. 修改变量名为“image”。
      图9 设置变量
    4. 新增表1中其他变量,单击开始图元,在右侧设置整个服务编排的入参、出参。
      图10 设置入参、出参

  3. 在服务编排设计页面左侧,选择“连接器 > AI”,拖拽“ModelArts”图元至画布中。

    ModelArts是系统预置的,与ModelArts对接的接口。

    图11 拖拽ModelArts图元至画布中

  4. 选中ModelArts图元,在右侧单击,选择已创建的连接器“testArts”。
  5. 单击,设置动作参数。

    图12 设置动作参数
    • 动作:调用的ModelArts的具体接口。本示例选择“modelarts_with_image”。
      • modelarts_with_url:根据图片URL识别图片。
      • modelarts_with_image:根据图片文件识别图片。
      • modelarts_with_text:根据文本信息识别文本。
    • 输入参数:调用接口的输入参数。在“目标”中选择参数,在“源”中拖入全局上下文中的对应变量。
    • 输出参数:调用接口的输出参数。
      • “源”中选择“result”,“目标”中拖入全局上下文中的“result”,用于接收调用结果。
      • “源”中选择“error”,“目标”中拖入全局上下文中的“error”,用于接收错误信息。

  6. 连接开始和ModelArts图元。

    图13 连接图元

  7. 单击页面上方的,保存服务编排。
  8. 保存成功后,单击,运行服务编排。
  9. 设置输入参数后,单击“运行”

    {
        "image": "https://XXXXXXXX/testmodelarts.jpg",
        "apigCode": "bec274062225485b95fbcd4d6e8f128a",
        "modelID": "5ecac550-eefe-4437-9767-57eca07fa91f"
    }

    其中,“image”为图片的URL。若输出识别结果,表示成功调用连接器。

    图14 输出结果

  10. 单击编辑器上方的,启用服务编排。

相关文档