机器学习和实时分析在ApacheKafka中的应用

本文探讨了在Apache Kafka中部署机器学习模型进行实时分析的两种方法:使用模型服务器通过RPC进行流处理和直接在Kafka应用中嵌入模型。文中以TensorFlow为例,比较了模型服务器(如TensorFlow Serving)与嵌入模型的优缺点,并讨论了Kubernetes在云原生环境中的模型部署。此外,还涵盖了边缘计算环境下的模型部署策略。
摘要由CSDN通过智能技术生成


全文共8336字,预计学习时长24分钟

来源:Pexels

Apache Kafka和机器学习的关系很微妙。

本文旨在讨论建立机器学习框架的一个特定部分:在Kafka应用程序中部署一个分析模型来进行实时预测。

 

模式训练和模型部署可以是两个独立的过程。但是相同的步骤也可应用于数据集成和数据预处理,因为模型训练和模型推导需要呈现同样的数据集成、过滤、充实和聚合。

 

本文将讨论和比较两种模型部署的不同选择:有RPC的服务端模型(RPCs)和本地嵌入Kafka客户端应用的模型。本文的例子特地使用了TensorFlow,但是相关原则对其他机器学习/深度学习框架或者产品同样适用。这些框架和产品包括H2O.ai,Deeplearning4j,谷歌云端机器学习引擎和统计分析系统(SAS)。

 

TensorFlow — 机器学习/深度学习的开源软件库

 

Tensorflow是一个为高效计算打造的开源软件库.它灵活的架构让多个平台(cpu、gpu、TPUs等)间的计算部署变得更加容易,应用范围从桌面到服务器集群再到移动和边缘设备。该软件由谷歌人工智能组织的研发团队研究员和工程师开发,作为机器学习和深度学习的强力支持,Tensorflow应用于多个领域,是一个完整的生态系统而不是一个孤立的元件。

 

鉴于本文聚焦于模型服务,主要对保存和加载模型感兴趣。保存和加载模型就是存储训练模型,并将Tensorflow作为模型服务器。

 

 

存储模型本质上是一个二进制文件,使用协议缓冲区(Protobuf)序列化。接着模型在C,Python,Java等软件中分类数据、加载数据、存储和处理数据。文件格式是可读的文本格式(.pbtxt)或压缩的二进制协议缓冲区(.pb)。图表对象是在TensorFlow中进行计算的基础。权重保存在单独的TensorFlow检查点文件中。

 

由于本文关注的是TensorFlow的模型部署,因此如何预训练模型并不重要。可以利用云端服务和像云端机器学习引擎和其谷歌云端平台(GCP)的集成管线,或者建立自己的模型训练途径。Kafka不但在模型部署方面很重要,在数据集成、数据预处理和数据监控方面也扮演重要角色。

 

使用模型服务器和RPC进行流处理

 

模型服务器可以自我管理,也可以由分析或者云端供应商托管。模型服务器并不仅为模型推导部署和存储模型,而且还提供诸如版本控制或A/B测试之类的附加功能。从应用程序到模型服务器的交流经常通过请求-响应协议(HTTP)或者谷歌RPC(gRPC)等RPC框架来完成。每次项目运行,都会发生这种介于Kafka应用和模型服务器之间的请求-响应式交流,

 

有很多模型服务器可供选择。可以从像Seldon Server,PredictionIO,Hydrosphere.io等开源模型服务器中选择或者从H2O.ai,DataRobot,国际商业机器公司(IBM),统计分析系统(SAS)等分析供应商中利用模型服务器。

 

本文使用TensorFlow提供的服务,即来自TensorFlow的模型服务器。该模型服务器可以实现自我管理,也可以使用云端机器学习引擎服务。TensorFlow服务拥有以下特征。

 

·包含谷歌RPC(gRPC)和请求-响应协议终端(HTTP)

·呈现模型版本,无需改变客户端代码

·将单个模型推导请求分组,以便联合执行请求

·优化模型推导时间以便最小化延迟

·支持许多可服务项(可服务项是一个模型或者是一个和模型一起提供数据的任务)

 

o  TensorFlow 模型

o  嵌入函数

o  词汇查找表格

o  特征转换

o  不基于TensorFlow的模型

 

·有能力开展金丝雀发布及A/B测试

 

下图是Kafka应用和模型服务器的交流过程

 

执行Kafka应用的过程是直接的。下面是Kafka应用数据流的代码片段以及TensorFlow服务端的RPC。

 

1.输入Kafka以及TensorFlow服务API

import org.apache.kafka.common.serialization.Serdes;import org.apache.kafka.streams.KafkaStreams;import org.apache.kafka.streams.StreamsBuilder;import org.apache.kafka.streams.StreamsConfig;import org.apache.kafka.streams.kstream.KStream;
import com.github.megachucky.kafka.streams.machinelearning.TensorflowObjectRecogniser;

2.配置Kafka数据流应用

 

// Configure Kafka Streams ApplicationfinalString bootstrapServers = args.length >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值