2018年机器学习趋势与Apache Kafka生态系统相结合
在慕尼黑舉行的OOP 2018大會上,我介紹了有關(guān)使用Apache Kafka生態(tài)系統(tǒng)和諸如TensorFlow,DeepLearning4J或H2O之類的深度學(xué)習(xí)框架構(gòu)建可擴(kuò)展,關(guān)鍵任務(wù)微服務(wù)的演講的更新版本。 我想分享更新后的幻燈片,并討論一些有關(guān)最新趨勢的更新,這些我已納入演講中。
主要故事與我在Confluent博客中有關(guān)Apache Kafka生態(tài)系統(tǒng)和機(jī)器學(xué)習(xí)的文章相同 : 如何使用Apache Kafka在生產(chǎn)中構(gòu)建和部署可擴(kuò)展機(jī)器學(xué)習(xí)。 但是我更專注于深度學(xué)習(xí)/神經(jīng)網(wǎng)絡(luò)。 我還討論了Apache Kafka生態(tài)系統(tǒng)中的一些創(chuàng)新以及最近幾個月的ML趨勢: Uber和Netflix的KSQL,ONNX,AutoML,ML平臺 。 讓我們看一下這些有趣的主題,以及它們之間的關(guān)系。
KSQL –一種Apache Kafka之上的流SQL語言。
“ KSQL是Apache Kafka的流SQL引擎 。 KSQL將入口欄放到了流處理領(lǐng)域,提供了一個簡單且完全交互的SQL接口來處理Kafka中的數(shù)據(jù)。 您不再需要使用Java或Python之類的編程語言編寫代碼! KSQL是開源的(Apache 2.0許可的),分布式的,可伸縮的,可靠的和實時的。 它支持各種強(qiáng)大的流處理操作,包括聚合,聯(lián)接,窗口,會話化等等。” 此處有更多詳細(xì)信息:“ KSQL簡介:Apache Kafka的開源流SQL ”。
您可以編寫類似SQL的查詢來部署可擴(kuò)展的,關(guān)鍵任務(wù)流處理應(yīng)用程序(在后臺利用Kafka Streams)。 絕對是Kafka開源生態(tài)系統(tǒng)中的一大亮點(diǎn)。
KSQL和機(jī)器學(xué)習(xí)
KSQL建立在Kafka Streams之上,因此允許構(gòu)建可擴(kuò)展的,關(guān)鍵任務(wù)服務(wù)。 通過構(gòu)建用戶定義功能(UDF),可以輕松嵌入包括神經(jīng)網(wǎng)絡(luò)在內(nèi)的機(jī)器學(xué)習(xí)模型。 這些天,我正在準(zhǔn)備一個示例,其中我將神經(jīng)網(wǎng)絡(luò)(更準(zhǔn)確地說是自動編碼器)應(yīng)用于傳感器分析,以實時檢測醫(yī)院客人的異常情況(即健康檢查中的關(guān)鍵值),從而向醫(yī)生發(fā)送警報。
現(xiàn)在讓我們討論一下機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)中一些有趣的新發(fā)展。
ONNX –一種表示深度學(xué)習(xí)模型的開放格式
“ ONNX 是代表深度學(xué)習(xí)模型的開放格式 。 借助ONNX,AI開發(fā)人員可以更輕松地在最先進(jìn)的工具之間移動模型,并選擇最適合他們的組合。”
這聽起來類似于PMML (預(yù)測模型標(biāo)記語言,請參閱KDnuggets上的“ What is PMML ”)和PFA (便攜式分析格式),這是另外兩個定義和共享機(jī)器學(xué)習(xí)模型的標(biāo)準(zhǔn)。 但是,ONNX在以下幾個方面有所不同:
- 專注于深度學(xué)習(xí)
- 背后有多家大型科技公司(AWS,Microsoft,Facebook)和硬件供應(yīng)商(AMD,NVidia,Intel,Qualcomm等)
- 已經(jīng)支持許多領(lǐng)先的開源框架(包括TensorFlow,Pytorch,MXNet)
ONNX已經(jīng)在GA 1.0版中投入使用,并且已經(jīng)可以量產(chǎn) ( 如Amazon,Microsoft和Facebook在2017年12月宣布的那樣 )。 對于不同的框架,還有一個不錯的入門指南 。
ONNX和Apache Kafka生態(tài)系統(tǒng)
不幸的是, ONNX還沒有Java支持 。 因此,尚不支持將其本身嵌入到Kafka Streams Java API中。 僅通過諸如執(zhí)行REST調(diào)用或嵌入JNI綁定之類的解決方法。 但是我非常確定這只是時間問題,因為Java平臺在許多企業(yè)中部署關(guān)鍵任務(wù)應(yīng)用程序非常重要。
現(xiàn)在,您可以使用Kafka的Java API或其他Kafka客戶端。 Confluent為幾種編程語言(例如Python或Go)提供了官方客戶 ,這兩種語言也非常適合機(jī)器學(xué)習(xí)應(yīng)用程序。
自動化機(jī)器學(xué)習(xí)(aka AutoML)
如前所述,“自動機(jī)器學(xué)習(xí)(AutoML)是一個熱門領(lǐng)域,其目標(biāo)是使人們能夠輕松選擇不同的機(jī)器學(xué)習(xí)算法,其參數(shù)設(shè)置以及提高其檢測大數(shù)據(jù)中復(fù)雜模式能力的預(yù)處理方法。” 在這里 。
使用AutoML,您無需任何有關(guān)機(jī)器學(xué)習(xí)的知識就可以構(gòu)建分析模型。 AutoML實現(xiàn)使用決策樹,聚類,神經(jīng)網(wǎng)絡(luò)等的不同實現(xiàn)來開箱即用地構(gòu)建和比較不同的模型。 您只需上傳或連接歷史數(shù)據(jù)集,然后單擊一些按鈕即可開始該過程。 可能不是每個用例都完美,但是您可以輕松地改進(jìn)許多現(xiàn)有流程,而無需稀有且昂貴的數(shù)據(jù)科學(xué)家。
DataRobot或Google的AutoML是該領(lǐng)域許多知名的云產(chǎn)品中的兩種。 H2O的AutoML已集成到其開源ML框架中,但它們還提供了一個很好的以UI為中心的商業(yè)產(chǎn)品,稱為“ 無人駕駛AI ”。 我強(qiáng)烈建議您在任何AutoML工具上花費(fèi)30分鐘。 看到AI工具如今如何發(fā)展真是令人著迷。
AutoML和Apache Kafka生態(tài)系統(tǒng)
大多數(shù)AutoML工具都提供其模型的部署。 您可以通過REST接口訪問分析模型。 對于可擴(kuò)展的事件驅(qū)動架構(gòu)(如Kafka)而言,并不是一個完美的解決方案。 好消息: 許多AutoML解決方案還允許導(dǎo)出其生成的模型,以便您可以將其部署到應(yīng)用程序中 。 例如,H2O開源框架中的AutoML只是眾多選擇之一。 您只能以您選擇的編程語言(R,Python,Scala,Web UI)使用其他操作:
aml <- h2o.automl(x = x, y = y,training_frame = train,leaderboard_frame = test,max_runtime_secs = 30)與構(gòu)建線性回歸,決策樹或神經(jīng)網(wǎng)絡(luò)類似。 結(jié)果是生成的Java代碼,您可以輕松地將它們嵌入到Kafka Streams微服務(wù)或任何其他Kafka應(yīng)用程序中。 AutoML使您能夠構(gòu)建和部署高度可擴(kuò)展的機(jī)器學(xué)習(xí),而無需掌握ML的豐富知識。
Netflix的介子
科技巨頭通常比“傳統(tǒng)企業(yè)”領(lǐng)先幾年。 他們已經(jīng)在幾年前建造了今天或明天建造的建筑。 ML平臺沒有區(qū)別。 編寫ML源代碼以訓(xùn)練分析模型只是現(xiàn)實世界ML基礎(chǔ)結(jié)構(gòu)的一小部分。 您需要考慮整個開發(fā)過程。 下圖顯示了“ 機(jī)器學(xué)習(xí)系統(tǒng)中的隱藏技術(shù)債務(wù) ”:
您可能會使用不同的技術(shù)構(gòu)建多個分析模型。 并非所有內(nèi)容都將構(gòu)建在您的Spark或Flink群集或單個云基礎(chǔ)架構(gòu)中。 您可以在公共云中的某個大型,昂貴的GPU上運(yùn)行TensorFlow,以構(gòu)建強(qiáng)大的神經(jīng)網(wǎng)絡(luò)。 或者使用H2O來構(gòu)建一些小的但非常高效且高性能的決策樹,這些決策樹會在幾微秒內(nèi)完成推理……ML有許多用例。
這就是為什么許多科技巨頭都建立了自己的ML平臺的原因,例如Uber的Michelangelo或Netflix的Meson 。 這些ML平臺使他們能夠構(gòu)建和監(jiān)視強(qiáng)大的,可擴(kuò)展的分析模型,而且還可以保持靈活性以針對每種用例選擇正確的ML技術(shù)。
適用于ML平臺的Apache Kafka生態(tài)系統(tǒng)
Apache Kafka如此成功的原因之一是許多科技巨頭的廣泛采用。 幾乎所有偉大的硅谷公司,如LinkedIn,Netflix,Uber,Ebay,都是“ you-name-it”博客,并談?wù)摿怂鼈內(nèi)绾螌afka用作關(guān)鍵任務(wù)應(yīng)用程序的事件驅(qū)動中樞神經(jīng)系統(tǒng)。 許多人將重點(diǎn)放在用于消息傳遞的分布式流平臺上,但我們也看到越來越多的插件被采用,例如Kafka Connect,Kafka Streams,REST Proxy,Schema Registry或KSQL。
如果您再次看一下上面的圖片,請考慮一下Kafka:它不是ML平臺的理想選擇嗎? 培訓(xùn),監(jiān)控,部署,推理,配置,A / B測試等,等等。這可能就是為什么Uber,Netflix和許多其他公司已經(jīng)將Kafka用作其ML基礎(chǔ)結(jié)構(gòu)的核心組件的原因。
同樣,您不必被迫僅使用一種特定技術(shù)。 Kafka的偉大設(shè)計概念之一是,您可以一次又一次地從其分布式提交日志中重新處理數(shù)據(jù)。 這意味著您既可以使用Kafka Sink(例如Apache Flink或Spark)的一種技術(shù)構(gòu)建不同的模型,也可以連接scikit-learn等進(jìn)行本地測試的技術(shù),在Google Cloud GPU上運(yùn)行的TensorFlow進(jìn)行強(qiáng)大的深度學(xué)習(xí)以及內(nèi)部安裝適用于AutoML的H2O節(jié)點(diǎn),以及部署在Docker容器或Kubernetes中的其他一些Kafka Streams ML應(yīng)用。 所有這些ML應(yīng)用程序都按照其速度和需要的頻率并行使用數(shù)據(jù)。
這是一個很好的示例,說明如何使用Kafka和Kafka Streams自動進(jìn)行可伸縮ML微服務(wù)的培訓(xùn)和部署 。 無需添加另一個大數(shù)據(jù)集群。 這是在您的ML應(yīng)用程序中使用Kafka Streams或KSQL而不是其他Stream Processing框架的主要區(qū)別之一。
Apache Kafka和深度學(xué)習(xí)– OOP的幻燈片
最后,在對Apa??che Kafka生態(tài)系統(tǒng)和機(jī)器學(xué)習(xí)/深度學(xué)習(xí)的新趨勢進(jìn)行了所有這些討論之后,這是我在OOP 2018大會上的演講的更新幻燈片:
2018年機(jī)器學(xué)習(xí)趨勢與 KaiW?hner 的Apache Kafka生態(tài)系統(tǒng)相結(jié)合
我還使用Apache Kafka,Kafka Streams和不同的開源ML框架(例如H2O,TensorFlow和DeepLearning4j(DL4J))構(gòu)建了一些示例 。 Github項目顯示了將分析模型部署到高度可擴(kuò)展,容錯且關(guān)鍵任務(wù)的Kafka微服務(wù)有多么容易。 KSQL演示也將很快發(fā)布。
請分享您的反饋。 您是否已經(jīng)在機(jī)器學(xué)習(xí)領(lǐng)域使用Kafka? 您除了使用Kafka核心外還使用哪些組件? 請隨時與我聯(lián)系以詳細(xì)討論。
翻譯自: https://www.javacodegeeks.com/2018/02/machine-learning-trends-2018-combined-apache-kafka-ecosystem.html
總結(jié)
以上是生活随笔為你收集整理的2018年机器学习趋势与Apache Kafka生态系统相结合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 方程豹“豹 5”新车内饰官图亮相:设计以
- 下一篇: ejb 示例 2018_EJB钝化和激活