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

apache kafka

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

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

apache kafka

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

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

相关文章

cookies丢失 同域名_后端设置Cookie前端跨域获取丢失问题(基于springboot实现)

1.跨域问题说明&#xff1a;后端域名为A.abc.com&#xff0c;前端域名为B.abc.com。2.后端设置一个cookie发送给前台&#xff0c;domain应该是setDomain(“abc.com”)&#xff0c;而不是setDomain(“B.abc.com”)3.另外&#xff0c;还要实现WebMvcConfigurerr配置加入Cors的跨域…

shell脚本--使用for循环逐行访问txt文件

方法1 export text_pathdata/1.txt for line in $(cat $text_path) doecho $line done方法2 export text_pathdata/1.txt for line in cat $text_path doecho $line done

vertx rest 跨域_Vertx编程风格:您的React式Web Companion REST API解释了

vertx rest 跨域Vertx提供了许多在轻量级环境中进行编程的选项&#xff0c;例如node.js。 但是&#xff0c;对于新用户来说&#xff0c;选择采用哪种方法来创建REST API几乎不会造成混淆。 在vertx中进行编程时&#xff0c;可以采用不同的模型。 下面通过易于理解的图表进行说…

输出节点位移_绝对值信号的编码器有哪些信号输出(一、二)

绝对值信号的编码器有哪些信号输出&#xff08;一、二&#xff09;之前介绍过很多次拉线位移传感器输出是有两大类的&#xff0c;数字信号输出和模拟量信号输出&#xff0c;而数字信号输出还分为增量型脉冲信号输出和绝对值信号输出&#xff0c;今天就系统的介绍一下绝对值信号…

vim 中的 quickfix 指令

用 quickfix 可以快速修改编译错误。 运行了 make 命令编译之后&#xff0c;如果有编译错误 Vim 会以列表形式把编译错误列出&#xff0c;并使用 quickfix 工具快速帮你定位出错的行。 指令说明cc显示编译错误的详细信息,这些信息显示在状态行里cn下一个编译错误cp前一个编译…

Python第三方库的安装,升级以及版本查看

方法&#xff1a;通过电脑的cmd命令行来进行python第三方库的安装&#xff0c;升级以及版本查看 安装和升级pip 安装pip方法1 在cmd命令行输入以下命令&#xff1a; python -m ensurepip #当提示不存在pip时使用这行代码进行安装安装pip方法2 在终端输入以下命令&#xf…

混合多云架构_混合多云每个人都应避免的3个陷阱(第1部分)

混合多云架构每天都在肆意宣传云&#xff0c;但每个人都应避免三个陷阱。 从云&#xff0c;混合云到混合多云&#xff0c;您都被告知这是确保业务数字化未来的一种方式。 您必须做出的这些选择不会排除提高客户体验和敏捷交付这些应用程序的日常工作。 让我们开始一段旅程&am…

vim 下的 ex 指令(底行命令模式下)

文章目录 (一)复制(二)文档光标移动(三)删除(四)粘贴(五)保存/退出(六)另存为文件/选取内容另存文件(七)查找/搜索字符(八)搜索指令 vimgrep(九)使用搜索指令 grep(十)文本行移动(十一)匹配模式替换(十二)显示行号(十三)normal 命令(十四)文件信息…

datastax.repo_使用Datastax Java驱动程序与Cassandra进行交互

datastax.repo今天&#xff0c;我这次返回了更多的Cassandra和Java集成&#xff0c;重点是使用Datastax Java驱动程序&#xff0c;而不是我已经写了很多文章的Spring Data Cassandra。 Spring Data实际上使用了Datastax驱动程序来与Cassandra进行交互&#xff0c;但是在它之上还…

beanshell断言_JMeter使用BeanShell断言

BeanShell简介BeanShell是使用Java语法的一套脚本语言&#xff0c;在JMeter的多种组件中都有BeanShell的身影&#xff0c;如&#xff1a;定时器&#xff1a;BeanShell Timer前置处理器&#xff1a;BeanShell PreProcessor采样器&#xff1a;BeanShell Sampler后置处理器&#x…

Mobaxterm常用的指令(基于linux)

列出所有的环境(3种方法) conda env list conda info --envs conda info -e创建虚拟环境(默认anaconda3/envs路径) conda create -n megumi python3.8.5 #megumi为环境名称,#3.8.5是安装python的版本激活环境(2种方法) source activate 环境名 conda activate 环境名退出环…

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

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

正则表达式中的量词(限定符)含义的准确理解

量词准确理解?前面的元素&#xff08;pattern/子表达式&#xff09;匹配 0 次或者 1 次&#xff1b;出现 0 次或者 1 次。“次”改成“个”也行*前面的元素匹配大于等于 0 个前面的元素匹配大于等于 1 个{5}前面的元素匹配 5 个{2,6}前面的元素匹配 2 个到 6 个

docker初识_初识 docker 搭建自己的开发环境

换了一台设备&#xff0c;程序猿嘛第一件事肯定是先把开发环境搭建起来&#xff0c;以前为了方便都是搞的集成环境&#xff0c;这次准备下载集成环境的时候&#xff0c;突然想起 docker 这个东西&#xff0c;在下虽然了解一些概念性的东西但一直为曾实践。人嘛&#xff0c;没有…

PyTorch中使用指定的GPU

PyTorch默认使用从0开始的GPU&#xff0c;如果GPU0正在运行程序&#xff0c;需要指定其他GPU。 有如下两种方法来指定需要使用的GPU。 1.类似tensorflow指定GPU的方式&#xff0c;使用CUDA_VISIBLE_DEVICES。 1.1 直接终端中设定&#xff1a; CUDA_VISIBLE_DEVICES1 python…

jvm运行时类加载机制_JVM体系结构:JVM类加载器和运行时数据区

jvm运行时类加载机制各位读者好&#xff01; 在JVM系列的上一篇文章中&#xff0c;开发人员了解了Java虚拟机&#xff08;JVM&#xff09;及其体系结构。 本教程将帮助开发人员正确回答以下主题的问题&#xff1a; ClassLoader子系统 运行时数据区 1.简介 在继续之前&#x…

括号的分类

括号名称符号小括号&#xff08;parentheses&#xff0c;又称圆括号、括弧&#xff09;( )中括号&#xff08;square brackets&#xff0c;又称方括号&#xff09;[ ]大括号&#xff08;curly brackets&#xff0c; 又称花括号&#xff09;{ }六角括号〔 〕&#xff0c;中文才有…

python读取和存入json文件

将内容存入json文件 import json filename"C:/Users/13451/Desktop/captions_train.json" with open(filename, w) as j: json.dump(word_map, j)读取json文件中的内容 import json with open(filename,r) as f:x json.load(f) print(x)其中open函数的第二个参数&…

android 前台服务自定义布局不显示_Android前台服务通知未显示

我正在尝试启动前台服务.我收到通知,该服务确实启动但通知始终被抑制.我仔细检查了应用是否允许在我的设备上的应用信息中显示通知.这是我的代码&#xff1a;private void showNotification() {Intent notificationIntent new Intent(this, MainActivity.class);notificationI…

java技术专家学习路线图_向Java最佳专家的全球专家学习Java

java技术专家学习路线图Java with the Best Virtual Conference是您学习微服务&#xff0c;Java 9&#xff0c;Kubernetes以及其他Java的指南&#xff01; 将于4月17日至18日收听&#xff0c;收听来自Pivotal&#xff0c;RedHat&#xff0c;Microsoft&#xff0c;Oracle和Netfl…