Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Apache Kafka在生产环境构建大规模机器学习?

如何使用Apache Kafka在生产环境构建大规模机器学习?

提问于 2018-04-18 00:27:28
回答 10关注 0查看 1.2K

智能实时应用是任何行业的游戏规则。机器学习及其子课题,深入学习正在获得势头,因为机器学习允许计算机找到隐藏的见解而不被明确地编程到哪里。这种能力是分析非结构化数据,图像识别,语音识别和智能决策所必需的。与Java,.NET或Python的传统编程是一个重要的区别。

虽然机器学习背后的概念并不新鲜,但大数据集和处理能力的可用性使得每个企业都能够建立强大的分析模型。通过在企业应用程序和微服务中应用分析模型,任何行业都有大量用例来增加收入,降低成本或改善客户体验。最近apache的kafka也是正在热点,那么和机器学习结合在一起又是怎么样的呢?

回答 10

水门

修改于 2018-04-19 02:06:00

如果是使用Kafka构建,那么就先看一下运行和监控分析模型的参考架构:

这种架构的本质在于它使用Kafka作为收集特征数据的各种数据源,模型合适的模型构建环境以及服务预测的生产应用程序之间的中介。

功能数据从托管它的各种应用程序和数据库中拉入Kafka。此数据用于构建模型。这个环境将根据团队的技能和首选工具集而有所不同。模型构建可以是数据仓库,像Spark或Hadoop这样的大型数据环境,也可以是运行python脚本的简单服务器。该模型可以发布,其中获得相同模型参数的生产应用程序可以将其应用于传入的示例(可能使用Kafka Streams帮助索引功能数据以便按需使用)。生产应用程序可以从卡夫卡接收数据作为管道,或者甚至是Kafka Streams应用程序本身。参见下图:

图源“大师米”
图源“大师米”
卡夫卡成为ML架构中的中枢神经系统,用于饲养,建立,应用和监控分析模型。这确实有很大的好处:

• 数据流水线简化

• 构建分析模块与维护模块脱钩

• 根据需要实时或批量使用

• 分析模型可以部署在性能,可扩展性和关键任务环境中

除了利用Kafka作为可扩展的分布式消息传递代理,还可以添加Kafka生态系统的可选开源组件,如Kafka Connect,Kafka Streams,Confluent REST Proxy,Confluent Schema Registry或KSQL,而不是依靠Kafka生产者和消费者蜜蜂。参见下图:

图源“大师米”
图源“大师米”

朝朝

发布于 2018-04-19 02:16:11

我也看了不少机器学习的项目,其中典型设置:

示范训练

数据通过卡夫卡摄入到Hadoop集群中。H2O.ai用于分析Hadoop中的历史数据,构建神经网络。数据科学家可以使用其首选的界面-R,Python,Scala,Web UI Notebook等。模型构建和验证在Hadoop集群上运行,处理休息时的数据。结果是由H2O.ai生成为Java代码的训练有素的分析模型。这已经准备好进行生产部署了。

模型推理

然后将神经网络部署到Kafka Streams应用程序。Kafka Streams应用程序可以在任何地方运行,无论是独立的Java进程,Docker容器还是Kubernetes集群。在这里,它实时应用于每个新事件进行预测。Kafka Streams利用Kafka集群提供分析模型和性能模型推理的可扩展的关键业务。

在线模特训练

我们不用分开模型训练和模型推理,也可以建立一个完整的在线模式培训基础设施。许多像Linkedin这样的科技巨头在过去利用Apache Kafka TM进行模型输入,培训,推理和输出。这种替代方案有几个取舍。大多数传统公司使用第一种方法,这适用于今天的大多数用例。

模型监控和警报

将分析模型部署到生产只是第一步。监控模型的准确性,分数,SLA和其他指标,以及实时提供自动报警同样重要。这些指标通过Kafka反馈给机器学习工具,以改进或替换模型。

以下显示了使用H2O构建分析模型的示例:一个开源机器学习框架,它利用其他框架,如Apache Spark或TensorFlow。数据科学家可以使用他或她最喜欢的编程语言,如R,Python或Scala。最大的好处是输出H2O引擎:Java代码。生成的代码通常执行得非常好,可以使用Kafka Streams轻松缩放。

 用H2O.ai开发分析模型
用H2O.ai开发分析模型

以下是H2O.ai Flow(web UI /笔记本)和替代R代码的一些截图,以构建分析模型:

 用H2O的R库构建分析模型
用H2O的R库构建分析模型

输出是一个生成为Java代码的分析模型。这可以在任务关键型生产环境中重新开发。因此,不必考虑如何将Python或R模型“迁移”到基于Java平台的生产系统。

虽然此示例使用H2O的功能来生成Java代码,但可以使用其他框架(如TensorFlow,Apache MXNet或DeepLearning4J)执行类似的操作。

烽火连天博一笑

发布于 2018-04-19 02:22:52

其实重点在下面我要介绍的地方,也就是如何调用kafka的api。

使用Apache Kafka的Streams API部署分析模型

分析模型的部署很容易与Kafka Streams。只需将模型添加到流处理应用程序中即可将其应用于新的事件: Apache Kafka的Streams API将H2O.ai模型嵌入到Kafka Streams中

由于Kafka Streams应用程序利用了所有Kafka功能,因此该新应用程序已准备好进行规模和关键任务使用。由于生产考虑,不需要调整模型。

可以在GitHub上找到正在运行的示例:https://github.com/kaiwaehner/kafka-streams-machine-learning-examples。简单地克隆项目,运行Maven构建,并了解在Kafka Streams应用程序中如何使用H2O模型。这个例子将继续发展,使用更为复杂的例子和用例来利用H2O和其他机器学习框架,如TensorFlow或DeepLearning4J在路线图中。这些都是是不错的框架。

将机器学习应用于流处理的这种实现可以使用您喜爱的CI / CD环境工具堆栈(如Maven,Gradle,Chef,Puppet或Jenkins)轻松集成到任何自动化的连续集成工作流程中。

和开发者交流更多问题细节吧,去 写回答
相关文章
使用Kafka在生产环境中构建和部署可扩展的机器学习
生产环境中使用Apache Kafka的可扩展的机器学习 智能实时应用程序是任何行业的游戏规则改变者。机器学习及其子课题深度学习正在获得动力,因为机器学习使计算机能够在没有明确程序设计的情况下找到隐藏的见解。分析非结构化数据,图像识别,语音识别和智能决策需要此功能。这与使用Java,.NET或Python的传统编程有很大的不同。 虽然机器学习背后的概念并不新鲜,但大数据集和处理能力的可用性使得每个企业都可以构建强大的分析模型。任何行业都有大量的使用案例,通过在企业应用程序和微服务中应用分析模型来增加收入,
用户1263954
2018/05/30
1.4K0
Presto on Apache Kafka 在 Uber的大规模应用
作者 | Uber Engineering 译者 | Sambodhi 策划 | 赵钰莹 本文最初发布于 Uber 官方博客,InfoQ 经授权翻译如下 Uber 的目的就是要让全世界变得更好,而大数据是一个非常重要的部分。Presto 和 Apache Kafka 在 Uber 的大数据栈中扮演了重要角色。Presto 是查询联盟的事实标准,它已经在交互查询、近实时数据分析以及大规模数据分析中得到应用。Kafka 是一个支持很多用例的数据流中枢,比如 pub/sub、流处理等。在这篇文章中,我们
深度学习与Python
2023/03/29
8810
Presto on Apache Kafka 在 Uber的大规模应用
在今天的企业环境如何使用机器学习
One of the latest trends in the world of technology and engineering is “machine learning” — in fact, all of the big technology companies today have invested in artificial intelligence and machine learning projects. The term “machine learning” was first d
架构师研究会
2018/04/09
6050
在今天的企业环境如何使用机器学习
【大规模机器学习】大规模机器学习流程的构建与部署
大规模机器学习流程的构建与部署 现在有许多的机器学习算法实现是可以扩展到大数据集上的(其中包括矩阵分解、SVM、逻辑回归、LASSO 等等)。实际上,机器学习专家们很乐于指出的一点是:如果你能把机器学习问题转化为一个简单的数值优化问题,你就几近成功了。 当然,现实的问题是,很多机器学习项目是没法简化成一个简单的优化问题的。因此数据科学家们不得不去管理和维护复杂的数据项目,加之他们所要分析的问题经常也需要特定的机器学习流程。上游流程中每个阶段的决策影响下游流程的结果,因此流程中模块的连接与交互成为了一个研究的
陆勤_数据人网
2018/02/27
7930
【大规模机器学习】大规模机器学习流程的构建与部署
使用 Dockerfile 构建生产环境镜像
1202 年了,如果你连 Docker 都不知道是什么,我建议买一本书看看——或者谷歌一下,博客已经写烂了。
仁扬
2023/07/21
5540
Apache Kafka - 重识Kafka生产者
Kafka 生产者是 Apache Kafka 中的一个重要组件,它负责将数据发送到 Kafka 集群中。在实时数据处理和流式处理应用程序中,Kafka 生产者扮演着非常重要的角色。
小小工匠
2023/05/21
3290
Apache Kafka - 重识Kafka生产者
大规模使用 Apache Kafka 的20个最佳实践
Apache Kafka是一款流行的分布式数据流平台,它已经广泛地被诸如New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统。例如,在New Relic的生产环境中,Kafka群集每秒能够处理超过1500万条消息,而且其数据聚合率接近1 Tbps。
程序猿DD
2019/05/14
1.9K0
Apache Kafka - 构建数据管道 Kafka Connect
Kafka Connect 是一个工具,它可以帮助我们将数据从一个地方传输到另一个地方。比如说,你有一个网站,你想要将用户的数据传输到另一个地方进行分析,那么你可以使用 Kafka Connect 来完成这个任务。
小小工匠
2023/06/04
1.2K0
Apache Kafka - 构建数据管道 Kafka Connect
Kafka 生产环境部署指南
在 Kafka 中,副本(Replica) 分成两类:领导者副本(Leader Replica)和追随者副本(Follower Replica)。
Se7en258
2021/10/20
4.7K0
Kafka 生产环境部署指南
教程 | 如何使用Keras、Redis、Flask和Apache把深度学习模型部署到生产环境?
选自pyimagesearch 作者:Adrian Rosebrock 机器之心编译 参与:Jane W、黄小天 本文介绍了如何使用 Keras、Redis、Flask 和 Apache 将自己的深度学习模型迁移到生产环境。文中的大多数工具可以互换,比如 Keras 可替换成 TensorFlow 或 PyTorch,Django 可代替 Flask,Nginx 可代替 Apache。作者唯一不推荐替换的工具是 Redis。同时本文还对深度学习 REST API 进行了压力测试,这种方法可以轻松扩展到添加的
机器之心
2018/05/11
4K2
必读 | 大规模使用 Apache Kafka 的20个最佳实践
Apache Kafka是一款流行的分布式数据流平台,它已经广泛地被诸如New Relic(数据智能平台)、Uber、Square(移动支付公司)等大型公司用来构建可扩展的、高吞吐量的、且高可靠的实时数据流系统。例如,在New Relic的生产环境中,Kafka群集每秒能够处理超过1500万条消息,而且其数据聚合率接近1 Tbps。
用户1516716
2019/05/13
6000
必读 | 大规模使用 Apache Kafka 的20个最佳实践
Apache Kafka学习
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理。
chimchim
2023/10/17
3470
Apache Kafka学习
使用 Rook 构建生产可用存储环境实践
Rook 是基于 Kubernetes 之上构建的存储服务框架。它支持 Ceph、NFS 等多种底层存储的创建和管理。帮助系统管理员自动化维护存储的整个生命周期。存储的整个生命周期包括部署、启动、配置、申请、扩展、升级、迁移、灾难恢复、监控和资源管理等,看着就让笔者觉得事情不少,Rook 的目标就是降低运维的难度,让 Kubernetes 和 Rook 来帮你托管解决这些任务。
用户5166556
2023/03/18
1.4K0
使用 Rook 构建生产可用存储环境实践
Apache Kafka-生产消费基础篇
POM 依赖 版本请同使用的kafka服务端的版本保持一致 <dependency> <groupId>org.apache.kafkagroupId> <artifactId>kaf
小小工匠
2021/08/17
2990
Apache Kafka-Spring Kafka生产消费@KafkaListener源码解析
KafkaBootstrapConfiguration的主要功能是创建两个bean
小小工匠
2021/08/17
8440
Apache Kafka-Spring Kafka生产消费@KafkaListener源码解析
使用Apache Hudi构建大规模、事务性数据湖
一个近期由Hudi PMC & Uber Senior Engineering Manager Nishith Agarwal分享的Talk
大数据技术架构
2020/07/02
2.2K0
如何使用Scikit-learn在Python中构建机器学习分类器
机器学习是计算机科学、人工智能和统计学的研究领域。机器学习的重点是训练算法以学习模式并根据数据进行预测。机器学习特别有价值,因为它让我们可以使用计算机来自动化决策过程。
信姜缘
2018/07/31
2.8K0
教程 | 如何使用JavaScript构建机器学习模型
选自:hackernoon 作者:Abhishek Soni 参与:李泽南 目前,机器学习领域建模的主要语言是 Python 和 R,前不久腾讯推出的机器学习框架 Angel 则支持 Java 和 S
机器之心
2018/05/08
1.2K0
教程 | 如何使用JavaScript构建机器学习模型
明月机器学习系列(六):构建机器学习or深度学习环境
Anaconda Notebook本身已经是一个很好的工具,非常适用于学习,不过在企业中应用时,该工具总感觉差了一点,经常需要安装各种包,而有些包未必能通过conda进行安装。因此,我们通过Docker镜像来构建满足自己的机器学习或者深度学习环境,尽量减少大家在环境安装上浪费的时间。
明月AI
2021/10/28
9760
如何使用Spark大规模并行构建索引
使用Spark构建索引非常简单,因为spark提供了更高级的抽象rdd分布式弹性数据集,相比以前的使用Hadoop的MapReduce来构建大规模索引,Spark具有更灵活的api操作,性能更高,语法
我是攻城师
2018/05/14
1.6K0

相似问题

小白如何快速上手机器学习(深度学习)?

0322

生产环境如何安装依赖?

1605

开发环境和生产环境?

2805

部署生产环境?

1332
相关问答用户
腾讯 | 产品运营经理擅长5个领域
腾讯 | 服务生
腾讯 | 客户端研发擅长3个领域
腾讯云AI | 技术专家
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档