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