首页 > 其他分享 >物联网中的预测分析:当IoTDA遇上ModelArts

物联网中的预测分析:当IoTDA遇上ModelArts

时间:2024-04-09 15:25:21浏览次数:27  
标签:单击 ModelArts 创建 IoTDA 转发 FunctionGraph 数据 遇上

本文分享自华为云社区《最佳实践:华为云IoTDA结合ModelArts实现预测分析》,作者:华为IoT云服务。

场景说明

在物联网解决方案中,针对庞大的数据进行自动学习时,需要对海量数据进行标注、训练,按照传统的方式进行标注、训练不仅耗时耗力,而且对资源消耗也是非常庞大的。华为云物联网平台可以通过规则引擎,将数据转发到华为云其他云服务,可实现将海量数据通过函数工作流(FunctionGraph)进行处理,再将数据流入AI开发平台(ModelArts)进行AI分析,并将分析结果统一转发至HTTP服务器中。

图1 场景说明

cke_181.png

在本示例中,我们实现以下场景:

设备上报银行客户特征信息,物联网平台将数据转发至FunctionGraph,由FunctionGraph转发至ModelArts进行AI分析,最终将分析的结果转发至HTTP服务器中。

整体流程

  1. 创建并发布ModelArts模型。
  2. 创建FunctionGraph函数。
  3. 构建一个HTTP服务器。
  4. 创建MQTT协议产品,并创建设备。
  5. 创建流转规则,将数据流转至FunctionGraph。
  6. 查看HTTP服务器是否收到AI分析后的消息。

前提条件

  • 已注册华为官方帐号。未注册可参考注册华为账户完成注册。
  • 已完成实名制认证。未完成可在华为云上单击实名认证完成认证,否则会影响后续云服务的开通。
  • 已开通设备接入服务。未开通则访问设备接入服务,单击“免费试用”或单击“价格计算器”购买并开通该服务。
  • 已开通FunctionGraph服务。未开通则访问FunctionGraph服务,单击“立即使用”后开通该服务。
  • 已开通ModelArts服务。未开通则访问AI开发平台,单击“控制台”后进入该服务。
  • 自建一个HTTP服务器,并提供POST接口用来接收推送的数据(本示例默认已经提供好相应的服务器与接口,不再展示如何搭建HTTP服务器指导)。

配置ModelArts模型

1.下载ModelArts-Lab工程,在\ModelArts-Lab-master\official_examples\Using_ModelArts_to_Create_a_Bank_Marketing_Application\data”目录下获取训练数据文件“train.csv”。该训练数据主要展示银行中的一种常见业务:根据客户特征(年龄、工作类型、婚姻状况、文化程度、是否有房贷和是否有个人贷款),预测客户是否愿意办理定期存款业务。

2.可将训练数据存放在OBS中,供创建数据集使用。进入OBS控制台,选则一个桶,然后单击“上传对象”。若没有桶,可以单击右上角“创建桶”创建一个新的桶。

图2 上传训练数据

cke_182.png

3.登录华为云官方网站,访问AI开发平台,单击“控制台”,进入ModelArts服务。

4.选择左侧导航栏“自动学习>前往新版>创建项目”,进入创建预测分析界面。

图3 预测分析

cke_183.png

5.选择数据集、标签列(数据中预测结果的列,本示例中为str7),若没有数据集,可以单击“创建数据集”进行创建。

图4 创建预测分析

cke_184.png

图5 创建数据集

cke_185.png

6.当执行到服务部署时,选择资源池、AI应用及版本,单击“继续运行”。

图6 服务部署

cke_186.png

7.等部署完成之后,选择左侧导航栏“部署上线 > 在线服务”,进入在线服务页面中选择部署的服务, 单击“修改”,进入修改服务页面,打开APP认证进行授权配置,完成后单击“下一步”并提交。

图7 授权

cke_187.png

8.单击“部署上线>在线服务”,点击进入已部署的服务,选择“预测”,复制以下数据到预测代码中后,单击“预测”后可查看返回结果,结果中的predict为no则表示用户不会办理存款。

{
  "data": 
  {
    "count": 1,
    "req_data": 
    [
      {
        "str1": "34",
        "str2": "blue-collar",
        "str3": "single",
        "str4": "tertiary",
        "str5": "no",
        "str6": "no"
      }
    ]
  }
}

图8 预测

cke_188.png

9.更多详细关于Modelarts的说明可以参考ModelArts相关文档

配置FunctionGraph函数

1.参考数据转发至FunctionGraph函数工作流进行函数工作流配置。本示例中由于需要使用ModelArts相关配置参数,可按照如下方式,在代码中添加配置项并访问ModelArts预测接口,body体结构参考8

//2.获取ModelArts预测链接. 用来拼装请求URL
String forecastServerAddress = context.getUserData(FORECAST_SERVER_ADDRESS);
log.log("forecastServerAddress: " + forecastServerAddress);
//3.获取ModelArts中的AK/APP_KEY
String ak = context.getUserData(ACCESS_KEY);
//4.获取ModelArts中的SK/APP_SECRET
String sk = context.getUserData(ACCESS_SECRET);

Request request = new Request();
request.setUrl(forecastServerAddress);
request.setMethod(HttpMethodName.POST.name());
request.setAppKey(ak);
request.setAppSecrect(sk);
request.addHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
request.setBody(body);
Signer signer = new Signer();
signer.sign(request);

Map<String, String> headers = request.getHeaders();
HttpPost httpPost = new HttpPost(url);
headers.forEach(httpPost::setHeader);
httpPost.setEntity(new StringEntity(body, ContentType.APPLICATION_JSON));
CloseableHttpResponse response = null;
try {
    response = httpClient.execute(httpPost);
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        String content = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
        IoTDAModelArtsDemo.log.log("response content is: + " + content);
        return content;
    }
    String errContent = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
    IoTDAModelArtsDemo.log.log("response err content is: + " + errContent);
    return errContent;
} finally {
    if (response != null) {
        response.close();
    }
}

2.在函数工作流中,单击“设置>环境变量”,环境变量信息如下。

表1 环境变量说明

环境变量

说明

FORECAST_SERVER_ADDRESS

访问ModelArts服务,单击“部署上线>在线服务”,进入部署服务后单击“调用指南”,选择支持App认证方式的API接口公网地址。

ACCESS_KEY

同上,选择AppKey。

ACCESS_SECRET

同上,选择AppSecret。

NA_MOCK_SERVER_ADDRESS

将预测结果推送至服务器的地址(本示例不再提供HTTP服务器搭建指导)。

图9 设置环境变量

cke_189.png

图10 查看预测接口信息

cke_190.png

3.单击“代码>配置测试事件>创建新的测试事件>空白模板”。内容示例如下:

{
    "resource": "device.message",
    "event": "report",
    "event_time": "20231227T082702Z",
    "event_time_ms": "2023-12-27T08:27:02.944Z",
    "request_id": "1d041aa3-29b8-43d3-aae3-3905de130537",
    "notify_data": {
        "header": {
            "app_id": "dc12bf47e95c4723a00f4a007073fc7e",
            "device_id": "658bdb475d3bc3372c99feb9_12345484121",
            "node_id": "12345484121",
            "product_id": "658bdb475d3bc3372c99feb9",
            "gateway_id": "658bdb475d3bc3372c99feb9_12345484121"
        },
        "body": {
            "topic": "$oc/devices/658bdb475d3bc3372c99feb9_12345484121/sys/messages/up",
            "content": {
                "age": "34",
                "profession": "blue-collar",
                "maritalStatus": "single",
                "educationalStatus": "tertiary",
                "realEstateSituation": "no",
                "loanStatus": "tertiary"
            }
        }
    }
}

图11 配置测试事件

cke_191.png

4.配置完测试事件后,单击“测试”,执行结果返回success(以实际函数返回结果为准),则表示成功。配置的HTTP服务器则能收到对应的预测结果。

图12 预测结果

cke_192.png

创建产品和设备

1.访问设备接入服务,单击“管理控制台”进入设备接入控制台。

2.选择左侧导航栏的“产品”,单击“创建产品”,创建一个基于MQTT协议的产品,填写参数后,单击“确定”。

图13 创建产品-MQTT

cke_193.png

3.导入产品模型,请参考导入产品模型

在该产品下注册设备,请参考注册单个设备

说明:本文中使用的产品模型和设备仅为示例,您可以使用自己的产品模型和设备进行操作。

数据转发规则配置

1.选择左侧导航栏的“规则>数据转发”,单击“创建规则”。

2.参考下表参数说明,填写规则内容。以下参数取值仅为示例,您可参考用户指南创建自己的规则,填写完成后单击“创建规则”。

图14 新建消息上报流转规则-数据转发至FunctionGraph

cke_194.png

表2 参数说明

参数名

参数说明

规则名称

自定义,如iotda-functiongraph。

规则描述

自定义,如数据转发至FunctionGraph服务。

数据来源

选择“设备消息”。

触发事件

自动匹配“设备消息上报”。

资源空间

和上一步创建的产品所在的资源空间保持一致。

数据过滤语句

通过编写SQL来解析和处理上报的JSON数据。

3.单击“设置转发目标”页签,单击“添加”,设置转发目标。

图15 新建转发目标-转发至FunctionGraph

cke_195.png

参考下表参数说明,填写转发目标。填写完成后单击“确定”。

表3 参数说明

参数名

参数说明

转发目标

选择“函数工作流(FunctionGraph)”

区域

选择“函数工作流”区域。

目标函数

选择已配置的函数工作流。

4.单击“启动”,激活配置好的数据转发规则。

图16 启动规则-消息上报-转发至FunctionGraph

cke_196.png

模拟数据上报及结果验证

1.使用MQTT模拟器连接到平台(模拟器使用请参考:使用MQTT.fx调测)。

2.使用模拟器进行消息上报,详情请参考:设备消息上报

上报内容如下:

{
    "age": "34",
    "profession": "blue-collar",
    "maritalStatus": "single",
    "educationalStatus": "tertiary",
    "realEstateSituation": "no",
    "loanStatus": "tertiary"
}

3.查看HTTP服务器是否收到预测结果。

图17 查看消息

cke_197.png

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:单击,ModelArts,创建,IoTDA,转发,FunctionGraph,数据,遇上
From: https://www.cnblogs.com/huaweiyun/p/18124026

相关文章

  • [Ad Hoc Networks] 当隐私计算(Privacy Computing)遇上元宇宙(Metaverse)!
     往期热门推送(持续更新中!):[ICASSP2024]CDNMF:一个可信且高效的社区检测(社区发现,图聚类,CommunityDetection)方法-CSDN博客论文链接:https://arxiv.org/abs/2311.02357ContrastiveDeepNonnegativeMatrixFactorizationForCommunityDetection|IEEEConferencePublic......
  • 当@Async注解遇上Spring的循环依赖:一个故障排查之旅
    在Java后端开发中,Spring框架无疑是一个强大的助手,它以简单的方式帮助我们管理依赖项、配置和创建异步任务。然而,即使在这个成熟的框架中,也会有一些坑会让开发者头疼。今天,我们就来聊聊Spring中的一个常见问题——当@Async注解遇上循环依赖时会发生什么。问题的起源一位工......
  • 当梦想遇上现实:一次难忘的需求分析与报价经历
    大家好!今天想跟大家分享一次难忘的项目经历,它让我深刻地体会到,在软件开发领域,需求分析与报价的重要性,以及有效的沟通在项目成功中的关键作用。项目背景最近,我受邀为一家初创公司进行一款新产品的需求分析和报价。这家公司由一群充满热情的年轻人组成,他们希望开发一款行业应......
  • 跟着思兼学习Klipper(29):行空板遇上Klipper之一: 安装Klipper全家桶
    前言原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎交流指正。文章如有更新请访问DFRobot社区及cnblogs博客园,前者内容较全,后者排版及阅读体验更佳。先有三后有一,你说奇怪不奇怪。去年Ash老板问我行空板能否安装使用Klipper全家桶作为3D打印机上位机使用,答案......
  • 当平台工程遇上DevEx:打造卓越的开发者体验
    引言近期在参与编写平台工程系列标准时,我发现开发者体验(DevEx)是一个不可忽视的关键因素,它对于构建一个成功的平台工程起到了重要的作用,DevEx可以称之为平台工程的基础。基于我最近的学习和思考,我决定写这篇文章,想深入探讨一下DevEx对于内部开发平台的重要性,也希望为从事内......
  • 当 OpenTelemetry 遇上阿里云 Prometheus
    作者:逸陵背景在云原生可观测蓬勃发展的当下,想必大家对OpenTelemetry&Prometheus并不是太陌生。OpenTelemetry是CNCF(CloudNativeComputingFoundation)旗下的开源项目,它的目标是在云原生时代成为应用性能监控领域的事实标准,它提供了一套统一的API和SDK,用于生成、收集和处......
  • AI遇上传统文化,文心一言上央视带来跨时空访古体验
    从先秦七子到唐宋八大家,千年前的先贤们为后人留下了弥足珍贵的思想瑰宝。在科技发展飞速的后世,先贤的思想传承方式能否借助科技推陈出新呢?在近期CCTV-10科教频道播出的《寻迹先贤》中,文心一言就通过AI互动的形式,给观众带来了一场现代科技与传统文化融合的精神盛宴。在节目中,文心一......
  • 华为云IOTda平台设备接入D8案例(转)
    BearPi-HM_Nano开发板智能台灯案例开发本示例将演示如何在BearPi-HM_Nano开发板上使用MQTT协议连接华为IoT平台,使用E53_SC1智能台灯扩展板与BearPi-HM_Nano开发板实现智能台灯的案例,设备安装如下图所示。软件设计连接平台在连接平台前需要设置获取CONFIG_APP_DEVICEID、CO......
  • 大模型那么火,教你一键ModelArts玩转开源LlaMA大模型
     本文分享自华为云社区《大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型》,作者:码上开花_Lancer。近日,LlaMA(羊驼)这个大模型再次冲上热搜!LLaMA(LargeLanguageModelMetaAI),由MetaAI发布的一个开放且高效的大型基础语言模型,共有7B、13B、33B、65B(650亿)四种版本。......
  • 大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型
    本文分享自华为云社区《大模型那么火,教你一键Modelarts玩转开源LlaMA(羊驼)大模型》,作者:码上开花_Lancer。近日, LlaMA(羊驼)这个大模型再次冲上热搜!LLaMA(LargeLanguageModelMetaAI),由MetaAI发布的一个开放且高效的大型基础语言模型,共有7B、13B、33B、65B(650亿)四种版本......