人人人免费人人专区人人,欧美精品不卡,欧美大片无尺码在线观看,久久精品小视频,成人免费黄色大片,欧美+亚洲+精品+三区

2023年的大模型:OpenAI科學(xué)家最新講座

編者按:本文來自微信公眾號(hào):Web3天空之城(ID:Web3SkyCity),作者:城主,微新創(chuàng)想經(jīng)授權(quán)發(fā)布。

我將在此討論2023年的大型模型。

你可能會(huì)問,為什么要特意強(qiáng)調(diào)“2023年”這個(gè)時(shí)間點(diǎn)?當(dāng)我們說“大型”,這其實(shí)是有些誤導(dǎo)性的。因?yàn)榻裉焖Q的大型模型,在未來幾年內(nèi)可能就被視為小型了。隨著我們對(duì)“規(guī)模”的定義發(fā)生變化,我們?cè)谀壳暗拇笳Z言模型中所做的許多見解和結(jié)論都可能會(huì)變得過時(shí),甚至在某些情況下變得不再適用。然而,幸運(yùn)的是,那些基于基本原則的見解往往會(huì)持續(xù)得更長(zhǎng)久,比那些初看起來很有前景的新穎觀點(diǎn)更為持久。

在本次分享中,我想與大家分享我過去四年在這一領(lǐng)域的工作中得到的基本認(rèn)識(shí),這些都是我從與一些非常聰明的人交流中獲得的。我希望,我今天分享的內(nèi)容都是基于基本原則的,能夠在未來幾年內(nèi)保持其相關(guān)性。那么,讓我們開始吧。

大型語言模型的一個(gè)特點(diǎn)是,某些能力只有在達(dá)到一定規(guī)模時(shí)才會(huì)顯現(xiàn)。這使得我們需要從不同的角度來看待這個(gè)領(lǐng)域。這是我想表達(dá)的。此處的具體細(xì)節(jié)并不重要。在X軸上,我們可以考慮模型的規(guī)模,比如模型的參數(shù)數(shù)量、訓(xùn)練數(shù)據(jù)的大小、所用的計(jì)算資源等。而在Y軸上,可以是你所關(guān)心的任務(wù)的某些性能指標(biāo)。我們已經(jīng)反復(fù)觀察到這樣的模式:小型模型在某些任務(wù)上幾乎無法取得任何進(jìn)展,但當(dāng)模型達(dá)到一定規(guī)模時(shí),它突然就能夠完成這些任務(wù)了,有時(shí)甚至能做得很好。我們稱這種現(xiàn)象為“涌現(xiàn)”,就像某種能力突然“涌現(xiàn)”出來。這在大型語言模型中是非常獨(dú)特的。

這為AI研究者提供了一種全新的視角。首先,是“尚未”這種觀念。假設(shè)我們有一個(gè)新想法,例如一個(gè)新的推理技巧,我進(jìn)行了實(shí)驗(yàn),發(fā)現(xiàn)它不起作用。大部分時(shí)間,確實(shí)如此。但我不會(huì)說這個(gè)想法永遠(yuǎn)不會(huì)起作用,我只會(huì)說“現(xiàn)在還不行”。這確實(shí)是一種根本的思維轉(zhuǎn)變。這意味著,這個(gè)想法可能在當(dāng)前的模型上不適用,但在三、五年后的模型上,它可能會(huì)起作用。

為什么這種觀點(diǎn)在以前不是那么明顯呢?我們已經(jīng)習(xí)慣于在一個(gè)基本規(guī)律不會(huì)真正改變的環(huán)境中工作。例如,如果你在物理實(shí)驗(yàn)或熱力學(xué)研究中有了一個(gè)新的想法,但實(shí)驗(yàn)失敗了,你知道這個(gè)想法在三年、甚至三十年后都不會(huì)成功。但在AI領(lǐng)域,情況則完全不同。例如,GPT-4發(fā)布后,研究者們?cè)谄浠A(chǔ)上進(jìn)行了大量實(shí)驗(yàn),建立了新的直覺。但隨著新模型的發(fā)布,很多之前的想法和直覺就變得過時(shí)了。

這種轉(zhuǎn)變需要我們不斷地更新、拋棄那些基于過時(shí)觀點(diǎn)的直覺,這對(duì)于許多研究者來說是一個(gè)新挑戰(zhàn)。但這也為新入行的研究者提供了機(jī)會(huì)。他們可以帶來新的視角,嘗試那些在以前的模型上不起作用的想法,而在新的模型上,這些想法可能突然就有效了。這種情況在AI這個(gè)競(jìng)爭(zhēng)激烈的領(lǐng)域已經(jīng)發(fā)生了很多次,這是一個(gè)非常有意思的現(xiàn)象,值得我們深入思考。

我想分享的下一個(gè)觀點(diǎn)與我們?nèi)绾握驹谇把兀貏e是與縮放曲線有關(guān)。這是我要表達(dá)的核心思想。在我的日常研究中,我總是在腦海中構(gòu)建一個(gè)畫面,并記錄所有不成功的實(shí)驗(yàn)。這些失敗往往是因?yàn)槟撤N“智力”上的不足。這可能是一個(gè)模糊的描述,但也許這意味著沒有足夠的推理能力去解決某個(gè)復(fù)雜的數(shù)學(xué)或編程問題。因此,我會(huì)把這些記錄下來,但并不會(huì)立即標(biāo)記為失敗,這樣在未來可以輕松地重新進(jìn)行嘗試。當(dāng)出現(xiàn)新的、更優(yōu)秀的模型時(shí),我會(huì)再次運(yùn)行這些實(shí)驗(yàn),以判斷哪些是成功的,哪些是失敗的。通過這種方式,我不斷更新我的認(rèn)知,學(xué)習(xí)新的知識(shí),并圍繞新興能力建立直覺,這與“規(guī)?!本o密相關(guān)。我相信,這種思維方式將變得越來越重要。

為了進(jìn)一步解釋,讓我們簡(jiǎn)化一下。并不是說所有的任務(wù)都需要大規(guī)模的處理,但有時(shí)確實(shí)需要。為了說明,我以GPT-3和GPT-4為例,它們代表了不同的規(guī)模??紤]以下三個(gè)能力層面:對(duì)于“能力一”,GPT-4尚未達(dá)到,但它非常接近一個(gè)轉(zhuǎn)折點(diǎn),這意味著我們可能會(huì)突然看到一個(gè)躍進(jìn)式的改進(jìn)。對(duì)于“能力二”,盡管我們有了強(qiáng)大的GPT-4,但仍然有很大的距離,目前的方法可能還不能提供實(shí)質(zhì)性的幫助。而對(duì)于“能力三”,GPT-3已經(jīng)超越了轉(zhuǎn)折點(diǎn)。在這個(gè)階段,我所進(jìn)行的研究可能只會(huì)帶來漸進(jìn)式的改變。

這是一個(gè)提示:實(shí)際上,我經(jīng)常發(fā)現(xiàn)我正在解決的問題不僅僅是上述兩三種。但只要我堅(jiān)持這種思維框架,并經(jīng)?;仡櫤头此?,更新我的直覺就會(huì)變得更加容易,幫助我明確我到底在解決哪種問題。這就是我想向大家介紹的核心思想??偟膩碚f,我們所做的一切都與“規(guī)?!庇嘘P(guān),而從“規(guī)模”的角度看問題確實(shí)非常關(guān)鍵。

但如何真正實(shí)現(xiàn)這種“縮放”呢?我將在接下來的時(shí)間中深入探討這個(gè)問題。目前為止,所有的大型語言模型都采用了Transformer架構(gòu)。你可能已經(jīng)對(duì)此非常熟悉了。但在這里,細(xì)節(jié)不是那么重要。我們要關(guān)注的是基本的思想,并從基礎(chǔ)原理出發(fā)。為此,我們需要過濾掉不必要的細(xì)節(jié)。

事實(shí)上,Transformer的內(nèi)部結(jié)構(gòu)對(duì)我們來說并不那么關(guān)鍵。我們可以從功能的角度來看待Transformer,將其視為一個(gè)包含一系列矩陣乘法的序列到序列的映射。其輸入是一個(gè)長(zhǎng)度為D的序列,代表Transformer的寬度和長(zhǎng)度;輸出也是一個(gè)同樣大小的數(shù)組。

這主要用于模型訓(xùn)練。雖然對(duì)于實(shí)際推理,情況可能有所不同,但縮放主要是在預(yù)訓(xùn)練階段發(fā)生的,且輸入和輸出的長(zhǎng)度是相同的。這是一個(gè)非常簡(jiǎn)化的視角,但它提供了一個(gè)清晰的圖景。在此基礎(chǔ)上,我們可以進(jìn)一步思考輸入和輸出的形狀,以及從一開始就會(huì)發(fā)生的事情。例如,我們可能有一個(gè)句子,這只是一個(gè)簡(jiǎn)單的字符串。然后,我們需要對(duì)其進(jìn)行標(biāo)記化,使用BPE或句子片段等方法,這基本上是一個(gè)嘗試盡可能壓縮文本的外部模型。這樣,我們就可以得到一個(gè)整數(shù)列表。接下來,我們會(huì)將這個(gè)列表嵌入到一個(gè)隱藏的空間中,這就是所謂的詞嵌入。

每個(gè)標(biāo)記現(xiàn)在都被表示為一個(gè)長(zhǎng)度為D的向量,并且我們有這些向量的總長(zhǎng)度。這就是實(shí)際計(jì)算的開始。我們有N個(gè)Transformer層,這些層只是從一個(gè)序列映射到另一個(gè)相同的序列。這里,一切都與規(guī)模有關(guān),而且我們盡量不要做過多的假設(shè)。我們希望每個(gè)序列標(biāo)記都能與其他標(biāo)記進(jìn)行交互,所以我們應(yīng)該允許它們這樣做,但不要限制它們的交互方式。在Transformer中,一種實(shí)現(xiàn)這一點(diǎn)的方法就是通過計(jì)算點(diǎn)積。這就是我們要達(dá)到的目標(biāo)。

模型的學(xué)習(xí)和計(jì)算細(xì)節(jié),如點(diǎn)積的獲取,雖然復(fù)雜,但都是為了執(zhí)行主要的計(jì)算任務(wù)。這些計(jì)算主要在高維數(shù)組中進(jìn)行,涉及到矩陣乘法和數(shù)組計(jì)算。在Transformer模型計(jì)算的最后階段,我們得到了一個(gè)序列。接著,我們采用特定的損失函數(shù)(我稍后會(huì)介紹這個(gè)函數(shù))來評(píng)估模型的預(yù)測(cè)。這個(gè)損失函數(shù)基于模型對(duì)下一個(gè)Token的預(yù)測(cè)來計(jì)算最大可能性。目標(biāo)是預(yù)測(cè)下一個(gè)標(biāo)記,并根據(jù)預(yù)測(cè)的準(zhǔn)確性得到一個(gè)數(shù)值。有了這個(gè)數(shù)值后,我們會(huì)進(jìn)行反向傳播,更新模型的所有參數(shù)。

在實(shí)際應(yīng)用中,這些計(jì)算是批量進(jìn)行的。這意味著我們的計(jì)算不僅僅針對(duì)一個(gè)數(shù)據(jù)點(diǎn),而是同時(shí)處理多個(gè)數(shù)據(jù)點(diǎn)。整個(gè)數(shù)據(jù)批次中唯一的相互依賴是在最后的計(jì)算損失步驟,我們會(huì)取其平均值。

這就是模型計(jì)算的全部過程。絕大部分的計(jì)算都在這里發(fā)生。因此,當(dāng)我們討論如何擴(kuò)展Transformer模型時(shí),這就是我們要關(guān)注的關(guān)鍵部分。

擴(kuò)展Transformer從根本上來看,就是要確保這部分的計(jì)算能夠在很多機(jī)器上高效地執(zhí)行。這涉及到如何將Transformer中的所有這些矩陣合理地分配給各種機(jī)器。關(guān)鍵是要確保在盡量減少機(jī)器之間的通信的同時(shí)進(jìn)行合理的分配。

考慮到我們需要在多臺(tái)機(jī)器上進(jìn)行大量的矩陣乘法,我們首先從一個(gè)簡(jiǎn)單的矩陣乘法例子開始。假設(shè)我們有八臺(tái)機(jī)器,可能是CPU或GPU。我們的任務(wù)是執(zhí)行一個(gè)16×16的矩陣乘法。

為了實(shí)現(xiàn)這一目標(biāo),我們首先需要對(duì)硬件有一個(gè)抽象的認(rèn)識(shí)。這八臺(tái)機(jī)器可能位于同一個(gè)房間,或者分布在不同的地方。我們不需要過多地關(guān)心它們的物理布局,而是在虛擬空間中定義一個(gè)網(wǎng)格來表示它們。

每臺(tái)機(jī)器都負(fù)責(zé)矩陣的一部分。我們使用顏色編碼來表示A矩陣的各個(gè)部分應(yīng)該分配給哪臺(tái)機(jī)器。這種方式使得每臺(tái)機(jī)器都可以并行地執(zhí)行其分配到的任務(wù)。

這就是我們?nèi)绾畏峙渚仃囈约懊颗_(tái)機(jī)器應(yīng)該執(zhí)行的任務(wù)。

首先,我們來探討機(jī)器的工作原理。對(duì)于輸出矩陣C,在執(zhí)行矩陣乘法后,我們的目標(biāo)是使機(jī)器一的切片位于8×4的左上角。這是一個(gè)明確的需求。

接下來,我們需要確定機(jī)器要執(zhí)行的操作。考慮矩陣乘法的特性,我們通常對(duì)列和行進(jìn)行計(jì)算。為了完成這個(gè)操作,機(jī)器需要獲取額外的數(shù)據(jù)。它自身并不擁有執(zhí)行此操作所需的全部數(shù)據(jù)。為了解決這個(gè)問題,我們執(zhí)行了一系列收集操作,這是MPI中的一個(gè)操作。具體來說,機(jī)器需要與其他四臺(tái)機(jī)器進(jìn)行通信來獲取數(shù)據(jù)。每臺(tái)機(jī)器都有其本地的數(shù)據(jù)存儲(chǔ)。當(dāng)機(jī)器一與機(jī)器二、三、四通信并獲取所需數(shù)據(jù)后,它將擁有所有的數(shù)據(jù)副本。這種收集操作被所有機(jī)器執(zhí)行,這也是為什么它被稱為“全體收集”而不僅僅是“收集”。

當(dāng)機(jī)器擁有所有必要的數(shù)據(jù)副本時(shí),它可以開始計(jì)算。值得注意的是,這種計(jì)算是在所有八臺(tái)機(jī)器上并行進(jìn)行的,這也是其能夠快速計(jì)算的原因。但這也帶來了一個(gè)代價(jià),即通信成本。我們需要確保計(jì)算的速度優(yōu)勢(shì)超過了通信的代價(jià)。

對(duì)于矩陣乘法,我們可以總結(jié)為使用“愛因斯坦求和符號(hào)”。這為我們提供了一種高層次的方法來描述數(shù)組計(jì)算?;疽?guī)則是,如果一個(gè)字母在兩個(gè)輸入中都出現(xiàn),則將它們的分量相乘。例如,numpy中的A乘以B可以表示為兩個(gè)字母I的乘積。如果一個(gè)字母沒有出現(xiàn)在輸出中,則需要對(duì)該維度進(jìn)行求和。這與矩陣和向量的乘法相似。

愛因斯坦求和提供了一種更為通用的方法,允許我們?cè)黾痈嗟木S度,不僅僅是二維或一維。因此,從這個(gè)角度來看,矩陣乘法可以表示為愛因斯坦的MN,MP,其中M是收縮維度。這就是為什么我們要這樣做的原因

首先,我們有各種標(biāo)簽的數(shù)組軸,例如“國(guó)會(huì)議員”和“明尼蘇達(dá)州”。這種映射方式就是將N映射到Y(jié)軸和X軸的數(shù)組軸。有沒有想過,有一種神奇的裝飾器可以自動(dòng)并行化這種映射并為你完成所有工作呢?我稍后會(huì)詳細(xì)討論這種實(shí)現(xiàn)方法,但真正的實(shí)現(xiàn)過程與此非常相似。我們可以將其視為一種魔法,它只需插入在二維中聚集的所有數(shù)據(jù),并返回其并行化版本。這就是全部?jī)?nèi)容。

愛因斯坦求和為我們提供了一個(gè)框架,告訴我們需要做什么。當(dāng)我們談?wù)揟ransformer時(shí),我們主要關(guān)心的是自注意力層,這是Transformer的核心部分。除了softmax外,所有這些操作都可以用Einsum來表示。你可以簡(jiǎn)潔地將其布局,其中X是三維序列,是模型的長(zhǎng)度。所有其他參數(shù)都是模型學(xué)習(xí)和更新的參數(shù)。當(dāng)你擁有這種布局時(shí),你就得到了一個(gè)帶有標(biāo)簽數(shù)組軸的愛因斯坦運(yùn)算。

現(xiàn)在,我們?nèi)绾尾⑿谢@個(gè)操作呢?首先,我們有八臺(tái)機(jī)器。我們不再使用X或Y這樣的標(biāo)簽,而是按照慣例使用“數(shù)據(jù)”和“模型”這兩個(gè)詞。這意味著數(shù)據(jù)并行和模型并行。這種網(wǎng)格并行方式最初是TensorFlow在2018年提出的,雖然現(xiàn)在有些過時(shí),但我們?nèi)匀皇褂眠@個(gè)術(shù)語。

為了并行化,我們只需稍作修改。我們并行化它,并將B作為數(shù)據(jù)映射,因?yàn)锽代表了最佳維度。我們?cè)跀?shù)據(jù)軸上分配了不同的機(jī)器,而N是序列長(zhǎng)度。在Transformer的任何并行版本中,我們都不會(huì)跨序列長(zhǎng)度進(jìn)行并行化,因?yàn)槟抢锇l(fā)生了很多相似的操作。而與D、H(頭數(shù))相關(guān)的是模型維度。實(shí)際上,這就是為什么多頭注意力是如此有效的原因。它是由并行策略驅(qū)動(dòng)的。

現(xiàn)在,一旦你有了這種并行策略,你可以使用完全相同的代碼,并行化它,并在八臺(tái)或任意數(shù)量的機(jī)器上運(yùn)行。這是一個(gè)常見的例子,使用八臺(tái)機(jī)器,但這個(gè)框架實(shí)際上可以適用于任意數(shù)量的機(jī)器。從谷歌的博客文章中可以了解,實(shí)際上在TPU V4 Pod中,它可以使用高達(dá)3072個(gè)芯片。當(dāng)我們訓(xùn)練Palm模型時(shí),我們使用了兩個(gè)pods,所以這里我們使用了6000個(gè)芯片,每個(gè)芯片的計(jì)算能力都與高端GPU相當(dāng)。

如今,你手頭擁有這批強(qiáng)大的機(jī)器,你可以按照固定的模式定義一個(gè)網(wǎng)格。模型并行維度為48,數(shù)據(jù)并行維度雖然在2D中顯示,但可以擴(kuò)展到64。在Palm中,我們采用了不同的配置,但核心思路仍然相同,只是機(jī)器數(shù)量有所增加。一個(gè)需要注意的細(xì)節(jié)是DCN(數(shù)據(jù)中心網(wǎng)絡(luò))的數(shù)據(jù)并行性。當(dāng)兩個(gè)Pod之間沒有直接連接,但都連接到數(shù)據(jù)中心網(wǎng)絡(luò)時(shí),其傳輸速度大約為每秒25GPS,這相對(duì)于連接GPU pod的速度來說是較慢的。因此,我們?cè)诖颂幈苊饬四P筒⑿谢?。在進(jìn)行梯度計(jì)算后,我們?cè)跀?shù)據(jù)中心網(wǎng)絡(luò)上進(jìn)行梯度求和,這個(gè)過程大約需要一秒鐘。盡管我不確定具體的時(shí)間,但這并不重要,因?yàn)楫?dāng)我們訓(xùn)練像Palm 5400億這樣的模型時(shí),每個(gè)訓(xùn)練步驟需要大約17秒,所以額外增加的一兩秒并不會(huì)帶來太大影響。

這種體驗(yàn)確實(shí)很有趣,我只需要輸入代碼,然后在我的筆記本電腦上運(yùn)行,程序就會(huì)自動(dòng)在所有這些機(jī)器上執(zhí)行。這種規(guī)?;姆椒ǎ绻阏嬲斫饬怂詈蟮膶?shí)現(xiàn)其實(shí)只是我剛剛描述的大量機(jī)器上的矩陣乘法。所以,我們一直都在假設(shè)這種并行化裝飾器是可行的,但如何真正實(shí)現(xiàn)它呢?一種方法是使用GSPMD,這是一種基于編譯器的方法。你可以編寫神經(jīng)網(wǎng)絡(luò)代碼,就像你擁有一臺(tái)擁有無限內(nèi)存的機(jī)器一樣,不需要進(jìn)行任何并行化處理。我們就是這樣做的,不進(jìn)行任何通信,只是表示神經(jīng)網(wǎng)絡(luò)的核心部分,并將訓(xùn)練步驟表示為一個(gè)計(jì)算圖。你只需要指定這些輸入和輸出如何映射到硬件軸,然后交給XLA處理,它會(huì)自動(dòng)插入所需的通信操作。這種方法確實(shí)像魔法一樣,但它并不總是有效,需要經(jīng)過多次迭代,并且很多人都在嘗試。但現(xiàn)在,許多大型模型,如Google、P5、Palm、Switch和Transformer,都使用GSPMD作為后端,完全采用我所描述的方法。當(dāng)然,還有其他的方法。我對(duì)其他方法不是很熟悉,但你可以考慮手動(dòng)注解和編譯器操作。但無論采用哪種方法,最終的過程都是相同的,都涉及將數(shù)組軸映射到機(jī)器。有時(shí)手動(dòng)方法更為優(yōu)越,因?yàn)樗峁┝烁嗟目刂茩?quán)。

以下是一些具體的例子。對(duì)于許多研究人員來說,使用GSPMD進(jìn)行并行化可能過于復(fù)雜。因此,Jax推出了一個(gè)名為Pjit的前端接口。我推測(cè)它被稱為Jit是因?yàn)樗兊梅浅?shí)用。我們需要并行化定義的訓(xùn)練步驟。我們用Jax的Pjit作為裝飾器來包裝這個(gè)步驟。這樣,你得到的訓(xùn)練步驟可以在大量機(jī)器上運(yùn)行。這個(gè)具體的代碼實(shí)際上就是用來訓(xùn)練Palm的。你可以查看這些代碼,了解它們是如何工作的。盡管有些代碼模板化,但既然你已經(jīng)熟悉了這個(gè)框架,你可能對(duì)其中的內(nèi)容有所了解。這些代碼是開源的,基于T5X框架構(gòu)建。我們還有一篇簡(jiǎn)短的論文描述了該系統(tǒng),鏈接在文章底部。

現(xiàn)在,從工程和硬件系統(tǒng)的角度來看,這些都很好。但從機(jī)器學(xué)習(xí)的角度來看呢?最近發(fā)布的Llama2模型在成功運(yùn)行后的表現(xiàn)非常好。但實(shí)際進(jìn)行預(yù)訓(xùn)練時(shí),迭代不同的想法的成本是非常高的。你可能想嘗試不同的數(shù)據(jù)分割方式或其他方法,但每次都需要在大規(guī)模上運(yùn)行,這非常耗費(fèi)資源。如果你正在進(jìn)行這樣的運(yùn)行,你可能會(huì)面臨這樣的場(chǎng)景:假設(shè)你有2萬億個(gè)Token,需要運(yùn)行50天。然后,你可能需要花費(fèi)一天的時(shí)間來評(píng)估進(jìn)展情況。在此情境下,你需要做出決策,例如,"看起來我們的700億模型表現(xiàn)得很好。"但這種決策非常困難,因?yàn)槟阋呀?jīng)花費(fèi)了大量的GPU時(shí)間。這種情境下的決策制定是非常緊張和困難的。

預(yù)訓(xùn)練的核心是所謂的"縮放法則"。GPT-4的技術(shù)報(bào)告和OpenAI之前的論文都討論過這個(gè)概念,我認(rèn)為這是一個(gè)關(guān)鍵的概念。我們?cè)谶@里討論的是如何預(yù)測(cè),如何根據(jù)小規(guī)模模型的性能外推到更大規(guī)模的模型,比如GPT-4。這種縮放定律是基于小規(guī)模模型的數(shù)據(jù)開發(fā)的。這為我們提供了一個(gè)指導(dǎo)方針,幫助我們預(yù)測(cè)模型在更大數(shù)據(jù)上的表現(xiàn)。如果你可以預(yù)測(cè)模型的擴(kuò)展損失,那么這將是一個(gè)非常有價(jià)值的工具。預(yù)訓(xùn)練的這一部分確實(shí)非常關(guān)鍵。我想說的是,盡管現(xiàn)在的擴(kuò)展比兩年前更為簡(jiǎn)單,但仍然是一個(gè)巨大的挑戰(zhàn)。這不僅僅是簡(jiǎn)單地?cái)U(kuò)大模型規(guī)模,還有很多其他考慮因素需要考慮。

以下是一些具體的例子。在Palm的訓(xùn)練過程中,我們遇到了損失值的高峰現(xiàn)象。這個(gè)問題實(shí)際上已經(jīng)在論文中被提及,你可以去查閱。整個(gè)訓(xùn)練過程中,大約出現(xiàn)了20次損失高峰,這讓很多人感到擔(dān)憂,因?yàn)閾p失值突然從兩點(diǎn)上升到了六點(diǎn)。這種情況確實(shí)不太理想。為了解決這個(gè)問題,我們訓(xùn)練了三個(gè)模型,使用完全相同的數(shù)據(jù),但只有一個(gè)模型出現(xiàn)了這種情況。這種問題很難調(diào)試,并且在小規(guī)模上很難復(fù)現(xiàn)。我們確定這并不是由于數(shù)據(jù)問題引起的。一些研究者進(jìn)行了實(shí)驗(yàn)來驗(yàn)證這一假設(shè)。每當(dāng)這種情況發(fā)生時(shí),它都會(huì)造成大量計(jì)算資源的浪費(fèi),這使得大規(guī)模訓(xùn)練變得更具挑戰(zhàn)性。

盡管如此,隨著技術(shù)的進(jìn)步,對(duì)于某個(gè)給定的規(guī)模,如Llama模型,訓(xùn)練變得更加容易。但與此同時(shí),我們也發(fā)現(xiàn),技術(shù)規(guī)模的增長(zhǎng)速度超過了解決這些問題的速度。大多數(shù)人并不會(huì)嘗試在更大的規(guī)模上訓(xùn)練模型,他們可能會(huì)選擇等待其他研究者的進(jìn)展,并基于此進(jìn)行進(jìn)一步的研究。

這自然地引導(dǎo)我們進(jìn)入了下一個(gè)話題:僅僅增大規(guī)模并不能解決所有問題。除了大規(guī)模的工程工作,我們還需要進(jìn)行更多的研究,尤其是在模型訓(xùn)練完成后。讓我來解釋一下為什么我們可能需要在訓(xùn)練后進(jìn)一步優(yōu)化模型。由于預(yù)訓(xùn)練模型的學(xué)習(xí)目標(biāo)僅僅是預(yù)測(cè)下一個(gè)Token,我們不能直接與它交互。例如,如果輸入是一個(gè)問題,模型可能會(huì)持續(xù)生成內(nèi)容,而不是直接回答這個(gè)問題。我們所期望的是一個(gè)簡(jiǎn)潔的答案。為了解決這個(gè)問題,我們采用了一種技巧,即構(gòu)建問題,使得答案恰好是下一個(gè)Token。這確實(shí)是一個(gè)有力的技術(shù),但它并不是真正的通用解決方案。

更大的問題是,預(yù)訓(xùn)練模型可能會(huì)盲目地生成內(nèi)容,即使這些內(nèi)容是惡意的或有害的。特別是,模型不知道如何拒絕某些提示。因此,所有這些我們認(rèn)為重要的能力,例如與人類價(jià)值觀的一致性,都需要在訓(xùn)練后的階段進(jìn)行教育。我更喜歡稱之為"訓(xùn)練后Post-Training"。

以下是當(dāng)前大型語言模型的四個(gè)主要階段。首先,預(yù)訓(xùn)練是第一階段。接下來的三個(gè)階段分別是:指令微調(diào)(有時(shí)也被稱為SFT,即監(jiān)督微調(diào))、獎(jiǎng)勵(lì)模型的訓(xùn)練以及策略模型的訓(xùn)練。這也涉及到了RLHF,即強(qiáng)化學(xué)習(xí)的部分。我們將按照1、2、3的順序逐個(gè)介紹這些階段。

首先,我們來探討指令微調(diào)。其核心思想是為所有任務(wù)建立從自然語言指令到自然語言響應(yīng)的映射。回想一下,我們?cè)诓杉{這種方法之前是如何進(jìn)行任務(wù)的。

例如,在2018年,當(dāng)時(shí)最先進(jìn)的模型是BERT。如果我們需要完成一個(gè)分類任務(wù),我們將首先使用BERT對(duì)句子進(jìn)行編碼,然后將其映射到分類空間,這需要一些特定于任務(wù)的參數(shù)。但當(dāng)我們嘗試進(jìn)行多任務(wù)學(xué)習(xí)時(shí),這種方法就顯得不太實(shí)用。

在T5模型中,這個(gè)問題得到了改善,因?yàn)樗妮斎牒洼敵龆际俏谋?。因此,所有的任?wù)都可以通過文本到文本的映射來完成,這使得多任務(wù)學(xué)習(xí)變得更加簡(jiǎn)單。

但在多任務(wù)學(xué)習(xí)中,模型需要知道它正在執(zhí)行哪個(gè)任務(wù)。為了解決這個(gè)問題,我們可以為模型提供元數(shù)據(jù),比如"這是COLA任務(wù)"。但這種方法感覺有些不自然。相反,指令微調(diào)的方法則是使用自然語言來描述任務(wù),例如"判斷以下句子是否可接受",這樣模型就能理解并執(zhí)行相應(yīng)的任務(wù)。

回顧過去,這種方法在T5或2018年并不明顯,因?yàn)楫?dāng)時(shí)人們并不認(rèn)為語言模型能夠理解這些指令。但隨著模型規(guī)模的增長(zhǎng),我們發(fā)現(xiàn)模型確實(shí)有能力在某種程度上理解這些指令,并利用自然語言的豐富性來統(tǒng)一各種任務(wù)。這就是指令微調(diào)的基本思想。進(jìn)一步地,我們也可以將這種方法擴(kuò)展到對(duì)話場(chǎng)景中,其中模型可以與另一個(gè)代理進(jìn)行交互,而不僅僅是簡(jiǎn)單地響應(yīng)指令。這就是指令微調(diào)的核心思路。

去年,我在谷歌工作時(shí)撰寫了一篇論文,探討了指令微調(diào)的潛能及其邊界。但在深入討論之前,我想先說明一點(diǎn)。當(dāng)我們按照特定的指令進(jìn)行模型訓(xùn)練時(shí),可能會(huì)遇到在訓(xùn)練過程中未曾涉及的新任務(wù)。但由于這些新任務(wù)仍然是基于指令的,所以只需按照這些指令來操作模型即可。這就是所謂的“概括”。這是一個(gè)非常核心的概念。那么,一個(gè)自然的問題是,如果訓(xùn)練集中包含更多的指令,是否能得到一個(gè)更好的模型?這樣的模型是否能夠更好地概括?

為了驗(yàn)證這一點(diǎn),我們收集了大量的學(xué)術(shù)任務(wù),總共有1836個(gè),并將它們結(jié)合起來進(jìn)行訓(xùn)練。我不打算深入細(xì)節(jié),但我已經(jīng)在論文的末尾提供了鏈接,供有興趣的讀者查閱。這篇論文描述了Flan、T5和Plan等模型的起源。我們制作了一些圖表來展示,其中X軸表示模型的大小,包括80億、620億和5400億。Y軸表示了評(píng)估集的平均分?jǐn)?shù)。我們精心選擇了其中6個(gè)在訓(xùn)練過程中未見過的難度較大的任務(wù)??梢钥吹?,一個(gè)擁有80億參數(shù)的模型表現(xiàn)得相當(dāng)好,但其分?jǐn)?shù)仍低于10%。

因此,我們的結(jié)論是,盡管增加更多任務(wù)可以提高性能,但其效果是遞減的。這一點(diǎn)在另一張圖中可能更為明顯,這張圖顯示了微調(diào)任務(wù)的數(shù)量與性能的關(guān)系。從中我們可以看到,每個(gè)模型的性能都提高了大約10%,但增加更多的任務(wù)并沒有帶來太大的幫助。關(guān)鍵在于任務(wù)的多樣性。并且,即使是在1800個(gè)任務(wù)中,我們測(cè)試過的任何大小的模型,或者任何類型的模型,都能從這種方法中受益。我認(rèn)為這種方法非常有效,但它確實(shí)存在局限性。

再次思考這個(gè)問題,我們需要考慮學(xué)習(xí)的目標(biāo)是什么。在這個(gè)學(xué)習(xí)階段,我們到底在教模型什么呢?在監(jiān)督學(xué)習(xí)中,我們常常使用交叉熵?fù)p失或最大似然估計(jì)作為學(xué)習(xí)目標(biāo)。這意味著對(duì)于給定的輸入,我們期望模型能夠輸出一個(gè)唯一正確的答案,而所有其他答案都被認(rèn)為是錯(cuò)誤的。在強(qiáng)化學(xué)習(xí)的文獻(xiàn)中,這種方法被稱為“行為克隆”。簡(jiǎn)而言之,如果我們有足夠多的示例,模型應(yīng)該能夠模仿或“克隆”這些行為,從而在新的、未見過的情境中做出正確的決策。然而,隨著任務(wù)的復(fù)雜性增加,為模型明確定義“正確的行為”變得越來越困難。

我將用一系列例子來闡述這個(gè)觀點(diǎn),讓我們進(jìn)行一個(gè)思維實(shí)驗(yàn),只考慮存在單一正確答案的情況。答案必須是確定的。以一個(gè)簡(jiǎn)單的例子為起點(diǎn),二加三等于多少?顯然,答案是五,或者可能是“答案是五”這樣的回答。但這一點(diǎn)是毋庸置疑的。再來一個(gè)稍微復(fù)雜一些的,將“我應(yīng)該學(xué)習(xí),而不是看這部電影”翻譯成韓語。這是我個(gè)人的翻譯,我懂韓語,所以這可能是正確的。但這確實(shí)是一個(gè)有著單一答案的問題,盡管其中可能存在一些微小的差異。

現(xiàn)在,考慮我們?cè)诖笮驼Z言模型中真正面對(duì)的問題。例如,給一個(gè)五歲的男孩寫一封來自圣誕老人的信,解釋圣誕老人并不真實(shí),同時(shí)要確保這個(gè)信息傳遞得足夠溫柔,不傷害這個(gè)孩子的感情。對(duì)于這樣的問題,我很難確定一個(gè)最佳答案,更不用說有一個(gè)確定的答案了。

所以,當(dāng)面對(duì)這種情況時(shí),我對(duì)使用最大似然估計(jì)作為我們主要的學(xué)習(xí)目標(biāo)感到不太自信。這可能是一個(gè)誤導(dǎo)??紤]到一些更實(shí)際的用例,比如我經(jīng)常提到的一個(gè)提示:“在Python中使用梯度下降實(shí)現(xiàn)邏輯回歸”。這個(gè)問題并沒有一個(gè)明確的答案。你可能偏向函數(shù)式編程,或者你可能更喜歡面向?qū)ο蟮木幊田L(fēng)格,但無論你的選擇是什么,都可能是有效的。

我們的目標(biāo)越來越是教導(dǎo)模型如何執(zhí)行一些更加抽象和模糊的任務(wù)。似乎指令微調(diào)的目標(biāo)函數(shù)開始成為一個(gè)瓶頸。盡管我沒有確鑿的證據(jù)證明這在實(shí)踐中是一個(gè)問題,但我不認(rèn)為我們能夠使用這種非常狹窄的信號(hào)來訓(xùn)練一個(gè)比GPT-4大上千倍的模型。那么,我們是否可以使用某種方式來替代這個(gè)最大似然目標(biāo)呢?

這就是強(qiáng)化學(xué)習(xí)與RLHF的核心觀點(diǎn)。在強(qiáng)化學(xué)習(xí)中,我們?cè)噲D最大化一個(gè)預(yù)期的獎(jiǎng)勵(lì)函數(shù)。考慮到一個(gè)代理在下棋時(shí),如果它贏了,我們給予它1的獎(jiǎng)勵(lì),否則給予0。這是一個(gè)有效的獎(jiǎng)勵(lì)函數(shù),但我們實(shí)際上可以使用一個(gè)模型來為更復(fù)雜的情況定義獎(jiǎng)勵(lì),我們稱這個(gè)為獎(jiǎng)勵(lì)模型。那么,如何從這個(gè)視角來實(shí)施它呢?

我們都知道如何使用神經(jīng)網(wǎng)絡(luò)進(jìn)行監(jiān)督式學(xué)習(xí)。因此,我們可以使用神經(jīng)網(wǎng)絡(luò)來代表這個(gè)獎(jiǎng)勵(lì)模型,將其進(jìn)一步整合到獎(jiǎng)勵(lì)模型中。

核心的概念在于,對(duì)于一個(gè)特定的輸入,我們提供兩個(gè)答案,并由人類來判斷哪一個(gè)更受偏愛,而不是直接告訴模型哪一個(gè)是最好的。從這兩個(gè)答案中,這個(gè)更為優(yōu)秀。最初,這種做法可能沒有明確地說明為什么一個(gè)答案比另一個(gè)更好,但重要的是它為模型提供了一種學(xué)習(xí)人類偏好的方式。

關(guān)鍵在于,盡管某個(gè)答案可能被視為首選,但它并不一定是最佳選擇。只要它比另一個(gè)選項(xiàng)好,模型就可以從中學(xué)習(xí)。比較的這種方法是至關(guān)重要的。為何我們選擇比較而不是直接評(píng)分?對(duì)于如二加三的簡(jiǎn)單問題,認(rèn)為五比四更好可能是沒有意義的,因?yàn)橹挥幸粋€(gè)正確答案。但對(duì)于其他復(fù)雜的問題,比如某種句子的補(bǔ)全,我可能會(huì)提出兩個(gè)較好的答案,并指出其中一個(gè)更為出色。

核心思想是,比較可能比絕對(duì)評(píng)分更簡(jiǎn)單。對(duì)于這些數(shù)學(xué)公式,我可能會(huì)快速跳過。簡(jiǎn)單地說,對(duì)于兩個(gè)答案YI和YJ,我們定義了一個(gè)概率PIJ,表示答案I優(yōu)于答案J的概率。這個(gè)概率是基于人類給出的標(biāo)簽。這個(gè)概率模型實(shí)際上是基于獎(jiǎng)勵(lì)的差異,更具體地說,是對(duì)數(shù)幾率。這種建模方法可以追溯到1952年。我們只需重構(gòu)這個(gè)模型并最大化這個(gè)概率,因?yàn)檫@實(shí)質(zhì)上是最大似然法。獎(jiǎng)勵(lì)模型是基于最大似然法進(jìn)行訓(xùn)練的。

這樣的方法很好,因?yàn)樗鼮椴呗阅P吞峁┝素S富的信號(hào)。這是大型模型的最后階段。在這里,目標(biāo)函數(shù)是我們剛剛學(xué)到的,而獎(jiǎng)勵(lì)模型的參數(shù)在初始的強(qiáng)化學(xué)習(xí)階段就已確定。這個(gè)方法可能讓你想起了生成對(duì)抗網(wǎng)絡(luò)(GAN),其中有一個(gè)判別器和生成器。你固定其中的一部分參數(shù),然后進(jìn)行另一輪的迭代。

對(duì)于這個(gè)策略模型,它通常是從監(jiān)督指令微調(diào)的檢查點(diǎn)開始的。你只需要為這個(gè)提示生成一些補(bǔ)全,然后提供給獎(jiǎng)勵(lì)模型,它會(huì)返回一個(gè)得分?;谶@個(gè)得分,如果分?jǐn)?shù)很低,那么我知道這個(gè)答案并不好。如果分?jǐn)?shù)很高,那么我會(huì)嘗試更多這樣的答案。

因此,這是數(shù)學(xué)中的一種試錯(cuò)方法的形式化表示。這基本上是一個(gè)宏觀的觀點(diǎn)。因?yàn)槲覀兊哪繕?biāo)是通過基于梯度的迭代方法來最大化這一目標(biāo),所以我們只需要梯度。

這些梯度是通過一些策略級(jí)別的算法(例如PPO)來獲得的。核心思想是在滿足RM模型的條件下進(jìn)行迭代。在這個(gè)過程中,RM模型對(duì)人類的偏好進(jìn)行編碼,并將其傳遞給策略模型,該模型再通過強(qiáng)化學(xué)習(xí)來學(xué)習(xí)這些偏好。

實(shí)際上,許多人并不真的喜歡這種方法。我經(jīng)常聽到人們說:“我們應(yīng)該放棄RLI方法?!痹S多人,不僅僅是OpenAI的人,都有這種觀點(diǎn)。主要的問題是,實(shí)施這種方法確實(shí)很困難。強(qiáng)化學(xué)習(xí)是一個(gè)非常復(fù)雜的領(lǐng)域,很容易出錯(cuò)。一個(gè)常見的問題是所謂的“獎(jiǎng)勵(lì)黑客”。如果模型發(fā)現(xiàn)長(zhǎng)時(shí)間的完成得到了更高的獎(jiǎng)勵(lì),它可能會(huì)傾向于產(chǎn)生更長(zhǎng)的答案,即使這些答案沒有意義。這種模型的行為與人類的偏好是不一致的,這種差異被稱為“獎(jiǎng)勵(lì)黑客”。這是一個(gè)困難的問題,目前還沒有明確的解決方案。

盡管有這些挑戰(zhàn),但我仍然認(rèn)為RLHF是一個(gè)有價(jià)值的研究方向。在我看來,最大似然的歸納偏差是太強(qiáng)了。當(dāng)我們的模型規(guī)模增加時(shí),這種偏差可能會(huì)導(dǎo)致問題。例如,GPT-4可能還可以,但更大的模型可能會(huì)出現(xiàn)問題。學(xué)習(xí)這個(gè)目標(biāo)函數(shù)可以幫助我們克服這種偏見。此外,這個(gè)領(lǐng)域還有很大的進(jìn)步空間。雖然我們已經(jīng)看到了一些成功的RLHF模型,但這只是開始。

總的來說,我認(rèn)為如果某個(gè)方法在原則上是對(duì)的,我們就應(yīng)該繼續(xù)研究,直到我們找到正確的方法。

我想通過一個(gè)高層次的視角來回顧人工智能的發(fā)展。

從基于規(guī)則的系統(tǒng)開始,雖然我可能不是很熟悉,但我認(rèn)為這個(gè)高層次的觀點(diǎn)是很重要的。在這里,輸入是通過手工設(shè)計(jì)的程序來映射的。在下一代機(jī)器學(xué)習(xí)系統(tǒng)中,輸入被轉(zhuǎn)換為手工設(shè)計(jì)的特征,然后通過一個(gè)可學(xué)習(xí)的部分來映射到輸出,如SVM。這個(gè)可學(xué)習(xí)的部分是我用藍(lán)色標(biāo)出的。隨后,這些輸出和輸入被傳遞給一個(gè)手工設(shè)計(jì)的損失函數(shù),然后進(jìn)行迭代。深度學(xué)習(xí)的主要變革是將手工設(shè)計(jì)的特征替換為學(xué)習(xí)到的特征。

特別地,分層的表示學(xué)習(xí)定義了深度學(xué)習(xí)的技術(shù)特點(diǎn)。這種轉(zhuǎn)變確實(shí)取得了巨大的成功。為什么會(huì)這樣呢?因?yàn)樗捎昧烁醯臍w納偏差,并允許了更高的可擴(kuò)展性。我們現(xiàn)在擁有更強(qiáng)大的計(jì)算能力,所以為什么不充分利用它呢?這便是深度學(xué)習(xí)成功的核心。

因此,如果我們比較經(jīng)典的機(jī)器學(xué)習(xí)和深度學(xué)習(xí),最接近的對(duì)比可能是邏輯回歸和前饋神經(jīng)網(wǎng)絡(luò)。它們處理相同的任務(wù),但前饋神經(jīng)網(wǎng)絡(luò)從數(shù)據(jù)中學(xué)習(xí)了隱藏的表示。這使得模型能夠更好地處理二進(jìn)制分類任務(wù)。

那么,下一個(gè)演進(jìn)階段會(huì)是什么呢?如果僅僅是改變一個(gè)組件并使其變成可學(xué)習(xí)的就如此成功,那為什么不嘗試更多的改變呢?目前,損失函數(shù)仍然是手工設(shè)計(jì)的。也許我們應(yīng)該打破這個(gè)約束,使其變得可學(xué)習(xí)。我認(rèn)為這將是下一個(gè)階段。我們已經(jīng)有了一些成功的例子,如GAN和RLHF。這些模型允許復(fù)雜的行為表達(dá),而這些行為如果要被形式化描述將會(huì)非常困難。

但我認(rèn)為這只是RLHF的一個(gè)實(shí)例。它也可能是其他類型的強(qiáng)化學(xué)習(xí)模型,或者甚至不是強(qiáng)化學(xué)習(xí)的方法。我相信這將是下一個(gè)范式,并且我們應(yīng)該努力朝這個(gè)方向發(fā)展。

當(dāng)我思考每個(gè)范式的代表性模型時(shí),我想到了IBM的深藍(lán)。對(duì)于經(jīng)典的機(jī)器學(xué)習(xí),我不太確定具體是哪一個(gè),但我們可以稱它為基于SVM的系統(tǒng)。然后,下一個(gè)范式的代表是GPT-3。每一個(gè)范式都帶來了巨大的變革,我相信學(xué)習(xí)損失函數(shù)或目標(biāo)函數(shù)將是下一個(gè)重大的步驟。

考慮到這一點(diǎn),我對(duì)未來的發(fā)展感到非常興奮。謝謝大家。

本文(含圖片)為合作媒體授權(quán)微新創(chuàng)想轉(zhuǎn)載,不代表微新創(chuàng)想立場(chǎng),轉(zhuǎn)載請(qǐng)聯(lián)系原作者。如有任何疑問,請(qǐng)聯(lián)系http://www.i0562.net/。

您可能還喜歡...

發(fā)表回復(fù)

您的郵箱地址不會(huì)被公開。 必填項(xiàng)已用 * 標(biāo)注