咨詢熱線:021-80392549

Aquarium華人CEO分享:機(jī)器學(xué)習(xí)在自動(dòng)駕駛中落地,核心不是模型,是管道

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

圖注:作者團(tuán)隊(duì)開發(fā)第一個(gè)部署在汽車上的機(jī)器學(xué)習(xí)模型
人物
1

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

2

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

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

4

自動(dòng)化和委托
Aquarium華人CEO分享:機(jī)器學(xué)習(xí)在自動(dòng)駕駛中落地,核心不是模型,是管道

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

5

鼓勵(lì)ML工程師健身
Aquarium華人CEO分享:機(jī)器學(xué)習(xí)在自動(dòng)駕駛中落地,核心不是模型,是管道

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

6

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

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