2017年9月,Uber 在技術(shù)社區(qū)發(fā)表了一篇文章向大家介紹了 Uber 的機(jī)器學(xué)習(xí)平臺(tái) —— Michelangelo。隨著平臺(tái)的日漸成熟,Uber 的業(yè)務(wù)數(shù)量與能力也隨之增長(zhǎng)和提升,機(jī)器學(xué)習(xí)在整個(gè)公司的應(yīng)用范圍越來(lái)越廣。在本篇文章中,我們將為大家總結(jié) Michelangelo 在過(guò)去一年的時(shí)間里取得的成果,回顧Michelangelo的發(fā)展歷程,并深入探討 Uber 機(jī)器學(xué)習(xí)平臺(tái)當(dāng)前的發(fā)展方向和未來(lái)目標(biāo)。
三年時(shí)間,從零到一百
2015年,機(jī)器學(xué)習(xí)在 Uber 的應(yīng)用并不廣。但隨著公司的規(guī)模擴(kuò)大,業(yè)務(wù)需要也越來(lái)越復(fù)雜,需要用到機(jī)器學(xué)習(xí)的地方越來(lái)越多。如何在公司范圍內(nèi)部署機(jī)器學(xué)習(xí)迅速成為 Uber 的戰(zhàn)略重點(diǎn)。
Michelangelo 最初的重點(diǎn)是實(shí)現(xiàn)大規(guī)模批量訓(xùn)練,并進(jìn)行批量預(yù)測(cè)。隨著時(shí)間的推移,Uber加入了集中式特征存儲(chǔ)、模型性能報(bào)告、低延遲實(shí)時(shí)預(yù)測(cè)服務(wù)、深度學(xué)習(xí)工作流以及許多其他的組件與集成環(huán)境。在短短三年內(nèi),Uber 已經(jīng)擁有技術(shù)先進(jìn)的機(jī)器學(xué)習(xí)工具和基礎(chǔ)平臺(tái),以及上百個(gè)機(jī)器學(xué)習(xí)案例。
Uber 的機(jī)器學(xué)習(xí)用例
Uber 將機(jī)器學(xué)習(xí)用在了各種各樣的業(yè)務(wù)中。在這一部分,我們將為大家介紹在過(guò)去三年的時(shí)間里幾個(gè) Michelangelo的典型用例,它們體現(xiàn)了機(jī)器學(xué)習(xí)在 Uber業(yè)務(wù)中的多樣性和影響力:
▌Uber Eats
Uber Eats 使用基于 Michelangelo 的多個(gè)模型來(lái)做預(yù)測(cè),以便食客每次打開(kāi) APP 都可以有更好的體驗(yàn)。基于機(jī)器學(xué)習(xí)的排名模型會(huì)根據(jù)歷史數(shù)據(jù)和用戶(hù)當(dāng)前的進(jìn)程信息,來(lái)推薦合適的餐館和菜品。基于 Michelangelo,優(yōu)食也會(huì)根據(jù)預(yù)測(cè)到達(dá)時(shí)間、歷史數(shù)據(jù)以及餐館的實(shí)時(shí)信息,來(lái)估算餐食的送達(dá)時(shí)間。
▌市場(chǎng)預(yù)測(cè)
Uber的市場(chǎng)團(tuán)隊(duì)利用了各種時(shí)空預(yù)測(cè)模型,這些模型能夠預(yù)測(cè)未來(lái)各個(gè)地點(diǎn)和時(shí)間乘坐者的需求,以及司機(jī)是否有空。根據(jù)所預(yù)測(cè)的供需不平衡情況,Uber 系統(tǒng)可以提醒司機(jī)提前去往最有機(jī)會(huì)接客的地點(diǎn)。
▌客戶(hù)支持
在 Uber平臺(tái),每天約有 1500 萬(wàn)次出行記錄。人們經(jīng)常把錢(qián)包或手機(jī)遺忘在車(chē)內(nèi),或通過(guò)Uber的幫助系統(tǒng)提交各種問(wèn)題。這些問(wèn)題單將被提交至客服代表。基于 Michelangelo 的機(jī)器學(xué)習(xí)模型被應(yīng)用于此,使問(wèn)題的解決過(guò)程更加自動(dòng)化,并大大提升了速度。
▌乘車(chē)檢查
自 2010 年的第一條 Uber 乘坐記錄以來(lái),每次出行時(shí)地圖都會(huì)使用 GPS 數(shù)據(jù)。所以我們知道自己何時(shí)處于何地,以及是誰(shuí)在駕駛。但Uber 希望可以做得更多。利用 GPS 的力量和司機(jī)的智能手機(jī)中的其他傳感器,Uber的技術(shù)可以檢測(cè)到可能發(fā)生的車(chē)禍。例如,如果在一次旅程中出現(xiàn)長(zhǎng)時(shí)間的意外停車(chē),乘客和司機(jī)都會(huì)收到一條提醒,可提供交通事件援助。
▌?lì)A(yù)計(jì)到達(dá)時(shí)間(ETAs)
對(duì)公司來(lái)說(shuō),最重要的指標(biāo)之一就是各種預(yù)估時(shí)間。精確的預(yù)估時(shí)間對(duì)好的用戶(hù)體驗(yàn)至關(guān)重要,這些指標(biāo)被輸入無(wú)數(shù)其他的內(nèi)部系統(tǒng)中,來(lái)協(xié)助判定價(jià)格和路線(xiàn)。
Uber 的地圖服務(wù)團(tuán)隊(duì)開(kāi)發(fā)了一個(gè)復(fù)雜的分段路線(xiàn)系統(tǒng),用來(lái)計(jì)算基本的預(yù)估時(shí)間值。這些基本的預(yù)估時(shí)間具有相同類(lèi)型的錯(cuò)誤。地圖服務(wù)團(tuán)隊(duì)發(fā)現(xiàn)他們可以使用機(jī)器學(xué)習(xí)模型來(lái)預(yù)測(cè)這些錯(cuò)誤,并用預(yù)測(cè)的錯(cuò)誤來(lái)進(jìn)行修正。由于這個(gè)模型正逐個(gè)應(yīng)用在各個(gè)城市,Uber 團(tuán)隊(duì)發(fā)現(xiàn)預(yù)估到達(dá)時(shí)間的準(zhǔn)確性大幅提升,在某些情況下,平均預(yù)估到達(dá)時(shí)間的誤差減小了 50% 以上。
▌一鍵聊天
一鍵聊天的功能基于自然語(yǔ)言處理模型,模型可以預(yù)測(cè)并展示最有可能的回復(fù),使乘客與司機(jī)之間的交流更加高效。司機(jī)只需按一下按鈕,即可回復(fù)乘客的消息,從而避免分心。
▌自動(dòng)駕駛車(chē)輛
Uber 的自動(dòng)駕駛汽車(chē)系統(tǒng)使用深度學(xué)習(xí)模型來(lái)實(shí)現(xiàn)各種功能,包括物體檢測(cè)和路線(xiàn)規(guī)劃。建模人員用 Michelangelo 的 Horovod 在大量 GPU 機(jī)器上進(jìn)行高效的分布式訓(xùn)練。
Uber如何一步步拓展機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景
作為一支平臺(tái)團(tuán)隊(duì),Uber 團(tuán)隊(duì)的使命是充分利用機(jī)器學(xué)習(xí)的價(jià)值,并加速其在公司各個(gè)方面的應(yīng)用。對(duì)于數(shù)據(jù)科學(xué)家,Uber的工具簡(jiǎn)化了機(jī)器學(xué)習(xí)系統(tǒng)構(gòu)建與部署過(guò)程中的生產(chǎn)和運(yùn)行。對(duì)于工程師,Uber 的機(jī)器學(xué)習(xí)工具簡(jiǎn)化了這些系統(tǒng)背后的數(shù)據(jù)科學(xué)(如特征工程、建模、評(píng)估等),使他們無(wú)需數(shù)據(jù)科學(xué)家的幫助,就可以輕松訓(xùn)練出質(zhì)量足夠高的模型。最后,對(duì)于在建立機(jī)器學(xué)習(xí)系統(tǒng)方面經(jīng)驗(yàn)豐富的工程團(tuán)隊(duì),Uber還提供 Michelangelo 的機(jī)器學(xué)習(xí)基礎(chǔ)組件,以實(shí)現(xiàn)自定義的配置和工作流。
能夠在 Uber 這樣的公司成功擴(kuò)展機(jī)器學(xué)習(xí),需要的不僅僅是技術(shù)實(shí)力,還有組織與設(shè)計(jì)流程方面的因素。接下來(lái)我們就為大家分析一下Uber 成功的三個(gè)關(guān)鍵因素:組織、流程和技術(shù)。
Michelangelo 機(jī)器學(xué)習(xí)平臺(tái)的核心戰(zhàn)略支柱
▌組織
對(duì)于構(gòu)建高質(zhì)量的解決方案并將其成功部署來(lái)說(shuō),讓對(duì)的人解決對(duì)的問(wèn)題顯得尤為重要。例如,如果一個(gè)新項(xiàng)目需要計(jì)算機(jī)視覺(jué)方面的知識(shí),那么什么樣的組織結(jié)構(gòu)有利于 Uber 高效地分配專(zhuān)家資源,從而保證合適的優(yōu)先級(jí)呢?
經(jīng)過(guò)幾次迭代,Uber 目前具備以下幾種主要角色和職責(zé):
Uber 機(jī)器學(xué)習(xí)系統(tǒng)中的組織關(guān)聯(lián)
1.產(chǎn)品團(tuán)隊(duì)
團(tuán)隊(duì)發(fā)現(xiàn),如果產(chǎn)品工程團(tuán)隊(duì)具有自己在生產(chǎn)中構(gòu)建和部署的模型,效果是最好的。例如,Uber的地圖服務(wù)團(tuán)隊(duì)就擁有預(yù)測(cè) Uber 預(yù)計(jì)到達(dá)時(shí)間(ETA)的模型。產(chǎn)品團(tuán)隊(duì)經(jīng)常配備使用 Uber 機(jī)器學(xué)習(xí)平臺(tái)來(lái)構(gòu)建與部署模型的全套技能。當(dāng)他們需要額外的技術(shù)時(shí),可以從研究或?qū)<覉F(tuán)那隊(duì)得到幫助。
2.專(zhuān)家團(tuán)隊(duì)
當(dāng)產(chǎn)品工程團(tuán)隊(duì)遇到超出能力范圍的機(jī)器學(xué)習(xí)問(wèn)題時(shí),他們可以向內(nèi)部專(zhuān)家團(tuán)隊(duì)求助。Uber 有各個(gè)領(lǐng)域的專(zhuān)家,如自然語(yǔ)言處理、計(jì)算機(jī)視覺(jué)、推薦系統(tǒng)、預(yù)測(cè),來(lái)與產(chǎn)品團(tuán)隊(duì)協(xié)同構(gòu)建量身定制的解決方案。例如在COTA 項(xiàng)目中專(zhuān)家團(tuán)隊(duì)攜手產(chǎn)品團(tuán)隊(duì),為 Uber業(yè)務(wù)和用戶(hù)創(chuàng)造了巨大的影響力。
3.研究團(tuán)隊(duì)
專(zhuān)家和產(chǎn)品工程團(tuán)隊(duì)經(jīng)常與 Uber 的 AI 研究小組(AI Labs)合作,協(xié)同解決問(wèn)題,并為未來(lái)的研究指明方向。一般來(lái)說(shuō),研究團(tuán)隊(duì)不用寫(xiě)用于生產(chǎn)的代碼,但他們?cè)趯?shí)際問(wèn)題上與其他團(tuán)隊(duì)的合作非常緊密。當(dāng)研究員們開(kāi)發(fā)了新的技術(shù)和工具時(shí),平臺(tái)工程團(tuán)隊(duì)就會(huì)將其集成到公司的平臺(tái)上,以便新技術(shù)可以為全公司所使用。
4.機(jī)器學(xué)習(xí)平臺(tái)團(tuán)隊(duì)
Michelangelo 平臺(tái)團(tuán)隊(duì)創(chuàng)建并執(zhí)行了通用的機(jī)器學(xué)習(xí)工作流和工具箱,產(chǎn)品工程團(tuán)隊(duì)可以直接用來(lái)構(gòu)建、部署以及運(yùn)用機(jī)器學(xué)習(xí)解決方案。
Uber 的系統(tǒng)越來(lái)越高端,需要解決的問(wèn)題也越來(lái)越復(fù)雜,隨著日漸增長(zhǎng)的靈活性、可擴(kuò)展性,以及特定領(lǐng)域的機(jī)器學(xué)習(xí)開(kāi)發(fā)經(jīng)驗(yàn),需求也增長(zhǎng)了起來(lái)。Uber 也正在開(kāi)發(fā)一些其他的更面向特定領(lǐng)域的平臺(tái),來(lái)實(shí)現(xiàn)一些不適用于 Michelangelo 工作流的特定用例。
▌流程
Uber 的機(jī)器學(xué)習(xí)服務(wù)日漸成熟,許多流程對(duì)團(tuán)隊(duì)的生產(chǎn)力和效率都起到了作用。分享最佳的機(jī)器學(xué)習(xí)實(shí)踐經(jīng)驗(yàn)和建立更加結(jié)構(gòu)化的流程,對(duì)指明團(tuán)隊(duì)方向和避免重復(fù)錯(cuò)誤都是至關(guān)重要的。
▌技術(shù)
任何機(jī)器學(xué)習(xí)系統(tǒng)在技術(shù)方面都存在無(wú)數(shù)細(xì)節(jié)。在 Uber的系統(tǒng)中有以下幾個(gè)尤為重要的高級(jí)領(lǐng)域:
端到端的工作流:機(jī)器學(xué)習(xí)不僅僅是訓(xùn)練模型,你需要支持整個(gè)機(jī)器學(xué)習(xí)工作流:管理數(shù)據(jù)、評(píng)估模型、部署模型、作出預(yù)測(cè)、以及監(jiān)控預(yù)測(cè)。
把機(jī)器學(xué)習(xí)當(dāng)作軟件工程:團(tuán)隊(duì)把機(jī)器學(xué)習(xí)的開(kāi)發(fā)與軟件開(kāi)發(fā)做類(lèi)比,然后將軟件開(kāi)發(fā)的模式和方法用到機(jī)器學(xué)習(xí)中。
模型開(kāi)發(fā)速度:機(jī)器學(xué)習(xí)模型的開(kāi)發(fā)是一個(gè)迭代的過(guò)程,具有創(chuàng)新性且高質(zhì)量的模型來(lái)自大量的重復(fù)試驗(yàn)。因此,模型的開(kāi)發(fā)與迭代速度至關(guān)重要。
模塊化與層次化的架構(gòu):在處理大多數(shù)普通的機(jī)器學(xué)習(xí)用例時(shí),提供端到端的工作流非常重要,但在處理不太常見(jiàn)且更專(zhuān)業(yè)的用例時(shí),有可以進(jìn)行自定義組裝的原始組件就變得尤為關(guān)鍵。
1.端到端的工作流程
早期 Uber 就認(rèn)識(shí)到,要在公司內(nèi)成功開(kāi)展機(jī)器學(xué)習(xí)需要的不僅僅是訓(xùn)練好模型,更需要對(duì)整個(gè)工作流提供穩(wěn)定且可擴(kuò)展的支持。另外團(tuán)隊(duì)還發(fā)現(xiàn),同樣的工作流可以應(yīng)用到多個(gè)場(chǎng)景中,包括傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí),有監(jiān)督、無(wú)監(jiān)督以及半監(jiān)督學(xué)習(xí),批量、在線(xiàn)和移動(dòng)部署,時(shí)間序列預(yù)測(cè)。讓一個(gè)工具做多種工作并不是重點(diǎn),但擁有一套可以解決工作流中所有步驟的集成工具是非常重要的。
2.把機(jī)器學(xué)習(xí)看作軟件工程
Michelangelo 團(tuán)隊(duì)的一個(gè)重要原則是,把機(jī)器學(xué)習(xí)看作軟件工程。實(shí)際的開(kāi)發(fā)和運(yùn)行機(jī)器學(xué)習(xí)應(yīng)該和軟件工程一樣,是一個(gè)迭代、嚴(yán)格、經(jīng)過(guò)測(cè)試的、且有方法支持的過(guò)程。例如,一旦團(tuán)隊(duì)認(rèn)識(shí)到一個(gè)模型就像編譯的軟件庫(kù),便會(huì)在一個(gè)嚴(yán)格且可控制版本的系統(tǒng)中,跟蹤模型的訓(xùn)練配置,就像控制庫(kù)源代碼的版本一樣。跟蹤配置這一操作非常重要,因?yàn)橹罂梢詫⑵渲貜?fù)利用,創(chuàng)建新的模型。
3.模型開(kāi)發(fā)速度
創(chuàng)建可靠的機(jī)器學(xué)習(xí)系統(tǒng)是一門(mén)學(xué)問(wèn),需要進(jìn)行多次迭代才能達(dá)到好的效果。迭代速度影響著機(jī)器學(xué)習(xí)在整個(gè)組織的擴(kuò)展,以及一個(gè)團(tuán)隊(duì)面對(duì)問(wèn)題的解決效率。Michelangelo 團(tuán)隊(duì)的首要任務(wù)是讓數(shù)據(jù)科學(xué)團(tuán)隊(duì)提高速度。團(tuán)隊(duì)的速度越快,試驗(yàn)的次數(shù)越多,也就能測(cè)試更多的猜想,從而得到更好的結(jié)果。
下圖展示了Uber 所考慮的標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)開(kāi)發(fā)流程的思路,以及不同的反饋循環(huán)。團(tuán)隊(duì)始終在考慮這一流程,并收縮這些循環(huán),使數(shù)據(jù)科學(xué)中的迭代變得更加容易快捷。
機(jī)器學(xué)習(xí)項(xiàng)目的工作流程
4.模塊化且層次化的產(chǎn)品
團(tuán)隊(duì)在開(kāi)發(fā) Michelangelo 時(shí)遇到的問(wèn)題之一是:在為常見(jiàn)的機(jī)器學(xué)習(xí)工作流提供端到端支持的同時(shí),還要使那些不常見(jiàn)的工作流保持靈活性。
最初,這個(gè)平臺(tái)和基礎(chǔ)組件組成了一個(gè)單獨(dú)的系統(tǒng)。當(dāng)系統(tǒng)變得更加復(fù)雜時(shí),需要解決的問(wèn)題也變得更加多樣且復(fù)雜。一些團(tuán)隊(duì)希望將 Michelangelo 的部分組件與他們自己的組件相結(jié)合,構(gòu)成新的工作流。其他團(tuán)隊(duì)需要專(zhuān)門(mén)的開(kāi)發(fā)工具來(lái)處理他們的用例,但從頭開(kāi)始構(gòu)建這些工具很顯然是不合理的。因此,團(tuán)隊(duì)對(duì) Michelangelo 的架構(gòu)進(jìn)行了一些重大修改,盡可能地利用現(xiàn)有系統(tǒng)。
現(xiàn)在,團(tuán)隊(duì)正在將 Michelangelo 的架構(gòu)分解成明確的基礎(chǔ)架構(gòu)層,讓團(tuán)隊(duì)可以利用它們來(lái)構(gòu)建更復(fù)雜的平臺(tái),例如自然語(yǔ)言處理或視覺(jué)應(yīng)用。一旦完成這些工作,就將擁有兩個(gè)用戶(hù)群:使用 Michelangelo 平臺(tái)構(gòu)建和部署模型的模型構(gòu)建者,和使用 Michelangelo 基礎(chǔ)組件構(gòu)建定制解決方案或復(fù)雜平臺(tái)的機(jī)器學(xué)習(xí)系統(tǒng)構(gòu)建者。
主要經(jīng)驗(yàn)教訓(xùn)
在過(guò)去的三年里,通過(guò)構(gòu)建 Michelangelo 并將機(jī)器學(xué)習(xí)在整個(gè) Uber 進(jìn)行拓展,整個(gè)團(tuán)隊(duì)從成功與失敗中獲得了許多經(jīng)驗(yàn)教訓(xùn)。在一些案例中,有時(shí)候第一次就把事情做對(duì)了,但更多的時(shí)候團(tuán)隊(duì)需要經(jīng)過(guò)反復(fù)多次的嘗試,才能找到最適合的方法。可以和企業(yè)、技術(shù)團(tuán)隊(duì)負(fù)責(zé)人,每一個(gè)開(kāi)發(fā)人員分享的經(jīng)驗(yàn)有以下幾點(diǎn):
讓開(kāi)發(fā)人員使用他們偏好的工具。
數(shù)據(jù)是機(jī)器學(xué)習(xí)中最難的部分,同時(shí)也是最重要的部分。
要使開(kāi)源和商業(yè)組件實(shí)現(xiàn)大規(guī)模運(yùn)行,需要付出很多努力。
考慮長(zhǎng)期的愿景,根據(jù)用戶(hù)的反饋進(jìn)行多次開(kāi)發(fā)。
實(shí)時(shí)的機(jī)器學(xué)習(xí)服務(wù)很難做到完美。
旅程才剛剛開(kāi)始,仍有許多工作在等著Uber。這也是一個(gè)不斷發(fā)展的領(lǐng)域,會(huì)有更多的東西需要大家學(xué)習(xí)。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8408瀏覽量
132580 -
Uber
+關(guān)注
關(guān)注
0文章
411瀏覽量
36245
原文標(biāo)題:如何高效推進(jìn)ML模型開(kāi)發(fā)和部署?Uber機(jī)器學(xué)習(xí)平臺(tái)Michelangelo實(shí)踐
文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論