我使用Apache Kafka作为可扩展的中枢神经系统,为混合机器学习基础架构构建了一个方案。 公共云用于以极端规模训练分析模型(例如,通过Google ML Engine在Google Cloud Platform(GCP)上使用TensorFlow和TPU。预测(即模型推断)在本地Kafka基础架构的边缘执行)(例如,利用Kafka Streams或KSQL进行流分析。
这篇文章重点介绍本地部署。 我创建了一个带有KSQL UDF的Github项目,用于传感器分析 。 它利用KSQL的新API功能,使用Java轻松构建UDF / UDAF函数,以对传入事件进行连续流处理。
用例:联网汽车–使用深度学习的实时流分析
从连接的设备(在此示例中为汽车传感器)连续处理数百万个事件:
为此,我建立了不同的分析模型。 他们使用TensorFlow,H2O和Google ML Engine在公共云上进行了培训。 模型创建不是本示例的重点。 最终模型已经准备就绪,可以投入生产,并且可以部署用于实时进行预测。
可以通过模型服务器完成模型服务,也可以将模型本机嵌入到流处理应用程序中。 有关模型部署的信息,请参见RPC与流处理之间的权衡取舍,以及此处的“ TensorFlow + gRPC + Kafka流”示例 。
演示:使用MQTT,Kafka和KSQL在边缘进行模型推理
Github项目生成汽车传感器数据,并通过Confluent MQTT代理将其转发到Kafka集群,以进行KSQL处理和实时分析 。
该项目致力于通过MQTT将数据吸收到Kafka中以及通过KSQL处理数据:
Confluent MQTT代理的一个巨大好处是无需使用MQTT代理即可轻松实现IoT场景。 您可以通过MQTT代理将消息直接从MQTT设备转发到Kafka。 这大大减少了工作量和成本。 如果您只是想在Kafka和MQTT设备之间进行通信,那么这是一个完美的解决方案。
如果您想看故事的另一部分(与Elasticsearch / Grafana之类的接收器应用程序集成),请查看Github项目“ 用于传输IoT数据的KSQL ”。 这样可以通过Kafka Connect和Elastic连接器实现与ElasticSearch和Grafana的集成。
KSQL UDF –源代码
开发UDF非常容易。 只需在UDF类中的一个Java方法中实现该函数:
@Udf(description = "apply analytic model to sensor input")
public String anomaly(String sensorinput){ "YOUR LOGIC" }
这是异常检测KSQL UDF的完整源代码。
如何使用Apache Kafka和MQTT代理运行演示?
Github项目中描述了执行演示的所有步骤。
您只需要安装Confluent Platform ,然后按照以下步骤来部署UDF,创建MQTT事件并利用分析模型通过KSQL处理它们 。
我使用Mosquitto生成MQTT消息 。 当然,您也可以使用任何其他MQTT客户端。 这是开放和标准化协议的巨大好处。
适用于Apache Kafka和机器学习的混合云架构
如果您想了解有关可伸缩的,与供应商无关的机器学习基础架构背后的概念的更多信息,请查看我在Slideshare上的演示,或观看相应的Confluent网络研讨会“ 在云中释放Apache Kafka和TensorFlow ”的记录。
从KaiWähner 在云中释放Apache Kafka和TensorFlow
请分享任何反馈! 你喜欢还是不喜欢? 还有其他想法吗?
翻译自: https://www.javacodegeeks.com/2018/08/deep-learning-ksql-udf.html