微信截圖_17435908574000.png)
Transformers Generate 功能介紹
如上圖所示,模型訓(xùn)練分為四個階段:預(yù)訓(xùn)練(Pretraining)、監(jiān)督微調(diào)(Supervised Finetuning)、獎勵建模(Reward Modeling)、以及強化學(xué)習(xí)(Reinforcement Learning)。
上圖主要從三個角度解析了模型訓(xùn)練過程:
通過以上過程,我們可以看到,預(yù)訓(xùn)練階段的資源消耗如此巨大,只有大廠才有能力進行。如果資源有限,我們應(yīng)將重心放在后三個階段,例如,我們可以針對自己熟悉的專業(yè)領(lǐng)域?qū)δP瓦M行微調(diào)等。具體的訓(xùn)練工具,可以參考我之前介紹過的DeepSeed-Chat工具,這款工具正是針對后三步的訓(xùn)練設(shè)計的。
是的,也不是。
如果你想進行預(yù)訓(xùn)練模型的訓(xùn)練,那么確實需要大量的數(shù)據(jù)。雖然對數(shù)據(jù)質(zhì)量的要求不高,但通常還是需要進行數(shù)據(jù)清洗,以減少垃圾數(shù)據(jù)的影響。
然而,如果你想進行監(jiān)督微調(diào)、建立模型,或進行強化學(xué)習(xí)階段的訓(xùn)練,那么并不需要大量的數(shù)據(jù)。尤其是在監(jiān)督微調(diào)階段,從圖1中我們可以看到,其數(shù)據(jù)量范圍是10到100K。也就是說,只需要幾十個或幾百個高質(zhì)量的數(shù)據(jù),就可以對模型進行微調(diào)并取得不錯的效果。顯然,在監(jiān)督微調(diào)階段,數(shù)據(jù)質(zhì)量比數(shù)據(jù)量更重要。
這里所說的高質(zhì)量數(shù)據(jù),不僅指問題的答案要準確,更需要注意的是,你的微調(diào)數(shù)據(jù)要能很好地覆蓋你的任務(wù)。
在訓(xùn)練模型時,我們通常會首先將文本轉(zhuǎn)換為token作為模型的輸入。Token通常比單詞短,例如在GPT-3模型中,一個Token相當于0.75個單詞,而對于中文來說,一個漢字通常對應(yīng)兩個token。
當前的LLM(大型語言模型)的token數(shù)量通常在數(shù)萬。比如,GPT-3模型的Token數(shù)量是50257,而LLaMA的Token數(shù)量是32000。(參考圖2)
深度學(xué)習(xí)模型訓(xùn)練的性能除了受訓(xùn)練方法影響外,訓(xùn)練參數(shù)的設(shè)定也極其重要。演講材料中提供了一些參數(shù)設(shè)置的信息,我們可以快速了解一下。從圖2中,我們可以看到GPT-3和LLaMA模型的一些訓(xùn)練參數(shù),如Batch Size、Learning Rate,以及所需的GPU數(shù)量等。
首先,我們可以看到預(yù)訓(xùn)練階段的Batch Size非常大,范圍在0.5M到4M之間。另外,可以觀察到,Learning rate設(shè)定較小,且隨著網(wǎng)絡(luò)規(guī)模的增大,Learning rate越來越小。
GPT-3和LLaMA模型的技術(shù)論文都已經(jīng)公開,所以在實際訓(xùn)練時,你可以閱讀他們的論文以了解更多的細節(jié)。
并非如此。參數(shù)量并不是衡量模型能力的唯一標準,訓(xùn)練數(shù)據(jù)量也是一個非常重要的因素。在Andrej的演講中,他提到了LLaMA模型,盡管它的參數(shù)量只有650億,但其性能與參數(shù)量為1750億的GPT-3模型相比也非常優(yōu)秀。主要原因在于,LLaMA模型的訓(xùn)練數(shù)據(jù)量達到了1.4萬億,而GPT-3只有3000億。
如果GPU資源有限,那么你的機會可能在專業(yè)領(lǐng)域。要訓(xùn)練像ChatGPT這樣的通用模型,不僅需要大量的訓(xùn)練數(shù)據(jù)和GPU資源,還需要針對許多常用任務(wù)進行優(yōu)化和評估。這其中不僅訓(xùn)練成本高昂,數(shù)據(jù)準備和整理的人力資源投入也非常大。
在資源相對有限的情況下,我們應(yīng)該將重心放在后三個階段,例如,我們可以針對自己熟悉的專業(yè)領(lǐng)域?qū)δP瓦M行微調(diào)等。可以利用公開的預(yù)訓(xùn)練模型,針對自己熟悉的專業(yè)領(lǐng)域知識,或者根據(jù)客戶的需求來訓(xùn)練針對特定任務(wù)的模型。從圖1中,我們可以看到,監(jiān)督微調(diào)等訓(xùn)練所需的計算資源和數(shù)據(jù)量都不大。
除了最終的模型,預(yù)訓(xùn)練模型和監(jiān)督微調(diào)模型也都可以在實際應(yīng)用中部署。
這三種模型的特點如下:
預(yù)訓(xùn)練模型:預(yù)訓(xùn)練模型基本不會直接回答問題。如果你向它提問,它可能會以更多的問題來回應(yīng)你。雖然通過一些技巧可以使其回答問題,但其回答通常并不可靠。然而,這種基礎(chǔ)模型具有更多的熵,能夠生成許多不同的輸出,因此更適合產(chǎn)生多變的內(nèi)容。
監(jiān)督微調(diào)模型:監(jiān)督微調(diào)模型可以很好地回答問題,目前公開的模型中,絕大多數(shù)都屬于此類模型。
強化學(xué)習(xí)與人工反饋(RLHF)模型:這是目前最優(yōu)秀的模型。與監(jiān)督微調(diào)模型相比,RLHF模型輸出的結(jié)果變化較小。
上圖中是UC Berkeley發(fā)布的AI助手的ELO排名, 這個排名中的前三名的模型都屬于 RLHF 模型。其他的模型基本都是SFT模型。為什么RLHF(強化學(xué)習(xí)與人工反饋)模型會優(yōu)秀,目前并沒有定論。
根據(jù)OpenAI的評估,與監(jiān)督微調(diào)模型的輸出相比,人們更喜歡RLHF模型的輸出。那么,為什么會這樣呢? Andrej 給出了這樣的解釋:與生成相比,做判斷更容易。這就好比,如果讓你寫一首詩,你可能會覺得很困難;但是如果讓你對幾首詩進行排序,就會相對容易很多。
我認為,這可能有兩個層面的含義:
總的來說,SFT比較容易實現(xiàn),因為你只是在繼續(xù)進行語言建模任務(wù),相對來說較為簡單。但是RLHF是一個深奧的研究領(lǐng)域,讓它開始工作的難度更大。
作者解釋稱,他并不建議任何人嘗試推出他們自己的RLHF實現(xiàn)。這些事物通常非常不穩(wěn)定,難以訓(xùn)練,對初學(xué)者并不友好,并且可能會迅速發(fā)生變化。
在演講中,Andrej 多次提到了 LLaMA 65B的模型,并表示此模型的性能不錯。LLaMA模型目前可以在 HuggingFace 上下載,下載地址為:https://huggingface.co/decapoda-research。
請注意,LLaMA 模型無法商用。
除此之外,還有一些其他的預(yù)訓(xùn)練模型,例如:
Bloom 模型:https://huggingface.co/bigscience/bloom
Bloomz 模型:https://huggingface.co/bigscience/bloomz
Opt模型:https://huggingface.co/facebook/opt-66b
GLM模型:https://github.com/THUDM/GLM
以上模型在各自的鏈接中都有詳細的使用說明和使用案例,可以供你參考和學(xué)習(xí)。
關(guān)于如何看待類似chatGPT的LLM AI 助手, 常見的一個說法就是AI副駕駛, 副駕駛這個詞來自于飛機的副駕駛員,它主要為機長提供輔助,或者建議,最終決定由機長來決定執(zhí)行。 這個理解,可以幫助和指導(dǎo)我們?nèi)绾蝸硎褂?ChatGPT 的AI助手。
Andrej 的演講中提供了另一個對 LLM 助手的理解角度。就是參考人來的思考系統(tǒng)。心理學(xué)家丹尼爾·卡內(nèi)曼在他的著作《思考,快與慢》中提出了一個觀點。他在書中介紹了人類的思考系統(tǒng)分為系統(tǒng)1和系統(tǒng)2兩個不同的決策和認知系統(tǒng):
系統(tǒng)1:快速,直覺性和無意識的思考方式。這個系統(tǒng)在我們的大腦中自動運作,不需要我們投入意識的精力,就能做出判斷和決策。它可以處理大量的信息,但有時候可能會受到各種偏見和錯誤的影響。
例如,如果你看到一個表情友好的人,你可能會立刻覺得他很善良。這就是系統(tǒng)1的作用。
系統(tǒng)2:慢速,分析性和有意識的思考方式。這個系統(tǒng)需要我們投入精力去深思熟慮,對信息進行分析和邏輯推理。系統(tǒng)2更慢,更費勁,但也更準確和可靠。
例如,如果你正在解決一個復(fù)雜的數(shù)學(xué)問題,那么你就在使用系統(tǒng)2。
這兩個系統(tǒng)并非互相排斥,而是相互協(xié)作。很多情況下,我們需要同時運用系統(tǒng)1和系統(tǒng)2。然而,由于系統(tǒng)1的運作速度更快,更自動,所以我們有時候可能會過度依賴系統(tǒng)1,導(dǎo)致決策失誤。
Andrej 認為LLM 更像是人類思考系統(tǒng)的系統(tǒng)1,判斷快速,直覺,并且是無意識的。但是會出現(xiàn)偏見和錯誤。
而最近的AutoGPT項目則是嘗試模擬系統(tǒng)2的行為方式,雖然,目前AutoGPT實際應(yīng)用的效果還不是很好,但是類似的思路還是非常有前景的。
目前的LLM基本都是基于Transformer結(jié)構(gòu)的, Transformer 的內(nèi)容生成只是在輸出下一個 token,它并不知道自己擅長什么,不擅長什么,只是盡力地預(yù)測下一個 token。因此,它們沒有獨立的內(nèi)心獨白,也就無法主動的糾正它們的錯誤。它的優(yōu)勢是擁有大量的基于事實的知識,覆蓋了廣泛的領(lǐng)域。 它還有出色的工作記憶,只要內(nèi)容在上下文窗口內(nèi),通過自注意力機制它可以完美地記住,但是上下文窗口是有限的,GPT-3.5是4k,GPT-4有8k和32k的版本。
雖然 LLM 擁有優(yōu)秀的工作記憶,但它終究只是在努力預(yù)測下一個 token 是什么。它會花費相同的算力來計算每個 token,因此,不能期望它對某個 token 進行過多的處理。
默認情況下,不會。在嘗試解答問題時,人們通常會進行多次嘗試直到取得成功。然而,與人類不同,LLM并沒有自我意識。在默認設(shè)置下,LLM只會進行一次采樣。如果在這個過程中采樣了不好的選項,它會因錯誤的采樣而陷入困境,并且無法自我修復(fù)
當你問LLM,“你完成任務(wù)了嗎?”時,它可能會回答你,“不,我沒有完成任務(wù)。”
換句話說,它可以評估自己是否完成了任務(wù)。
然而,如果你不詢問,它不會主動重新評估。因此,你需要在你的提示中補充這一信息。
作者提到了谷歌的AlphaGo的預(yù)測和評估并行的策略。
此外,作者還提到了近期非常流行的AutoGPT,他認為雖然AutoGPT在實用性上效果依然有限,但其思路和想法還是具有很大的借鑒意義。
魔法提示詞:“讓我們一步步地思考。(let’s think step by step)”
通過告訴模型,讓它一步一步地解決問題,它可能會給出更加可靠的答案。
專家假設(shè)提示詞:你可以說,“假設(shè)你是一個領(lǐng)域?qū)<遥僭O(shè)你的IQ是120。” 通過加入這樣的提示詞,LLM會傾向于給出更高質(zhì)量的答案。
注意:不要提出過高的要求,比如說,“假設(shè)你的IQ是400”,這可能會超出數(shù)據(jù)分布范圍,甚至可能讓模型在科幻數(shù)據(jù)分布中進行角色扮演。
規(guī)避它的弱點:我們知道現(xiàn)有的LLM并不擅長計算。針對這個問題,你可以告訴它,“你的心算不太好。每當你需要進行大數(shù)加法、乘法或其他操作時,請使用這個計算器(插件)。以下是你如何使用計算器。”
微調(diào)(Finetuning)是一種常用的技術(shù),許多技術(shù)(如LoRA)可以使微調(diào)更加快速和高效。然而,微調(diào)依然是一項復(fù)雜的工作,例如,需要理解相關(guān)技術(shù)并準備數(shù)據(jù)。通常情況下,SFT可以運作得很好,但是,效果更好的RLHF模型的訓(xùn)練需要高度的技巧。這類技術(shù)在未來可能會有很大的變化。
相比微調(diào)需要更新模型的參數(shù),prompt design 只需要對prompt進行調(diào)整,這也是一種非常有效的方法。
例如,圖4中的 one-shot 和 few-shot 通過在prompt中給出問題解答的例子,可以讓模型參考這些例子來解答問題,這樣也可以非常好地使LLM處理各種新任務(wù)。
這有點類似于教科書中給出的例題,通過例題的解答,我們可以學(xué)會解題的思路。LLM在這方面也表現(xiàn)得相當好。
另外一個技術(shù)就是prompt tuning,這是這一種與finetuning相似的技術(shù),具體技術(shù)可以參考:
https://arxiv.org/abs/2104.08691
Zero-shot:Prompt中只給出需要解答的問題。
One-shot:Prompt中除了問題,還給出一個參考題(包含題目和解答)。
Few-shot:與One-shot只給出一個參考題不同,few-shot是給出多個參考題。
詳細解釋請參考圖4.
文章轉(zhuǎn)載自: 跟大牛學(xué)LLM訓(xùn)練和使用技巧