flink-china / flink-forward-asia-hackathon-2021

本 GitHub 项目是 Flink Forward Asia Hackathon (2021) 的投票专用项目。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[参赛项目] 基于Flink + Pravega的农作物产量预测监控与模拟复盘系统

suna5 opened this issue · comments

commented

项目简述

基于Flink + Pravega的产量预测监控与模拟复盘系统,用科技为生产保驾护航

背景

目前,实时计算在生产实践中的主要应用场景在对象识别和检测。然而**是农业大国,对农业生产而言,利用作物阶段性生长图片、气候环境因素(例如温室温度与湿度),对作物产量进行预测与监控,对农业生产的意义十分重大。

农业生产的特点是,环境因素复杂多变。在作物生长的第一个月做出的产量预测,在一段时间后,因为环境因素的变化,产量可能不同。所以在作物的整个生长周期里,都需要对产量预测的结果进行监控。这给实时流式计算提出了一个新的场景模型,针对源源不断且不停变化的流式输入数据,用同一模型持续不断地计算并获取同一输出。通过对不同时间点同一输出的监控,实时检测不同时期输入数据的异常。

image
图1. 产量预测系统

如图1所示,对于每天产生的作物生长图片以及温度+湿度数据,农业生产可以定期根据前一段时间产生的数据,预测产量并监控结果,从而达到检测植物生长情况的目的。示例中,从11/30号开始预测产量发生下降,那么很容易可以发现,在之前的一个月内,某一因素的变化导致了产量的下降。

所以通过这种流式计算模型对作物生产情况的监控,可以快速发现可能存在的潜在问题,并实时报警通知人工干预。

问题是,进行怎样的人工干预才能恢复产量呢?农业生产的另一特点是,生产周期长。在现实生产中,通过调整湿度温度重新种植比对查找问题的周期太长,但是调整输入数据重新进行模拟计算的时间开销很小。

这就是我们方案的关键部分,利用流式存储的历史数据回退读取功能,实现模拟复盘系统。

image
图2. 产量预测模拟复盘系统

如图2所示,当发现11/30产量下降之后,我们可以通过调整输入数据找出问题所在。比如,回退到11/30数据点增加温度重新计算。如果产量检测结果正常,就说明温度变化对产量发生了影响。在后续的作物生产中需要重新调节温度。又或者重新计算的检测结果依然很差,也可以通过继续调整其他因素,迭代找出问题点。

这也是新型流式场景模型的另一特点,对流式历史数据的实时性计算要求。即在任何需要的当前时间点上,回退到任一历史时间点,通过重放实时数据进行计算,得到校正后的实时计算结果。技术难点从实时计算的低延时,迁移到流式历史数据的长期存储以及回退读写的高吞吐要求上。

目标

为IoT场景下的生产实践提供产量预测监控与模拟复盘系统。构建IoT场景中整个生产周期过程中预测监控与模拟复盘的基础框架,降低AI和流式计算在现实生产场景中的使用门槛。具体目标包括:

  1. 利用Pravega sensor collector和Gstreamer Pravega connector让IOT场景下sensor和camera产生的流式数据收集与存储更简单高效
  2. 利用Flink实时计算引擎以及Flink Pravega Connector在数据收集最前端(Midro-Edge)进行实时数据清洗与蒸馏等预处理
  3. 利用Flink对不同数据(蒸馏数据与原始数据)进行清晰的流式管理,便于用户进行灵活取用
  4. 利用Flink Checkpoint、以及Pravega历史数据存储与高性能回放读取功能,实现历史流式数据的回放与实时计算的重置

实施方案

完整的技术解决方案应包含以下4大模块:数据收集、实时数据预处理、预测计算、监控与复盘操作界面与管理。

image
图3. 实施方案架构图

《数据收集》

Pravega对于IoT场景尤其是video analysis场景有丰富的产品支持。方案利用以下两大功能模块分别收集camera视频与sensor数据

  1. Pravega Gstreamer Plugin: https://github.com/pravega/gstreamer-pravega
  2. Pravega Sensor Collector: https://github.com/pravega/pravega-sensor-collector
    (参考:https://cncf.pravega.io/blog/2021/03/23/data-flow-from-sensors-to-the-edge-and-the-cloud-using-pravega)

《实时数据预处理》

Flink利用Pravega Flink Connector从原始数据流读取数据并进行数据清洗与蒸馏,通过PEM-based DD(Data Distillation)算法,在数据蒸馏的同时,即减少数据容量又不影响AI模型计算的准确性。

image
图4. PEM-based Data Distillation

利用这层实时预处理,区分原始短期流数据与预处理后长期流数据,达到节省存储空间的目的。

对于数据复盘需求的回放重算,可以通过在该环节增加算子达到数据调整的目的。比如图2 中将温度数据增加5。

《预测计算》

用户导入农业领域事先训练好的相关模型。本实例中,算法包含Recurrent CNN和Mask RCNN。一旦可靠模型训练好,用户通过管理界面上传或更新AI模型。上传成功后,预测工作的Flink Job利用Pravega Flink Connector同时从两数据源读入数据,利用模型计算结果,最终写入Result Stream。

此方案依赖AI模型的准确性。对原始数据进行蒸馏预处理后,在该阶段可以用更低的时延处理更大量的图片,解决AI计算中的concept drift的问题。

每一个预测结果都包含这批数据里所有Pravega源数据流最早的Pravega checkpoint,以便在后续需要对某一预测结果进行复盘重算时,从保存的checkpoint点重新读取数据。

实现既可以利用已有BI工具生态,比如Tableau + Presto + Pravega Presto Connector的方式进行BI分析,也可以自定义实现Dashboard。

《Hackathon方案范畴》

完整方案应当包含Management模块和GUI dashboard模块。这块涉及用户体验并对达到“降低AI和流式计算在现实生产场景中的使用门槛”至关重要。

但对于本次Hackathon,方案仅包含核心技术验证,即“预测计算“部分。

成员介绍

神农团队,团队成员来自戴尔科技集团的流式存储部门、对象存储部门和CTO研究院

阿里云天池昵称:大同小艺,sunao-881372,z290906377

请问该项目公开源码吗