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

  • 回答 (10)
  • 关注 (0)
  • 查看 (274)

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

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

AcademyCityLv6AcademyCityLv6提问于
水门就职某互联网公司,主要负责技术架构,基础设施建设等。修改于

如果是使用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生产者和消费者蜜蜂。参见下图:

图源“大师米”
朝朝回答于

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

示范训练

数据通过卡夫卡摄入到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 Flow(web UI /笔记本)和替代R代码的一些截图,以构建分析模型:

用H2O的R库构建分析模型

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

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

烽火连天博一笑登东皋以舒啸,濯清流而赋诗回答于

其实重点在下面我要介绍的地方,也就是如何调用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)轻松集成到任何自动化的连续集成工作流程中。

路頭社上海分社回答于

我我我,我来说一下机器学习,刚好最近在学,顺便总结。[wink] 机器学习 - 部署分析模型的开发生命周期

首先考虑分析模型的开发生命周期:

1. 构建:使用机器学习算法,如GLM,朴素贝叶斯,随机森林,渐变提升,神经网络等,分析历史数据以找到洞察力。此步骤包括数据收集,准备或转换等任务。

2. 验证:使用交叉验证等技术仔细检查内置分析模型是否适用于新的输入数据。

3. 操作:将生成的分析模型部署到生产环境中,将其实时应用于新的传入事件。

4. 监视器:观察应用模型的结果。这包含两个部分:如果达到阈值,则发送警报(业务监控)。确保准确性和其他指标足够好(分析模型监控)。

5. 连续循环:通过上述步骤不断改进分析模型。这可以在手动批量模式(例如每周一次)或在线,在每个传入事件更新模型的地方完成。

整个项目团队必须从一起开始讨论如下问题:

• 在生产中需要执行什么?

• 生产系统使用或支持哪些技术?

• 我们将如何监控模型推理和性能?

• 我们是否构建完整的机器学习基础设施,涵盖整个生命周期,或者使用现有的框架将模型训练与模型推理分开?

例如,数据科学家可以构建一个Python程序,该程序创建一个以高准确度得分非常好的模型。但是,由于无法将其部署到生产环境中,因为它不会根据需要进行扩展或执行,因此无济于事。

可以想象为什么Apache Kafka TM非常适合生产分析模型。以下部分将解释Apache Kafka TM作为流媒体平台与机器学习/深度学习框架的结合,以构建,操作和监控分析模型。 机器学习开发生命周期示例

现在我们来看一个关于卡夫卡设计的ML架构的一个更具体的例子:

图源“大师米”

在绿色中,将看到构建和验证分析模型的组件。在橙色中,将看到部署分析模型的流媒体平台,推测新事件和监视。

数据生产者不断发送消息。分析平台以批量或实时的方式接收该数据。它使用机器学习算法来构建分析模型。分析模型部署到流媒体平台。流式平台将分析模型应用于新事件以推断结果(即进行预测)。结果发送给数据消费者。

一步回答于

其实这个说白了就是使用流平台将分析模型部署到任务关键部署中。

黑色技术追寻着HTML5的步伐,请不要放弃~回答于
包包包bottle回答于

说啥呢,看不懂!!!!!能不能短一点哦!!

离岛爱编程,爱画画回答于
吃葡萄不吐番茄皮悟空,救我!回答于
彼岸轮回回答于

可能回答问题的人

  • Y. Ji

    6 粉丝0 提问1 回答
  • Superbeet

    4 粉丝0 提问0 回答
  • 腾讯云AI中心

    腾讯云 · 产品经理 (已认证)

    63 粉丝0 提问19 回答
  • 莫烦

    3 粉丝0 提问0 回答
  • 罗罗可爱多

    腾讯 · 高级研究员 (已认证)

    9 粉丝0 提问4 回答
  • 晏栋栋栋

    2 粉丝0 提问1 回答

扫码关注云+社区

领取腾讯云代金券