隨著ChatGPT的火爆,大模型受到的關注度越來越高,大模型展現出的能力令人驚嘆。
在圖片產生、推薦系統、機器翻譯等領域,大模型已經開始發揮作用。給定一些提示詞,圖片生成網站Midjourney生成的設計圖甚至已經超過了許多專業設計師的水平。
大模型為什麼可以表現出令人驚嘆的能力呢?為什麼模型的參數量變大、容量變大,效能就會相對地變好呢?
某AI演算法公司的專家告訴筆者:模型的參數量增加,可以理解為模型的維度升高,也就是說我們可以用更複雜的方式來模擬真實世界的規律。拿一個最簡單的場景來舉例,在一個平面圖上給一個散點圖,假如我們用一條直線(一個一元函數)來刻畫圖上的散點出現的規律,那麼不管參數是多少,總是會有一些點在這條直線之外。如果我們使用一個二元函數來表示這些點的規律,那麼就會有更多的點能夠落在這個函數線上。隨著函數的升維,或者說自由度的增加,會有越來越多的點落在這條線上,也就是說對這些點的規律擬合得更精確。
也就是說,模型的參數量越大,模型就越容易擬合海量資料的規律。
而隨著ChatGPT的出現,人們發現,當模型的參數量到了一定程度之後,呈現出的效果不只是“性能變好”,而是“超出預期的好」。
在NLP(自然語言處理)領域存在著一個學界和工業界還無法解釋具體原理但令人很興奮的現象:「湧現」(Emerging Ability)。
何為「湧現」? 「湧現」是指,當模型的參數量呈線性增加到一定程度的時候,模型的精度呈指數型增加。
我們可以看一個圖,下圖左邊展示了比例定律(Scaling Law),這是在2022年之前,OpenAI的研究者發現的現象,也就是說隨著模型參數規模呈指數成長時,模型的精確度會隨之線性增加。左圖的模型參數也不是指數級增長而是線性增長
到了2022年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 合併用於偵測不同任務的小模型
在車端運用大模型,主要形式是把處理不同子任務的小模型合併,形成一個“大模型”,然後來做聯合推理。這裡的「大模型」並不是傳統意義上參數量很大——例如參數過億的大模型,當然了,合併後的模型與處理不同子任務的小模型相比會大很多。
在傳統的車端感知模型中,處理不同子任務的模型是獨立做推理的。例如車道線偵測任務由一個模型負責,紅綠燈偵測任務由一個模型負責,隨著知覺任務的增加,工程師會在系統中相應地增加感知特定目標的模型。
以前的自動駕駛系統功能較少,感知任務相對容易,但是隨著自動駕駛系統功能的升級,感知任務越來越多,假如仍然採用不同任務單獨用負責對應任務的小模型來單獨推理的方式,系統延遲會太大,有安全隱患。
覺非科技的BEV多任務感知框架中,是將不同目標的單任務感知小模型合併,構成一個能同時輸出靜態訊息-包括車道線、地面箭頭、路口的斑馬線、停止線等,還有動態資訊-包括交通參與者的位置、大小、方向等。覺非科技的BEV多任務感知演算法架構如下圖:
# 覺非科技BEV多任務感知演算法框架示意圖
此多任務感知模型實現了特徵的時序融合——將歷史時刻的BEV 特徵存入特徵隊列,在推理階段,以當前時刻的自車座標係為基準,根據自車運動狀態對歷史時刻的BEV特徵做時空對齊(包括特徵旋轉、平移),再將對齊後的歷史時刻BEV特徵與當前時刻的BEV 特徵進行拼接。
在自動駕駛場景中,時序融合能夠提高感知演算法的準確性,並在某種程度上彌補單幀感知的限制。以圖中所示3D 目標偵測子任務為例,有了時序融合,感知模型可以偵測到一些單幀感知模型無法偵測到的目標(例如當下時刻被遮蔽的目標),還可以更準確地判斷目標的運動速度,以及輔助下游任務做目標的軌跡預測。
覺非科技BEV感知技術負責人戚玉涵博士告訴筆者:採用這樣的模型架構,在感知任務變得越來越複雜的時候,多任務聯合感知的框架能確保感知即時性,也能輸出更多、更準確的感知結果提供給自動駕駛系統下游使用。
然而,多任務小模型的合併也會帶來一些問題。從演算法層面來說,合併之後模型在不同子任務上的表現可能會有「回退」現象──也就是模型偵測的表現比獨立的單任務模型下降。雖然由不同的小模型合併而成的大模型的網路結構仍然可以很精巧,但是合併後的模型需要解決多任務聯合訓練的問題。
多任務聯合訓練中,各個子任務可能無法做到同時、同步收斂,且各任務之間會受到「負遷移」的影響,合併後的模型就會在某些特定任務上出現精確度的「回退」。演算法團隊需要盡可能優化合併的模型結構,調整聯合訓練的策略,降低「負遷移」現象的影響。
1.2.2 物件偵測
#一位業內專家告訴筆者:一些真數值比較固定的物體適合用大模型來偵測。
那麼,什麼是真值比較固定的物體呢?
所謂真值固定的物體,就是真值不會被天氣、時間等因素影響的物體,例如車道線、立柱、燈柱、交通燈,斑馬線、地庫的停車線、停車位等,這些物體存在與否、位置在哪裡都是固定的,不會因為下雨或天黑等因素改變,只要車輛經過相應的區域,他們的位置都是固定的。這樣的物體就適合用大模型來偵測。
1.2.3 車道拓樸預測
某自動駕駛公司在公司的AI DAY 上提到:「我們在BEV的feature map的基礎之上,以標精地圖作為引導訊息,使用自回歸編解碼網路將BEV特徵解碼為結構化的拓撲點序列,實現車道拓撲預測。」
在工業界開源的趨勢下,基礎的模型架構早已不是秘密。很多時候,決定一家公司能不能做出好產品的是工程能力。
工程能力決定了當我們想到一些可能對系統能力提升有效的方法時,是否能快速地驗證這個想法的可行性。 Tesla和Open AI很大的共同點就是這兩家公司的工程化能力都很強,他們可以用最快的速度檢驗一個想法的可靠性,然後把大規模的數據運用到選定的模型上。
要在實務上充分發揮大模型的能力,公司的工程能力非常重要。接下來,我們將依照模型研發的流程來闡述用好大模型需要怎樣的工程能力。
#大模型的參數量很大,相應地,用於訓練大模型的數據量也很大。例如,特斯拉的演算法團隊大概用了14億張圖片來訓練團隊去年在AI day上講到的3D-occupancy network 。
實際上,圖片量的初始值大概會是實際使用數量的幾十倍或上百倍,因為我們需要先從海量資料中篩選出對模型訓練有價值的數據,因此,既然用於模型訓練的圖片是14億張,那麼原始圖片的數量一定遠大於14億張。
那麼,如何儲存百億量級甚至是千億量級的圖片資料?這對檔案讀取系統和資料儲存系統都是一個巨大的挑戰。尤其是,目前自動駕駛資料是clip形式,且檔案數量規模大,對小檔案隨即儲存的效率要求很高。
為了應對這樣的挑戰,業內有公司對資料採用切片儲存的方式,然後採用分散式的架構來支援多用戶、多並發的訪問,資料的吞吐頻寬可達到100G/s,I/O延遲可低至2毫秒。所謂多用戶,是指很多用戶同時訪問某個資料文件;多並發,是指在多個線程裡都需要存取某個資料文件,例如工程師在訓練一個模型的時候,採用了多線程,每個線程都需要用到某一個資料檔。
#有了大數據,如何確保模型對資料資訊抽象得比較好呢?這就需要模型有適合用於對應任務的網路架構,這樣才能充分發揮模型的參數量大這一優勢,讓模型具備較強的資訊擷取能力。
商湯大模型研發高級經理Lucas告訴筆者:我們有一套標準化的、工業級的半自動超大模型設計的體系,依靠這個體系,在設計超大模型的網路架構時,可以用一套神經網路搜尋系統做底座,找到最適合學習大規模資料的網路架構。
設計小模型的時候,大家主要靠人工來設計、調優、迭代,最後得到一個效果滿意的模型,雖然這個模型不一定是最優的,但是在迭代後,基本上能夠滿足要求。
而在面對大模型的時候,由於大模型的網路結構非常複雜,假如用人工來設計、調優和迭代,對算力的消耗很大,相應地成本也很高。那麼,如何在有限的資源下,快速地、有效率地設計出效果夠好的一種網路架構來用於訓練就是一個需要解決的問題。
Lucas解釋說,我們擁有一組算子庫,模型的網路結構可以被視為該組算子的排列和組合。這個工業級的搜尋系統,可以在設定基本參數──包含多少層網路、參數量多大的前提下,計算如何對算子做排列組合,可以達到較好的模型效果。
可以根據一些標準來評估模型效果,這些標準包括針對某些資料集的預測準確度、模型在運行時所使用的顯存、以及模型執行所需的時間等。透過賦予這些指標相應的權重,我們可以持續迭代直到找到滿意的模型。當然,在搜尋階段,我們會先嘗試使用一些小場景來初步評估模型的效果。
在評估模型效果的時候,如何選擇一些更有代表性的場景呢?
一般來說可以選用一些通用的場景。設計網路架構主要是為了確保模型具備從大量資料中提取關鍵資訊的能力,而不是希望模型可以針對性地學習到某些特定場景的特徵,因此,雖然在確定好模型的架構之後,會用模型去完成一些挖掘長尾場景的任務,但是在挑選模型架構的時候,會用通用場景來評估模型的能力。
有了高效率、高精度的神經網路搜尋系統,運算效率和運算精度夠高,模型效果才能快速收斂,才能在龐大的空間裡快速找到一個效果好的網路架構。
#在前面的基礎工作做好後,我們就來到了訓練環節,訓練環節有很多值得優化的地方。
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等該如何設定、網路卡該如何選型、網路卡快,機器間的傳輸才能快。
其次需要同步參數和保存中間結果,但是當規模很大的時候,這件事情就會變得非常困難,這會涉及到一些網路通訊的工作。
另外,整個訓練的過程時間很長,那麼集群的穩定性就需要很高。
既然大模型已經能夠在自動駕駛領域發揮一些作用,如果我們繼續增加模型參數,可以期待大模型能展現出一些令人驚嘆的效果嗎?
根據筆者與自動駕駛領域的演算法專家交流的結果,目前的答案恐怕是否定的,因為上文提到的「湧現」現象尚未在CV(電腦視覺)領域出現。目前大家在自動駕駛領域用的模型參數量遠小於ChatGPT的參數量。因為在沒有「湧現」效果出現的時候,模型性能提升和參數量增加之間大致呈現線性關係,考慮到成本約束,各企業尚未將模型的參數量做到極大。
為什麼電腦視覺領域尚未出現「湧現」現象呢?某位專家的解釋是:
首先,雖然這個世界上的視覺數據遠遠多於文字數據,但是圖像數據是稀疏的,即大部分照片裡可能都沒有多少有效的信息,而且每張圖片里大部分像素都沒有提供有效信息。假如我們取一張自拍照,除了中間的人臉,背景區域都沒有有效資訊。
其次,影像資料存在顯著的尺度變化,並且完全非結構化。尺度變化是說包含同一個語意的object在對應的圖片中可大可小。例如,我先拍一張自拍照,然後請距離較遠的朋友再幫我拍一張照片,在這兩張照片裡,臉在照片裡佔據的比例差異很大。非結構化,是指每個像素之間的關係是不確定的。
但在自然語言處理領域,語言由於是人與人之間溝通的工具,上下文之間通常是有關聯的,而且每句話的資訊密度一般較大,並且不存在尺度變化的問題,例如,在任何一個語種裡,“蘋果”這個詞通常都不會太長。
因此,視覺資料的理解本身就會比自然語言更難。
某位業內專家告訴筆者:雖然我們可以預期模型的表現會隨著參數量增加而提升,但是目前繼續增加參數量的性價比較低。
舉例來講,假如我們把模型的容量在現有基礎上擴大十倍,它的相對錯誤率能下降90%。這時候模型已經可以完成一些人臉辨識等電腦視覺的任務。假如此時我們把模型的容量繼續擴大十倍,相對錯誤率繼續下降90%,但是它能實現的價值卻沒有提高十倍,那麼我們就沒有必要繼續擴大模型容量。
擴大模型容量會帶來成本的上升,因為更大的模型需要更多的訓練資料也需要更多的算力。當模型的精度達到可接受範圍之後,我們需要在成本上升和精度提高之間做取捨,按照實際的需求在可接受精度情況下盡可能地降低成本。
雖然目前仍然存在一些我們需要提高精確度的任務,但大模型主要是在雲端替代一些人工的工作,例如自動標註、資料探勘等都可以用人來做。如果成本太高,那麼經濟帳就「算不過來」。
但也有業內專家告訴筆者:雖然目前還沒有到達質變點,但是隨著模型的參數變多,資料量的增加,我們確實可以觀察到模型的精度一直在提升。如果用於標註任務的模型精度足夠高,那麼自動化標註的水平將得到提升,從而減少了大量的人力成本。目前來看,儘管隨著模型規模的增加,訓練成本也會增加,但成本與模型參數量大致呈線性關係。雖然訓練成本會增加,但是減少人力可以抵銷這種增加,因此增加參數量仍然會帶來效益。
另外,我們也會採用一些技巧,在增加模型參數量的同時提升訓練效率,以盡量減少訓練成本。我們可以在現有的模型規模下,在保持成本不變的情況下,增加模型的參數數量,並提高模型的精確度。相當於可以使得模型的成本不隨著模型參數量的增加而線性增加,我們可以做到成本幾乎不增加或僅有很小的增加。
除了上文提到的應用,我們還可以如何發掘大模型的價值呢?
#CMU Research Scientist Max告訴筆者:以大模型實現知覺任務,核心不是堆疊參數,而是要打造可以'內循環'的框架。如果整個模型無法實現內循環,或者說沒辦法實現不斷地在線上訓練,那就很難達到很好的效果。
那麼,要如何實現模型的「內循環」呢?我們可以參考ChatGPT的訓練框架,如下圖所示。
ChatGPT訓練框架,圖摘自Open AI官方網站
#ChatGPT訓練框架,圖摘自Open AI官方網站
ChatGPT的模型框架,可以分為三個步驟:第一步有監督學習,工程師先收集並標註一部分數據,然後用這部分數據來訓練模型;第二步是設計一個獎勵模型( Reward Model),模型可以自己輸出一些標註結果;到了第三步,我們可以通過一個類似於強化學習的路徑,實現自監督學習,用更通俗的語言來講叫“自己和自己玩兒”,或者說「內循環」。
只要到了第三步,模型就不再需要工程師加入標註好的數據,而是可以在拿到無標註數據後自己計算loss,然後更新參數,如此不斷循環,最終完成訓練。
######「假如在做感知任務的時候,我們可以設計好合適的Reward Policy,讓模型訓練不再依賴標註數據,就可以說模型實現了'內循環',可以根據無標註資料不斷地更新參數。」######在圍棋等領域,每個步驟的好壞比較容易評判,因為我們的目標一般只包括最終贏得對弈。
然而,在自動駕駛的規劃領域,人對自動駕駛系統所表現出來的行為的評價體係是不清晰的。在確保安全之外,每個人對舒適度的感受不同,我們可能也希望盡可能快到達目的地。
換到聊天場景中,機器人每次給的回饋到底是“好”還是“壞”,其實也不像圍棋那樣有非常清晰的評價體系。自定駕駛也和這一點類似,每個人對於「好」和「壞」有不同的標準,而且他/她可能還有一些很難被清晰地表達出來的需求。
在ChatGPT訓練框架的第二步,標註員去給模型輸出的結果排序,然後用這個排序結果來訓練Reward Model。在一開始,這個Reward Model並不是完美的,但我們可以透過不斷地訓練,讓這個Reward Model不斷逼近我們想要的效果。
某位來自人工智慧企業的專家告訴筆者:在自動駕駛的規劃領域,我們可以不斷地收集汽車行駛的數據,然後告訴模型什麼情況下人會接管(也就是說人會覺得有危險),在什麼情況下可以正常行駛,那麼隨著資料量的增加,Reward Model會越來越接近完美。
也就是說,我們可以考慮放棄明確地寫出一個完美的Reward Model,而是透過不斷給予模型回饋的方式來得到一個不斷逼近完美的解。
對比目前在規劃領域通用的做法,即試圖依靠人工書寫規則明確地找到最優解,先採用一個初始的Reward Model,然後根據數據不斷優化的方法,是一個範式的轉變。
採用這種方式後,最佳化規劃模組就可以採用一個相對標準的流程,我們需要做的只是不斷地收集數據,然後訓練Reward Model,不再像傳統方法那樣依賴某個工程師對整個規劃模組理解的深度。
此外,歷史上所有的資料都可以用來訓練,我們不用擔心某個規則改動之後,雖然解決了當前遇到的一些問題,但是某些之前已經被解決了的問題再次出現,如果採用傳統方法,我們可能就會被這種問題困擾。
以上是萬字長文說清大模型在自動駕駛領域的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!