1. 程式人生 > >如何高效推進ML模型開發和部署?Uber機器學習平臺Michelangelo實踐

如何高效推進ML模型開發和部署?Uber機器學習平臺Michelangelo實踐

 

640?wx_fmt=png

 

作者 | Jeremy Hermann & Mike Del Balso

譯者 | 王天宇

整理 | Jane

出品 | AI科技大本營

 

【導讀】2017年9月,Uber 在技術社群發表了一篇文章向大家介紹了 Uber 的機器學習平臺 —— Michelangelo。隨著平臺的日漸成熟,Uber 的業務數量與能力也隨之增長和提升,機器學習在整個公司的應用範圍越來越廣。在本篇文章中,  我們將為大家總結 Michelangelo 在過去一年的時間裡取得的成果,回顧Michelangelo 的發展歷程,並深入探討 Uber 機器學習平臺當前的發展方向和未來目標。

 

 

三年時間,從零到一百

 

 

2015年,機器學習在 Uber 的應用並不廣。但隨著公司的規模擴大,業務需要也越來越複雜,需要用到機器學習的地方越來越多。如何在公司範圍內部署機器學習迅速成為 Uber 的戰略重點。

 

Michelangelo 最初的重點是實現大規模批量訓練,並進行批量預測。隨著時間的推移,Uber 加入了集中式特徵儲存、模型效能報告、低延遲實時預測服務、深度學習工作流以及許多其他的元件與整合環境。在短短三年內,Uber 已經擁有技術先進的機器學習工具和基礎平臺,以及上百個機器學習案例。

 

Uber 的機器學習用例

 

Uber 將機器學習用在了各種各樣的業務中。在這一部分,我們將為大家介紹在過去三年的時間裡幾個 Michelangelo 的典型用例,它們體現了機器學習在 Uber 業務中的多樣性和影響力:

 

Uber Eats

 

Uber Eats 使用基於 Michelangelo 的多個模型來做預測,以便食客每次開啟 APP 都可以有更好的體驗。基於機器學習的排名模型會根據歷史資料和使用者當前的程序資訊,來推薦合適的餐館和菜品。基於 Michelangelo,優食也會根據預測到達時間、歷史資料以及餐館的實時資訊,來估算餐食的送達時間。

 

 

640?wx_fmt=png

 

市場預測

 

Uber 的市場團隊利用了各種時空預測模型,這些模型能夠預測未來各個地點和時間乘坐者的需求,以及司機是否有空。根據所預測的供需不平衡情況,Uber 系統可以提醒司機提前去往最有機會接客的地點。

 

640?wx_fmt=gif

 

客戶支援

 

在 Uber 平臺,每天約有 1500 萬次出行記錄。人們經常把錢包或手機遺忘在車內,或通過Uber 的幫助系統提交各種問題。這些問題單將被提交至客服代表。基於 Michelangelo 的機器學習模型被應用於此,使問題的解決過程更加自動化,並大大提升了速度。

 

640?wx_fmt=png

 

乘車檢查

 

自 2010 年的第一條 Uber 乘坐記錄以來,每次出行時地圖都會使用 GPS 資料。所以我們知道自己何時處於何地,以及是誰在駕駛。但Uber 希望可以做得更多。利用 GPS 的力量和司機的智慧手機中的其他感測器,Uber 的技術可以檢測到可能發生的車禍。例如,如果在一次旅程中出現長時間的意外停車,乘客和司機都會收到一條提醒,可提供交通事件援助。

 

640?wx_fmt=gif

 

 

預計到達時間(ETAs)

 

對公司來說,最重要的指標之一就是各種預估時間。精確的預估時間對好的使用者體驗至關重要,這些指標被輸入無數其他的內部系統中,來協助判定價格和路線。

 

Uber 的地圖服務團隊開發了一個複雜的分段路線系統,用來計算基本的預估時間值。這些基本的預估時間具有相同型別的錯誤。地圖服務團隊發現他們可以使用機器學習模型來預測這些錯誤,並用預測的錯誤來進行修正。由於這個模型正逐個應用在各個城市,Uber 團隊發現預估到達時間的準確性大幅提升,在某些情況下,平均預估到達時間的誤差減小了 50% 以上。

 

640?wx_fmt=png

 

 

一鍵聊天

 

一鍵聊天的功能基於自然語言處理模型,模型可以預測並展示最有可能的回覆,使乘客與司機之間的交流更加高效。司機只需按一下按鈕,即可回覆乘客的訊息,從而避免分心。

 

自動駕駛車輛

 

Uber 的自動駕駛汽車系統使用深度學習模型來實現各種功能,包括物體檢測和路線規劃。建模人員用 Michelangelo 的 Horovod 在大量 GPU 機器上進行高效的分散式訓練。

 

640?wx_fmt=png

 

 

Uber 如何一步步拓展機器學習的應用場景

 

作為一支平臺團隊,Uber 團隊的使命是充分利用機器學習的價值,並加速其在公司各個方面的應用。對於資料科學家,Uber 的工具簡化了機器學習系統構建與部署過程中的生產和執行。對於工程師,Uber 的機器學習工具簡化了這些系統背後的資料科學(如特徵工程、建模、評估等),使他們無需資料科學家的幫助,就可以輕鬆訓練出質量足夠高的模型。最後,對於在建立機器學習系統方面經驗豐富的工程團隊,Uber 還提供 Michelangelo 的機器學習基礎元件,以實現自定義的配置和工作流。

 

能夠在 Uber 這樣的公司成功擴充套件機器學習,需要的不僅僅是技術實力,還有組織與設計流程方面的因素。接下來我們就為大家分析一下 Uber 成功的三個關鍵因素:組織、流程和技術。

 

640?wx_fmt=png

Michelangelo 機器學習平臺的核心戰略支柱

 

組織

 

對於構建高質量的解決方案並將其成功部署來說,讓對的人解決對的問題顯得尤為重要。例如,如果一個新專案需要計算機視覺方面的知識,那麼什麼樣的組織結構有利於 Uber 高效地分配專家資源,從而保證合適的優先順序呢?

 

經過幾次迭代,Uber 目前具備以下幾種主要角色和職責:

 

640?wx_fmt=png

Uber 機器學習系統中的組織關聯

 

1.產品團隊

 

團隊發現,如果產品工程團隊具有自己在生產中構建和部署的模型,效果是最好的。例如,Uber 的地圖服務團隊就擁有預測 Uber 預計到達時間(ETA)的模型。產品團隊經常配備使用 Uber 機器學習平臺來構建與部署模型的全套技能。當他們需要額外的技術時,可以從研究或專家團那隊得到幫助。

 

 

2.專家團隊

 

當產品工程團隊遇到超出能力範圍的機器學習問題時,他們可以向內部專家團隊求助。Uber 有各個領域的專家,如自然語言處理、計算機視覺、推薦系統、預測,來與產品團隊協同構建量身定製的解決方案。例如在COTA 專案中專家團隊攜手產品團隊,為 Uber 業務和使用者創造了巨大的影響力。

 

 

3.研究團隊

 

專家和產品工程團隊經常與 Uber 的 AI 研究小組(AI Labs)合作,協同解決問題,併為未來的研究指明方向。一般來說,研究團隊不用寫用於生產的程式碼,但他們在實際問題上與其他團隊的合作非常緊密。當研究員們開發了新的技術和工具時,平臺工程團隊就會將其整合到公司的平臺上,以便新技術可以為全公司所使用。

 

4.機器學習平臺團隊

 

Michelangelo 平臺團隊建立並執行了通用的機器學習工作流和工具箱,產品工程團隊可以直接用來構建、部署以及運用機器學習解決方案。

 

Uber 的系統越來越高階,需要解決的問題也越來越複雜,隨著日漸增長的靈活性、可擴充套件性,以及特定領域的機器學習開發經驗,需求也增長了起來。Uber 也正在開發一些其他的更面向特定領域的平臺,來實現一些不適用於 Michelangelo 工作流的特定用例。

 

 

流程

 

Uber 的機器學習服務日漸成熟,許多流程對團隊的生產力和效率都起到了作用。分享最佳的機器學習實踐經驗和建立更加結構化的流程,對指明團隊方向和避免重複錯誤都是至關重要的。

 

技術

 

任何機器學習系統在技術方面都存在無數細節。在 Uber的系統中有以下幾個尤為重要的高階領域:

 

  • 端到端的工作流:機器學習不僅僅是訓練模型,你需要支援整個機器學習工作流:管理資料、評估模型、部署模型、作出預測、以及監控預測。

  • 把機器學習當作軟體工程:團隊把機器學習的開發與軟體開發做類比,然後將軟體開發的模式和方法用到機器學習中。

  • 模型開發速度:機器學習模型的開發是一個迭代的過程,具有創新性且高質量的模型來自大量的重複試驗。因此,模型的開發與迭代速度至關重要。

  • 模組化與層次化的架構:在處理大多數普通的機器學習用例時,提供端到端的工作流非常重要,但在處理不太常見且更專業的用例時,有可以進行自定義組裝的原始元件就變得尤為關鍵。

 

1.端到端的工作流程

 

早期 Uber 就認識到,要在公司內成功開展機器學習需要的不僅僅是訓練好模型,更需要對整個工作流提供穩定且可擴充套件的支援。另外團隊還發現,同樣的工作流可以應用到多個場景中,包括傳統機器學習和深度學習,有監督、無監督以及半監督學習,批量、線上和移動部署,時間序列預測。讓一個工具做多種工作並不是重點,但擁有一套可以解決工作流中所有步驟的整合工具是非常重要的。

 

2.把機器學習看作軟體工程

 

Michelangelo 團隊的一個重要原則是,把機器學習看作軟體工程。實際的開發和執行機器學習應該和軟體工程一樣,是一個迭代、嚴格、經過測試的、且有方法支援的過程。例如,一旦團隊認識到一個模型就像編譯的軟體庫,便會在一個嚴格且可控制版本的系統中,跟蹤模型的訓練配置,就像控制庫原始碼的版本一樣。跟蹤配置這一操作非常重要,因為之後可以將其重複利用,建立新的模型。

 

3.模型開發速度

 

建立可靠的機器學習系統是一門學問,需要進行多次迭代才能達到好的效果。迭代速度影響著機器學習在整個組織的擴充套件,以及一個團隊面對問題的解決效率。Michelangelo 團隊的首要任務是讓資料科學團隊提高速度。團隊的速度越快,試驗的次數越多,也就能測試更多的猜想,從而得到更好的結果。

 

下圖展示了Uber 所考慮的標準機器學習開發流程的思路,以及不同的反饋迴圈。團隊始終在考慮這一流程,並收縮這些迴圈,使資料科學中的迭代變得更加容易快捷。

 

640?wx_fmt=png

機器學習專案的工作流程

 

4.模組化且層次化的產品

 

團隊在開發 Michelangelo 時遇到的問題之一是:在為常見的機器學習工作流提供端到端支援的同時,還要使那些不常見的工作流保持靈活性。

 

最初,這個平臺和基礎元件組成了一個單獨的系統。當系統變得更加複雜時, 需要解決的問題也變得更加多樣且複雜。一些團隊希望將 Michelangelo 的部分元件與他們自己的元件相結合,構成新的工作流。其他團隊需要專門的開發工具來處理他們的用例,但從頭開始構建這些工具很顯然是不合理的。因此,團隊對 Michelangelo 的架構進行了一些重大修改,儘可能地利用現有系統。

 

現在,團隊正在將 Michelangelo 的架構分解成明確的基礎架構層,讓團隊可以利用它們來構建更復雜的平臺,例如自然語言處理或視覺應用。一旦完成這些工作,就將擁有兩個使用者群:使用 Michelangelo 平臺構建和部署模型的模型構建者,和使用 Michelangelo 基礎元件構建定製解決方案或複雜平臺的機器學習系統構建者。 

 

主要經驗教訓

 

在過去的三年裡,通過構建 Michelangelo 並將機器學習在整個 Uber 進行拓展,整個團隊從成功與失敗中獲得了許多經驗教訓。在一些案例中,有時候第一次就把事情做對了,但更多的時候團隊需要經過反覆多次的嘗試,才能找到最適合的方法。可以和企業、技術團隊負責人,每一個開發人員分享的經驗有以下幾點:

 

  • 讓開發人員使用他們偏好的工具。

  • 資料是機器學習中最難的部分,同時也是最重要的部分。

  • 要使開源和商業元件實現大規模執行,需要付出很多努力。

  • 考慮長期的願景,根據使用者的反饋進行多次開發。

  • 實時的機器學習服務很難做到完美。

 

旅程才剛剛開始,仍有許多工作在等著Uber 。這也是一個不斷髮展的領域,會有更多的東西需要大家學習。

 

原文連結:

https://eng.uber.com/scaling-michelangelo/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website

 

——【完】——

 

精彩推薦

2018 中國大資料技術大會將於 12 月 6 - 8 日在新雲南皇冠假日酒店舉行。匯聚超百位國內外實力講師從學界翹楚到行業一線大拿:

管曉巨集:中國科學院院士;

張巨集江:原始碼資本投資合夥人;

張曉東:美國俄亥俄州立大學 Robert M. Critchfield 講席教授;

陳性元:北京資訊科學技術研究院副院長;

周靖人:阿里巴巴集團副總裁;

李浩源:Alluxio 公司創始人&CEO

......

全方位立體解讀大資料時代的技術程序,為眾技術愛好者奉上一場優質乾貨盛宴。

 

640?wx_fmt=jpeg

 

推薦閱讀

GitHub上25個最受歡迎的開源機器學習庫

人工智慧進行時:人類的未來與未來的人類

大咖指路:機器學習人才這些方向最緊缺!

羅永浩衝冠一怒

程式設計師買房指南——LZ的三次買房和一次賣房經歷

肖仰華談知識圖譜:知識將比資料更重要,得知識者得天下

實戰必讀! 發現百萬級使用者公鏈漏洞,我們靠的是這套方法