写点什么

新能源当道,如何构建一个电动汽车电池告警预测平台?

  • 2021 年 12 月 23 日
  • 本文字数:5483 字

    阅读完需:约 18 分钟

新能源当道,如何构建一个电动汽车电池告警预测平台?


简介


近年来,我国新能源汽车行业呈现蓬勃发展的态势。主机厂已经收集了大量的电动车的车联网数据,包括三大类(静态车辆数据、实时处理数据和实时车辆告警数据)160 多项数据。主机厂希望从这些数据中得到报警的统计和分析,并且希望延伸到报警的预测,可以及时召回可能发生故障的车辆或者主动推送更新软件到车端进行修复,降低电池事故造成的损失,提升客户的满意度。


本篇介绍了如何利用 Amazon Web Services 的服务组件快速搭建电动车电池告警预测平台,包括存储海量测试数据,构建基于 XGBoost 分类算法的电池故障报警预测模型,推理预测数据以及可视化的数据展示。


代码仓库


https://github.com/aws-samples/aws-bev-bms-battery-consistency-bias-alarm-prediction


架构概述



该解决方案是基于数据驱动来对电池单体一致性偏差报警事件进行预测,借助于 Amazon SageMaker,您可以快速便捷地构建自己的机器学习模型(如 XGBoost,递归神经网络等),并完成模型训练,模型推理。该解决方案中使用 Amazon DynamoDB 和 Amazon S3 来存储预测事件的输入和推理结果。当您部署完该解决方案后,在 SageMaker Notebook 中会预置一个基于 XGBoost 二分类的机器学习模型脚本(xgboost_beginner.ipynb)以及样例数据(series_samples.csv),运行该机器学习脚本可以实现预测模型的快速构建和自动部署。本解决方案支持的推理事件有两种方式:其一为用户直接使用 POST 请求携带输入特征数据获取推理结果,该方式是基于 Amazon API Gateway 和 Lambda 实现;其二为用户上传收集到的批量电池数据(可以来源于您 on-premise 数据库,或实时车辆网收集到的电池数据)至 Amazon S3 桶,数据上传事件会自动触发 Lambda 进行推理。所有的 POST 请求推理和 S3 上传事件触发的推理均可以通过 Apache Superset 进行可视化,它是由 Fargate 进行承载,方便您实时查看具体的电池单体一致性偏差报警事件。架构图中各个组件之间的关系用连接箭头表示,其具体含义分别为:


  1. 主机厂或电池厂商将采集的电池数据上传至 S3 桶中,用于模型建模和训练;

  2. SageMaker Notebook Instance 获取电池数据;

  3. 在 SageMaker Notebook Instance 中完成模型建模,训练和部署,部署后的 Inference Model 是一个 Runtime Endpoint,它用来提供预测推理服务;

  4. 应用场景一:车辆网上传的数据推送到的 S3 桶,S3 桶中新增加的 Batch 数据即为需要推理的数据;

  5. 应用场景一:新增加的 Batch 数据自动调用 Lambda 进行转发请求;

  6. 应用场景一:Lambda 调用 SageMaker Runtime Endpoint 进行前向推理;

  7. 应用场景一:前向推理的结果写入到 Dynamo DB 进行存储;

  8. 应用场景一:前向推理的结果写入到 S3 进行存储(供 Superset 可视化);

  9. 应用场景二:用户调用 API 进行前向预测推理,用户采用 POST 调用;

  10. 应用场景二:API Gateway 将请求路由到 Lambda 函数;

  11. 应用场景二:Lambda 调用 SageMaker Runtime Endpoint 进行前向推理;

  12. 应用场景二:前向推理的结果写入到 Dynamo DB 进行存储;

  13. 应用场景二:前向推理的结果写入到 S3 进行存储(供 Superset 可视化);

  14. Superset 后台部署在 Fargate Service, 基于 SQL 数据查询访问实时推理结果的数据;

  15. Amazon Athena 从 Glue Data Catalog 中的数据库和表中查询数据;

  16. Glue Data Catalog 的表格 Schema 是对预测结果 S3 桶中记录的定义。


解决方案部署


部署可以在北京区、宁夏区、美东一区进行,若在国内部署需要开通 ICP Exception。可以直接基于 Cloudformation 部署,cloudformation 的模板下载链接进行,创建堆栈时参数保持默认值即可。


美东一区:

https://aws-gcr-solutions.s3.amazonaws.com/Amazon-bev-bms-battery-consistency-bias-alarm-prediction/latest/AwsBevBmsBatteryConsistencyBiasAlarmPredictionStack.template


中国区(宁夏/北京):

https://aws-gcr-solutions.s3.cn-north-1.amazonaws.com.cn/Amazon-bev-bms-battery-consistency-bias-alarm-prediction/latest/AwsBevBmsBatteryConsistencyBiasAlarmPredictionStack.template


数据分析/模型训练/模型部署


在解决方案部署完成之后,在 SageMaker 控制台中会创建一个笔记本实例。内置 XGBoost 的脚本和电池样例数据集,用户在真实使用场景中可以基于自身的电池数据集来进行模型构建,训练和部署。


打开 SageMaker 控制台,可以看到部署之后预置的笔记本实例:



点击 [打开 Jupyter],进入界面如下:



打开 xgboost_beginner.ipynb,依次执行每一个代码块,便可以逐步进行数据加载,各维度数据分析与可视化,数据集划分,XGBoost 分类模型构建与训练,模型自动部署,模型性能测试等一系列操作。


样例数据集中包含了“车架号 VIN”,“采集时间 Date”,“总电压(V)”,“总电流(A)”,“电池单体电压最高值(V)”,“电池单体电压最低值(V)”, “最高温度值(℃)”, “最低温度值(℃)” 信息。最后一列的 Label 表征数据在该天是否发生了电池单体一致性差报警,0 表示没有报警,1 表示发生报警。在 xgboost_beginner.ipynb 脚本中,选取历史 14 天的样本并聚合在一起形成一个 14*6 维度的特征向量,基于该向量预测未来 14 天内是否出现电池一致性差报警,此问题被抽象成一个二分类问题。


在构建模型输入数据集时,首先将历史特征聚合成一个大的向量,并将未来 14 天内的电池一致性报警标签进行聚合,举例说明:对于第 x 天而言,第 x-14 天(含)到第 x-1 天(含)这共计 14 天的特征(维度为 6)聚合成一个 84 维度的特征向量;若第 x 天(含)到第 x+13 天(含)这未来 14 天出现电池单体一致性报警,则该特征向量对应的分类标签为 1;反之为 0。通过滑窗操作对所有数据执行上述操作,提取所有的样本,再按照 4:1 划分为训练集和验证集。


完成模型训练后可以看到训练迭代过程中的 error (loss)逐步收敛,如下图所示:



模型部署需要 5 分钟左右,保持脚本中的 sm_endpoint_name 参数不变即可,在解决方案中 lambda 函数会以此名调用 Sagemaker endpoint:



在 XGBoost 模型部署完成之后在 SageMaker 终端节点中会出现如下处于“InService”状态的推理节点。



继续执行 xgboost_beginner.ipynb 的代码块,可以对电池故障报警分类算法的性能作出评估,采用的性能指标包括:

  • 真阳(True Positive): 实际上是正例的数据被分类为正例

  • 假阳(False Positive): 实际上是反例的数据被分类为正例

  • 真阴(True Negative): 实际上是反例的数据被分类为反例

  • 假阴(False Negative): 实际上是正例的数据被分类为反例

  • 召回率(Recall): Recall = TPR = TP / (TP + FN), 衡量的数据集中所有的正样本被模型区分出来的比例

  • 精确率(Persion): Persion = TP / (TP + FP), 衡量的模型区分出来的正样本中真正为正样本的比例

  • 假阳率(False Positive Rate, FPR): FPR = FP / (FP + TN), 衡量的是 被错分的反例 在所有反例样本中的占比


基于不同分类阈值绘制出 ROC 曲线(FPR-TPR),当选择的阈值越小,其 TPR 越大,FPR 越大;ROC 曲线下的面积约接近 1.0 说明模型越优。下图为示例数据训练后在验证集上的性能呈现。



基于 POST 请求调用触发推理


在 SageMaker 推理节点部署成功后,你可以通过 HTTP POST 请求来调用电池预测推理服务,POST 数据中携带特征数据,在该解决方案中以 14 天数据为特征,每一天包含“总电压(V)”,“总电流(A)”,“电池单体电压最高值(V)”,“电池单体电压最低值(V)”, “最高温度值(℃)”, “最低温度值(℃)”这六个维度的特征,共计 84 维数据,POST 请求地址为 cloudformation 部署诚征的 API Gateway 地址后加上“inference”路由。基于 curl 调用示意如下所示:


curl --location --request POST 'https://<your_api_gateway_route_address> /inference' \--header 'Content-Type: text/csv' \--data-raw '{    "vin": "1DS7KPXR9HJU3MB6L",    "date": "2018-02-11",    "features": "3.384580459770114658e+02,8.701149425287356687e-01,3.532045977011495363e+00,3.516270114942528391e+00,2.154597701149425149e+01,1.897701149425287426e+01,3.398913612565444851e+02,-6.835078534031412412e-01,3.543062827225131439e+00,3.532743455497382445e+00,2.099476439790576165e+01,1.978534031413612482e+01,3.402831125827814844e+02,-5.124999999999998446e-01,3.547005794701986403e+00,3.537400662251656058e+00,2.720033112582781953e+01,2.516390728476821081e+01,3.407290270270270298e+02,-8.411351351351350480e-01,3.551178918918919791e+00,3.541806486486486882e+00,2.770324324324324650e+01,2.623675675675676189e+01,3.402226449275361801e+02,-5.949275362318843241e-01,3.546726449275362736e+00,3.536807971014492402e+00,2.436594202898551131e+01,2.247463768115942173e+01,3.403696066746126121e+02,7.842669845053640287e-02,3.548485101311084744e+00,3.537239570917760201e+00,2.264600715137067866e+01,2.049463647199046434e+01,3.404395087001022944e+02,-7.123848515864886211e-02,3.549054247697031705e+00,3.538847492323438981e+00,2.271340839303992354e+01,2.069907881269192274e+01,3.408940234791888315e+02,-3.463180362860191486e-01,3.553680896478121021e+00,3.543157950907150688e+00,2.316648879402347916e+01,2.132337246531483643e+01,3.408360576923076906e+02,1.437499999999999889e-01,3.552947115384615273e+00,3.542481971153845777e+00,2.368870192307692690e+01,2.163942307692308020e+01,3.407270958083831829e+02,-7.137724550898206788e-01,3.552561377245509355e+00,3.539895209580837587e+00,2.052095808383233688e+01,1.858532934131736170e+01,3.412096446700508068e+02,1.184433164128595624e-02,3.556835025380711723e+00,3.546649746192892749e+00,2.414890016920473670e+01,2.245685279187816974e+01,3.421997359735972850e+02,5.627062706270629100e-01,3.567919471947194943e+00,3.558117491749174466e+00,2.529174917491748786e+01,2.353729372937293363e+01,3.405827586206896171e+02,-5.479623824451408387e-01,3.549921630094044378e+00,3.538965517241378755e+00,2.196238244514106697e+01,2.023824451410658654e+01,3.414845094664372027e+02,-1.037693631669534877e+00,3.560283993115317625e+00,3.548870912220310370e+00,2.196385542168674831e+01,1.999311531841652467e+01"}'
复制代码


基于 S3 桶批量数据上传触发推理


此解决方案还支持批量数据预测,测试数据可以从下方地址下载:

https://github.com/aws-samples/aws-bev-bms-battery-consistency-bias-alarm-prediction/blob/main/source/sagemaker/sample-data/test_batch_samples.csv


将此数据上传至部署账户中名为 bev-bms-infer-<region_name>-<account_id>的 S3 桶中(该桶在部署时已经自动创建),数据上传事件会自动触发推理。



推理结果会实时写入到 DynamoDB 数据表中,如下所示:



Apache Superset 配置


此解决方案基于 Apache Superset 来对预测的电池单体一致性偏差报警事件进行可视化,首先打开 Cloudformation 部署成功后的输出链接,如下所示:



登录用户名和密码均为 admin.

点击[Source]à[Databases],如下图所示:



点击右上角+号,创建 Database,如下图所示:



添加 Database,Database 处输入“demo”,  SQLAlchemy URI 处输入:

“awsathena+rest://@athena.< region_name>.amazonaws.com.cn/default?s3_staging_dir=s3://bev-bms-events-<region_name> -<account_id >/query”

输入完成后可以点击[TEST CONNECTION]测试连通性,确认可以与 Amazon Athena 相连通。



滚动到最下面,点击[Save],出现如下界面:



推理事件可视化


点击 Superset 页面顶端导航栏[SQL Lab]à[SQL Editor],左侧依次选择 Database, Schema, Table, 在 SQL 查询输入栏中输入查询语句,如:


SELECT "request_id",       "vin",       "date",       "predicted_prob",       "total_voltage_1",       "total_current_1",       "cell_max_voltage_1",       "cell_min_voltage_1",       "max_temperature_1",       "min_temperature_1"FROM "battery-consistency-bias-alarm-prediction-glue-database"."battery-consistency-bias-alarm-prediction-events"LIMIT 100
复制代码


查询结果如下图所示:



点击上图中的 [EXPLORE],选择排序方式为根据预测报警概率从高到低排序,如下图所示,可以清晰地看到推理结果中电池单体一致性偏差报警概率高的车辆 VIN 码,日期等信息。



用户可以编写其他 SQL 语句来查询数据库表中的推理事件,如针对某一辆车,某个日期进行查询,等等。


总结


此解决方案提供了在亚马逊云上构建电动汽车电池单体一致性偏差预测解决方案,并提供 REST API 调用推理和批量数据推理功能,最后还支持使用 Apache Superset 进行推理结果可视化呈现。该解决方案适用于主机厂(OEM)或电池供应商来对电动汽车的电池健康情况进行监测和预测,同时适用于具有自主开发需求的 OEM 或电池供应商,可以基于该解决方案来自行开发算法模型,实现快速生产部署。


本篇作者

徐高伟

亚马逊云科技解决方案架构师

负责基于亚马逊云科技的云计算方案的咨询与架构设计,致力于亚马逊云科技云服务在汽车,物联网,人工智能等行业的应用和推广。在加入亚马逊云科技之前曾在 BMW 无人驾驶研发中心担任机器人和人工智能专家,负责无人车环境感知,行为预测和决策规划研发。


曹菱欣

亚马逊云科技汽车行业资深解决方案架构师

超过 20 年 IT 行业工作经验,有售前,实施和研发经验,5 年以上针对客户 PaaS 和 SaaS 方面的项目实施经验。专注于亚马逊云科技云计算在车联网,无人驾驶,汽车生产制造,银行证券等领域的技术咨询和实施。


用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
新能源当道,如何构建一个电动汽车电池告警预测平台?