结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势
摘要:?讓我們來研究下U`ber和Netflix上的KSQL,ONNX,AutoML和機器學習平臺,看看它們之間是如何相互關聯的。
? ??在2018慕尼黑OOP會議上,我展示了使用Apache Kafka生態系統和深度學習框架(如TensorFlow,DeepLearning4J)構建可擴展關鍵型(mission- critical)任務微服務的最新版本。本文中,我想分享出最新的幻燈片并討論最新趨勢。
本博文的主要內容與我在Confluent Blog中寫的關于Apache Kafka生態系統和機器學習文章一樣,但這里我更關注深度學習/神經網絡。我還討論了Apache Kafka生態系統中的一些創新以及機器學習最近幾個月的趨勢:Uber和Netflix上的KSQL,ONNX,AutoML和機器學習平臺。下面,讓我們來看看這些有趣的平臺以及它們之間是如何相互關聯的。
KSQL:Apache Kafka上的流式SQL語言
根據這篇文章可知:
“KSQL是Apache Kafka上的流式SQL引擎,KSQL降低了流處理領域的門檻,為Kafka中的數據處理提供了一個簡單且完全交互的SQL接口,并且不再需要用諸如Java或Python編程語言編寫代碼!KSQL是一個開放源碼(Apache 2.0 licensed),具有分布式,可擴展,可靠和實時等特性。它支持大量的流處理操作,包括聚合,連接,窗口化,會話等等。
你可以編寫類似SQL查詢的語句來部署可伸縮的關鍵型流處理app(利用Kafka Streams底層技術)——這絕對是Kafka開源生態系統中的一大亮點。
KSQL和機器學習
KSQL是在Kafka Streams基礎之上構建的,因此允許構建可擴展的關鍵型服務,它還包括神經網絡在內的機器學習模型可通過構建用戶自定義函數(UDF)輕松的嵌入。這些天我正在準備一個例子:將一個神經網絡(更確切地說是一個自動編碼器)用于傳感器分析對異常進行檢測,例如:實時檢測病人健康檢查中的健康臨界值,以便向醫生發送警報。
現在我們來談談機器學習生態系統中一些比較有意思的新發展。
ONNX:代表深度學習模式的開放版本
根據ONNX官網可知:
“ONNX代表著深度學習模式的開放版本,采用ONNX,AI開發人員可以更輕松地在各種最先進的工具之間對模型進行遷移,并選擇最適合他們的組合。”
這聽起來與PMML(預測模型標記語言,更多細節請參閱本文)和PFA(便攜式格式分析)類似,這兩個標準用于定義和共享機器學習模型。然而,ONNX在幾個方面有所不同:
1.ONNX專注于深度學習。
2.ONNX有幾家巨型科技公司(AWS,微軟,Facebook)和硬件廠商(AMD,NVidia,Intel,Qualcomm)在使用。
3.ONNX已經支持許多較為領先的開源框架(TensorFlow,Pytorch,MXNet)。
4.ONNX已經是GA版本1.0,并且可以在生產環境中使用(2017年12月由亞馬遜,微軟和Facebook聲明)。對于不同的框架來說是一個很好的入門指南。
ONNX和Apache Kafka生態系統
不幸的是,ONNX還不支持Java。?因此,目前還不支持將它嵌入到Kafka Streams Java API本地——只能通過一種解決方法:執行REST調用或嵌入JNI綁定。但我相信這只是時間問題,因為Java平臺對許多企業部署關鍵任務應用程序來說非常重要。
現在,你可以使用Kafka的Java API或其他Kafka客戶端。Confluent Blog為多種編程語言提供了官方客戶端,如Python或Go,這兩種編程語言都適用于機器學習應用程序。
自動機器學習(AKA AutoML)?
如此處所述:
“自動機器學習(AutoML)是一個炙手可熱的新領域,旨在使您輕松選擇不同的機器學習算法,其參數設置和預處理方法提高了在大數據中檢測復雜模式的能力。”
使用AutoML,你不需要學習任何關于機器學習的知識就可以構建分析模型。?AutoML使用決策樹、聚類、神經網絡等不同的實現方式來構建和比較不同模型,AutoML支持即開即用。你只需要上傳或連接歷史數據集,然后單擊幾個按鈕即可啟動該過程——不一定對于每種用例來說都是完美的,但是你可以很輕松的改進許多現有的流程,而無需使用罕見且昂貴的數據科學家。
DataRobot和Google AutoML是這個領域眾多知名云產品中的兩個。H2O AutoML被集成到其開源的機器學習框架中,同時它們也提供了一個非常好的基于UI的商業產品,稱為無人駕駛汽車AI。我強烈建議在任何一個AutoML工具上花費30分鐘的時間來研究下,來看看現在的人工智能工具如何發展,這真的很吸引人。
AutoML和Apache Kafka生態系統
大多數AutoML工具都提供了模型的部署。你可以訪問分析模型,即通過一個REST接口,而不是像Kafka可擴展的事件驅動架構這樣的的完美解決方案。?有一個好消息就是:許多AutoML解決方案還允許導出其生成的模型,以便將它們部署到你的應用程序中。例如,在H2O開源框架中的AutoML只是眾多選擇之一。您只需在你選擇的編程語言(R,Python,Scala,Web UI)中使用另外一個操作:
這和構建線性回歸方法、決策樹或神經網絡比較類似。其結果是生成的Java代碼,你可以很輕松地將其嵌入到Kafka Streams微服務或任何其他的Kafka應用程序中去。借助AutoML,你無需對機器學習有特別深入的了解,同樣也可以構建和部署高度可擴展的機器學習。
ML平臺:Uber的Michelangelo平臺; Netflix的Meson平臺
科技巨頭通常比“傳統企業”早幾年,他們早在幾年前就已經建立了你今天或明天想要建造的東西。同樣,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都在談論他們將Kafka作為其關鍵任務應用的中樞神經系統。許多人專注于分布式信息流平臺,但是我們也看到越來越多的附加組件被采用,如Kafka Connect,Kafka Streams,REST Proxy,Schema Registry以及KSQL。
再看看上面的圖片,想一想:Kafka不適合ML平臺嗎?它可以進行訓練,監控,部署,推理,配置,A / B測試等。這也許就是Uber,Netflix和其他許多公司已經將Kafka作為ML基礎設施核心組件的原因。
這一次,你不會被迫只使用一種特定的技術。Kafka最棒的設計理念之一就是:你可以一次又一次地從它的分布式提交日志中重新處理數據,這就意味著可以使用一種技術構建不同的模型作為Kafka接收器(比如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代替其他流處理框架的主要區別之一。
Apache Kafka和深度學習:OOP會議上的幻燈片
在對Apache Kafka生態系統和機器學習/深度學習的新趨勢的所有討論的同時,也展示了作者在OOP 2018會議上的演講中展示幻燈片,幻燈片請點擊原文觀看。
我還使用了Apache Kafka,Kafka Streams以及不同的開源ML框架(如H2O,TensorFlow和DeepLearning4j(DL4J))構建了一些示例。GitHub項目顯示了將分析模型部署到高度可擴展的容錯任務關鍵型Kafka微服務上是一件很容易的事。我們也很快將會推出一個KSQL演示。
文章原標題《5 Machine Learning Trends for 2018 Combined With Apache Kafka Ecosystem》,
譯者:Mags,審校:袁虎。
原文鏈接
干貨好文,請關注掃描以下二維碼:
總結
以上是生活随笔為你收集整理的结合Apache Kafka生态系统,谈谈2018年机器学习5大趋势的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云大数据利器之-RDS迁移到Maxc
- 下一篇: 《阿里巴巴Android开发手册》v1.