咨詢熱線:021-80392549

Aquarium華人CEO分享:機器學習在自動駕駛中落地,核心不是模型,是管道

放大字體  縮小字體 發(fā)布日期:2022-06-01     來源:雷鋒網(wǎng)     瀏覽次數(shù):434
核心提示:當我大學畢業(yè)后開始第一份工作時,我自認為對機器學習了解不少。我曾在 Pinterest 和可汗學院(Khan Academy)有過兩次實習,工作
當我大學畢業(yè)后開始第一份工作時,我自認為對機器學習了解不少。我曾在 Pinterest 和可汗學院(Khan Academy)有過兩次實習,工作內(nèi)容是建立機器學習系統(tǒng)。在伯克利大學的最后一年,我展開了計算機視覺深度學習的研究,并在 Caffe 上工作,這是最早流行的深度學習庫之一。畢業(yè)后,我加入了一家名為“ Cruise ”的小型創(chuàng)業(yè)公司,Cruise專門生產(chǎn)自動駕駛汽車,F(xiàn)在我在 Aquarium,幫助多家公司部署深度學習模型來解決重要的社會問題。
這些年來,我建立了相當酷的深度學習和計算機視覺堆棧。與我在伯克利做研究的時候相比,現(xiàn)在有更多的人在生產(chǎn)應(yīng)用程序中使用深度學習,F(xiàn)在他們面臨的許多問題,與我2016年在 Cruise 所面臨的問題是一樣的。我有很多在生產(chǎn)中進行深度學習的經(jīng)驗教訓想與你們分享,希望大家可以不必通過艱難的方式來學習它們。
Aquarium華人CEO分享:機器學習在自動駕駛中落地,核心不是模型,是管道

圖注:作者團隊開發(fā)第一個部署在汽車上的機器學習模型
人物
1

將ML模型部署到自動駕駛車上的故事
首先,讓我談?wù)?Cruise 公司有史以來第一個部署在汽車上的ML模型。在我們開發(fā)模型的過程中,工作流程感覺很像我在研究時期所習慣的那樣。我們在開源數(shù)據(jù)上訓練開源模型,將之集成到公司產(chǎn)品軟件堆棧中,并部署到汽車上。經(jīng)過幾個星期的工作,我們合并的最終 PR, 在汽車上運行模型。
“任務(wù)完成了!”我心想,我們該繼續(xù)撲滅下一場大火。我不知道的是,真正的工作才剛剛開始。
模型投入生產(chǎn)運行,我們的 QA 團隊開始注意到它的性能方面的問題。但是我們還有其他的模型要建立,還有其他任務(wù)要做,所以我們沒有立即去解決這些問題。3個月后,當我們研究這些問題時,我們發(fā)現(xiàn)訓練和驗證腳本已經(jīng)全部崩潰,因為自我們第一次部署以來,代碼庫已經(jīng)發(fā)生了變化。
經(jīng)過一個星期的修復,我們查看了過去幾個月的故障,意識到在模型生產(chǎn)運行中觀察到的許多問題不能通過修改模型代碼輕松解決,我們需要去收集和標記來自我們公司車輛的新數(shù)據(jù),而不是依靠開放源碼的數(shù)據(jù)。這意味著我們需要建立一個標簽流程,包括流程所需要的所有工具、操作和基礎(chǔ)設(shè)施。
又過了3個月,我們運行了一個新的模型,這個模型是根據(jù)我們從車上隨機選取的數(shù)據(jù)進行訓練的。然后,用我們自己的工具進行標記。但是當我們開始解決簡單的問題時,我們不得不對哪些變化可能產(chǎn)生結(jié)果變得更加敏銳。
大約90% 的問題是通過對艱難或罕見的場景進行仔細的數(shù)據(jù)整理來解決的,而不是通過深度模型架構(gòu)變更或超參數(shù)調(diào)整。例如,我們發(fā)現(xiàn)模型在雨天的表現(xiàn)很差(在舊金山很罕見),所以我們標記了更多雨天的數(shù)據(jù),在新的數(shù)據(jù)上重新訓練模型,結(jié)果模型的表現(xiàn)得到了改善。同樣,我們發(fā)現(xiàn)該模型在綠色視錐上的性能較差(與橙色視錐相比較少見),因此我們收集了綠色視錐的數(shù)據(jù),經(jīng)過了同樣的過程,模型的性能得到了改善。
我們需要建立一個可以快速識別和解決這類問題的流程。
花費數(shù)個星期,這個模型的 1.0 版本組裝好了,又用了6個月,新推出一個改進版本模型。隨著我們在一些方面(更好地標記基礎(chǔ)設(shè)施、云數(shù)據(jù)處理、培訓基礎(chǔ)設(shè)施、部署監(jiān)控)的工作越來越多,大約每月到每周都能重新訓練和重新部署模型。
當我們從頭開始建立更多的模型管道,并努力改善它們,我們開始看到一些共同的主題。將我們所學到的知識應(yīng)用到新的管道中,更快更省力地運行更好的型號變得容易了。

2

許多不同的自動駕駛深度學習團隊,其模型管道的迭代周期都相當相似。從上到下: Waymo,Cruise 和 Tesla。
我曾經(jīng)認為,機器學習主要是模型。實際上,工業(yè)生產(chǎn)中的機器學習主要是管道。成功的最佳預測因素之一是在模型管道上有效迭代的能力。這不僅僅意味著快速迭代,還意味著智能迭代,第二部分很關(guān)鍵,否則你的管道很快就會產(chǎn)生糟糕的模型。
大多數(shù)傳統(tǒng)軟件都強調(diào)快速迭代和敏捷交付過程,因為,產(chǎn)品需求是未知的,必須通過適應(yīng)來發(fā)現(xiàn),所以與其在前期用不穩(wěn)定的假設(shè)做詳盡的規(guī)劃,不如快速交付一個MVP并進行迭代。
正如傳統(tǒng)軟件需求是復雜的一樣,機器學習系統(tǒng)必須處理的數(shù)據(jù)輸入領(lǐng)域確實很龐大。與正常的軟件開發(fā)不同,機器學習模型的質(zhì)量取決于它在代碼中的實現(xiàn),以及代碼所依賴的數(shù)據(jù)。這種對數(shù)據(jù)的依賴意味著機器學習模型可以通過數(shù)據(jù)集構(gòu)建/管理來“探索”輸入領(lǐng)域,允許它理解任務(wù)要求,并隨著時間的推移適應(yīng)它,而不必修改代碼。
為了利用這個特性,機器學習需要一個連續(xù)學習的概念,這個概念強調(diào)對數(shù)據(jù)和代碼的迭代。機器學習團隊必須:
發(fā)現(xiàn)數(shù)據(jù)或模型性能中的問題
診斷問題發(fā)生的原因
改變數(shù)據(jù)或模型代碼以解決這些問題
驗證模型在重新訓練之后變得更好
部署新模型并重復
團隊應(yīng)該嘗試至少每個月都要經(jīng)歷這個周期。如果你表現(xiàn)好,也許每周都要進行。
大型公司可以在不到一天的時間內(nèi)完成模型部署周期,但是對于大多數(shù)團隊來說,快速而自動地構(gòu)建基礎(chǔ)設(shè)施是非常困難的。如果更新模型的頻率低于這個頻率,就可能導致代碼腐化(模型管道由于代碼庫的更改而中斷)或數(shù)據(jù)域轉(zhuǎn)移(生產(chǎn)中的模型不能泛化到數(shù)據(jù)隨時間的變化)。
大型公司可以在一天之內(nèi)完成模型的部署周期,但是對于大多數(shù)團隊來說,快速而自動地構(gòu)建基礎(chǔ)設(shè)施是非常困難的。更新模型的頻率如果低于這個頻率,就會導致代碼腐化(模型管道由于代碼庫的更改而中斷)或數(shù)據(jù)域轉(zhuǎn)移(生產(chǎn)中的模型不能泛化到數(shù)據(jù)隨時間的變化)。
然而,如果處理得當,團隊可以進入一個良好的節(jié)奏,他們將改進后的模型部署到生產(chǎn)環(huán)境中
3

建立反饋回路
Aquarium華人CEO分享:機器學習在自動駕駛中落地,核心不是模型,是管道
校準模型的不確定性是一個誘人的研究領(lǐng)域,模型可以標記它認為可能失敗的地方。
對模型進行有效迭代的一個關(guān)鍵部分是集中精力解決最具影響力的問題。要改進一個模型,你需要知道它有什么問題,并且能夠根據(jù)產(chǎn)品/業(yè)務(wù)的優(yōu)先級對問題進行分類。建立反饋回路的方法有很多,但是首先要發(fā)現(xiàn)和分類錯誤。
利用特定領(lǐng)域的反饋回路。
如果有的話,這可能是獲得模型反饋的非常強大和有效的方法。例如,預測任務(wù)可以通過對實際發(fā)生的歷史數(shù)據(jù)進行訓練來“免費 ”獲得標簽數(shù)據(jù),使他們能夠不斷地輸入大量的新數(shù)據(jù),并相當自動地適應(yīng)新情況。
設(shè)置一個工作流程,讓人可以審查你的模型的輸出,并在發(fā)生錯誤時進行標記。
當人們很容易通過許多模型推斷捕獲錯誤時,這種方法尤其適用。這種情況最常見的發(fā)生方式是當客戶注意到模型輸出中的錯誤并向機器學習團隊投訴。這是不可低估的,因為這個渠道可以讓您直接將客戶反饋納入開發(fā)周期!一個團隊可以讓人類雙重檢查客戶可能錯過的模型輸出:想象一下一個操作人員看著一個機器人在傳送帶上對包進行分類,當他們發(fā)現(xiàn)一個錯誤發(fā)生時,就點擊一個按鈕。
設(shè)置一個工作流程,讓人可以審查你的模型的輸出,并在發(fā)生錯誤時進行標記。當人類審查很容易捕捉到大量模型推論中的錯誤時,這就特別合適。最常見的方式是當客戶注意到模型輸出中的錯誤并向ML團隊投訴時。這一點不容小覷,因為這個渠道可以讓你直接將客戶的反饋納入開發(fā)周期中 一個團隊可以讓人類仔細檢查客戶可能錯過的模型輸出:想想一個操作人員看著機器人在傳送帶上分揀包裹,每當他們發(fā)現(xiàn)有錯誤發(fā)生時就點擊一個按鈕。
當模型運行的頻率太高,以至于人們無法進行檢查時,可以考慮設(shè)置自動復查。
當很容易針對模型輸出編寫“健全性檢查”時,這尤其有用。例如,每當激光雷達目標檢測器和二維圖像目標檢測器不一致時,或者幀到幀檢測器與時間跟蹤系統(tǒng)不一致時,標記。當它工作時,它提供了許多有用的反饋,告訴我們哪里出現(xiàn)了故障情況。當它不起作用時,它只是暴露了你的檢查系統(tǒng)中的錯誤,或者漏掉了所有系統(tǒng)出錯的情況,這是非常低風險高回報的。
最通用(但困難)的解決方案是分析它所運行的數(shù)據(jù)的模型不確定性。
一個簡單的例子是查看模型在生產(chǎn)中產(chǎn)生低置信度輸出的例子。這可以表現(xiàn)出模型確實不確定的地方,但不是100% 精確。有時候,模型可能是自信地錯誤的。有時模型是不確定的,因為缺乏可用的信息進行良好的推理(例如,人們很難理解的有噪聲的輸入數(shù)據(jù))。有一些模型可以解決這些問題,但這是一個活躍的研究領(lǐng)域。
最后,可以利用模型對訓練集的反饋。
例如,檢查模型與其訓練/驗證數(shù)據(jù)集(即高損失的例子)的不一致表明高可信度失敗或標記錯誤。神經(jīng)網(wǎng)絡(luò)嵌入分析可以提供一種理解訓練/驗證數(shù)據(jù)集中故障模式模式的方法,并且可以發(fā)現(xiàn)訓練數(shù)據(jù)集和生產(chǎn)數(shù)據(jù)集中原始數(shù)據(jù)分布的差異。

4

自動化和委托
Aquarium華人CEO分享:機器學習在自動駕駛中落地,核心不是模型,是管道

圖注:大多數(shù)人的時間很容易從一個典型的再訓練周期中移除。即使這樣做的代價是降低機器時間的效率,它也消除了許多手工操作的痛苦。
加快迭代的主要內(nèi)容是減少完成一個迭代周期所需的工作量。然而,總是有辦法讓事情變得更簡單,所以你必須優(yōu)先考慮要改進什么。我喜歡用兩種方式來思考努力:時鐘時間和人類時間。
時鐘時間指的是運行某些計算任務(wù)所需的時間,如數(shù)據(jù)的 ETL、訓練模型、運行推理、計算指標等。人工時間指的是人工必須主動介入以通過管道運行的時間,比如手動檢查結(jié)果、運行命令或在管道中間觸發(fā)腳本。
例如,多個腳本必須通過手動在步驟之間移動文件按順序手動運行,這種情況非常常見,但是很浪費。一些紙巾背面的數(shù)學: 如果一個機器學習工程師每小時花費90美元,手工運行腳本每周浪費2個小時,那么每個人每年加起來就是9360美元!
將多個腳本和人工中斷結(jié)合成一個全自動腳本,可以更快、更容易地運行一個模型管道循環(huán),節(jié)省大量資金,并且使您的機器學習工程師不那么古怪。
相比之下,時鐘時間通常需要“合理”(例如,可在一夜之間完成)。唯一的例外是機器學習工程師正在進行大量的實驗,或者存在極端的成本/縮放約束。這是因為時鐘時間通常與數(shù)據(jù)規(guī)模和模型復雜性成正比。當從本地處理轉(zhuǎn)移到分布式云處理時,時鐘時間會顯著減少。在此之后,云中的水平擴展往往可以解決大多數(shù)團隊的大多數(shù)問題,直到問題的規(guī)模擴大。
不幸的是,將某些任務(wù)完全自動化是不可能的。幾乎所有的生產(chǎn)機器學習應(yīng)用程序都是監(jiān)督式學習任務(wù),并且大部分依賴于一定數(shù)量的人機交互來告訴模型它應(yīng)該做什么。在某些領(lǐng)域,人機交互是免費的(例如,社交媒體推薦用例或其他有大量直接用戶反饋的應(yīng)用程序)。在其他情況下,人類的時間更有限或更昂貴,例如訓練有素的放射科醫(yī)師為訓練數(shù)據(jù)“標記”CT 掃描。
無論哪種方式,將改進模型所需的人工時間以及其他成本最小化都很重要。雖然早期的團隊可能依賴機器學習工程師來管理數(shù)據(jù)集,但是讓一個沒有機器學習知識的操作用戶或者領(lǐng)域?qū)<襾沓袚鷶?shù)據(jù)管理的繁重工作通常更經(jīng)濟(或者對于放射學家來說,是必要的)。在這一點上,使用良好的軟件工具建立一個操作過程來標記、檢查、改進和版本控制數(shù)據(jù)集就變得非常重要。

5

鼓勵ML工程師健身
Aquarium華人CEO分享:機器學習在自動駕駛中落地,核心不是模型,是管道

圖注:ML工程師在舉重時,也在提升他們的模型學習的權(quán)重
構(gòu)建足夠的工具來支持一個新的領(lǐng)域或一個新的用戶組可能需要花費大量的時間和精力,但是如果做得好,結(jié)果將是非常值得的。在 Cruise 公司,我的一位工程師特別聰明(有人會說他很懶)。
這個工程師建立了一個迭代循環(huán),在這個循環(huán)中,操作反饋和元數(shù)據(jù)查詢的組合將從模型性能較差的地方抽取數(shù)據(jù)進行標記。然后,一個離岸作業(yè)團隊將標記數(shù)據(jù),并將其添加到新版本的訓練數(shù)據(jù)集中。此后,工程師建立基礎(chǔ)設(shè)施,允許他們在電腦上運行一個腳本,并啟動一系列云任務(wù),自動對新添加的數(shù)據(jù)進行再訓練和驗證一個簡單的模型。
每周,他們都會運行 retrain 腳本。然后,在模型訓練和驗證自己的時候,他們?nèi)チ私∩矸俊=?jīng)過幾個小時的健身和晚餐后,他們會回來檢查結(jié)果。無獨有偶,新的和改進的數(shù)據(jù)將導致模型的改進,經(jīng)過快速的雙重檢查確保一切都有意義,然后他們將新模型運送到生產(chǎn)中,汽車的駕駛性能將得到改善。然后,他們花了一周的時間來改進基礎(chǔ)設(shè)施,實驗新的模型架構(gòu),并建立新的模型管道。這名工程師不僅在本季度末獲得了晉升,而且狀態(tài)很好。

6

結(jié)語
總結(jié)一下: 在研究和原型開發(fā)階段,重點是建立和發(fā)布一個模型。但是,隨著一個系統(tǒng)進入生產(chǎn)階段,核心任務(wù)是建立一個系統(tǒng),這個系統(tǒng)能夠以最小的努力定期發(fā)布改進的模型。這方面你做得越好,你可以建造的模型就越多!
為此,我們需要關(guān)注以下方面:
以規(guī)律的節(jié)奏運行模型管道,并專注于比以前更好的運輸模型。每周或更短的時間內(nèi)獲得一個新的改進型號投入生產(chǎn)!
建立一個良好的從模型輸出到開發(fā)過程的反饋回路。找出模型在哪些示例上做得不好,并向您的培訓數(shù)據(jù)集中添加更多的示例。
自動化管道中特別繁重的任務(wù),并建立一個團隊結(jié)構(gòu),使您的團隊成員能夠?qū)W⒂谒麄兊膶I(yè)領(lǐng)域。特斯拉的Andrej Karpathy稱理想的最終狀態(tài)為“假期行動”。我建議,建立一個工作流程,讓你的機器學習工程師去健身房,讓你的機器學習管道來完成繁重的工作!
最后,需要強調(diào)一下,在我的經(jīng)驗中,絕大多數(shù)關(guān)于模型性能的問題可以用數(shù)據(jù)來解決,但是有些問題只能通過修改模型代碼來解決。
這些變化往往是非常特殊的模型架構(gòu)在手頭,例如,在圖像對象檢測器工作了若干年后,我花了太多的時間擔心最佳先前的盒子分配為某些方位比和提高特征映射對小對象的分辨率。
然而,隨著Transformer顯示出成為許多不同深度學習任務(wù)的萬能模型架構(gòu)類型的希望,我懷疑這些技巧中的更多將變得不那么相關(guān),機器學習發(fā)展的重點將進一步轉(zhuǎn)向改進數(shù)據(jù)集。

工博士工業(yè)品商城聲明:凡資訊來源注明為其他媒體來源的信息,均為轉(zhuǎn)載自其他媒體,并不代表本網(wǎng)站贊同其觀點,也不代表本網(wǎng)站對其真實性負責。您若對該文章內(nèi)容有任何疑問或質(zhì)疑,請立即與商城(www.podvhdv.cn)聯(lián)系,本網(wǎng)站將迅速給您回應(yīng)并做處理。
聯(lián)系電話:021-31666777
新聞、技術(shù)文章投稿QQ:3267146135  投稿郵箱:syy@gongboshi.com