InfoWorld編輯和評(píng)論家評(píng)選出今年最好的軟件開發(fā),云計(jì)算,大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)工具。 歡迎來到InfoWorld的年度技術(shù)獎(jiǎng),這是我們對(duì)信息技術(shù)領(lǐng)域中最好,最具創(chuàng)新性,最重要的產(chǎn)品的年度慶典。 在這個(gè)2019年版的獎(jiǎng)項(xiàng)中,你可能會(huì)猜出有容器,云原生應(yīng)用程序棧,分布式數(shù)據(jù)處理系統(tǒng)和機(jī)器學(xué)習(xí)是主要的主題。 在我們的16項(xiàng)獲獎(jiǎng)技術(shù)中,你將找到三項(xiàng)領(lǐng)先的機(jī)器學(xué)習(xí)庫,一項(xiàng)加速深度學(xué)習(xí)的分布式培訓(xùn)框架,以及一項(xiàng)通過特征工程,模型選擇,培訓(xùn)和優(yōu)化來指導(dǎo)非專家的自動(dòng)化平臺(tái)。與其他任何產(chǎn)品類別相比,這使機(jī)器學(xué)習(xí)成為更多選擇,包括軟件開發(fā),這反映了該領(lǐng)域令人吃驚的活動(dòng)水平。 三項(xiàng)數(shù)據(jù)庫技術(shù)今年出現(xiàn)在我們的贏家名單李,包括一項(xiàng)寬列數(shù)據(jù)存儲(chǔ),一項(xiàng)多功能數(shù)據(jù)存儲(chǔ),以及一項(xiàng)與數(shù)據(jù)存儲(chǔ)一樣多的應(yīng)用程序平臺(tái)的數(shù)據(jù)庫。因?yàn)閿?shù)據(jù)總是必須從這里遷移到那里,最好是實(shí)時(shí),我們還包括兩個(gè)用于構(gòu)建流處理應(yīng)用程序的領(lǐng)先平臺(tái)。 請(qǐng)繼續(xù)閱讀以了解今年的獲獎(jiǎng)?wù)摺?/p> 1、Kubernetes Kubernetes(又名K8s)在過去幾年里有驚人的增長(zhǎng)。它曾經(jīng)是眾多容器編排系統(tǒng)中的一種,但現(xiàn)在它正在迅速成為普遍的標(biāo)準(zhǔn)平臺(tái),無論是在主要的云提供商,還是在本地的企業(yè)級(jí)安裝中。如果你處于運(yùn)營(yíng)領(lǐng)域,那么花時(shí)間在Kubernetes上將有可能獲得回報(bào),因?yàn)殚_源項(xiàng)目將繼續(xù)其無情的進(jìn)軍。 基于十年來運(yùn)行Google海量數(shù)據(jù)中心的想法和經(jīng)驗(yàn)教訓(xùn),Kubernetes是一個(gè)經(jīng)過實(shí)戰(zhàn)考驗(yàn)的平臺(tái),用于在大型集群中部署,擴(kuò)展和監(jiān)控基于容器的應(yīng)用程序和工作負(fù)載。在過去的一年中,Kubernetes的發(fā)布帶來了重大亮點(diǎn),例如存儲(chǔ)大修,移動(dòng)到容器存儲(chǔ)接口,TLS安全的Kubelet引導(dǎo)以及改進(jìn)的Microsoft Azure支持。 我們還看到了核心Kubernetes堆棧的重要補(bǔ)充,例如Istio,它定義了一個(gè)服務(wù)網(wǎng)格,可以更好地控制部署,可觀察性和安全性。我們已經(jīng)看到了更多專門的框架,例如Kubeflow,它允許你輕松地在Kubernetes上啟動(dòng)TensorFlow或PyTorch機(jī)器學(xué)習(xí)流水線,所有這些都由同樣在集群上運(yùn)行的Jupyter筆記本控制。 旨在簡(jiǎn)化Kubernetes管理某些方面的第三方工具和框架的數(shù)量,從簡(jiǎn)化應(yīng)用程序定義到監(jiān)控多個(gè)集群,似乎每天都在增長(zhǎng)。與Kubernetes采用者的數(shù)量一樣,2018年的主要公告和推薦來自IBM,華為,Sling TV和ING等。 哎呀,即便是福樂雞(Chick-fil-A)在每家餐館都經(jīng)營(yíng)著Kubernetes。 是不是你也應(yīng)該登上K8S的大船? --Ian Pointer 2、Firebase 不久的將來,我們可能還沒有量子計(jì)算,思維閱讀AI和次線性算法來解決郵差問題,但無論如何,我們肯定會(huì)用到“數(shù)據(jù)庫”。所有優(yōu)秀的軟件技術(shù)最終被DBA所管理的Borg吸收。Firebase的出現(xiàn)就是如何實(shí)現(xiàn)這一目標(biāo)的一個(gè)很好的例子。 乍一看,F(xiàn)irebase看起來像一個(gè)簡(jiǎn)單的存儲(chǔ)解決方案,用于密鑰及其附帶的值。換句話說,就像其他NoSQL數(shù)據(jù)庫一樣,一對(duì)保持合理一致的對(duì)。但多年來,谷歌一直在增加一些功能,讓Firebase可以做更多基于云的網(wǎng)絡(luò)應(yīng)用程序可能做的工作,谷歌甚至開始將Firebase稱為移動(dòng)平臺(tái)。 還記得當(dāng)互聯(lián)網(wǎng)不完美時(shí)你在客戶端上緩存數(shù)據(jù)的挑戰(zhàn)嗎? Firebase團(tuán)隊(duì)意識(shí)到保持?jǐn)?shù)據(jù)庫一致性的同步例程也是從移動(dòng)客戶端推送和提取數(shù)據(jù)的理想工具。他們打開了同步過程,現(xiàn)在你的代碼不需要處理一些復(fù)雜的算法來握手或擺弄網(wǎng)絡(luò)。你只需將其遷移到Firebase,就像魔術(shù)一樣,它們出現(xiàn)在手機(jī)的副本中。它只是一個(gè)大數(shù)據(jù)庫,你的服務(wù)器例程和客戶端例程只是從公共池讀取和寫入。 隨著將Firebase與其余部分集成在一起,Google不斷添加更多內(nèi)容。驗(yàn)證你的社交登錄到Facebook、谷歌,讓你的用戶訪問正確的數(shù)據(jù)庫片段。分析、托管、消息,Google的所有解決方案都逐漸被數(shù)據(jù)庫所覆蓋。包括機(jī)器學(xué)習(xí),對(duì)于想要分析數(shù)據(jù)庫中已有的鍵/值對(duì)的Firebase用戶,它已經(jīng)是測(cè)試版選項(xiàng)。從某種意義上說,我們已經(jīng)開始將AI與數(shù)據(jù)庫合并。 --Peter Wayner 3、Serverless 租用服務(wù)器的第一代云,通過解除所有繁瑣的硬件相關(guān)職責(zé),為我們節(jié)省了時(shí)間。服務(wù)器放在遙遠(yuǎn)的建筑物里,加熱,冷卻和維護(hù)都是別人的問題。下一代云技術(shù)正在擺脫服務(wù)器,至少在名義上,并且不僅節(jié)省了對(duì)操作系統(tǒng)補(bǔ)丁和更新的煩惱,而且避免了與應(yīng)用程序交付相關(guān)的大多數(shù)麻煩。 我們的代碼仍然存在服務(wù)器硬件和操作系統(tǒng),但現(xiàn)在更多的是其他人的責(zé)任。我們可以上傳函數(shù),讓其他人的軟件堆棧評(píng)估它們,而不是通過root訪問獲得事物。我們可以專注于功能,并將其他一切留給那些讓云保持運(yùn)行的技術(shù)。 但是仍有挑戰(zhàn),無服務(wù)器意味著重新思考技術(shù)架構(gòu)。依賴事件和異步隊(duì)列需要將應(yīng)用程序重構(gòu)為整齊劃分的任務(wù)。雖然已經(jīng)有了一些工具支持,但仍需要弄清楚:集成調(diào)試,分布式監(jiān)控,部署打包,功能版本控制等。 然后有供應(yīng)商鎖定擔(dān)心。領(lǐng)先的FaaS(函數(shù)即服務(wù))提供商:AWS Lambda,Microsoft Azure功能和Google Cloud Functions,都有自己專門的部署和操作方法。 無服務(wù)器框架特有的功能是提供了一個(gè)針對(duì)特定于供應(yīng)商的實(shí)現(xiàn)的抽象層,以簡(jiǎn)化應(yīng)用程序部署。開源框架為你提供了方便的方法來測(cè)試和部署您的功能到各種云提供商,并通過常見的YAML文件簡(jiǎn)化配置更新,同時(shí)還提供豐富的功能管理和安全功能。 除了這些專業(yè),Serverless Framework還支持Kubeless,一個(gè)用于在Kubernetes集群上部署FaaS的框架,以及Apache OpenWhisk,這是一個(gè)支持IBM Cloud Functions的基于Docker的平臺(tái),提供廣泛的語言支持和獨(dú)特的功能來處理更持久的連接。 無服務(wù)器計(jì)算既不成熟也不是每個(gè)用例的銀彈,但經(jīng)濟(jì)性和效率難以抗拒。借助無服務(wù)器框架來緩解困難,為什么不加入越來越多的企業(yè)轉(zhuǎn)向無服務(wù)器以降低運(yùn)營(yíng)成本并加快部署速度? -- James R. Borck 4、Elastic Stack 如果你現(xiàn)在正在運(yùn)行面向用戶的Web應(yīng)用程序,則無法提供復(fù)雜的搜索功能。不斷給用戶提供自由文本搜索界面,可以修復(fù)拼寫,自動(dòng)建議替代短語,并突出顯示搜索結(jié)果,以顯示返回某些結(jié)果的原因。無論喜歡與否,這些都是你必須遵守的搜索標(biāo)準(zhǔn)。 幸運(yùn)的是,Elastic Stack將滿足你的所有搜索需求等等。Elastic Stack主要由Elasticsearch,Kibana,Logstash和Beats組成,支持許多用例,包括面向用戶的文檔搜索和集中式日志聚合和分析。將文檔一次索引或大量索引到Elasticsearch中幾乎可以從任何語言編寫索引,并且可以對(duì)所有字段的映射類型進(jìn)行最佳猜測(cè)(請(qǐng)考慮關(guān)系數(shù)據(jù)庫中的列數(shù)據(jù)類型)?,F(xiàn)在你可以使用完整的搜索API,包括模糊搜索,突出顯示和分面搜索結(jié)果。將它與Searchkit等前端工具配對(duì),你就可以立即快速獲得分面自由文本搜索原型。 使用Logstash和Beats從任意數(shù)量的單獨(dú)服務(wù)聚合日志變得更加容易,允許你將日志行發(fā)送到集中式Elasticsearch集群,以便更輕松地進(jìn)行故障排除和分析。將日志數(shù)據(jù)編入索引后,使用Kibana構(gòu)建圖表并組裝儀表板以使系統(tǒng)健康狀況一目了然, Elastic Stack是當(dāng)今任何新Web項(xiàng)目的必備之一。 --Jonathan Freeman 5、DataStax Enterprise Apache Cassandra是一個(gè)開源的大型分布式列系列數(shù)據(jù)庫,受Google的Bigtable論文的啟發(fā),是運(yùn)行大規(guī)??蓴U(kuò)展的全球數(shù)據(jù)基礎(chǔ)架構(gòu)的絕佳方式。無主設(shè)計(jì)非常適合運(yùn)行多種類型的高吞吐量云應(yīng)用。 但是,Cassandra并不是最容易部署和管理的系統(tǒng)。當(dāng)嘗試執(zhí)行涉及分析,搜索和圖形操作的各種類型的應(yīng)用程序時(shí),它也會(huì)讓你失望。DataStax Enterprise(又名DSE)增加了這些功能以及改進(jìn)的性能和安全性,大大改進(jìn)了管理,高級(jí)復(fù)制,內(nèi)存中OLTP,批量加載器,分層存儲(chǔ),搜索,分析和開發(fā)人員工作室。 與Bigtable和Cassandra一樣,DataStax Enterprise最適合大型數(shù)據(jù)庫,兆兆字節(jié)到千兆字節(jié),最好與非規(guī)范化架構(gòu)一起使用,每個(gè)row有很多列。DataStax和Cassandra用戶傾向于將其用于非常大規(guī)模的應(yīng)用程序。例如,eBay使用DataStax Enterprise存儲(chǔ)250 TB的拍賣數(shù)據(jù),每天寫入60億次,每次讀取50億次。 DataStax Enterprise 6在2018年帶來了DSE Analytics,DSE Graph和DSE Search中的幾項(xiàng)新功能,以及更精細(xì)的安全設(shè)置。DataStax Studio的改進(jìn)跟蹤DSE Analytics的改進(jìn),例如對(duì)Spark SQL的支持,以及對(duì)帶有交互式圖形的DSE Graph的擴(kuò)展IDE支持。最重要的是,基準(zhǔn)測(cè)試顯示DSE 6比Cassandra快倍數(shù)。 — Andrew C. Oliver 6、Apache Kafka 老實(shí)說,想象一個(gè)沒有Apache Kafka的世界是奇怪的。分布式流媒體平臺(tái)將很快慶祝其八歲生日,該項(xiàng)目仍然是流媒體應(yīng)用程序的堅(jiān)實(shí)開源選擇,無論是要添加Apache Storm還是Apache Spark等處理或使用由Apache Kafka本身。Kafka可以輕松處理低延遲應(yīng)用程序,其基于日志的存儲(chǔ)使其成為需要可靠性的絕佳選擇。 為了與數(shù)據(jù)庫和其他數(shù)據(jù)源進(jìn)行交互,Kafka Connect包含許多連接到流行產(chǎn)品的連接器,如Microsoft SQL Server,Elasticsearch,HDFS,Amazon S3等等,允許通過編輯數(shù)據(jù)流將數(shù)據(jù)流入Apache Kafka集群、配置文件。想象一下,設(shè)置從數(shù)據(jù)庫到Amazon S3的整個(gè)管道,而無需編寫自定義代碼或觸摸任何Java代碼。 Confluent是Apache Kafka的主要開發(fā)者之一,包括最初的創(chuàng)建者:Jay Kreps,Neha Narkhede和Jun Rao,提供了一個(gè)基于開源產(chǎn)品的平臺(tái)。雖然這包括傳統(tǒng)的企業(yè)好東西,例如更好的操作用戶界面,但它還包括KSQL,這是一個(gè)庫,使你能夠使用直接SQL查詢和處理Kafka主題中保存的數(shù)據(jù)。 如果你不自己完成運(yùn)行Apache Kafka的任務(wù),那么Google會(huì)提供一個(gè)與Confluent結(jié)合使用的托管平臺(tái),而亞馬遜則為Kafka(Amazon MSK)提供Managed Streaming。亞馬遜MSK目前正在進(jìn)行公開預(yù)覽,有可能在2019年的某個(gè)時(shí)候達(dá)到普遍可用性。 --Ian Pointer 7、Apache Beam Apache Beam采用一種前瞻性的方法來開發(fā)批處理和流處理流水線。與大多數(shù)平臺(tái)不同,Beam將開發(fā)語言從最終的執(zhí)行引擎中抽象出來??梢允褂肑ava、Python或Go編寫流水線,然后混合并匹配運(yùn)行時(shí)引擎以滿足你的特定需求,例如,針對(duì)內(nèi)存中的作業(yè)使用Apache Spark或針對(duì)低延遲性能使用Apache Flink。 Apache Beam不僅為處理分布式ETL,實(shí)時(shí)數(shù)據(jù)分析和機(jī)器學(xué)習(xí)管道提供了可靠的引擎,而且還可以通過未來證明你的投資的方式實(shí)現(xiàn)這一目標(biāo)。 --James R. Borck 8、Redis 這是NoSQL數(shù)據(jù)庫!這是內(nèi)存緩存!這是消息中間件!Redis是以上所有并且提供更多功能。Redis在一個(gè)包中提供了許多有用的功能,所謂的“內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)”已成為現(xiàn)代Web應(yīng)用程序堆棧的主要內(nèi)容并不奇怪,幾乎所有編程語言都可以選擇庫支持使用。 Redis提供的工作能力僅限于給定工作所需的復(fù)雜性和功能。如果你只需要一個(gè)簡(jiǎn)單的數(shù)據(jù)片段內(nèi)存緩存,你可以在幾分鐘內(nèi)設(shè)置Redis并使用您的應(yīng)用程序。如果你想要什么相當(dāng)于磁盤支持的NoSQL系統(tǒng),具有不同的數(shù)據(jù)結(jié)構(gòu)和你選擇的緩存驅(qū)逐方案,你可以只需要更多的努力。 Redis 5.0于2018年10月發(fā)布,它引入了許多強(qiáng)大的新功能,其中最重要的是新的流數(shù)據(jù)類型。這種類似日志的附加數(shù)據(jù)結(jié)構(gòu)使得用Redis構(gòu)建類似Apache Kafka的消息傳遞系統(tǒng)成為可能。Redis 5.0中的其他改進(jìn)包括更好的內(nèi)存管理和碎片控制,以內(nèi)存存儲(chǔ)為基礎(chǔ)的系統(tǒng)的重要性能增強(qiáng)作為其主要隱喻。 --Serdar Yegulalp 9、Visual Studio Code Visual Studio Code的優(yōu)點(diǎn)在于它可以與你希望的一樣多,也可以一樣少。Visual Studio Code將作為一個(gè)快速輕量級(jí)的編輯器,如果你只需要它,或者成為一個(gè)成熟的開發(fā)環(huán)境,這要?dú)w功于當(dāng)今使用的幾乎所有主要語言或運(yùn)行時(shí)的插件和附加組件。Python,Java,Kotlin,Go,Rust,JavaScript,TypeScript和Node.js(更不用說微軟自己的.Net語言)都有很好的支持,像Markdown,HTML,reStructuredText和LLVM IR這樣的補(bǔ)充文檔格式也是如此。 除了廣泛的支持和廣泛采用之外,Visual Studio Code還為產(chǎn)品提供了無情的改進(jìn)和補(bǔ)充。沒有忽略任何功能區(qū)域。因此,你將獲得對(duì)Git,Team Foundation Server,Docker,代碼linting,重構(gòu),大型文件等的強(qiáng)大支持。甚至可以在自包含目錄中運(yùn)行Visual Studio Code,從而打開重新打包Visual的大門Studio Code是一個(gè)獨(dú)立的環(huán)境,可以滿足夢(mèng)寐以求的新目標(biāo)。 — Serdar Yegulalp 10、.Net Core 有人說,將軟件項(xiàng)目轉(zhuǎn)換為開源是最好的,也可能是最糟糕的事情。就微軟的.Net Framework而言,開放源代碼的一部分功能為.Net Core一直是一個(gè)鮮明的積極因素,導(dǎo)致更輕量級(jí)的運(yùn)行時(shí)具有開放的開發(fā)流程,跨平臺(tái)優(yōu)先的理念,以及兼容性橋接到需要它的應(yīng)用程序的主.Net Framework。 2018年5月發(fā)布的2.1版本推出了許多功能,補(bǔ)充了這個(gè)更大的計(jì)劃。其中最大的:.Net Core Global Tools,一個(gè)用于部署和擴(kuò)展用于管理.Net應(yīng)用程序的命令行工具的新系統(tǒng); Windows兼容包,提供對(duì)用于Windows原生應(yīng)用程序的大哥.Net Framework中使用的20,000個(gè)API的訪問;用于在移植Windows應(yīng)用程序時(shí)識(shí)別Windows API依賴關(guān)系的API分析工具;和捆綁最新運(yùn)行時(shí)的自包含.Net核心應(yīng)用程序的機(jī)制。 — Serdar Yegulalp 11、LLVM 乍一看,LLVM似乎是我們獎(jiǎng)項(xiàng)的深?yuàn)W選擇。用于構(gòu)建編程語言編譯器的工具包?但LLVM編譯器框架的強(qiáng)大功能是許多A-list項(xiàng)目的核心:Clang,Rust,Swift,Julia以及許多其他推動(dòng)編程語言發(fā)展的創(chuàng)新項(xiàng)目。 LLVM為開發(fā)人員提供了以編程方式生成機(jī)器本機(jī)代碼的方法,并且無需了解他們想要定位的每個(gè)體系結(jié)構(gòu)和平臺(tái)的變化。明顯的用例是語言編譯器,但LLVM也使各種其他應(yīng)用程序成為可能。例如,PostgreSQL使用LLVM動(dòng)態(tài)生成加速SQL查詢的代碼。同樣,Numba項(xiàng)目使用LLVM將慢速Python代碼轉(zhuǎn)換為快速匯編語言,以用于高速數(shù)字運(yùn)算應(yīng)用程序。 LLVM的2018年兩個(gè)主要版本引入了一系列改進(jìn):更好地支持更新的英特爾處理器,多處理器方案,緩解常見處理器缺陷,評(píng)估特定CPU架構(gòu)上生成代碼性能的工具,以及LLVM鏈接器LLD的進(jìn)一步工作,可以跨多個(gè)平臺(tái)從LLVM生成獨(dú)立的可執(zhí)行文件。 — Serdar Yegulalp 12、TensorFlow TensorFlow是一個(gè)使用數(shù)據(jù)流圖進(jìn)行數(shù)值計(jì)算的開源軟件庫。圖形節(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,而圖形邊緣表示在它們之間流動(dòng)的多維數(shù)據(jù)陣列(張量)。這種靈活的體系結(jié)構(gòu)可以將計(jì)算部署到桌面,服務(wù)器或移動(dòng)設(shè)備中的一個(gè)或多個(gè)CPU或GPU,而無需重寫代碼。TensorFlow還包括TensorBoard,一種數(shù)據(jù)可視化工具包。 在版本1.12中,TensorFlow是迄今為止使用最廣泛且被廣泛引用的深度學(xué)習(xí)框架。雖然它仍然支持其原始的低級(jí)API,但優(yōu)惠的高級(jí)API現(xiàn)在是tf.keras,它是TensorFlow的Keras API標(biāo)準(zhǔn)的實(shí)現(xiàn),包括TensorFlow特定的增強(qiáng)功能。 雖然TensorFlow仍然支持構(gòu)建數(shù)據(jù)流圖并在稍后的會(huì)話中運(yùn)行它,但它現(xiàn)在也完全支持急切的執(zhí)行模式,這是一個(gè)必要的,逐個(gè)運(yùn)行的界面。渴望執(zhí)行模式支持通過tf.GradientTape API自動(dòng)區(qū)分。 tf.keras的一個(gè)增強(qiáng)功能是支持急切執(zhí)行。 Keras API和熱切執(zhí)行模式都將在TensorFlow 2.0中展示。雖然在2.0版中不推薦使用其他一些API,但除兼容性庫外,還會(huì)有現(xiàn)有代碼的轉(zhuǎn)換工具。 估算器是TensorFlow最具擴(kuò)展性和生產(chǎn)導(dǎo)向的模型類型??梢允褂肎oogle提供的預(yù)制Estimators,也可以編寫自己的自定義Estimators。估算器本身構(gòu)建在tf.keras.layers上,簡(jiǎn)化了自定義。使用Estimators創(chuàng)建模型通常比使用低級(jí)TensorFlow API更容易。預(yù)制估算器使您能夠在比基本TensorFlow API更高的概念級(jí)別上工作。 -- Martin Heller 13、Keras Keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,用Python編寫,能夠在TensorFlow,CNTK或Theano之上運(yùn)行。支持其他第三方后端,如MXNet和PlaidML。 在TensorFlow,tf.keras中實(shí)現(xiàn)Keras,具有一些特定于TensorFlow的增強(qiáng)功能。Keras并不是構(gòu)建神經(jīng)網(wǎng)絡(luò)模型的唯一簡(jiǎn)化的高級(jí)API,但它在TensorFlow中的突出地位突出了其質(zhì)量和重要性。在TensorFlow之后,Keras目前是第二大被引用的神經(jīng)網(wǎng)絡(luò)API。 Keras的創(chuàng)建是為了用戶友好,模塊化,易于擴(kuò)展,并與Python一起使用。API是“為人類而不是機(jī)器設(shè)計(jì)的”,并且“遵循減少認(rèn)知負(fù)荷的最佳實(shí)踐”。 神經(jīng)層,成本函數(shù),優(yōu)化器,初始化方案,激活函數(shù)和正則化方案都是Keras中的獨(dú)立模塊,可以將它們組合在一起以創(chuàng)建新模型。新模塊很容易添加,作為新的類和函數(shù)。模型在Python代碼中定義,而不是單獨(dú)的模型配置文件。 使用Keras的最大原因源于其指導(dǎo)性設(shè)計(jì)原則,主要是關(guān)于用戶友好的原則。除了易于學(xué)習(xí)和簡(jiǎn)化模型構(gòu)建之外,Keras還具有廣泛采用的優(yōu)勢(shì),支持廣泛的生產(chǎn)部署選項(xiàng),對(duì)多個(gè)GPU和分布式培訓(xùn)提供強(qiáng)大支持,并得到Google,Microsoft,Amazon,Apple,Nvidia的支持,優(yōu)步等。 --Martin Heller 14、PyTorch PyTorch是一個(gè)用于在Python中創(chuàng)建具有強(qiáng)大GPU加速度的張量和動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)的庫,目前是TensorFlow和Keras之后引用率第三高的神經(jīng)網(wǎng)絡(luò)框架。動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)可以從迭代變?yōu)榈?,例如允許PyTorch模型在訓(xùn)練期間添加和刪除隱藏層以提高其準(zhǔn)確性和通用性。PyTorch在每個(gè)迭代步驟中即時(shí)重新創(chuàng)建圖形。 PyTorch集成了加速庫,如英特爾MKL,Nvidia cuDNN和Nvidia NCCL,以最大限度地提高速度。其核心CPU和GPU張量和神經(jīng)網(wǎng)絡(luò)后端-TH(Torch),THC(Torch Cuda),THNN(Torch神經(jīng)網(wǎng)絡(luò))和THCUNN(Torch Cuda神經(jīng)網(wǎng)絡(luò)) - 作為具有C99 API的獨(dú)立庫編寫。同時(shí),PyTorch不是Python綁定到單片C ++框架 - PyTorch的目的是與Python深度集成并允許使用其他Python庫。 PyTorch能夠在張量發(fā)生變化時(shí)對(duì)其進(jìn)行快照。該框架通過查看該點(diǎn)與先前張量之間的差異來近似每個(gè)保存張量的梯度。被稱為“autograd”,這可以加快計(jì)算梯度,最多可達(dá)三倍。鑒于最陡的下降優(yōu)化器依賴于梯度,它可以將整個(gè)訓(xùn)練過程加速三倍。 TensorFlow具有相同的功能。 PyTorch主要由Facebook支持,但其他贊助商和貢獻(xiàn)者包括Twitter,Salesforce和Microsoft。微軟已經(jīng)貢獻(xiàn)了源自其自己的CNTK框架的技術(shù),以增加PyTorch從Torch和Caffe繼承的功能。 --Martin Heller 15、Horovod Horovod是TensorFlow,Keras和PyTorch的分布式培訓(xùn)框架,在Uber創(chuàng)建。Horovod的目標(biāo)是使分布式深度學(xué)習(xí)快速且易于使用。Horovod建立在百度實(shí)施TensorFlow環(huán)allreduce算法草案的基礎(chǔ)之上。 優(yōu)步最初嘗試使用帶有參數(shù)服務(wù)器的Distributed TensorFlow。工程師發(fā)現(xiàn)MPI模型要簡(jiǎn)單得多,并且需要更少的代碼更改。優(yōu)步聲稱,Horovod系統(tǒng)可以訓(xùn)練AI模型的速度大約是TensorFlow傳統(tǒng)部署速度的兩倍。 Horovod使用Open MPI(或其他MPI實(shí)現(xiàn))在節(jié)點(diǎn)之間傳遞消息,而Nvidia NCCL則使用高度優(yōu)化的ring allreduce版本。 Horovod在Inception-v3和ResNet-101上實(shí)現(xiàn)了90%的擴(kuò)展效率,在高達(dá)512個(gè)Nvidia Pascal GPU上實(shí)現(xiàn)了68%的VGG-16擴(kuò)展效率。 2018年12月,優(yōu)步宣布它正在Linux基金會(huì)的LF深度學(xué)習(xí)基金會(huì)的支持下開放Horovod項(xiàng)目,用于開源人工智能軟件。 --Martin Heller 16、XGBoost XGBoost(eXtreme Gradient Boosting)是一個(gè)開源機(jī)器學(xué)習(xí)庫,它為Python,R,Java,Julia和其他編程語言實(shí)現(xiàn)分布式梯度提升。核心項(xiàng)目代碼是用C ++編寫的。 XGBoost提供了一種并行樹提升算法,可以快速準(zhǔn)確地解決許多數(shù)據(jù)科學(xué)問題。相同的代碼在單個(gè)機(jī)器和分布式環(huán)境(Hadoop,MPI,Spark等)上運(yùn)行。分布式版本可以擴(kuò)展以解決比數(shù)十億示例更大的問題。 XGBoost通過贏得一些Kaggle比賽而在數(shù)據(jù)科學(xué)界成名。它起源于華盛頓大學(xué)的一個(gè)研究項(xiàng)目。由Tianqi Chen和Carlos Guestrin撰寫的2016年XGBoost論文解釋了漸變樹增強(qiáng)算法和XGBoost中添加的改進(jìn),例如緩存感知預(yù)取和稀疏感知。本文還比較了XGBoost與Scikit-learn和R.gbm中用于分類的其他兩種常用的確切貪婪樹提升實(shí)現(xiàn)的性能,并對(duì)學(xué)習(xí)排名問題的pGBRT(并行梯度提升回歸樹)測(cè)試XGBoost。 --Martin Heller 17、H2O Driverless AI 在將原始數(shù)據(jù)轉(zhuǎn)換為預(yù)測(cè)分析時(shí),H2O Driverless AI憑借其自動(dòng)化的簡(jiǎn)單性超越了所有人。最佳實(shí)踐護(hù)欄和路標(biāo)將非AI專家引導(dǎo)到發(fā)現(xiàn)的路徑,使用有監(jiān)督和無監(jiān)督的機(jī)器學(xué)習(xí)來發(fā)現(xiàn)隱藏的模式。 你提供數(shù)據(jù)并隔離因變量,H2O的本地算法可以完成特征工程,模型選擇,培訓(xùn)和優(yōu)化。 這不是魔術(shù),你仍然希望了解你的數(shù)據(jù)集和解釋輸出的能力,但H2O的可視化工具和清晰的解釋對(duì)于理解業(yè)務(wù)團(tuán)隊(duì),IT和數(shù)據(jù)科學(xué)家之間的理解有很長(zhǎng)的路要走。 數(shù)據(jù)科學(xué)家和開發(fā)人員可以通過Python和R. Jupyter筆記本出口機(jī)器學(xué)習(xí)管道代碼進(jìn)行生產(chǎn)來提升模型參數(shù)并構(gòu)建功能。無論是在本地還是在云中,H2O都可以與你現(xiàn)有的大數(shù)據(jù)基礎(chǔ)架構(gòu)(如Hadoop或Spark)一起使用,從HDFS,Amazon S3或Azure Data Lake中提取數(shù)據(jù),并點(diǎn)擊Nvidia GPU處理以獲得更高的速度。 H2O在2018年推出了幾項(xiàng)重大更新,最重要的是自然語言處理,時(shí)間序列預(yù)測(cè)和梯度提升。視覺決策樹現(xiàn)在以圖形方式逐步引導(dǎo)用戶理解預(yù)測(cè)的“如何” - 例如,澄清為什么保險(xiǎn)索賠被標(biāo)記為欺詐。 H2O甚至開始在亞馬遜和微軟云上直接提供算法。 H2O無人駕駛AI不會(huì)讓數(shù)據(jù)工程師走上街頭或解決每一個(gè)先進(jìn)的機(jī)器學(xué)習(xí)問題。但它提供了從頭開始構(gòu)建AI的簡(jiǎn)化替代方案,減少了企業(yè)變得更具預(yù)測(cè)性和反應(yīng)性所需的時(shí)間。 --James R. Borck 原文地址: https://www./article/3336072/application-development/infoworlds-2019-technology-of-the-year-award-winners.html |
|