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,優食也會根據預測到達時間、歷史數據以及餐館的實時信息,來估算餐食的送達時間。
▌市場預測
Uber的市場團隊利用了各種時空預測模型,這些模型能夠預測未來各個地點和時間乘坐者的需求,以及司機是否有空。根據所預測的供需不平衡情況,Uber 系統可以提醒司機提前去往最有機會接客的地點。
▌客戶支持
在 Uber平臺,每天約有 1500 萬次出行記錄。人們經常把錢包或手機遺忘在車內,或通過Uber的幫助系統提交各種問題。這些問題單將被提交至客服代表。基于 Michelangelo 的機器學習模型被應用于此,使問題的解決過程更加自動化,并大大提升了速度。
▌乘車檢查
自 2010 年的第一條 Uber 乘坐記錄以來,每次出行時地圖都會使用 GPS 數據。所以我們知道自己何時處于何地,以及是誰在駕駛。但Uber 希望可以做得更多。利用 GPS 的力量和司機的智能手機中的其他傳感器,Uber的技術可以檢測到可能發生的車禍。例如,如果在一次旅程中出現長時間的意外停車,乘客和司機都會收到一條提醒,可提供交通事件援助。
▌預計到達時間(ETAs)
對公司來說,最重要的指標之一就是各種預估時間。精確的預估時間對好的用戶體驗至關重要,這些指標被輸入無數其他的內部系統中,來協助判定價格和路線。
Uber 的地圖服務團隊開發了一個復雜的分段路線系統,用來計算基本的預估時間值。這些基本的預估時間具有相同類型的錯誤。地圖服務團隊發現他們可以使用機器學習模型來預測這些錯誤,并用預測的錯誤來進行修正。由于這個模型正逐個應用在各個城市,Uber 團隊發現預估到達時間的準確性大幅提升,在某些情況下,平均預估到達時間的誤差減小了 50% 以上。
▌一鍵聊天
一鍵聊天的功能基于自然語言處理模型,模型可以預測并展示最有可能的回復,使乘客與司機之間的交流更加高效。司機只需按一下按鈕,即可回復乘客的消息,從而避免分心。
▌自動駕駛車輛
Uber 的自動駕駛汽車系統使用深度學習模型來實現各種功能,包括物體檢測和路線規劃。建模人員用 Michelangelo 的 Horovod 在大量 GPU 機器上進行高效的分布式訓練。
Uber如何一步步拓展機器學習的應用場景
作為一支平臺團隊,Uber 團隊的使命是充分利用機器學習的價值,并加速其在公司各個方面的應用。對于數據科學家,Uber的工具簡化了機器學習系統構建與部署過程中的生產和運行。對于工程師,Uber 的機器學習工具簡化了這些系統背后的數據科學(如特征工程、建模、評估等),使他們無需數據科學家的幫助,就可以輕松訓練出質量足夠高的模型。最后,對于在建立機器學習系統方面經驗豐富的工程團隊,Uber還提供 Michelangelo 的機器學習基礎組件,以實現自定義的配置和工作流。
能夠在 Uber 這樣的公司成功擴展機器學習,需要的不僅僅是技術實力,還有組織與設計流程方面的因素。接下來我們就為大家分析一下Uber 成功的三個關鍵因素:組織、流程和技術。
Michelangelo 機器學習平臺的核心戰略支柱
▌組織
對于構建高質量的解決方案并將其成功部署來說,讓對的人解決對的問題顯得尤為重要。例如,如果一個新項目需要計算機視覺方面的知識,那么什么樣的組織結構有利于 Uber 高效地分配專家資源,從而保證合適的優先級呢?
經過幾次迭代,Uber 目前具備以下幾種主要角色和職責:
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 所考慮的標準機器學習開發流程的思路,以及不同的反饋循環。團隊始終在考慮這一流程,并收縮這些循環,使數據科學中的迭代變得更加容易快捷。
機器學習項目的工作流程
4.模塊化且層次化的產品
團隊在開發 Michelangelo 時遇到的問題之一是:在為常見的機器學習工作流提供端到端支持的同時,還要使那些不常見的工作流保持靈活性。
最初,這個平臺和基礎組件組成了一個單獨的系統。當系統變得更加復雜時,需要解決的問題也變得更加多樣且復雜。一些團隊希望將 Michelangelo 的部分組件與他們自己的組件相結合,構成新的工作流。其他團隊需要專門的開發工具來處理他們的用例,但從頭開始構建這些工具很顯然是不合理的。因此,團隊對 Michelangelo 的架構進行了一些重大修改,盡可能地利用現有系統。
現在,團隊正在將 Michelangelo 的架構分解成明確的基礎架構層,讓團隊可以利用它們來構建更復雜的平臺,例如自然語言處理或視覺應用。一旦完成這些工作,就將擁有兩個用戶群:使用 Michelangelo 平臺構建和部署模型的模型構建者,和使用 Michelangelo 基礎組件構建定制解決方案或復雜平臺的機器學習系統構建者。
主要經驗教訓
在過去的三年里,通過構建 Michelangelo 并將機器學習在整個 Uber 進行拓展,整個團隊從成功與失敗中獲得了許多經驗教訓。在一些案例中,有時候第一次就把事情做對了,但更多的時候團隊需要經過反復多次的嘗試,才能找到最適合的方法。可以和企業、技術團隊負責人,每一個開發人員分享的經驗有以下幾點:
讓開發人員使用他們偏好的工具。
數據是機器學習中最難的部分,同時也是最重要的部分。
要使開源和商業組件實現大規模運行,需要付出很多努力。
考慮長期的愿景,根據用戶的反饋進行多次開發。
實時的機器學習服務很難做到完美。
旅程才剛剛開始,仍有許多工作在等著Uber。這也是一個不斷發展的領域,會有更多的東西需要大家學習。
-
機器學習
+關注
關注
66文章
8378瀏覽量
132416 -
Uber
+關注
關注
0文章
410瀏覽量
36209
原文標題:如何高效推進ML模型開發和部署?Uber機器學習平臺Michelangelo實踐
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論