天天看點

萬字長文說清大模型在自動駕駛領域的應用

作者:九章智駕

作者 | 張萌宇

随着ChatGPT的火爆,大模型受到的關注度越來越高,大模型展現出的能力令人驚歎。

在圖檔生成、推薦系統、機器翻譯等領域,大模型已經開始發揮作用。給定一些提示詞,圖檔生成網站Midjourney生成的設計圖甚至已經超過了很多專業設計師的水準。

大模型為什麼可以表現出令人驚歎的能力呢?為什麼模型的參數量變大、容量變大,性能就會相應地變好呢?

某AI算法公司的專家告訴筆者:模型的參數量增加,可以了解為模型的次元升高,也就是說我們可以用更複雜的方式來模拟真實世界的規律。拿一個最簡單的場景來舉例,在一個平面圖上給一個散點圖,假如我們用一條直線(一個一進制函數)來刻畫圖上的散點出現的規律,那麼不管參數是多少,總會有一些點在這條直線之外。假如我們用一條抛物線(一個二進制函數)來刻畫這些點的規律,那麼就會有更多的點可以落在這條線上。随着函數的升維,或者說自由度的增加,會有越來越多的點落在這條線上,也就是說對這些點的規律拟合得更加精準。

也就是說,模型的參數量越大,模型就越容易拟合海量資料的規律。

而随着ChatGPT的出現,人們發現,當模型的參數量到了一定程度之後,呈現出的效果不隻是“性能變好”,而是“超出預期的好”。

在NLP(自然語言處理)領域存在一個學界和工業界還無法解釋具體原理但令人很興奮的現象:“湧現”(Emerging Ability)。

何為“湧現”?“湧現”是指,當模型的參數量呈線性增加到一定程度的時候,模型的精度呈指數型增加。

我們可以看一個圖,下圖左邊展示了比例定律(Scaling Law),這是在2022年之前,OpenAI的研究者發現的現象,也就是說随着模型參數規模呈指數增長時,模型的精度會随之線性增加。左圖的模型參數也不是指數級增長 而是線性增長

到了2022年1月,有研究者發現,當模型的參數規模超過一定程度時,模型精度提升的程度明顯超過比例曲線,如下圖右所示。

萬字長文說清大模型在自動駕駛領域的應用

△“湧現”示意圖

落實到應用層面,我們會發現,大模型可以實作一些小模型無法實作的任務,例如大模型能做加減法、能做簡單的推理等。

怎樣的模型可以稱之為大模型呢?

一般來說,我們認為參數量過億的模型都可以稱之為“大模型”。而在自動駕駛領域,大模型主要有兩種含義:一種是參數量過億的模型;另一種是由多個小模型疊加在一起組成的模型,雖然參數量不過億,但也被稱為“大模型”。

按照這樣的定義,在自動駕駛領域,大模型已經開始被廣泛運用了。在雲端,我們可以發揮模型參數量增加帶來的容量優勢,用大模型完成一些資料挖掘、資料标注等任務。在車端,我們可以把分管不同子任務的多個小模型合并成一個“大模型”,這樣可以節省車端計算環節的推理時間,增加安全性。

具體來說,大模型可以如何發揮作用呢?根據筆者與各位業内專家交流得到的資訊,業界目前主要是在感覺領域使用大模型。接下來,我們将分别介紹在雲端和車端,大模型如何賦能感覺任務。

1. 大模型的應用

1.1

大模型在雲端的應用

1.1.1 資料自動标注

采用大模型預訓練的方式可以實作自動标注。以視訊的clip标注為例,可以先用海量未标注的clip資料通過自監督的方式預訓練一個大模型,然後用少量已經人工标注好的clip資料對模型做微調,使得模型具備檢測能力,這樣模型就可以自動标注clip資料。

模型的标注精度相對越高,對人的替代程度相應也越高。

目前,很多公司都在研究如何提高大模型自動标注的精度,以期精度達标後實作自動标注的完全無人化。

商湯絕影智能駕駛産品總監Leo告訴筆者:我們做過評測,對于道路上的常見目标物,商湯大模型自動标注精度可以達到98%以上,如此一來,後續的人工複審環節就可以十分精簡。

商湯絕影在智能駕駛産品開發過程中,目前絕大多數的感覺任務都已經引入大模型自動預标注,相比于以往,擷取同等數量的資料樣本,标注周期和标注成本都可以縮減數十倍以上,顯著提高了開發效率。

一般來說,大家對标注任務的期望主要包括标注過程的效率高、标注結果的精确程度高以及一緻性高。效率高和精确度高都很容易了解,一緻性高是指什麼呢?在3D識别的BEV算法中,工程師要采用雷射雷達加視覺的聯合标注,需要聯合處理點雲和圖像資料。在這種處理環節裡面,工程師可能還會需要在時序層面上做一些标注,那麼前後幀的結果就不能差別太大。

假如采用人工标注,标注效果有賴于标注員的标注水準,标注人員水準的參差不齊可能導緻标注結果的前後不一緻,可能會出現一張圖裡标注框較大,接下來的一張比較小的情況,而大模型的标注結果前後一般比較一緻。

但也有業内專家反映,用大模型做自動标注落實到實際應用上,還會有一些困難,尤其是在自動駕駛公司和标注公司的對接方面——很多自動駕駛公司都會把一部分标注工作外包給标注公司,還有的公司沒有内部的标注團隊,所有标注工作都是外包的。

目前,采用大模型預标注方式來标注的目标主要是一些動态的3D目标,自動駕駛公司會先用大模型針對需要标注的視訊做一遍推理,然後把推理後的結果——模型生成的3D框給到标注公司。先用大模型做預标注,然後再把預标注後的結果交給标注公司的時候,主要會涉及到兩個問題:一個是有的标注公司的标注平台不一定支援加載經過預标注的結果,另一個是标注公司不一定願意在預标注後的結果上做修改。

标注公司假如要加載預标注的結果,需要有支援加載大模型生成的3D框的軟體平台。然而,有的标注公司可能主要采用人工标注,他們就沒有支援加載模型預标注結果的軟體平台,如果和客戶對接時拿到的是模型預标注後的結果,他們就沒有辦法承接。

此外,站在标注公司的角度,隻有預标注的效果足夠好,他們才能真正“省力”,否則可能是在增加工作量。

假如預标注的效果不夠好,标注公司後續還是需要做很多工作,例如要把漏标的框标注出來、把标注錯誤的框删掉、把框的大小統一等。那麼,采用預标注可能并沒有真正幫他們減少工作量。

是以,在實際應用中,是否采用大模型先做預标注,需要自動駕駛公司和标注公司共同衡量。

當然了,目前人工标注的成本較高——假如讓标注公司完全從頭開始,1000幀視訊資料的人工标注成本可能達到萬元級。是以,自動駕駛公司還是希望盡可能提高大模型預标注的精度,盡可能降低人工标注的工作量,進而降低标注成本。

1.1.2 資料挖掘

大模型有較強的泛化性,适合用于對長尾資料的挖掘。

文遠知行的某位專家告訴筆者:假如采用傳統的基于标簽的方式來挖掘長尾場景,模型一般隻能分辨已知的圖像類别。2021年,OpenAI釋出了CLIP模型(一種文字——圖像多模态模型,可以在無監督預訓練之後将文本和圖像對應,進而基于文本對圖檔進行分類,而非隻能依賴于圖檔的标簽),我們也可以采用這樣的文字-圖像多模态模型,用文字描述來檢索drive log中的圖像資料。例如,‘拖着貨物的工程車輛’、‘兩個燈泡同時亮着的紅綠燈’等長尾場景。

另外,大模型可以較好地從資料中提取特征,然後找到有相似特征的目标。

假設我們希望從很多圖檔中找到包含環衛勞工的圖檔,不需要先專門給圖檔打好标簽, 可以用大量包含環衛勞工的圖檔給大模型做預訓練,大模型就可以從中提取出一些環衛勞工的特征。然後,再從圖檔中找到和環衛勞工的特征比較比對的樣本,進而挖掘出幾乎所有包含環衛勞工的圖檔。

1.1.3 用知識蒸餾的方式“教”小模型

大模型還可以采用知識蒸餾的方式“教”小模型。

何為知識蒸餾呢?用最通俗的話來解釋,就是大模型先從資料中學到一些知識,或者說提取到一些資訊,然後再用學到的知識“教”小模型。

在實踐中,可以先把需要打标簽的圖檔給大模型學習,大模型可以給這些圖檔打好标簽,如此一來,我們就有了标注好的圖檔,将這些圖檔拿來訓練小模型,就是一種最簡單的知識蒸餾方式。

當然了,我們也可以采用更複雜的方式,如先用大模型從海量資料中提取特征,這些提取出來的特征可以用來訓練小模型。或者說,我們還可以設計得更複雜,在大模型和小模型之間再加一個中模型,大模型提取的特征先訓練中模型,然後再用訓練好的中模型提取特征,交給小模型使用。工程師可以按照自己的需求選擇設計方式。

筆者從小馬智行了解到,基于大模型提取的特征進行蒸餾并finetune,可以得到行人注意力、行人意圖識别等小模型,并且,由于在特征提取階段是共用一個大模型,計算量可以減少。

1.1.4 測車端模型的性能上限

大模型還可以用來測試車端模型的性能上限。有的公司在考慮車端要部署什麼模型的時候,會先把幾個備選模型在雲端測試,看增加參數量後,哪個模型的效果最好,性能最好可以到什麼程度。

然後,把效果最好的模型作為基礎模型,然後對基礎模型做裁剪和優化後部署到車端。

1.1.5 自動駕駛場景的重建和資料生成

毫末智行在2023年1月的AI DAY上提到:“采用NeRF技術,我們可以将場景隐式地存儲在神經網絡中,然後通過渲染圖檔的監督學習,學出場景的隐式參數,然後就可以進行自動駕駛場景的重建。”

例如,我們可以在網絡中輸入圖檔、對應的位姿以及帶顔色的場景密集點雲,基于點栅格網絡将帶顔色的點雲依據輸入圖檔的pose在不同的分辨率上進行栅格化,生成多個尺度下的neural descriptors,然後通過網絡對不同尺度下的特征進行融合。

然後,将生成的密集點雲的descriptor、位置以及對應的相機參數和圖檔的曝光參數等資訊輸入到後續網絡中進行可微調tone mapping,便可以合成出顔色和曝光比較一緻的圖檔。

如此一來,我們便可以實作場景的重建。然後,我們可以通過改變視角、改變光照、改變紋理材質的方法來生成各種高真實感資料,例如通過視角變化可以模拟變道、繞行、調頭等各種主車行為,甚至模拟一些即将碰撞的高危險性場景資料。

1.2

大模型在車端的應用

1.2.1 合并用于檢測不同任務的小模型

在車端運用大模型,主要形式是把處理不同子任務的小模型合并,形成一個“大模型”,然後來做聯合推理。這裡的“大模型”并不是傳統意義上參數量很大——例如參數過億的大模型,當然了,合并後的模型與處理不同子任務的小模型相比會大很多。

在傳統的車端感覺模型中,處理不同子任務的模型是獨立做推理的。例如車道線檢測任務由一個模型負責,紅綠燈檢測任務由一個模型負責,随着感覺任務的增加,工程師會在系統中相應地增加感覺特定目标的模型。

以前的自動駕駛系統功能較少,感覺任務相對容易,但是随着自動駕駛系統功能的更新,感覺任務越來越多,假如仍然采用不同任務單獨用負責相應任務的小模型來單獨推理的方式,系統延遲會太大,存在安全隐患。

覺非科技的BEV多任務感覺架構中,是将不同目标的單任務感覺小模型進行合并,構成一個能同時輸出靜态資訊——包括車道線、地面箭頭、路口的斑馬線、停止線等,還有動态資訊——包括交通參與者的位置、大小、朝向等。覺非科技的BEV多任務感覺算法架構如下圖所示:

萬字長文說清大模型在自動駕駛領域的應用

△覺非科技BEV多任務感覺算法架構示意圖

該多任務感覺模型實作了特征的時序融合——将曆史時刻的 BEV 特征存入特征隊列,在推理階段,以目前時刻的自車坐标系為基準,根據自車運動狀态對曆史時刻的BEV特征做時空對齊 (包括特征旋轉、平移),再将對齊後的曆史時刻BEV特征與目前時刻的 BEV 特征進行拼接。

在自動駕駛場景中,時序融合能夠提高感覺算法的準确性,一定程度上彌補單幀感覺的局限。以圖中所示 3D 目标檢測子任務為例,有了時序融合,感覺模型可以檢測到一些單幀感覺模型無法檢測到的目标 (例如目前時刻被遮擋的目标),還可以更加準确地判斷目标的運動速度,以及輔助下遊任務做目标的軌迹預測。

覺非科技BEV感覺技術負責人戚玉涵博士告訴筆者:采用這樣的模型架構,在感覺任務變得越來越複雜的時候,多任務聯合感覺的架構能保證感覺實時性,也能輸出更多、更準确的感覺結果提供給自動駕駛系統下遊使用。

然而,多任務小模型的合并也會帶來一些問題。從算法層面上來說,合并之後模型在不同子任務上的表現可能會有“回退”現象——即模型檢測的性能比獨立的單任務模型下降。雖然由不同的小模型合并而成的大模型的網絡結構仍然可以很精巧,但是合并後的模型需要解決多任務聯合訓練的問題。

多任務聯合訓練中,各個子任務可能無法做到同時、同步收斂,且各任務之間會受到“負遷移”的影響,合并後的模型就會在某些特定任務上出現精度的“回退”。算法團隊需要盡可能地優化合并的模型結構,調整聯合訓練的政策,降低“負遷移”現象的影響。

1.2.2 物體檢測

一位業内專家告訴筆者:一些真值比較固定的物體适合用大模型來檢測。

那麼,什麼是真值比較固定的物體呢?

所謂真值固定的物體,就是真值不會被天氣、時間等因素影響的物體,例如車道線、立柱、燈柱、交通燈,斑馬線、地庫的停車線、停車位等,這些物體存在與否、位置在哪裡都是固定的,不會因為下雨或者天黑等因素改變,隻要車輛經過相應的區域,他們的位置都是固定的。這樣的物體就适合用大模型來檢測。

1.2.3 車道拓撲預測

某自動駕駛公司在公司的AI DAY 上提到:“我們在BEV的feature map的基礎之上,以标精地圖作為引導資訊,使用自回歸編解碼網絡将BEV特征解碼為結構化的拓撲點序列,實作車道拓撲預測。”

2. 如何用好大模型

在工業界開源的趨勢下,基礎的模型架構早已不是秘密。很多時候,決定一家公司能不能做出好産品的是工程能力。

工程能力決定了當我們想到一些可能對系統能力提升有效的方法時,是否能快速地驗證這一想法的可行性。Tesla和Open AI很大的共同點就是這兩家公司的工程化能力都很強,他們可以用最快的速度檢驗一個想法的可靠性,然後把大規模的資料運用到標明的模型上。

要在實踐中充分發揮大模型的能力,公司的工程能力非常重要。接下來,我們将按照模型研發的流程來闡述用好大模型需要怎樣的工程能力。

2.1

更新資料存儲、檔案傳輸系統

大模型的參數量很大,相應地,用于訓練大模型的資料量也很大。例如,特斯拉的算法團隊大概用了14億張圖檔來訓練團隊去年在AI day上講到的3D-occupancy network 。

實際上,圖檔量的初始值大概會是實際使用數量的幾十倍或者上百倍,因為我們需要先從海量資料中篩選出對模型訓練有價值的資料,是以,既然用于模型訓練的圖檔是14億張,那原始圖檔的數量一定遠大于14億。

那麼,如何存儲百億量級甚至是千億量級的圖檔資料?這對檔案讀取系統和資料存儲系統都是一個巨大的挑戰。尤其是,目前自動駕駛資料是clip形式,且檔案數量規模大,對小檔案随即存儲的效率要求很高。

為了應對這樣的挑戰,業内有公司對資料采用切片存儲的方式,然後采用分布式的架構來支援多使用者、多并發的通路,資料的吞吐帶寬可達到100G/s,I/O延遲可低至2毫秒。所謂多使用者,是指很多使用者同時通路某個資料檔案;多并發,是指在多個線程裡都需要通路某個資料檔案,例如工程師在訓練一個模型的時候,采用了多線程,每個線程都需要用到某一個資料檔案。

2.2

高效地找到合适的網絡架構

有了大資料,如何保證模型對資料資訊抽象得比較好呢?這就需要模型有适合用于相應任務的網絡架構,這樣才能充分發揮模型的參數量大這一優勢,讓模型具備較強的資訊提取能力。

商湯大模型研發進階經理Lucas告訴筆者:我們有一套标準化的、工業級的半自動超大模型設計的體系,依靠這個體系,在設計超大模型的網絡架構時,可以用一套神經網絡搜尋系統做底座,找到最适合去學習大規模資料的網絡架構。

設計小模型的時候,大家主要依靠人工來設計、調優、疊代,最終得到一個效果令人滿意的模型,雖然這個模型不一定是最優的,但是在疊代後,基本能夠滿足要求。

而在面對大模型的時候,由于大模型的網絡結構非常複雜,假如用人工來設計、調優和疊代,對算力的消耗很大,相應地成本也很高。那麼,如何在有限的資源下,快速地、高效地設計出效果足夠好的一種網絡架構來用于訓練就是一個需要解決的問題。

Lucas解釋道:我們有一套算子庫,模型的網絡結構可以看成是一套算子的排列組合。這個工業級的搜尋系統,可以在設定基本參數——包括多少層網絡、參數量多大的前提下,計算如何對算子做排列組合,可以實作較好的模型效果。

模型效果可以根據一些名額來評定,包括對一些資料集的預測精度、模型運作時的顯存占用、模型運作時間等。給這些名額賦予相應的權重,我們就可以據此來不斷疊代直至找到滿意的模型。當然了,在搜尋過程中,我們會先用一些小場景來初步評估模型效果。

在評估模型效果的時候,如何選擇一些較有代表性的場景呢?

一般來說可以選用一些通用的場景。設計網絡架構主要是為了保證模型具備從大量資料中提取關鍵資訊的能力,而不是希望模型可以針對性地學習到某些特定場景的特征,是以,雖然在确定好模型的架構之後,會用模型去完成一些挖掘長尾場景的任務,但是在挑選模型架構的時候,會用通用場景來評估模型的能力。

有了高效率、高精度的神經網絡搜尋系統,計算效率和計算精度足夠高,模型效果才能快速地收斂,才能在一個龐大的空間裡快速地找到一個效果好的網絡架構 。

2.3

提高模型訓練效率

在前面的基礎工作做好後,我們就來到了訓練環節,訓練環節有很多值得優化的地方。

2.3.1 優化算子

神經網絡可以了解為由很多基礎的算子排列組合而來,算子的計算一方面占用算力資源,另一方面會占用記憶體。假如可以對算子做優化,讓算子的計算效率提高,那麼訓練效率就能提高。

目前市面上已經有一些AI的訓練架構——例如PyTorch、TensorFlow等,這些訓練架構可以提供基礎的算子供機器學習工程師們調用,進而建構自己的模型。有的企業會建構自己的訓練架構,對底層算子做優化,以期提高訓練效率。

PyTorch、TensorFlow由于需要盡可能地保證通用性,提供的算子一般都很基本。企業可以根據自己的需求,将基本的算子做融合,省去存儲中間結果的步驟,節省顯存占用,避免性能損失。

此外,針對一些特定算子由于在計算時對中間結果的依賴度高進而無法很好地利用GPU的并行性的問題,業内有公司自己建構了加速庫,降低這些算子對中間結果的依賴度,進而使得計算過程可以充分發揮GPU的并行計算優勢,提高了訓練速度。

例如,在四種主流 Transformer 模型上,位元組跳動的LightSeq 在 PyTorch 的基礎上取得了最高 8 倍的加速。

2.3.2 用好并行政策

并行計算是一種“用空間換時間”的方法,也就是把沒有計算依賴的資料盡可能并行,把大批量拆分成小批量,減少每個計算步驟中的 GPU 空閑等待時間,提高計算吞吐量。

目前很多公司都采用了PyTorch這個訓練架構,這個訓練架構裡有DDP模式——作為一種分發式資料并行的訓練模式,DDP模式設計了一個資料分發機制進而可以支援多機多卡訓練,例如一個公司有8台伺服器,每台伺服器上有8張卡,那麼我們就可以同時使用64張卡來訓練。

沒有這個模式的時候,工程師隻能采用單機多卡的方式來訓練模型。假設我們現在用10萬張圖檔的資料來訓練模型,在單機多卡模式下,訓練時間會超過一周。假如我們希望用訓練結果評估某個猜想,或者想從幾個備選模型中挑選出效果最好的一個,這樣的訓練時長使得快速驗證猜想快速檢驗模型效果所需的等待周期很長。那麼研發效率就很低。

而采用多機多卡并行訓練,實驗結果大部分在2-3天都可以看到,如此一來,驗證模型效果的流程就快了很多。

在具體的并行方式上,主要可以采用模型并行和Sequence并行。

模型并行又可以分為Pipeline并行和Tensor并行,如下圖所示。

萬字長文說清大模型在自動駕駛領域的應用

△Pipeline并行和tensor并行示意圖,圖來自英偉達

Pipeline 并行也就是層間并行(圖中上半部分),工程師在訓練過程中可以記将模型的不同層劃分到不同的 GPU 進行計算。例如圖中上半部分所示,綠色部分的層和藍色部分可以在不同的GPU上做計算。

Tensor 并行也就是層内并行(圖中下半部分),工程師可以将一個層的計算劃分到不同的 GPU 上。這種模式适合用于大矩陣的計算,因為可以實作 GPU 之間的負載均衡,但通信次數和資料量都比較大。

模型并行之外,還有Sequence并行,由于Tensor 并行沒有對 Layer-norm 以及 Dropout 做拆分,是以這兩個算子在每個 GPU 之間會重複計算,雖然這個計算的量不大,但卻非常占用激活顯存。

為了解決這個問題,在實際過程中,我們可以利用Layer-norm 和 Dropout 沿着序列的次元是互相獨立的這一特性(即不同層之間的Layer_norm和Dropout之間互不影響),對Layer-norm和Dropout做拆分,如下圖所示。這樣拆分的好處在于不會增加通信量,并且可以大大減少顯存占用。

萬字長文說清大模型在自動駕駛領域的應用

△Sequence并行示意圖,圖來自英偉達

在實踐中,不同的模型适合的并行政策有差異,工程師需要根據模型的特點,還有采用的硬體的特點以及中間的計算流程,不斷調試後再找到合适的并行政策。

2.3.3 用好“稀疏”性

在模型訓練的時候,還要用好稀疏性,也就是未必每個神經元都要被“激活”——即在添加訓練資料的時候,不是每個模型參數都要根據新添加的資料做更新,而是一部分模型參數保持不變,一部分模型參數随新添加的資料更新。

好的稀疏處理可以確定在保證精度的同時提升模型的訓練效率。

例如,在感覺任務中,當有新的圖檔傳入時,可以選擇需要根據這些圖檔來更新的參數,進而針對性地做特征提取。

2.3.4 統一處理基本資訊

一般來說,公司内部不止會用到一個模型,這些模型可能會用到相同的資料,例如大部分模型都要用到視訊資料。假如每個模型都把視訊資料加載并處理一遍,會存在大量重複計算。我們可以把多數模型都需要用到的視訊、點雲、地圖、CAN信号等各種模态的資訊統一進行處理,這樣不同的模型就可以複用處理結果。

2.3.5 優化硬體配置

在實際使用分布式訓練的時候,可能會用到1000台機器,如何從存儲資料的不同伺服器中擷取訓練過程中的中間結果——例如梯度,然後再做一個超大規模的分布式訓練,是一個很大的挑戰。

要應對這個挑戰,首先就需要考慮好CPU、GPU等該如何配置、網卡該如何選型、網卡快,機器間的傳輸才能快。

其次需要同步參數和儲存中間結果,但是當規模很大的時候,這件事情就會變得非常困難,這會涉及到一些網絡通信的工作。

另外,整個訓練的過程時間很長,那麼叢集的穩定性就需要很高。

3. 繼續增加模型參數有意義嗎

既然大模型已經能夠在自動駕駛領域發揮一些作用,假如我們繼續增加模型參數,可以期待大模型能展現出一些令人驚歎的效果嗎?

根據筆者與自動駕駛領域的算法專家交流的結果,目前的答案恐怕是否定的,因為上文提到的“湧現”現象尚未在CV(計算機視覺)領域出現。目前大家在自動駕駛領域用的模型參數量遠小于ChatGPT的參數量。因為在沒有“湧現”效果出現的時候,模型性能提升和參數量增加之間大緻呈線性關系,考慮到成本限制,各企業尚未将模型的參數量做到極大。

為什麼計算機視覺領域尚未出現“湧現”現象呢?某位專家的解釋是:

首先,雖然這個世界上的視覺資料遠遠多于文字資料,但是圖像資料是稀疏的,即大部分照片裡可能都沒有多少有效的資訊,而且每張圖檔裡大部分像素都沒有提供有效資訊。假如我們取一張自拍照,除了中間的人臉,背景區域都沒有有效資訊。

其次,圖像資料存在顯著的尺度變化,并且完全非結構化。尺度變化是說包含同一個語義的object在相應的圖檔中可大可小。例如,我先拍一張自拍照,然後請距離較遠的朋友再幫我拍一張照片,在這兩張照片裡,臉在照片裡占據的比例差異很大。非結構化,是指每個像素之間的關系是不确定的。

但在自然語言處理領域,語言由于是人與人之間交流的工具,上下文之間通常是有關聯的,而且每句話的資訊密度一般較大,并且不存在尺度變化的問題,例如,在任何一個語種裡,“蘋果”這個詞通常都不會太長。

是以,視覺資料的了解本身就會比自然語言更難。

某位業内專家告訴筆者:雖然我們可以預期模型的性能會随着參數量增加而提升,但是目前繼續增加參數量的成本效益較低。

舉例來講,假如我們把模型的容量在現有基礎上擴大十倍,它的相對錯誤率能下降90%。這個時候模型已經可以完成一些人臉識别等計算機視覺的任務。假如此時我們把模型的容量繼續擴大十倍,相對錯誤率繼續下降90%,但是它能實作的價值卻沒有提高十倍,那麼我們就沒有必要繼續擴大模型容量。

擴大模型容量會帶來成本的上升,因為更大的模型需要更多的訓練資料也需要更多的算力。當模型的精度達到可接受範圍之後,我們需要在成本上升和精度提高之間做取舍,按照實際的需求在可接受精度情況下盡可能地降低成本。

雖然目前仍然存在一些我們需要提高精度的任務,但是大模型主要是在雲端替代一些人工的工作,例如自動标注、資料挖掘等都可以用人來做。假如成本太高,那麼經濟賬就“算不過來”。

但也有業内專家告訴筆者:雖然目前還沒有到達質變點,但是随着模型的參數變多,資料量的增加,我們确實可以觀察到模型的精度一直在提升。模型精度的提升可以反哺自動化标注,用來做标注任務的模型的精度足夠高,标注工作就可以減少很多人力。雖然訓練成本會随着模型規模的變大而增加,但目前成本和模型參數量基本呈線性關系。人力的減少可以抵消訓練成本的增加,是以,整體上,增加參數量仍然是有收益的。

此外,在模型參數量增加的時候,我們也會采用一些方法提高訓練效率進而盡可能降低訓練成本。在現有的模型規模下,我們基本可以做到在保持成本基本不變的前提下,增加模型的參數量同時提高模型精度。相當于可以使得模型的成本不随着模型參數量的增加而線性增加,我們可以做到成本幾乎不增加或者僅有很小幅的增加。

4. 大模型其他可能的應用方式

除了上文提到的應用,我們還可以如何發掘大模型的價值呢?

4.1

在感覺領域

CMU Research Scientist Max告訴筆者:用大模型來實作感覺任務,核心不是堆疊參數,而是要打造可以‘内循環’的架構。如果整個模型無法實作内循環,或者說沒辦法實作不斷地線上訓練,那就很難實作很好的效果。

那麼,如何實作模型的“内循環”呢?我們可以參考ChatGPT的訓練架構,如下圖所示。

萬字長文說清大模型在自動駕駛領域的應用

△ChatGPT訓練架構,圖摘自Open AI官方網站

ChatGPT的模型架構,可以分為三個步驟:第一步有監督學習,工程師先采集并标注一部分資料,然後用這部分資料來訓練模型;第二步是設計一個獎勵模型(Reward Model),模型可以自己輸出一些标注結果;到了第三步,我們可以通過一個類似于強化學習的路徑,實作自監督學習,用更通俗的語言來講叫“自己和自己玩兒”,或者說“内循環”。

隻要到了第三步,模型就不再需要工程師加入标注好的資料,而是可以在拿到無标注資料後自己計算loss,然後更新參數,如此不斷循環,最終完成訓練。

“假如在做感覺任務的時候,我們可以設計好合适的Reward Policy,讓模型訓練不再依賴标注資料,就可以說模型實作了‘内循環’,可以根據無标注資料不斷地更新參數。”

4.2

在規劃領域

在圍棋等領域,每個步驟的好壞比較容易評判,因為我們的目标一般隻包括最終赢得對弈。

然而,在自動駕駛的規劃領域,人對自動駕駛系統表現出來的行為的評價體系是不清晰的。在保證安全之外,每個人對舒适度的感受不同,我們可能還希望盡可能快地到達目的地。

換到聊天場景中,機器人每次給的回報到底是“好”還是“壞”,其實也不像圍棋那樣有非常清晰的評價體系。自定駕駛也和這一點類似,每個人對于“好”和“壞”有不同的标準,而且他/她可能還有一些很難被清晰地表達出來的需求。

在ChatGPT訓練架構的第二步,标注員去給模型輸出的結果排序,然後用這個排序結果來訓練Reward Model。在一開始,這個Reward Model并不是完美的,但是我們可以通過不斷地訓練,讓這個Reward Model不斷地逼近我們想要的效果。

某位來自人工智能企業的專家告訴筆者:在自動駕駛的規劃領域,我們可以不斷地收集汽車行駛的資料,然後告訴模型什麼情況下人會接管(也就是說人會覺得有危險),什麼情況下可以正常行駛,那麼随着資料量的增加,Reward Model會越來越接近完美。

也就是說,我們可以考慮放棄顯式地寫出一個完美的Reward Model,而是通過不斷給模型回報的方式來得到一個不斷逼近完美的解。

對比目前在規劃領域通用的做法,即試圖依靠人工書寫規則顯式地找到最優解,先采用一個初始的Reward Model,然後根據資料不斷優化的方法,是一個範式的轉變。

采用這種方式後,優化規劃子產品就可以采用一個相對标準的流程,我們需要做的隻是不斷地收集資料,然後訓練Reward Model,不再像傳統方法那樣依賴于某個工程師對整個規劃子產品了解的深度。

此外,曆史上所有的資料都可以用來訓練,我們不用擔心某個規則改動之後,雖然解決了目前遇到的一些問題,但是某些之前已經被解決了的問題再次出現,假如采用傳統方法,我們可能就會被這種問題困擾。

繼續閱讀