開源DAWN,Spark和Mesos後Stanford的又一力作

AI前線發表於2017-12-22

本文由 【AI前線】原創,原文連結:http://t.cn/RTkgXrG


作者|Peter Bailis 等

譯者|Debra

編輯|Emily

AI 前線導讀:”這是個普及機器學習實踐的專案,但是不需要使用者具有 AI 背景,他們取名為 DAWN,意思為“下一代資料分析”。背後的團隊曾成功的研發出 Spark、Mesos、DeepDive、HogWild 等。可以想象這又會是一個成功的專案。”


隨著 ML 應用程式技術的發展,越來越多的組織開始將這種技術用於生產中以提高效率。然而,事實上,這種“高階”技術只有那些資金充足和有龐大技術團隊的組織才能享用,為了大幅簡化 AI 應用程式構建過程,普及 AI 技術,讓非 ML 專家也能利用這項技術造福社會,史丹佛大學開啟了一個為期五年的專案——DAWN( Data Analytics for What’s Next,下一代資料分析)。

DAWN 是史丹佛大學的一個工業分支機構計劃,從 2007 年啟動,由幾家公司提供不受限制的資金支援,每年約有 50 萬美元的贊助金,包括 Intel、Microsoft、Teradata、VMware 等,另外還得到 NSF(美國國家科學基金會,National Science Foundation)和 DARPA(美國國防高階研究計劃局,Defense Advanced Research Projects Agency)等政府資助機構的額外支援。

據該團隊聲稱,其過去的研究(Spark、Mesos、DeepDive、HogWild 等)已經開始服務矽谷和世界各地,在打擊人口販賣、協助癌症診斷和進行高通量基因組測序等方面,開發了大量人工智慧和資料產品開發工具。而他們的下一步,是使這些工具更高效,更容易訪問,從訓練集建立和模型設計,到監控和高效執行等各方面。

簡單來說,DAWN 要解決的問題是:

一個擁有專業知識,但是沒有機器學習博士學位,不是系統專家,不瞭解最新的硬體的專家,如何建立自己的 ML 產品?

以下為該專案關於機器學習實踐基礎架構的一篇論文介紹:

背景介紹:

儘管最近機器學習有了令人難以置信的進展,但機器學習應用程式仍然令人望而卻步,除了那些訓練有素、資金充足的工程機構,它們對於普通公司萊來說耗時且成本昂貴。應用機器學習的成本高昂不是因為需要新的統計模型,而是缺乏從資料準備和標籤,到生產和銷售監控的系統和工具,用於支援端到端機器學習應用開發。

開源DAWN,Spark和Mesos後Stanford的又一力作

                                                         DAWN 專案成員

DAWN 專案簡介和目標

我們正處於機器學習和 AI 發展的黃金時代。演算法的不斷進步,加上海量可用的資料集和快速的平行計算,讓幾年前只在科幻小說裡的場景變成現實。在過去的五年裡,語音個人助理已經普及,影像識別系統堪比人類,自動駕駛汽車也在迅速成為現實。毫無疑問,機器學習將會改變我們經濟和社會的大部分領域。企業、政府、科學實驗室則翹首以盼,機器學習能如何解決他們的實際問題。

然而,雖然新的機器學習(ML)應用取得了令人印象深刻的進步,但是構建起來卻非常昂貴。每一個重大的 ML 產品,如蘋果 Siri、亞馬遜 Alexa 和特斯拉的自動駕駛汽車,背後都需要一個由領域專家、資料科學家、資料工程師和 DevOps 組成的龐大而昂貴的團隊的支援。即使在成功應用 ML 的組織中,ML 仍然只是一小部分團隊成員可以觸及的稀有商品。此外,許多 ML 模型需要大量的訓練資料,而獲得這樣的訓練資料對許多應用領域來說是極具挑戰性的。例如,雖然 ML 演算法可以準確識別一隻狗的影像(因為網上有數百萬張可用的標記影像),但在識別醫療影像中的腫瘤方面,卻不能達到同樣的精確度,除非組織請人類專家花費數年時間為訓練資料做標記。最後,一旦 ML 產品生成,就需要進行大量的部署、操作和監控工作,特別是其成為關鍵業務流程的中流砥柱之時。綜上所述,ML 技術與早期的數字計算機處於類似的階段,在這個階段,一些穿白色大褂的技術人員在生產過程中維持著少量機器正常運轉:ML 技術顯然具有巨大的潛力,但目前來說,基於 ML 的應用程式對於大多數領域來說還是太昂貴了。

而 DAWN 的目標,不是為了改進 ML 演算法,因為對於許多重要的應用程式來說,演算法已經足夠完善,而是使 ML 能夠為小型團隊所用,非 ML 專家也可以應用 ML 解決他們的問題,實現高質量的結果,並部署可以在特定應用中使用的生產系統。我們的問題是:如何能夠讓所有具備專業知識的人建立屬於自己的高質量資料產品(而不需要一群不瞭解最新硬體系統的機器學習、大資料或分散式系統專業的博士)?總之,就是讓 AI 普及。

DAWN 與 ML 實踐系統調研

為了讓我們這個專案目標所帶來的機會最大化,並借鑑之前的 Apache Spark [27]、Apache Mesos [11]、Delite [5] 和 DeepDive [6] 等大型分析系統構建的經驗,我們將用未來五年時間來研究和構建工具,以解決機器學習實踐中的端到端問題。通過把從演算法到系統硬體等領域相結合,以及從事資料密集型領域的合作伙伴密切合作,我們計劃在 ML 生命週期分階段來完成 DAWN 的目標。

我們在 DAWN 協議棧中的設計理念主要基於三個原則:

a)以端到端 ML 工作流程為目標。ML 應用程式開發不僅包括模型訓練。因此,現在開發新的 ML 應用程式所面臨的最大挑戰並不在模型訓練,而在於資料準備、特徵選擇 / 提取和生產(服務、監控、除錯等)。因此,系統應該定位到整個 ML 端到端的整個工作流程。

b)賦能領域專家。最有影響力的 ML 應用將由領域專家開發,而不是 ML 專家。然而,可供領域專家編碼,利用自動化和機器學習模式的系統太少。未來的系統應該賦能非 ML 專家的使用者,為他們提供諸如標籤、特徵工程和資料增強等繁重任務的工具。

c)優化端到端。在模型訓練中,ML 的執行速度非常重要,速度快可以更好地建模(例如,通過輸入更多資料或更廣泛的搜尋引數);速度對於部署的生產服務同樣重要。

開源DAWN,Spark和Mesos後Stanford的又一力作

圖 1:用於機器學習實踐的 DAWN 協議棧:在史丹佛 DAWN 專案中,我們構建了一個跨越 ML 生命週期每個階段的軟體和工具的研究堆疊,以及從新硬體到新介面的抽象,來強調 ML 實踐構架的重要性。我們認為這個並行的端到端,介面到硬體的方法對於充分實現 ML 實踐的潛力是必需的。

這些模型在實踐中具有成本效益。但是,今天的 ML 工具效能通常低於硬體限制 10-100 倍,因此需要昂貴的軟體工程來建立生產系統。我們早期的結果顯示,通過構建工具優化 ML 端到端流程,並利用演算法的統計特性,如對不嚴格執行的耐受性,可以在當前和新興硬體上執行的 ML 應用程式將提速 10-100 倍。

總而言之,我們相信那些針對所有應用開發的非專業需求,以及全面優化系統軟體和硬體,對於充分實現 ML 實踐的潛力至關重要。

DAWN 的研究方向

為了體現這些原則,我們正在沿著幾個方向進行研究。以下是我們的研究方向概述,和每個領域可引用的早期成果:

ML 的新介面。

為了賦能非 ML 專家的領域專家,我們需要開發 ML 技術的新介面,以適配型號規格、模型監控等:

a)通過觀測 ML(資料準備、特徵工程)簡化模型規範:我們是否可以通過觀察領域專家提高學習質量,建立 ML 模型系統?例如,在標記資料時,領域專家通常使用一組啟發式規則,來確定特定資料點的標籤(例如,如果短語“烤箱預熱”在文件集中反覆出現,打的標籤很可能是烹飪)通過為這些使用者提供簡單的介面,以確立使用者對資料規則的認識(例如,正規表示式),我們可以將這些規則中的一小部分結合起來應用到海量資料集中。我們使用無監督 ML 來消除規則和學習其準確性,並訓練監督式 ML 模型產生成概率標籤,建立一個我們稱之為資料程式設計的新範例 [18]。通過一個可以從低質量的規則中生成高質量模型,被稱為 Snorkel 的新系統 [17],我們取得了不錯的早期成果。我們也正在使用弱監督式 ML 制定新的研究路線,以提高模型的質量,而無需使用者手動操作,如特徵發現 [24,25] 和結構學習 [2]。

b)向人類解釋結果(特徵工程、生產):我們如何向人類解釋一個特定 ML 模型的結果?隨著 ML 模型在日益重要的關鍵業務型程式中得以應用,能夠以人類可理解的方式解釋分類決定所做的預測將變得至關重要。具有挑戰性的是,那些龐大而複雜的模型提供了高度準確的結果,但這些結果解釋的難度非常大。一個有效的方法是。ML 預測不在“真空”中進行:每個使用者有幾十到幾百個可用於分割、關聯和上下文化預測的屬性(例如,執行 v47 版本軟體的使用者可能被異常標記為垃圾郵件)。而這對於基於基本相關性分析 [4] 的初試結果尤其有效,我們計劃將這個功能擴充套件到其他領域,包括文字、視覺和時間序列資料 [21]。

c)除錯和可觀察性(特徵工程、生產):ML 模型的“漂移”現象可能是災難性的,ML 模型部署之後必須受到監控,並定期進行更新。我們對開發和部署監測 ML 模型預測質量的,廉價的、有用的監測工具非常感興趣,尤其是當新模型是被潛在的異構使用者和裝置平臺所使用時。此外,後續識別和糾正預期行為偏差的需求,也將促進介面和模型訓練方面取得進展。

d)評估和提高資料質量(資料準備、特徵工程):生成高質量的模型需要經過多樣化、高質量的資料訓練。隨著越來越多的資料來源數字化,整合結構化(例如資料倉儲、CSV)和非結構化(例如文字、影像、時間序列)資料在模型構建中提取訊號將變得越來越重要。問題來了:在多樣化的資料來源中,哪些是可信任的?應該擴充套件和豐富哪些資源?是通過手動新增標籤,還是擴充套件現有知識庫?我們早期的結果 [20] 表明,如果明確每個建模資料來源的質量,就可以自動識別最需要濃縮的資料來源,從而降低資料清理和獲取的成本。

端到端 ML 系統。

我們相信,在許多重要領域,設計一個類似於搜尋引擎或 SQL 資料庫,包括整個 ML 工作流程,並對使用者隱藏內部資料的端到端系統是可能的。我們正在研究這些領域:

a)大規模資料分類(資料準備、特徵工程、生產):分類和排名是每個現代搜尋引擎背後的核心技術。但是,除了靜態文字和影像分類之外,我們怎樣才能對感測器資料、時間序列和其他在每秒鐘之內可能發生數千萬次事件的資料流進行分類呢?我們對開發高質量,經過優化的運算器非常有興趣,它可以對不同的資料進行分類和彙總、功能轉換、分類和資料流聚合。MacroBase 引擎 [3] 的初步研究表明,包括製造業的感測器、移動分析和汽車等領域的少數運算器可以進行大規模重用。我們有興趣將此功能擴充套件到視訊處理等其他領域,在視訊處理這個領域,0.50 美元的影像感測器目前需要 1200 美元的圖形卡適配才能進行實時處理;另外,在統一的系統框架和“分類器”工具箱內使用傳統的系統技術,如快取、增量記憶、分枝限制修剪和自適應(例如訓練一個場景特定的物件檢測器),可以在不影響精度的情況下達到非常高的速度 [8,12]。

b)個性化推薦(特色工程、生產):個性化對於許多流行的 ML 應用程式非常關鍵,關於個性化推薦演算法的文獻也數不勝數。然而,推薦引擎除了簡單的輸入和輸出,從業者仍需要將低階演算法和工具結合在一起,從頭開始構建引擎。我們計劃建立一個通用的端到端推薦平臺,包括一個簡潔的輸入介面(例如來自使用者的點選或評級)、自動模型調整、自動服務、監控和模型再訓練。早期的研究結果表明,分佈逐漸完成這些任務並非不可能。輸入資料後,建立一個“即插即用”的個性化推薦系統,使用者可以簡單地輸入使用者互動,並實時得到最新的推薦。

c)結合推理和決策(特徵工程、資料準備、生產):當 ML 因為具備更深的見解和決策能力而變得功能強大時,我們應該如何實現自主決策過程呢?如今,除了少量的應用程式,如自動駕駛車輛之外,推理 / 預測(即預測會發生什麼)和預測行動 / 決策(即基於預測採取行動)通常是兩個系統分頭來執行的(通常由一個自動推理引擎和一個人類“決策者”組成)。我們如何將決策置於 ML 工作流程的優先位置?幸運的是,隨著自動化 API 的出現,決策變得前所未有的簡單(例如,向自動控制中心傳送一個 POST 請求); 而我們缺少的是整合 ML 和自動化 API,以及關於組合的推理邏輯所需的“膠水”,因此,我們正在開發從警報和通知,到對環境的物理操作等一系列決定推理的組合。

d)統一 SQL、圖形和線性代數(生產):ML 產品流水線包含一組不同的集合操作,包括 SQL、圖形計算和 ML 訓練和評估。不幸的是,大部分執行引擎只針對這些計算模式之一進行優化。那麼,我們如何建立一個可以優化所有計算模式的引擎呢?也許,這其中的許多模式可以作為傳統關係連線的一個例項,例如,PI Re 最近開發了一個速度更快的連線運算 [14]。在實踐中,我們發現,當與 SIMD 優化運算相結合時,這個優化的連線速度非常快,能夠為每一個 SQL 和圖形 [1] 進行匹配優化。那麼 ML 呢?我們相信,將這些理論結果擴充套件到包括線性代數運算和係數矩陣運算在內的傳統 ML 模式中,ML 同樣可以做到這一點。通過在單個引擎中結合這些運算,我們可以優化端到端 SQL 的流程、圖計算、線性代數等。

ML 的新基材。

快速、經濟、高效地訓練和部署 ML,需要開發從語言支援到分散式執行時,以及加速硬體等新的計算基材。

a)端到端編譯器優化(特徵工程、生產):目前,ML 應用程式包括 TensorFlow、Apache Spark、scikit-learn、Pandas 等多樣化的庫和系統。儘管每個庫都有其優點,而在實際工作流程中往往需要需要結合多個庫,所以大規模的生產通常需要一個軟體工程團隊,來重寫整個應用程式的低階程式碼。我們正在開發一個新的執行時——Weld [15],它可以優化多個庫的資料密集型程式碼,並自動生成 ML 訓練。

通過優化運算器,Weld 已經可以實現 Apache Spark、Pandas、Apache、TensorFlow 等現代資料分析工具的執行速度提高 10 倍,跨庫工作負載速度提高 30 倍,這一點可能讓很多人感到驚訝。此外,Weld 的設計還能實現異構硬體移植。因此,我們也可以在 GPU、移動處理器和 FPGA 上執行這些庫。除了 Weld,我們還為 ML Delite [5] 開發新的編譯器技術,這是一種用於開發特定領域語言,以及隱私保護資料分析平臺 Splinter[26] 的框架。

b)精度降低處理(生產):眾所周知,ML 運算具有隨機性和概率性,我們如何在運算過程中利用這個特性呢?早期的 HogWild![19] 是第一個證明運算中的非同步實際上可以縮短收斂時間的專案,而 Google、Microsoft 和其他大型科技公司的日常生產中均使用基本的演算法。不過,我們認為可以做到的還有很多,例如通過將隨機性控制在 bit 級,以提高效能、降低能耗:我們可以設計專門用於 ML 的晶片,在低耗能的前提下,進行低精度運算,也可以產生高效的結果。我們最近的理論成果說明,以低精度執行,但不降低準確性 [7] 是有可能的,在實踐中也取得了可喜的成果 [22]。

c)核心核心可重構硬體(特徵工程、生產):計算機架構師通常認為 FPGA 釋出之後的一年是真正的“FPGA 之年”。然而,目前用 FPGA 來程式設計仍然很困難,且成本高昂。儘管如此,ML 可能是一個轉折點:2017 年,無論是在訓練時間,還是在推理時間方面,計算都成為 ML 分析的一個急需破解的瓶頸。考慮到即將到來的 CPU 和 FPGA 之間的競爭,具有高階可程式設計功能的可重配置硬體將會越來越重要。另外,我們正在開發新的可重構基材,可以輕鬆地用於模組化和高效的計算核心 [16],這對於提高耗電比意義非凡,特別是在軟體堆疊的上層不斷髮展的情況下。

d)分散式執行時(生產):隨著模型的不斷髮展,可以進行大規模訓練,以及訓練的執行推理變得越來越重要。ML 與分散式系統的結合是一個真正讓人頭痛的問題:一個模型表現不佳究竟是因為其分配的伺服器過多,還是因為匹配性差?最佳的非同步數量是多少?最佳分散式訓練框架是什麼樣的?我們的研究對利用裝置內(例如 FPGA、GPU 向量化)和裝置間(例如叢集計算)並行性資源消耗(即自動和動態分配到到群集內的不同硬體中)非常感興趣。而且,我們最近的一些理論 [10] 證明,我們可以明確地為不同的硬體和計算網路自動調整匹配最優的基層學習演算法。但還是有很多問題亟待解決:分散式非同步計算對推理時間有何益處(即在模型服務中)?新的計算基材,如無伺服器計算(亞馬遜 Lambda)是否可以進一步擴大推理程式?什麼是分散式計算的統一程式設計模型?我們打算建立新的工具,並結合現有的 TensorFlow 和 Spark 等框架來回答這些問題。

研究思路和成功指標

據 DAWN 所稱,他們在專案內部將與目標研究合作伙伴合作,進行校園內外實踐,以實現上述研究目標。而這個專案成功的主要指標,在於可用性,包括 i)應用 ML 應用程式的時間和成本(包括資料來源和功能);ii)生產中執行應用程式的時間和成本(包括監測 ML 模型的硬體和人力資源);以及 iii)終端使用者的收益。此外,DAWN 還計劃將所有的研究開源,使所有行業都可以從 DAWN 專案中受益。

成果和旗艦專案

據說,DAWN 早期在生產中部署的包括 Snorkel、MacroBase 和 DeepDive 在內的系統,已經在矽谷和全世界各地得以應用,證實了 DAWN 專案的巨大潛力,以及從根本上改進現有技術的希望。

在該專案的官網上列出了 DAWN 專案的旗艦專案,其中包括:

Macrobase: 優先關注快速資料

https://github.com/stanford-futuredata/macrobase/releases

MacroBase 是一個新的分析監督引擎,旨在進行大型資料集和資料流優先處理。與傳統的分析引擎不同,MacroBase 專門用於一項任務:查詢和解釋資料中不尋常或有趣的趨勢。

Snorkel:訓練集穿件系統

https://hazyresearch.github.io/snorkel/

Snorkel 是一種快速建立、建模和管理訓練資料的系統,目前主要聚焦在加速開發結構化或“黑暗”資料提取的應用程式,該應用程式適用於大規模標註訓練集不切實際或不容易獲取的領域。

Spatial:用於 FPGA 的 DSL

https://github.com/stanford-ppl

Spatial 是一種新的領域特定語言,用於從引數化的高階抽象中對可重配置硬體進行程式設計。

Weld:加速資料分析

https://github.com/weld-project/weld

官網連結:

http://dawn.cs.stanford.edu/

原文連結:

https://arxiv.org/pdf/1705.07538.pdf

關注後回覆「AI」你懂的


相關文章