萬字長文說清大模型在自動駕駛領域的應用
隨著ChatGPT的火爆,大模型受到的關注度越來越高,大模型展現出的能力令人驚嘆。
在圖片生成、推薦系統、機器翻譯等領域,大模型已經開始發揮作用。給定一些提示詞,圖片生成網站Midjourney生成的設計圖甚至已經超過了很多專業設計師的水平。
大模型為什么可以表現出令人驚嘆的能力呢?為什么模型的參數量變大、容量變大,性能就會相應地變好呢?
某AI算法公司的專家告訴筆者:模型的參數量增加,可以理解為模型的維度升高,也就是說我們可以用更復雜的方式來模擬真實世界的規律。拿一個最簡單的場景來舉例,在一個平面圖上給一個散點圖,假如我們用一條直線(一個一元函數)來刻畫圖上的散點出現的規律,那么不管參數是多少,總會有一些點在這條直線之外。假如我們用一條拋物線(一個二元函數)來刻畫這些點的規律,那么就會有更多的點可以落在這條線上。隨著函數的升維,或者說自由度的增加,會有越來越多的點落在這條線上,也就是說對這些點的規律擬合得更加精準。
也就是說,模型的參數量越大,模型就越容易擬合海量數據的規律。
而隨著ChatGPT的出現,人們發現,當模型的參數量到了一定程度之后,呈現出的效果不只是“性能變好”,而是“超出預期的好”。
在NLP(自然語言處理)領域存在一個學界和工業界還無法解釋具體原理但令人很興奮的現象:“涌現”(Emerging Ability)。
何為“涌現”?“涌現”是指,當模型的參數量呈線性增加到一定程度的時候,模型的精度呈指數型增加。
我們可以看一個圖,下圖左邊展示了比例定律(Scaling Law),這是在2022年之前,OpenAI的研究者發現的現象,也就是說隨著模型參數規模呈指數增長時,模型的精度會隨之線性增加。左圖的模型參數也不是指數級增長 而是線性增長
到了2022年1月,有研究者發現,當模型的參數規模超過一定程度時,模型精度提升的程度明顯超過比例曲線,如下圖右所示。
“涌現”示意圖
落實到應用層面,我們會發現,大模型可以實現一些小模型無法實現的任務,例如大模型能做加減法、能做簡單的推理等。
怎樣的模型可以稱之為大模型呢?
一般來說,我們認為參數量過億的模型都可以稱之為“大模型”。而在自動駕駛領域,大模型主要有兩種含義:一種是參數量過億的模型;另一種是由多個小模型疊加在一起組成的模型,雖然參數量不過億,但也被稱為“大模型”。
按照這樣的定義,在自動駕駛領域,大模型已經開始被廣泛運用了。在云端,我們可以發揮模型參數量增加帶來的容量優勢,用大模型完成一些數據挖掘、數據標注等任務。在車端,我們可以把分管不同子任務的多個小模型合并成一個“大模型”,這樣可以節省車端計算環節的推理時間,增加安全性。
具體來說,大模型可以如何發揮作用呢?根據筆者與各位業內專家交流得到的信息,業界目前主要是在感知領域使用大模型。接下來,我們將分別介紹在云端和車端,大模型如何賦能感知任務。
01
大模型的應用
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特征解碼為結構化的拓撲點序列,實現車道拓撲預測。”
02
如何用好大模型
在工業界開源的趨勢下,基礎的模型框架早已不是秘密。很多時候,決定一家公司能不能做出好產品的是工程能力。
工程能力決定了當我們想到一些可能對系統能力提升有效的方法時,是否能快速地驗證這一想法的可行性。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等該如何配置、網卡該如何選型、網卡快,機器間的傳輸才能快。
其次需要同步參數和保存中間結果,但是當規模很大的時候,這件事情就會變得非常困難,這會涉及到一些網絡通信的工作。
另外,整個訓練的過程時間很長,那么集群的穩定性就需要很高。
03
繼續增加模型參數有意義嗎
既然大模型已經能夠在自動駕駛領域發揮一些作用,假如我們繼續增加模型參數,可以期待大模型能展現出一些令人驚嘆的效果嗎?
根據筆者與自動駕駛領域的算法專家交流的結果,目前的答案恐怕是否定的,因為上文提到的“涌現”現象尚未在CV(計算機視覺)領域出現。目前大家在自動駕駛領域用的模型參數量遠小于ChatGPT的參數量。因為在沒有“涌現”效果出現的時候,模型性能提升和參數量增加之間大致呈線性關系,考慮到成本約束,各企業尚未將模型的參數量做到極大。
為什么計算機視覺領域尚未出現“涌現”現象呢?某位專家的解釋是:
首先,雖然這個世界上的視覺數據遠遠多于文字數據,但是圖像數據是稀疏的,即大部分照片里可能都沒有多少有效的信息,而且每張圖片里大部分像素都沒有提供有效信息。假如我們取一張自拍照,除了中間的人臉,背景區域都沒有有效信息。
其次,圖像數據存在顯著的尺度變化,并且完全非結構化。尺度變化是說包含同一個語義的object在相應的圖片中可大可小。例如,我先拍一張自拍照,然后請距離較遠的朋友再幫我拍一張照片,在這兩張照片里,臉在照片里占據的比例差異很大。非結構化,是指每個像素之間的關系是不確定的。
但在自然語言處理領域,語言由于是人與人之間交流的工具,上下文之間通常是有關聯的,而且每句話的信息密度一般較大,并且不存在尺度變化的問題,例如,在任何一個語種里,“蘋果”這個詞通常都不會太長。
因此,視覺數據的理解本身就會比自然語言更難。
某位業內專家告訴筆者:雖然我們可以預期模型的性能會隨著參數量增加而提升,但是目前繼續增加參數量的性價比較低。
舉例來講,假如我們把模型的容量在現有基礎上擴大十倍,它的相對錯誤率能下降90%。這個時候模型已經可以完成一些人臉識別等計算機視覺的任務。假如此時我們把模型的容量繼續擴大十倍,相對錯誤率繼續下降90%,但是它能實現的價值卻沒有提高十倍,那么我們就沒有必要繼續擴大模型容量。
擴大模型容量會帶來成本的上升,因為更大的模型需要更多的訓練數據也需要更多的算力。當模型的精度達到可接受范圍之后,我們需要在成本上升和精度提高之間做取舍,按照實際的需求在可接受精度情況下盡可能地降低成本。
雖然當前仍然存在一些我們需要提高精度的任務,但是大模型主要是在云端替代一些人工的工作,例如自動標注、數據挖掘等都可以用人來做。假如成本太高,那么經濟賬就“算不過來”。
但也有業內專家告訴筆者:雖然目前還沒有到達質變點,但是隨著模型的參數變多,數據量的增加,我們確實可以觀察到模型的精度一直在提升。模型精度的提升可以反哺自動化標注,用來做標注任務的模型的精度足夠高,標注工作就可以減少很多人力。雖然訓練成本會隨著模型規模的變大而增加,但目前成本和模型參數量基本呈線性關系。人力的減少可以抵消訓練成本的增加,因此,整體上,增加參數量仍然是有收益的。
此外,在模型參數量增加的時候,我們也會采用一些方法提高訓練效率從而盡可能降低訓練成本。在現有的模型規模下,我們基本可以做到在保持成本基本不變的前提下,增加模型的參數量同時提高模型精度。相當于可以使得模型的成本不隨著模型參數量的增加而線性增加,我們可以做到成本幾乎不增加或者僅有很小幅的增加。
04
大模型其他可能的應用方式
除了上文提到的應用,我們還可以如何發掘大模型的價值呢?
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,不再像傳統方法那樣依賴于某個工程師對整個規劃模塊理解的深度。
此外,歷史上所有的數據都可以用來訓練,我們不用擔心某個規則改動之后,雖然解決了當前遇到的一些問題,但是某些之前已經被解決了的問題再次出現,假如采用傳統方法,我們可能就會被這種問題困擾。