突破邊界:高性能計算引領LLM駛向通用人工智能AGI的創新紀元_風聞
蓝海大脑GPU服务器-水冷服务器、大数据一体机、图数据一体机06-25 14:54

AGI | AIGC | 大模型訓練 | GH200
LLM | LLMs | 大語言模型 | MI300
ChatGPT的成功帶動整個AIGC產業的發展,尤其是LLM(大型語言模型,大語言模型)、NLP、高性能計算和深度學習等領域。LLM的發展將為全球和中國AI芯片、AI服務器市場的增長提供強勁動力,據估算,LLM將為全球和中國AI服務器帶來約891.2億美元和338.2億美元的市場空間。
國外廠商在LLM領域具有領先優勢,但我國LLM產品也在快速發展,2023年以來多家廠商推出了自研的通用LLM,國產LLM在各行業的應用以及生態建設也取得積極進展。雖然我國LLM相比GPT-4或仍有一定差距,但在短期內達到或接近ChatGPT的水平是可以預期的。
值得關注是 AMD 上週推出 MI300 系列加速卡,旨在與英偉達展開競爭。MI300 系列是 AMD 為 AI 和高性能計算打造的一系列最新 APU 加速卡,包括MI300A 和 MI300X。其中 MI300A 集成了 CPU 和 GPU,而 MI300X 則是一款專門面向生成式 AI 推出的加速器,對標英偉達 H100。從性能參數看,MI300系列產品足以比肩甚至超越英偉達的高端加速卡,但總的來説,短期仍然難以撼動英偉達在該領域的絕對領先地位。

展望下半年,我國大模型產品已經初步具備商用能力。北上深三地利好通用人工智能發展政策的發佈,彰顯我國對AIGC發展的重視和支持,同時將為其他城市發佈類似政策帶來示範效應。在政策與技術的共振下,我國AIGC產業未來發展前景廣闊。

如今,國內在LLM模型相關技術方面距離最先進技術的差距進一步加大。在Bert出現之後的一到兩年間,國內在這塊的技術追趕速度很快的同時也提出了一些很好的改進模型。差距拉開的分水嶺應該是在 GPT 3.0出來之後,也就是2020年年中左右。在當時,其實只有少數的人覺察到GPT 3.0它不僅僅是一項具體的技術,更能體現出LLM應該往何處去的一個發展理念。
大型語言模型(LLM)是一種低成本、高效率的技術,它在自然語言處理(NLP)和人工智能(AI)領域引起了廣泛關注。其中,ChatGPT作為LLM的代表,是否帶來了NLP和AI領域的研究範式轉變?如果是,將會產生怎樣的影響?LLM通過從海量數據中學習,積累了豐富的知識。那麼,LLM是如何存取這些知識的呢?隨着LLM規模逐步增大,它將對研究和應用產生怎樣的影響?此外,上下文學習(In Context Learning)是一項神秘的技術,它與指令(Instruct)有着密切的關係。LLM是否具備推理能力?思維鏈(CoT)又是如何實現的呢?接下來,將詳細介紹以上提到的方面。

LLMs的背景、能力
一、LLM的背景
LLM(大型語言模型,大語言模型)是指使用大量文本數據訓練的語言模型,包含數千億或更多的參數。採用 Transformer 架構和語言建模預訓練目標,但相較於小型模型,LLM 模型大小、預訓練數據和總計算量更大。這使得它們可以更好地理解自然語言,並生成高質量的文本。LLM 的容量改進可以用標度律進行部分地描述,但某些能力只有在模型大小超過某個水平時才能觀察到。
二、LLM的湧現能力
LLM 的湧現能力是指在小型模型中不存在但在大型模型中出現的能力,是 LLM 與以前的 PLM 區分的最顯著特徵之一。當規模達到一定水平時,LLM 的性能顯著高於隨機狀態,這種新模式與物理學中的相變現象密切相關。LLM 的湧現能力可以與一些複雜的任務有關,人們更關心的是它的通用能力。
LLM 的三種代表性的湧現能力包括上下文學習、指令遵循和循序漸進的推理。其中,上下文學習能力使得語言模型可以通過完成輸入文本的詞序列來生成測試實例的預期輸出;指令遵循能力使得 LLM 能夠在不使用顯式樣本的情況下通過理解任務指令來執行新任務,從而提高泛化能力;循序漸進的推理能力使得 LLM 可以通過利用涉及中間推理步驟的 prompt 機制來解決複雜任務得出最終答案。

NLP研究範式的轉換
從淺層語義到深層語義的建模
在過去的10年中,NLP領域可能經歷了兩次重要的研究範式轉換。
一、從深度學習到兩階段預訓練模型
NLP領域引入深度學習大致從2013年開始,直到GPT 3.0出現之前(2020年5月左右)。在Bert和GPT模型出現之前,NLP領域流行的技術主要是深度學習模型,主要依託於改進的LSTM和CNN模型作為特徵抽取器,以及Sequence to Sequence+Attention作為總體技術框架。然而,這些雖然增加了模型層深,但在解決具體任務上的效果仍然不夠成功。這主要是由於任務訓練數據量有限和LSTM/CNN特徵抽取器表達能力不夠強所致。
直到Bert和GPT這兩個預訓練模型的出現,才代表了NLP領域的一個技術飛躍,並帶來了整個領域研究範式的轉換。這種範式轉換帶來的影響主要體現在兩個方面:一是部分NLP研究子領域的衰退乃至逐步消亡;二是NLP不同子領域的技術方法和技術框架日趨統一,技術棧基本收斂到兩種技術模式中。
1、部分NLP研究子領域的衰退乃至逐步消亡
NLP是一個宏觀研究領域的統稱,裏面有五花八門具體的子領域與子方向,如果仔細分析,從任務的性質角度,可以把這些任務分成兩大類:中間任務和最終任務。
1)中間任務
典型的中間任務主要包括中文分詞、詞性標註、NER、句法分析、指代消解、語義Parser等,這類任務一般並不解決應用中的實際需求,大多數是作為那些解決實際需求任務的中間階段或者輔助階段存在。比如幾乎沒有需求説,要一個句法Parser,把這個句子的句法分析樹給用户看看,用户不需要看到這些NLP的中間階段處理結果,只需關心某個具體任務有沒有幹好。
2)最終任務
這類任務(文本分類、文本相似性計算、機器翻譯、文本摘要等)的特點是每個子領域都解決某個實際需求,任務結果基本能直接呈現給用户,比如用户確實存在給你一句英文,告訴他中文是什麼的需求。
按理説,“中間任務”不應該出現,而之所以會存在的原因是NLP技術發展水平不夠高。在技術發展早期階段,由於當時技術相對落後,很難一步做好有難度的最終任務。如機器翻譯,早期技術要做好機器翻譯是很困難的,於是科研人員就把難題分而治之,分解成分詞、詞性標註、句法分析等各種中間階段,先把每個中間階段做好,然後再拼起來完成最終任務。
自從Bert/GPT出現之後,就沒有必要做中間任務。因為通過大量數據的預訓練,Bert/GPT已經把這些中間任務作為語言學特徵,吸收到Transformer的參數裏,此時完全可以端到端地直接解決那些最終任務,而無須對這種中間過程專門建模。
2、不同研究方向技術路線的統一
除了“中間任務”,NLP任務可以劃分為兩大類型:自然語言理解和自然語言生成。自然語言理解任務包括文本分類、句子關係判斷、情感傾向判斷等分類任務,模型根據輸入文本判斷其屬於哪個類別。自然語言生成任務包括聊天機器人、機器翻譯、文本摘要、問答系統等生成任務,模型根據輸入文本生成相應輸出文本。
自Bert/GPT模型出現後,NLP領域出現了技術統一趨向,特徵抽取器逐漸從LSTM/CNN統一到Transformer上,多數任務採用預訓練+微調或Zero/Few Shot Prompt模式。自然語言理解任務採用Bert為代表的雙向語言模型預訓練+Fine-tuning模式,自然語言生成任務採用GPT 2.0為代表的自迴歸語言模型+Zero/Few Shot Prompt模式。這兩種模式背後的發展思路和未來發展方向不同,但很多人低估了GPT模式的潛力。GPT模式的自迴歸語言模型可以生成高質量的文本,能夠應用於多個自然語言生成任務且具有良好的遷移能力。相比之下,Bert模式在生成任務上表現較差且Fine-tuning方式需要大量標註數據,不易適應新任務。
二、從預訓練模型走向通用人工智能 (AGI,Artificial General Intelligence)
這次範式轉換涵蓋的時間大致在GPT3.0出現後,從2020年6月左右開始一直持續到現在。ChatGPT轉換的關鍵節點,但在InstructGPT出現之前,LLM處於範式轉換的過渡期。
1、以GPT 3.0為代表的“自迴歸語言模型+Prompting”模式佔據統治地位
在預訓練模型發展的早期,技術框架收斂到Bert模式和GPT模式這兩種不同的技術範型,而且人們普遍更看好Bert模式一些,相當多數的後續技術改進,都是沿着Bert那條路走。但是,隨着技術的繼續發展就發現目前規模最大的LLM模型,幾乎清一色都是類似GPT 3.0的“自迴歸語言模型+Prompting”模式(如GPT-3、PaLM、GLaM、Gopher、Chinchilla、MT-NLG、LaMDA等)。為什麼會這樣呢?背後一定有其必然性,主要源於兩個原因。

1)Google的T5模型,在形式上統一自然語言理解和自然語言生成任務的外在表現形式
如上圖所示,T5模型中的文本分類問題和判斷句子相似性的迴歸或分類問題,都是典型的自然語言理解問題。在T5模型中,這些自然語言理解問題的輸入輸出形式與生成問題保持一致,可以將分類問題轉換成讓LLM模型生成對應類別的字符串,從而實現理解和生成任務在表現形式上的完全統一。這表明自然語言生成任務在表現形式上可以兼容自然語言理解任務,而反過來則很難做到這一點。這樣做的好處是,同一個LLM生成模型可以解決幾乎所有NLP問題。相比之下,如果仍然採用Bert模式,LLM模型則無法很好地處理生成任務。
2)如果要以零示例提示語(zero shot prompting)或少數示例提示語(few shot prompting)的方式做好任務就必須要採取GPT模式
研究表明,以fine-tuning方式解決下游任務時,Bert模式的效果優於GPT模式。但是,如果是以zero shot/few shot prompting模式解決下游任務,則GPT模式的效果要優於Bert模式。這説明,生成模型更容易完成zero shot/few shot prompting方式的任務,而Bert模式在這種方式下做任務時存在劣勢。
那麼問題來了:為什麼要追求zero shot/few shot prompting方式來做任務呢?要解釋清楚這個問題,首先需要搞清楚另外一個問題:什麼樣的LLM模型最理想的?

對於LLM模型來説,首先,應該具備強大的自主學習能力。如果將世界上所有可獲得的文本、圖片等不同類型的數據輸入模型中,應該能夠自動學習其中包含的所有知識點,學習過程不需要人的介入,並且能夠靈活應用所學知識來解決實際問題。由於數據量龐大,要吸收所有知識,模型必然需要具備大量的參數來存儲知識,因此這個模型必然會是一個巨無霸模型。
其次,LLM模型應該能夠解決NLP任何子領域的問題,而不僅限於某個有限的領域,甚至應該能夠響應NLP之外的其他領域的問題。此外,當使用LLM模型解決某個具體領域的問題時,應該使用人類習慣的表達方式,即LLM應該理解人類的命令。這體現讓LLM適應人類,而不是讓人去適應LLM模型。人適應LLM的典型例子是,人們會費盡心思地嘗試各種不同的prompt,以試圖找到好的提示語,以便更好地解決手頭問題。
為什麼要追求zero shot/few shot prompting這種方式來解決任務?主要有以下兩個原因。
1)理想中的LLM模型規模必然非常巨大,只有極少數機構有能力製作出這個模型或改動模型參數。任務需求方卻千千萬萬,其中大多數是中小機構甚至個人即使模型開源,也無法部署這個模型,更不用説再使用Fine-tuning這種模式去修改模型參數了。因此應該追求不修正模型參數就能讓任務需求方完成任務的方式,即應該採取prompt模式完成任務,而非Fine-tuning模式。模型製作方則將LLM作為公用服務,以LLM as Service的模式運行。
作為服務支持方,考慮到用户需求的多樣性,LLM模型製作方更應該追求讓LLM能夠完成儘可能多類型的任務,這是附帶的影響,也是為何超級大模型一定會追求走向AGI的現實因素。
2)zero shot prompting也好,few shot prompting也好,甚至促進LLM推理能力的思維鏈(CoT, Chain of Thought)Prompting也好,都是現有技術中的一種。具體而言,zero shot prompting的初衷是直接用人類常用的任務表述方式讓LLM做事情,但是發現LLM並不能很好地理解,效果也不好。經過繼續研究,人們轉而發現,對於某項任務,如果給LLM幾個示例,用這些示例來代表任務描述,效果會比zero shot prompting好,於是都開始研究更好的few shot prompting技術。
可以理解為,本來希望LLM能夠用人類常用的命令方式來執行某個任務,但是目前技術還做不到,所以退而求其次,用這些替代技術來表達人類的任務需求。如果理解了上述邏輯,很容易得出如下結論:few shot prompting(也被稱為In Context Learning)只是一種過渡時期的技術。如果能夠更自然地去描述一個任務,而且LLM可以理解,那麼肯定會毫不猶豫地拋棄這些過渡期的技術,原因很明顯,用這些方法來描述任務需求,並不符合人類的使用習慣。
2、讓LLM適配人的新型交互接口
ChatGPT是一種能力強大、善解人意的技術方法,最接近理想的LLM模型。ChatGPT的強大能力主要得益於GPT 3.5模型,而非人工標註數據。雖然加入了人工標註數據,但這些數據量級只有數萬,對GPT 3.5的基礎能力增強作用微乎其微。
ChatGPT的最大貢獻在於它基本實現了理想LLM的接口層,讓LLM適配人的習慣命令表達方式,而不是反過來讓人去適配LLM。這增加了LLM的易用性和用户體驗,是一種更符合人類表達習慣的人和LLM進行交互的人機接口技術。ChatGPT的技術貢獻必將啓發後續的LLM模型,在易用人機接口方面繼續做進一步的工作。
3、很多NLP子領域不再具備獨立研究價值
範式轉換將會改變NLP領域的格局,許多獨立存在的研究領域將被LLM技術體系所納入,逐步消失。雖然許多“中間任務”不再需要獨立存在,但是大多數“最終任務”仍將作為獨立領域存在,只是在“預訓練+fine-tuning”框架下,陸續提出新的改進方案。
研究表明,隨着LLM模型規模的增大,許多NLP任務的效果會得到大幅提升。因此,很多領域所謂“獨有”的問題,只是因為缺乏領域知識而表現出來的外在表象。只要提供更多的領域數據給LLM,讓它自己學習更多知識,這些問題就可以被很好地解決。未來的技術發展趨勢應該是追求規模越來越大的LLM模型,通過增加預訓練數據的多樣性,來涵蓋越來越多的領域。研究重心將投入到如何構建理想LLM模型,而非解決某個領域的具體問題。因此,越來越多NLP的子領域將被納入LLM技術體系,逐步消失。
判斷某個具體領域是否需要立即停止獨立研究,可以採取以下兩種方法:一是判斷LLM的研究效果是否超過人類表現,對於那些LLM效果已超過人類表現的研究領域,已無獨立研究的必要。二是對比兩種模式的任務效果,如果few-shot prompting或instruct-based方法的效果達到或超過用較大的領域專用數據進行Fine-tuning的效果,則意味着這個領域沒有繼續獨立存在的必要性。
如果這個猜測成立,將意味着很多NLP領域的研究人員面臨着往何處去的選擇,是繼續做領域獨有問題呢?還是放棄這種方式,轉而去建設更好的LLM?
4、更多NLP之外的研究領域將被納入LLM技術體系
理想中的LLM應該是一種通用的人工智能模型,不應該被限制在某一個學科領域內。ChatGPT的出現證明了這種追求AGI的可行性,而現在是拋開“領域學科”這種思維束縛的時候了。除展示出在各種NLP任務中流暢的對話形式,ChatGPT還具備強大的代碼能力。

LLM技術正在向外擴展,其中一個自然的方向是圖像處理和多模態任務。目前已經有一些工作在嘗試將多模態融入LLM中,以實現通用人機接口的功能,例如DeepMind的Flamingo和微軟的“Language Models are General-Purpose Interfaces”。
圖像領域的預訓練模型應用到下游任務的效果收益遠不如NLP領域的預訓練模型顯著,這可能是因為圖像預處理模型仍需深入探索,以釋放圖像數據的潛力。因此,圖像處理領域被融入LLM的時間可能會比想象的要慢。當然,如果圖像領域的預訓練模型被趟通,它們很可能會被融入到大型LLM中,直接完成終端任務,類似於NLP領域的局面。
除了圖像和多模態,其他領域也將逐漸被納入到LLM中,這是具備高價值的研究主題。範式轉換的個人思考表明,LLM技術的主要技術進展可以分為兩大類:一類是關於LLM模型如何從數據中吸收知識,也包括模型規模增長對LLM吸收知識能力帶來的影響。第二類是關於人如何使用LLM內在能力來解決任務的人機接口,包括In Context Learning和Instruct兩種模式。思維鏈(CoT)prompting這種LLM推理技術,本質上也屬於In Context Learning。
從無盡數據導海量知識
目前的研究結果表明,Transformer作為一個特徵抽取器已經足夠強大,不需要進行特別的改進。預訓練過程讓Transformer學到了什麼?知識是如何存儲的?如何修正錯誤的知識?這些問題是當前研究的重點。本節講述這方面的研究進展。
一、LLM學到了什麼知識LLM通過學習海量自由文本,獲得了大量的知識,可以將這些知識粗略地分為語言類知識和世界知識兩大類。語言類知識包括詞法、詞性、句法和語義等,有助於人類或機器理解自然語言。研究表明,LLM可以學習各種層次類型的語言學知識,並且這些知識存儲在Transformer的低層和中層。世界知識則包括真實事件(事實型知識)和常識性知識(Common Sense Knowledge)。
研究表明,LLM可以從訓練數據中吸收大量世界知識,並且這些知識主要分佈在Transformer的中層和高層,隨着模型層數的增加,能夠學習到的知識數量逐漸以指數級增加。對於Bert類型的語言模型來説,只用1000萬到1億單詞的語料,就能學好句法語義等語言學知識,但是要學習事實類知識,則需要更多的訓練數據。隨着增加訓練數據量,預訓練模型在各種下游任務中效果越好,這説明了從增量的訓練數據中學到的更主要是世界知識。
二、LLM如何存取知識LLM是一種基於Transformer結構的語言模型,可以從大量的自由文本中學習到豐富的語言類和世界知識。但對於具體的某條知識,LLM是如何存儲和提取的呢?從Transformer的結構來看,模型參數由兩部分構成:多頭注意力(MHA)部分佔了大約參數總體的三分之一,三分之二的參數集中在FFN結構中。

FFN的第一層是一個MLP寬隱層,也就是Key層;第二層是一個MLP窄隱層,也就是Value層。FFN的輸入層實際上是某個單詞對應的MHA的輸出結果Embedding,也就是通過Self Attention,將整個句子有關的輸入上下文集成到一起的Embedding,代表了整個輸入句子的整體信息。
Key層的每個神經元節點,記載了一對<Key,Value>信息。比如對於FFN第一個隱層的第i個節點ki,也許就是它記載了<北京,is-capital-of,中國>這條知識。ki節點對應的Key向量,其實指的是節點ki和輸入層每個節點的權重向量;而對應的Value向量,指的是節點ki和FFN第二層的Value層每個節點形成連接的權重向量。
每個神經元的Key向量,用於識別輸入中的某種語言或者知識模式,是一種模式探測器。如果輸入中包含它要檢測的某種模式,那麼輸入向量和ki節點的key權重進行向量內積計算,加上Relu,形成ki的大數值響應,意味着ki檢測到了這個模式,於是再把這個響應值,通過ki節點的Value權重向量向FFN第二層傳播。這等價於將Value向量的值,用響應值加權,然後傳遞並體現到第二層Value層每個節點的輸出上。
這樣,FFN的正向傳播計算過程,看起來就像是通過Key檢測到某種知識模式,然後取出對應的Value,並把Value體現在FFN的第二層輸出上。當然,FFN第二層每個節點,會收集FFN的Key層所有節點信息,所以是一種混合響應,而Value層所有節點的混合響應,可以解讀為代表輸出單詞的概率分佈信息。把FFN看成Key-Value存儲器這種思路,雖然可能不是最終的正確答案,但是距離最終正確答案的距離,估計也不太遠。
三、如何修正LLM裏存儲的知識當使用LLM進行自然語言處理時,可能會遇到一些過時或錯誤的知識。為了解決這個問題,可以使用三種不同的方法來修正LLM中存儲的知識。
1、從訓練數據的源頭開始修正知識
通過追蹤某條知識對應的訓練數據源頭定位到是哪些數據導致LLM學會知識。然後刪除數據源,重新預訓練整個LLM模型,以達到刪除LLM中相關知識的目的。但這種方法在少量多次的常規知識修正場景中不適用。
2、通過fine-tuning來修正知識
根據要修正成的新知識來構建訓練數據,讓LLM模型在練數據上做fine-tuning,以指導LLM記住新的知識,遺忘舊知識。但是會有忘掉該忘的知識,還會忘掉不該忘的知識現象存在,導致這麼做之後有些下游任務效果下降。此外成本也相當高。
3、直接修改LLM的模型參數來修正知識
通過定位存儲知識的具體位置,強行調整FFN中對應的模型參數,將舊知識替換成新的知識。然而,這種方法需要解決兩個關鍵問題。首先需要知道如何在LLM參數空間中定位某條知識的具體存儲位置。其次需要知道如何修正模型參數,以實現舊知識到新知識的修正。
理解修正LLM知識的過程對於更深入理解LLM的內部運作機制是很有幫助的。雖然三種方法各有優缺點,但都可以幫助修正LLM中的過時或錯誤的知識,提高LLM在自然語言處理任務中的表現。
當LLM越來越大時會發生什麼
近年來,LLM模型規模不斷增長,目前效果最好的LLM模型,其參數規模大都超過了千億(100B)參數規模。如OpenAI的GPT-3規模為175B,Google的LaMDA規模為137B,PaLM的規模為540B,DeepMind的Gogher規模為280B等。國內也有中文巨型模型,比如清華&智譜GLM規模130B,華為“盤古”規模200B,百度“文心”規模260B,浪潮“源1.0”規模245B。
那麼問題來了,隨着LLM模型規模的不斷增長會發生些什麼呢?預訓練模型的應用往往是兩階段的:預訓練階段和具體場景應用階段。在預訓練階段,LLM模型的優化目標是交叉熵,對於像GPT這種自迴歸語言模型來説,也就是看LLM是否正確預測下一個單詞。而在場景應用階段,一般要看具體場景的評價指標。通常,LLM模型在預訓練階段的指標越好解決下游任務的能力就越強。然而,事實並非完全如此。
現有研究表明,預訓練階段的優化指標確實和下游任務表現出正相關關係,但並非完全正相關。也就是説,僅僅看預訓練階段的指標來判斷一個LLM模型是否夠好是不夠的。因此需要在模型的預訓練階段和應用階段都進行充分的評估和測試。

在預訓練階段,OpenAI和DeepMind的研究表明,同時增加訓練數據量和模型參數是最優的選擇,而只單獨增加其中某一個是不夠好的。DeepMind認為,訓練數據量和模型參數是同等重要的,因此應該同比例地增加。比如,如果用於訓練LLM的算力總預算增加了10倍,那麼應該增加3.3倍的模型參數量,3.3倍的訓練數據量,這樣模型效果才最好。而對於Chinchilla模型,它選擇增加4倍的訓練數據,但是將模型參數降低為Gopher的四分之一,大約為70B。這樣做的結果是,Chinchilla的預訓練指標和許多下游任務指標都要優於規模更大的Gopher。這表明,可以選擇放大訓練數據,並同比例地減少LLM模型參數,以達到在不降低模型效果的前提下,極大縮小模型規模的目的。
從LLM解決下游具體任務效果的角度來看,隨着模型規模增大,不同類型的任務有不同的表現。比如,對於簡單的任務,如語言模型的困惑度,隨着模型規模增大,模型效果會不斷提升。在OpenAI的研究中,當訓練數據量從12B增加到800B時,GPT-3模型的困惑度從3.15降低到1.28。
對於中等難度的任務,如問答、文本分類等,隨着模型規模增大,模型效果會先提升後趨於平穩。在OpenAI的研究中,當訓練數據量從12B增加到800B時,GPT-3模型在LAMBADA和SuperGLUE等任務上的表現都有所提升,但是提升幅度逐漸減小。對於複雜的任務,如機器翻譯、語義理解等,隨着模型規模增大,模型效果會先提升後出現飽和現象或者略微下降。在Google的研究中,當模型參數量從1558M增加到137B時,BLEU分數從36.8提高到37.5,但是隨着模型規模進一步增大,BLEU分數反而略微下降。因此,在選擇LLM模型規模時,需要根據具體任務的難度和要求,綜合考慮各種因素,以獲得最佳的模型性能。

第一類任務展現了LLM模型的scaling law,即隨着模型規模的增大,任務的表現越來越好。這類任務通常是知識密集型任務,LLM模型包含的知識量越多,任務表現越好。研究表明,更大的LLM模型學習效率越高,相同訓練數據量,大模型可以學到更多的知識點。傳統的自然語言理解類任務大多屬於這種類型,近兩年這些任務的效果有了極大的提升,很可能是因為LLM模型的規模增長所帶來的。
第二類任務展現出LLM具備某種“湧現能力”,當模型規模達到某個閥值時,LLM模型對此類任務的效果會出現突然的性能增長。這種“湧現能力”是LLM模型規模增長的關鍵,隨着模型規模越來越大,LLM模型會逐漸解鎖新的能力。這種現象很神奇,因為即使LLM模型現在還不能很好地解決某些任務,但如果繼續推大模型,也許某一天它的這項能力就被突然解鎖了。這些任務一般由多步驟構成,需要先解決多箇中間步驟,邏輯推理能力在最終解決這類任務中發揮重要作用。思維鏈Prompting是一種典型的增強LLM推理能力的技術,能大幅提升此類任務的效果。關於為何LLM會出現這種“湧現能力”現象,目前還需要進一步的研究。

還有一部分任務的效果曲線呈現出U形特性,即隨着模型規模的增大,任務效果逐漸變差,但當模型規模進一步增大時,效果開始變好,呈現出U形增長趨勢。這些任務內部隱含了兩種不同類型的子任務,一種是真正的任務,另一種是“干擾任務”。當模型規模小的時候,無法識別任意一種子任務,所以模型的表現跟隨機選擇答案差不多。
當模型增長到中等規模時,主要執行的是干擾任務,所以對真正的任務效果有負面影響,體現為真正任務效果的下降。當進一步增加模型規模時,LLM可以忽略干擾任務,執行真正的任務,效果開始增長。如果採用思維鏈(CoT)Prompting,則部分任務的表現轉換為遵循Scaling law,即模型規模越大效果越好,而其他任務則轉換為U形增長曲線。這説明此類任務應屬於推理類型的任務,加入CoT後任務表現會發生質的變化。
從In Context Learning到Instruct理解
一般常提到的人和LLM的接口技術包括:Instruct和In Context Learning。Instruct是ChatGPT的接口方式,人以自然語言給出任務的描述,例如“把這個句子從中文翻譯成英文”。而In Context Learning和few shot prompting意思類似,給LLM幾個示例作為範本,然後讓LLM解決新問題。
雖然這些技術都是描述任務的方式,但其實思路是不同的。Instruct是一種抽象的描述方式,而In Context Learning是一種例子示範的説明法。儘管叫法有些混亂,但這兩種技術是最為常見的人和LLM的接口技術。下面將重點介紹Instruct和In Context Learning,而不再提及zero shot和few shot。
一、神秘的In Context LearningIn Context Learning是一項非常神奇的技術。它之所以神奇,是因為只需要提供LLM幾個樣本示例<x1,y1>,<x2,y2>….<xn,yn>,然後給一個新的輸入xn+1,LLM就能成功預測對應的輸出yn+1。這聽起來有些類似於Fine-tuning,但實際上更為複雜。

Fine-tuning和In Context Learning看似都提供了一些示例給LLM,但兩者之間存在着質的不同。Fine-tuning使用這些示例作為訓練數據,通過反向傳播來修正LLM的模型參數,從而實現了LLM從示例中學習的過程。而In Context Learning只是簡單地展示示例,然後要求LLM去預測新的示例,沒有使用反向傳播來修正模型參數,這意味着它貌似沒有經歷學習的過程。但是,In Context Learning卻能夠僅憑一眼就預測出新的示例。
目前,有一些研究對這個問題提出了不同的看法,但是它們之間存在着相互矛盾的結論。對於這個問題的真相,目前仍是未解之謎。有些研究認為In Context Learning並沒有從示例中學習映射函數,而是通過輸入和輸出的分佈來實現預測。而另一些研究則認為LLM仍然從示例中學習了映射函數,只是這個過程是隱式的。
二、神奇的Instruct理解Instruct是一種為了方便人類理解的任務表述。基於這個前提,目前的Instruct研究可以分為兩類:一種是偏向學術研究的Instruct,另一種則是關注於人類真實需求描述的Instruct。

首先,來看偏向學術研究的Instruct。該領域的核心研究主題是LLM模型在多任務場景下對Instruct理解的泛化能力。這種方法使用多個NLP任務,每個任務都有一個或多個Prompt模版作為Instruct,並用訓練數據對LLM模型進行微調,使其能夠同時學習多個任務。
訓練好模型後,給LLM模型一個全新的任務Instruct,然後讓LLM解決zero shot任務,從而判斷LLM模型是否具有對Instruct的泛化能力。目前的研究表明,增加多任務的數量、增加LLM模型的大小、提供CoT Prompting以及增加任務的多樣性等因素可以有效地增加LLM模型對Instruct的理解能力。
第二種是面向人類真實需求的Instruct,這類研究以InstructGPT和ChatGPT為代表。這種方法同樣基於多任務,但與偏向學術研究的方法最大的不同在於它是面向真實需求的。它使用從大量用户提交的真實請求中抽樣而來的任務描述Prompt進行LLM多任務訓練,而不是固定好研究任務的範圍,然後讓研究人員來編寫任務描述prompt。
這種方法的優勢在於可以涵蓋更多樣化的任務類型,更符合用户的真實需求;同時,任務的prompt描述來自用户提交的請求,反映了用户在表達任務需求時的真實表述方式。因此,這種方法訓練出的LLM模型可以更好地滿足用户需求。InstructGPT論文還將該方法與偏向學術研究的FLAN方法進行了比較。結果表明,FLAN方法的效果距離InstructGPT有很大差距。這是因為FLAN方法涉及的任務領域相對較少,而InstructGPT使用的任務類型更加多樣化,更符合用户的真實需求。因此,從用户數據中收集真實需求對於提高LLM模型的效果是非常重要的。
三、In Context Learning和Instruct的聯繫可以將In Context Learning看作是通過一些具體的例子來表達任務命令,而Instruct則是更符合人類習慣的抽象任務描述。這引發了一個自然的問題:這兩種方法之間是否存在聯繫?例如,是否可以提供一些具體的示例,讓LLM找出對應的自然語言描述的Instruct命令來完成某個任務?

目前有些研究工作在探索具象任務示例和自然語言命令之間的聯繫,並且這個方向具有很高的研究價值。在這個問題上,答案是肯定的:LLM確實可以實現這個任務。最近的一項研究使用了GPT-3和InstructGPT作為基礎模型,讓LLM通過一些具體的示例生成自然語言命令來描述某項任務,然後再用這個描述測試任務效果。這項技術的加持使得LLM生成的Instruct效果大大提升,甚至在一些任務上超過了人類的表現。這表明了具象任務示例和自然語言命令之間存在一種神秘的內在聯繫,但我們目前還無法確定這種聯繫的具體本質。
如何增強LLM的推理能力
目前,許多研究表明LLM具有強大的記憶能力,但通常不會因為一個人記憶能力強就認為他/她很聰明,因為推理能力往往是判斷一個人是否聰明的重要標準。因此,對於LLM而言,強大的推理能力也是必不可少的。在過去一年中,LLM的推理能力已成為最重要和熱門的研究領域之一。目前的研究表明,當模型規模足夠大時,LLM本身具備推理能力,在簡單推理問題上已經達到了很好的能力,但在複雜推理問題上仍需要更深入的研究。
LLM推理能力的研究可以歸為兩大類分別是基於Prompt的方法和引入程序代碼的方法。基於Prompt的方法通過合適的提示語或提示樣本來激發LLM本身具備的推理能力,Google在這個方向做了很多有成效的工作。而引入程序代碼的方法則在預訓練過程中將代碼和文本一起參與預訓練,以此進一步增強LLM的推理能力,這是OpenAI實踐出的思路。這兩種方法的大方向是迥異的:前者是通過提供多樣性的訓練數據來直接增強LLM推理能力,而後者則是讓LLM在解決問題過程中更好地展示出推理能力的技術方法。雖然這兩種方法互補,但從長遠來看,治本的方法更為重要。
歸納一下大致可以分為三條技術路線。

一、直接在問題上追加輔助推理Prompt
在各個領域,基於Prompt的方法都被證明是一種有效的方法來增強LLM的推理能力。這種方法非常簡單,直接在問題上追加輔助推理Prompt即可。其中,Zero-shot CoT是一種被廣泛應用的方法,它通過在提問的問題上追加“Let’s think step by step”這句提示語來激發LLM本身具備的推理能力。
具體而言,分為兩個階段,第一階段在問題上追加提示語,LLM會輸出具體的推理過程;第二階段,拼接LLM輸出的具體推理過程,並再追加Prompt,此時LLM會給出答案。這種簡單的操作可以大幅增加LLM在各項推理任務中的效果。目前,關於LLM為什麼會具備推理能力的原因尚無定論,但可能是因為預訓練數據中存在大量以“Let’s think step by step”開頭的數據,LLM在預訓練的時候記住了這些模式。
因此,當我們輸入這個提示語的時候,LLM會模仿這些例子進行步驟推理並給出答案。當然,Zero-shot CoT的效果比標準CoT差一些,因為靠LLM回憶示例,精準性估計不會太高。但無論是Zero-shot CoT還是標準CoT,都説明了一個道理,就是LLM本身是具備推理能力的,只是我們沒有辦法把它的這種能力激發出來而已。
二、基於示例的思維鏈(few-shot CoT,Chain of Thought)Prompting
目前,基於Prompt的方法是LLM推理研究的主要方向,很多工作都是在這個思路上展開的。在這個方向上,有幾個代表性的工作取得了顯著的效果,這些工作基本能代表CoT技術發展的方向。

CoT的主體思想非常簡單明瞭,為了讓LLM模型學會推理,需要給出一些人工寫好的推理示例,示例中詳細説明得到最終答案前的具體推理步驟,而這些人工寫的詳細推理過程就是思維鏈Prompting。CoT的目的是讓LLM模型明白在推理過程中,步子不要邁得太大,需要化大問題為小問題,步步為營,積小勝為大勝。最早明確提出CoT這個概念的文章是“Chain of thought prompting elicits reasoning in large language models”,該論文於2022年1月份發佈。儘管CoT的做法很簡單,但應用CoT後LLM模型的推理能力得到了巨大提升,GSM8K數學推理測試集準確率提高到了約60.1%。值得一提的是,這種給出詳細推理步驟和中間過程的思想,並非CoT最早提出的。更早一些的“scratchpad”技術就採用了類似的思路。

CoT提出不久,隨後在2022年3月份,一項名為“Self-Consistency”的改進技術迅速問世,將GSM8K測試集準確率提高到了74.4%。這項改進技術的思路也很簡單明瞭,首先利用CoT給出幾個寫了推理過程的示例,然後要求LLM對給定的問題進行推理,但不同於CoT的是,“Self-Consistency”要求LLM輸出多個不同的推理過程和答案,並採用投票的方式選出最佳答案。這種思路教導LLM學會這樣一個道理:一個數學題的正確解法可以有很多種,每個不同的推導過程都指向最終的答案。簡單的方法往往藴含着深刻的哲學含義。之後,“On the Advance of Making Language Models Better Reasoners”這個工作在“Self-Consistency”的基礎上,進一步集成了“從一個Prompt問題拓展到多個Prompt問題、檢查推理中間步驟的正確性以及對多個輸出的回答加權投票”這三個改進點,將GSM8K測試集準確率提高到了約83%。

三、分治算法
核心思想是將一個複雜的推理問題分解成若干個容易解決的子問題,解決這些子問題,再從子問題的答案推導出複雜問題的答案。這種思路可能是揭示問題本質、最終解決LLM複雜推理問題的正宗道路。以“Least-to-most prompting”技術為例,它分為兩個階段。在第一個階段,我們從原始問題中得到最終要問的問題,然後構造一個Prompt模板,填充“如果要解決Final Q問題,那麼我需要先解決”的內容,讓LLM模型回答,得到前置子問題Sub Q。在第二個階段,讓LLM先回答子問題Sub Q,並得到對應的答案,然後將原始問題與子問題Sub Q及對應答案拼接在一起,再去問LLM最終問題Final Q,此時LLM會給出最終的答案。這種思路體現了拆解子問題,並從子問題的答案逐步找出最終答案的思路,類似於分治算法的思想。