2018年机器学习趋势与Apache Kafka生态系统相结合

在慕尼黑举行的OOP 2018大会上,我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow,DeepLearning4J或H2O之类的深度学习框架构建可扩展,关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片,并讨论一些有关最新趋势的更新,这些我已纳入演讲中。

主要故事与我在Confluent博客中有关Apache Kafka生态系统和机器学习的文章相同 : 如何使用Apache Kafka在生产中构建和部署可扩展机器学习。 但是我更专注于深度学习/神经网络。 我还讨论了Apache Kafka生态系统中的一些创新以及最近几个月的ML趋势: Uber和Netflix的KSQL,ONNX,AutoML,ML平台 。 让我们看一下这些有趣的主题,以及它们之间的关系。

KSQL –一种Apache Kafka之上的流SQL语言。

KSQL是Apache Kafka的流SQL引擎 。 KSQL将入口栏放到了流处理领域,提供了一个简单且完全交互的SQL接口来处理Kafka中的数据。 您不再需要使用Java或Python之类的编程语言编写代码! KSQL是开源的(Apache 2.0许可的),分布式的,可伸缩的,可靠的和实时的。 它支持各种强大的流处理操作,包括聚合,联接,窗口,会话化等等。” 此处有更多详细信息:“ KSQL简介:Apache Kafka的开源流SQL ”。

您可以编写类似SQL的查询来部署可扩展的,关键任务流处理应用程序(在后台利用Kafka Streams)。 绝对是Kafka开源生态系统中的一大亮点。

KSQL和机器学习

KSQL建立在Kafka Streams之上,因此允许构建可扩展的,关键任务服务。 通过构建用户定义功能(UDF),可以轻松嵌入包括神经网络在内的机器学习模型。 这些天,我正在准备一个示例,其中我将神经网络(更准确地说是自动编码器)应用于传感器分析,以实时检测医院客人的异常情况(即健康检查中的关键值),从而向医生发送警报。

现在让我们讨论一下机器学习生态系统中一些有趣的新发展。

ONNX –一种表示深度学习模型的开放格式

ONNX 是代表深度学习模型的开放格式 。 借助ONNX,AI开发人员可以更轻松地在最先进的工具之间移动模型,并选择最适合他们的组合。”

这听起来类似于PMML (预测模型标记语言,请参阅KDnuggets上的“ What is PMML ”)和PFA (便携式分析格式),这是另外两个定义和共享机器学习模型的标准。 但是,ONNX在以下几个方面有所不同:

  • 专注于深度学习
  • 背后有多家大型科技公司(AWS,Microsoft,Facebook)和硬件供应商(AMD,NVidia,Intel,Qualcomm等)
  • 已经支持许多领先的开源框架(包括TensorFlow,Pytorch,MXNet)

ONNX已经在GA 1.0版中投入使用,并且已经可以量产 ( 如Amazon,Microsoft和Facebook在2017年12月宣布的那样 )。 对于不同的框架,还有一个不错的入门指南 。

ONNX和Apache Kafka生态系统

不幸的是, ONNX还没有Java支持 。 因此,尚不支持将其本身嵌入到Kafka Streams Java API中。 仅通过诸如执行REST调用或嵌入JNI绑定之类的解决方法。 但是我非常确定这只是时间问题,因为Java平台在许多企业中部署关键任务应用程序非常重要。

现在,您可以使用Kafka的Java API或其他Kafka客户端。 Confluent为几种编程语言(例如Python或Go)提供了官方客户 ,这两种语言也非常适合机器学习应用程序。

自动化机器学习(aka AutoML)

如前所述,“自动机器学习(AutoML)是一个热门领域,其目标是使人们能够轻松选择不同的机器学习算法,其参数设置以及提高其检测大数据中复杂模式能力的预处理方法。” 在这里 。

使用AutoML,您无需任何有关机器学习的知识就可以构建分析模型。 AutoML实现使用决策树,聚类,神经网络等的不同实现来开箱即用地构建和比较不同的模型。 您只需上传或连接历史数据集,然后单击一些按钮即可开始该过程。 可能不是每个用例都完美,但是您可以轻松地改进许多现有流程,而无需稀有且昂贵的数据科学家。

DataRobot或Google的AutoML是该领域许多知名的云产品中的两种。 H2O的AutoML已集成到其开源ML框架中,但它们还提供了一个很好的以UI为中心的商业产品,称为“ 无人驾驶AI ”。 我强烈建议您在任何AutoML工具上花费30分钟。 看到AI工具如今如何发展真是令人着迷。

AutoML和Apache Kafka生态系统

大多数AutoML工具都提供其模型的部署。 您可以通过REST接口访问分析模型。 对于可扩展的事件驱动架构(如Kafka)而言,并不是一个完美的解决方案。 好消息: 许多AutoML解决方案还允许导出其生成的模型,以便您可以将其部署到应用程序中 。 例如,H2O开源框架中的AutoML只是众多选择之一。 您只能以您选择的编程语言(R,Python,Scala,Web UI)使用其他操作:

aml <- h2o.automl(x = x, y = y,training_frame = train,leaderboard_frame = test,max_runtime_secs = 30)

与构建线性回归,决策树或神经网络类似。 结果是生成的Java代码,您可以轻松地将它们嵌入到Kafka Streams微服务或任何其他Kafka应用程序中。 AutoML使您能够构建和部署高度可扩展的机器学习,而无需掌握ML的丰富知识。

Netflix的介子

科技巨头通常比“传统企业”领先几年。 他们已经在几年前建造了今天或明天建造的建筑。 ML平台没有区别。 编写ML源代码以训练分析模型只是现实世界ML基础结构的一小部分。 您需要考虑整个开发过程。 下图显示了“ 机器学习系统中的隐藏技术债务 ”:

您可能会使用不同的技术构建多个分析模型。 并非所有内容都将构建在您的Spark或Flink群集或单个云基础架构中。 您可以在公共云中的某个大型,昂贵的GPU上运行TensorFlow,以构建强大的神经网络。 或者使用H2O来构建一些小的但非常高效且高性能的决策树,这些决策树会在几微秒内完成推理……ML有许多用例。

这就是为什么许多科技巨头都建立了自己的ML平台的原因,例如Uber的Michelangelo或Netflix的Meson 。 这些ML平台使他们能够构建和监视强大的,可扩展的分析模型,而且还可以保持灵活性以针对每种用例选择正确的ML技术。

适用于ML平台的Apache Kafka生态系统

Apache Kafka如此成功的原因之一是许多科技巨头的广泛采用。 几乎所有伟大的硅谷公司,如LinkedIn,Netflix,Uber,Ebay,都是“ you-name-it”博客,并谈论了它们如何将Kafka用作关键任务应用程序的事件驱动中枢神经系统。 许多人将重点放在用于消息传递的分布式流平台上,但我们也看到越来越多的插件被采用,例如Kafka Connect,Kafka Streams,REST Proxy,Schema Registry或KSQL。

如果您再次看一下上面的图片,请考虑一下Kafka:它不是ML平台的理想选择吗? 培训,监控,部署,推理,配置,A / B测试等,等等。这可能就是为什么Uber,Netflix和许多其他公司已经将Kafka用作其ML基础结构的核心组件的原因。

同样,您不必被迫仅使用一种特定技术。 Kafka的伟大设计概念之一是,您可以一次又一次地从其分布式提交日志中重新处理数据。 这意味着您既可以使用Kafka Sink(例如Apache Flink或Spark)的一种技术构建不同的模型,也可以连接scikit-learn等进行本地测试的技术,在Google Cloud GPU上运行的TensorFlow进行强大的深度学习以及内部安装适用于AutoML的H2O节点,以及部署在Docker容器或Kubernetes中的其他一些Kafka Streams ML应用。 所有这些ML应用程序都按照其速度和需要的频率并行使用数据。

这是一个很好的示例,说明如何使用Kafka和Kafka Streams自动进行可伸缩ML微服务的培训和部署 。 无需添加另一个大数据集群。 这是在您的ML应用程序中使用Kafka Streams或KSQL而不是其他Stream Processing框架的主要区别之一。

Apache Kafka和深度学习– OOP的幻灯片

最后,在对Apa​​che Kafka生态系统和机器学习/深度学习的新趋势进行了所有这些讨论之后,这是我在OOP 2018大会上的演讲的更新幻灯片:
2018年机器学习趋势与 KaiWähner 的Apache Kafka生态系统相结合

我还使用Apache Kafka,Kafka Streams和不同的开源ML框架(例如H2O,TensorFlow和DeepLearning4j(DL4J))构建了一些示例 。 Github项目显示了将分析模型部署到高度可扩展,容错且关键任务的Kafka微服务有多么容易。 KSQL演示也将很快发布。

请分享您的反馈。 您是否已经在机器学习领域使用Kafka? 您除了使用Kafka核心外还使用哪些组件? 请随时与我联系以详细讨论。

翻译自: https://www.javacodegeeks.com/2018/02/machine-learning-trends-2018-combined-apache-kafka-ecosystem.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基本语法(13)--条件分支switch-case结构

基本格式结构&#xff1a; switch (表达式/变量) {case 常量1&#xff1a;执行语句1; //情况1case 常量2&#xff1a;执行语句2; //情况2... ... ...default: 以上情况都不满足时执行语句; }说明&#xff1a; switch结构中的表达式/变量只能是如下6种数据类型之一&#xff…

小米岭南通服务器维护,小米岭南通交通联合卡内测开启

原标题&#xff1a;小米岭南通交通联合卡内测开启IT之家12月21日消息 小米岭南通交通联合卡内测开启招募报名&#xff0c;持小米8(含探索版、屏幕指纹版)、小米MIX 系列(不含MIX 3)、小米Note 3/2、小米6/5s/5s Plus手机的用户可开通尝鲜。支持系统小米8和MIX 2S最低支持8.12.2…

mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)

避免索引失效原则(二)注&#xff1a;继上一篇文章继续讲解&#xff1a;避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062作者 &#xff1a; Stanley 罗昊【转载请注明出处和署名&#xff0c;谢谢&#xff01;】体验SQL优化中的概率情况在上一…

mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

毫不夸张的说&#xff0c;有一半以上的死锁问题由唯一索引贡献&#xff0c;后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,name varchar(1…

ejb 示例 2018_EJB钝化和激活示例

ejb 示例 2018在本教程中&#xff0c;我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息&#xff0c;并在整个会话中保存该信息。 但是&#xff0c;事实是&#xff0c;客户端会话往往会在相当长的时间内保持活动状态…

js微信小程序页面左上角返回跳转指定页面

微信小程序非导航栏tabBar页面左上角返回默认返回上一次的页面&#xff08;即进入当前页面的前一页面&#xff09;&#xff0c;如果需要自定义页面&#xff0c;可以通过js中onUnload函数进行指定页面跳转。 ①关闭所有页&#xff0c;打开url指定页面 onUnload: function () {…

服务器mysql显示链接次数太多,服务器mysql显示链接次数太多

服务器mysql显示链接次数太多 内容精选换一换在本章节中&#xff0c;您将会把游戏应用部署到CCE云容器引擎中&#xff0c;您需要执行以下操作&#xff1a;创建集群&#xff1a;集群是运行应用的逻辑分组&#xff0c;包含一组云服务器资源&#xff0c;每个节点对应一台云服务器。…

使用JUnit 5在Mockito中方便地进行模拟–官方方式

从版本2.17.0开始&#xff0c;如果使用JUnit 5&#xff0c; Mockito提供了官方&#xff08;内置&#xff09;支持来管理模拟生命周期。 入门 为了利用该集成&#xff0c;需要在JUnit 5的junit-platform-engine旁边添加Mockito的mockito-junit-jupiter依赖项&#xff08;有关详…

esp32搭建文件服务器,ESP32入门示例 - SD卡Web服务器

这个是来自ESP32官方示例的改版&#xff0c;官方的示例由于存在一些问题所以我进行了修改原本的示例有点逻辑上的问题&#xff0c;所以进行了一些修改主要修改有&#xff1a;1.新增SD卡测试部分 复制自官方SD卡示例2.新增一个根目录页&#xff0c;访问根目录就可以看到3.修改了…

mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

一、 MySQLMyCat分库分表1 MyCat简介java编写的数据库中间件Mycat运行环境需要JDK。Mycat是中间件&#xff0c;运行在代码应用和MySQL数据库之间的应用。前身&#xff1a; corba&#xff0c;是阿里开发的数据库中间件&#xff0c;实现MySQL数据库分库分表集群管理的中间件&…

字符串String截取字符char

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串&#xff0c;将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例&#xff1a; import java.u…

Java基本语法(14)--for循环结构

循环结构&#xff1a;在某些条件满足的情况下&#xff0c;反复执行特定代码的功能。 基本格式&#xff1a; for (①初始化部分; ②循环条件部分; ④迭代部分)&#xff5b; ③循环体部分; &#xff5d;如果①&#xff0c;④部分多条语句&#xff0c;语句之间用“&#xff0c;”…

Java 8中的功能接口是什么? @功能注释和示例

函数接口是Java 8最重要的概念之一&#xff0c;实际上为lambda表达式提供了动力&#xff0c;但是许多开发人员没有首先了解函数接口在Java 8中的作用就花了很多精力来理解它&#xff0c;并花时间学习lambda表达式和Stream API。除非您知道什么是功能接口以及lambda与它之间的关…

win10存储池_3个光威480G SSD组WIN10存储池,深度测试到底值不值得搞

上次由于我SSD不够&#xff0c;所以我用虚拟硬盘的方式&#xff0c;虚拟了3个VHDX硬盘&#xff0c;组了个奇偶校验的存储池&#xff0c;并且简单的做了测试。测试结果是&#xff0c;组存储池确实提高了我们的数据安全性。WIN10存储池&#xff0c;可以让我们玩家省去组RAID&…

截止角频率和截止频率的关系_开关电源的控制环截止频率和开关频率有什么关系?...

【新朋友】点击上方蓝字“电源之家”关注【老朋友】点击右上角按钮&#xff0c;分享到朋友圈电源之家官方技术③群&#xff1a;522815202(3000人群)(电源行业第一大技术交流QQ群)这个问题很专业&#xff0c;因此答案注定也专业而非科普&#xff0c;非电力电子专业小伙伴看不懂很…

restlet_Restlet框架– Hello World示例

restletRestlet是用于Java平台的轻量级&#xff0c;全面的开源REST框架。 Restlet适用于服务器和客户端Web应用程序。 它支持主要的Internet传输&#xff0c;数据格式和服务描述标准&#xff0c;例如HTTP和HTTPS&#xff0c;SMTP&#xff0c;XML&#xff0c;JSON&#xff0c;At…

在运行时在Spring Cloud Config中刷新属性配置

在本系列Spring Cloud Config的教程系列中&#xff0c;我们将讨论在运行时刷新属性配置的过程&#xff0c;我们将使用Spring Boot致动器/refresh端点进行/refresh 。 此外&#xff0c;我们还将研究使用RefreshScope注释刷新Value属性。 在我的Spring Cloud Config的上一教程中…

pythonnumpy教程_Python学习教程:通俗易懂的Numpy入门教程

Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包&#xff0c;如数据分析工具pandas也是基于numpy构建的&#xff0c;机器学习包scikit-learn也大量使用了numpy方法。本文介绍了Numpy的n维数组在数据处理和分析的所有核心应用。目录如何构建numpy数组如何观察数…

css hack技巧_5种减少Hack的编码技巧

css hack技巧在本文中&#xff0c;我们将探讨五种方法&#xff0c;这些方法可以使用有效的编码来帮助垃圾回收器花费更少的CPU时间分配和释放内存&#xff0c;并减少GC开销。 较长的GC通常会导致我们的代码在回收内存时停止&#xff08;也称为“停止世界”&#xff09;。 一些…

mysql数据库全备_MySQL innobackupex全备是指什么

MySQL innobackupex全备是指什么发布时间&#xff1a;2020-06-03 10:10:31来源&#xff1a;51CTO阅读&#xff1a;133作者&#xff1a;三月下文主要给大家带来MySQL innobackupex全备是指什么&#xff0c;希望这些内容能够带给大家实际用处&#xff0c;这也是我编辑MySQL innob…