发布于: Oct 14, 2022
- 创建一个笔记本实例 windturbine,选择 t2.medium。选择或者创建一个 IAM 角色(IAM Role)
- 其他部分选择默认选项,点击创建(Create)
3.在笔记本创建完成后,打开 Jupyter Lab,上传笔记本 ipynb 到 Jupyter Lab。选择内核为 conda_python3
4.按照代码中的注释要求,替换使用您自己的 S3 bucket/prefix
5.运行 Notebook,进行模型训练和部署
- 训练数据已经包含在代码里面,可以直接下载。
- 数据清洗 (删除 turbine_id 列,按照 XGBoost 的训练数据格式要求,删除表头并且将最后一列的推理结果 breakdown 挪到第一列)
- 按照 7:2:1 比率来拆分训练集,验证集和测试集,并上传到 S3
- 训练模型
- 部署训练好的模型并生成用于推理的 Endpoint,记录好这个值,后续需要在 IoT 规则引擎触发的 Lambda 函数中使用。
1.创建 SNS 通知 Topic,并使用自己的邮箱地址订阅该 Topic,用于接收预测性维护的通知。
2.创建一个 Lambda 函数
(1)名称:windturbine_prediction
(2)运行时:Python 3.8
(3)权限:选择一个 IAM Role 可以使用 IoT,SNS 和 SageMaker Endpoint
(4)内存:128 MB
(5)超时:30s
#修改成自己的 Sagemaker Endpoint Name ENDPOINT_NAME = 'xgboost-2021-03-08-10-43-34-693' #修改成自己的 SNS Topic SNS_TOPIC_ARN = 'arn:aws-cn:sns:cn-northwest-1:account-id:NotifyMe' #修改成自己的手机号 (海外区 SNS 发短信) PHONE_NUMBER = '+8613812345678'
- 在 Amazon IoT 控制台的导航窗格中,选择 Act (行动).
- 在 Rules 页面,选择 Create
- 选择 Create
(3)在设置一个或多个操作中,选择添加操作:发送消息到Lambda函数 (send a message to a Lambda function),选择windturbine_prediction
(4)(可选),错误操作:发送消息给 CloudWatch logs (Send message data to CloudWatch logs): windturbine_prediction
(5)选择 Create rule (创建规则)
- 在 Cloud9 实例上用户的 home 目录中创建 cert 文件夹并上传上面第三步下载保存的 IoT Things 的证书到该文件夹中
- 上传 device_simulator.py 文件到 Cloud9 实例上用户的 home 目录中
- 上传模拟数据 device_data.csv 文件到 Cloud9 实例上用户的 home 目录中
- 根据您的实际配置修改 py 的代码
# 将host修改为自己Amazon Web Services账户的IoT Endpoint host = "a1hk0pcc0as07l.ats.iot.cn-north-1.amazonaws.com.cn" #证书路径修改为自己环境下的证书路径 rootCAPath = "cert/AmazonRootCA1.pem" certificatePath = "cert/windturbine.cert.pem" privateKeyPath = "cert/windturbine.private.key" 5.运行代码 python device_simulator.py device_data.csv
6.当部署的 XGBoost 模型端点预测到设备出现异常时,Lambda 函数更新 IoT 设备影子(Shadows)将设备状态设置为 Off(关闭状态),边缘 IoT 设备收到该状态设置标志,将设备停止,如下图所示:
同时 Lambda 还会触发提醒工作人员进行预测性维护的通知。如下图所示:
您刚刚完成了如何将 IoT 和 Amazon SageMaker 一起使用,对一系列设备执行预测性维护的端到端动手实验,并使用 Lambda 和 SNS 进行警报监控其状态。 我们希望本文有助于您理解如何在 Amazon Web Service 上对 IoT 设备数据进行有效洞察,并为您的特定用例提供一个良好的起点。
相关文章