?LLM從入門到精通精品文章
目錄
一、LLM基本概念
二、LLM發展歷程
三、LLM大模型的分類
四、LLM主流大模型類別
五、LLM大模型建立的流程
六、Fine-Tuning
七、Prompt-Tuning
八、超大規模參數模型Prompt-Tuning方法
8.1上下文學習 In-Context Learning
8.2.指令學習 Instruction- Tuning
8.3?思維鏈Chain-of-Thought
九、Prefix-Tuning
十、LoRA
一、LLM基本概念
????????大模型LLM(Large Language Model)是指具有大規模參數和復雜計算結構的機器學習模型。這些模型通常由深度神經網絡構建而成,擁有數十億甚至數千億個參數。大模型的設計目的是為了提高模型的表達能力和預測性能,能夠處理更加復雜的任務和數據。大模型在各種領域都有廣泛的應用,包括自然語言處理、計算機視覺、語音識別和推薦系統等。大模型通過訓練海量數據來學習復雜的模式和特征,具有更強大的泛化能力,可以對未見過的數據做出準確的預測。
????????大模型本質上是一個使用海量數據訓練而成的深度神經網絡模型,其巨大的數據和參數規模,實現了智能的涌現,展現出類似人類的智能。
????????LLM的使用場景非常廣泛。首先,LLM可以用于文本生成,可以生成連貫的段落、文章、對話等,可以應用于自動寫作、機器翻譯等任務中。其次,LLM可以用于問答系統,可以回答復雜的問題,甚至進行對話式問答。再者,LLM可以用于語義理解和推理,可以進行情感分析、命名實體識別、文本分類等任務。此外,LLM還可以用于智能助理、機器人交互、自動摘要、信息提取等應用領域。總的來說,LLM在自然語言處理和人工智能領域都有很大的潛力,可以提供更加智能和自然的人機交互體驗。
二、LLM發展歷程
截止目前,語言模型發展走過了三個階段:
三、LLM大模型的分類
按照輸入數據類型的不同,LLM大模型主要可以分為以下三大類:
語言大模型(NLP):是指在自然語言處理(Natural Language Processing,NLP)領域中的一類大模型,通常用于處理文本數據和理解自然語言。這類大模型的主要特點是它們在大規模語料庫上進行了訓練,以學習自然語言的各種語法、語義和語境規則。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。
視覺大模型(CV):是指在計算機視覺(Computer Vision,CV)領域中使用的大模型,通常用于圖像處理和分析。這類模型通過在大規模圖像數據上進行訓練,可以實現各種視覺任務,如圖像分類、目標檢測、圖像分割、姿態估計、人臉識別等。例如:VIT系列(Google)、文心UFO、華為盤古CV、INTERN(商湯)。
多模態大模型:是指能夠處理多種不同類型數據的大模型,例如文本、圖像、音頻等多模態數據。這類模型結合了NLP和CV的能力,以實現對多模態信息的綜合理解和分析,從而能夠更全面地理解和處理復雜的數據。例如:DingoDB多模向量數據庫(九章云極DataCanvas)、DALL-E(OpenAI)、悟空畫畫(華為)、midjourney。
四、LLM主流大模型類別
????????隨著ChatGPT迅速火爆,引發了大模型的時代變革,國內外各大公司也快速跟進生成式AI市場,近百款大模型發布及應用。開源語言大模型種類有以下4個:
1 ChatGLM-6B模型簡介:
????????ChatGLM-6B 是清華大學提出的一個開源、支持中英雙語的對話語言模型,基于General LanguageModel (GLM) 架構,具有 62 億參數.該模型使用了和 ChatGPT 相似的技術,經過約 1T 標識符的中英雙語訓練(中英文比例為1:1),輔以監督微調、反饋自助、人類反饋強化學習等技術的加持,62 億參數的 ChatGLM-6B 已經能生成相當符合人類偏好的回答(目前中文支持最好).
????????GLM是一種基于自回歸空白填充目標的通用預訓練框架. GLM 將 NLU 任務轉化為包含任務描述的完形填空問題,可以通過自回歸生成的方式來回答.
????????原理:在輸入文本中隨機挖去一些連續的文本片段,然后訓練模型按照任意順序重建這些片段.
????????完形填空問題是指在輸入文本中用一個特殊的符號(如[MASK])替換掉一個或多個詞,然后訓練模型預測被替換掉的詞.
優點:較低的部署門檻: INT4 精度下,只 需6GB顯存,使得 ChatGLM-6B 可 以部署在消費級顯卡上進行推理.? 更長的序列長度: 相比 GLM-10B (序列長度1024),ChatGLM2-6B 序列長度達32K,支持更長對話和應 用。? 人類類意圖對齊訓練。
缺點:模型容量小,相對較弱的模型記憶和語言能力。 多輪對話能力較弱。
模型配置(6B)與硬件要求:
2?LLaMA模型簡介:
????????LLaMA(Large Language Model Meta AI),由 Meta AI 于2023年發布的一個開放且高效的大型基礎語言模型,共有 7B、13B、33B、65B(650 億)四種版本. LLaMA訓練數據是以英語為主的拉丁語系,另外還包含了來自 GitHub 的代碼數據。訓練數據以英文為主,不包含中韓日文,所有訓練數據都是開源的。其中LLaMA-65B 和 LLaMA-33B 是在 1.4萬億 (1.4T) 個token上訓練的,而最小的模型 LLaMA-7B 和LLaMA-13B 是在 1萬億 (1T) 個 token 上訓練的.
LLaMA 的訓練目標是語言模型,即根據已有的上文去預測下一個詞
優點 : 具有 130 億參數的 LLaMA 模型 「在大多數基準上」可以勝過 GPT-3( 參數量達 1750 億).? 可以在單塊 V100 GPU 上運行; 而最大的 650 億參數的 LLaMA 模型可以媲美谷歌的 Chinchilla70B 和 PaLM-540B.
缺點:會產生偏見性、有毒或者虛假的內容.? 在中文上效果差,訓練語料不包含中文或者一個漢字切分為多個token,編碼效率低,模型學習難度大.
模型配置(7B)與硬件要求:
3?BLOOM模型簡介
????????BLOOM系列模型是由 Hugging Face公司訓練的大語言模型. 訓練數據包含了英語、中文、法語、西班牙語、葡萄牙語等共 46 種語言,另外還包含 13 種編程語言. 1.5TB 經過去重和清洗的文本,其中中文語料占比為16.2%. 按照模型參數量,BLOOM 模型有 560M、1.1B、1.7B、3B、7.1B 和 176B 這幾個不同參數規模的模型.
BLOOM 的訓練目標是語言模型,即根據已有的上文去預測下一個詞
優點:具有良好的多語言適 應性,能夠在多種語 言間進行切換,且無 需重新訓練.
缺點:會產生偏見性、有毒或者虛假的內容.
模型配置(176B)與硬件要求
4 Baichuan-7B模型
????????Baichuan-7B由百川智能于2023年6月發布的一個開放且可商用的大型預訓練語言模型,其支持中英雙語,是在約 1.2萬億 (1.2T) 個 token上訓練的70億參數模型.
Baichuan-7B 的訓練目標也是語言模型,即根據已有的上文去預測下一個詞。
模型配置(7B)與模型特點:
五、LLM大模型建立的流程
LLM(Large Language Model)大模型訓練的流程一般涉及以下幾個階段:
1. 數據收集和預處理:首先需要收集大量的訓練數據,這些數據可以是從互聯網上收集的文本數據,也可以是從現有的數據集中獲取的。收集的數據需要進行預處理,包括去除噪聲、標記化、分詞等操作。
2. 構建模型架構:選擇適合的模型架構來搭建LLM模型,常見的架構包括Transformer、BERT等。
3. 模型預訓練:大模型首先在大量的無標簽數據上進行訓練,預訓練的最終目的是讓模型學習到語言的統計規律和一般知識。在這個過程中模型能夠學習到詞語的語義、句子的語法結構、以及文本的一般知識和上下文信息。需要注意的是,預訓練本質上是一個無監督學習過程;得到預訓練模型(Pretrained Model), 也被稱為基座模型(Base Model),模型具備通用的預測能力。如GLM-130B模 型、OpenAI的A、B、C、D四大模型,都是基座模型;
4. 微調:在微調階段,LLM使用特定的數據集進行訓練,以適應特定的任務或應用。這個階段通常使用遷移學習的方法,將預訓練的模型作為基礎,在特定任務上進行微調。
5. 模型評估:訓練完成后,需要對訓練得到的模型進行評估。評估的方式可以是計算模型在驗證集或測試集上的準確率、召回率等指標。同時,也可以對生成的文本進行人工評估,判斷模型生成的文本是否符合預期。
6. 模型部署和優化:訓練完成后,需要將模型進行部署,可以通過將模型封裝成API接口的形式提供給用戶使用。同時,也可以進行模型的優化,如模型壓縮、量化等,以提高模型的效率和性能。
????????需要注意的是,LLM大模型訓練的過程通常需要大量的計算資源和時間,并且在訓練過程中需要進行大規模的參數更新,因此需要有高效的訓練算法和計算平臺來支持。
六、Fine-Tuning
????????首先解釋一下什么是Prompt?
????????prompt顧名思義就是“提示”的意思,應該有人玩過你畫我猜這個游戲吧,對方根據一個詞語畫一幅畫,我們來猜他畫的是什么,因為有太多靈魂畫手了,畫風清奇,或者你們沒有心有靈犀,根本就不好猜啊!這時候屏幕上會出現一些提示詞比如3個字,水果,那豈不是好猜一點了嘛。
????????Fine-Tuning屬于一種遷移學習方式,在自然語言處理(NLP)中,Fine-Tuning是用于將預訓練的語言模型適應于特定任務或領域。Fine-Tuning的基本思想是采用已經在大量文本上進行訓練的預訓練語言模型,然后在小規模的任務特定文本上繼續訓練它.
?Fine-Tuning的目的是把模型適配到特定的任務上!
解決方法:Prompt-Tuning, 通過添加模板的方法來避免引入額外的參數,從而讓模型可以在小樣本(few-shot)或者零樣本(zero-shot)場景下達到理想的效果 。
七、Prompt-Tuning
????????Prompt-Tuning方法是一種用于改進語言模型的訓練方法,是由谷歌提出的一種輕量級的優化方法。在語言模型中,Prompt是一個前綴文本,用于指導生成的文本內容。Prompt-Tuning方法通過對Prompt進行優化,使其能夠更好地引導模型生成符合預期的文本。
????????基于Fine-Tuning的方法是讓預訓練模型去遷就下游任務,而基于Prompt-Tuning的方法可以讓下游任務去遷就預訓練模型, 其目的是將Fine-tuning的下游任務目標轉換為Pre-training的任務.
????????傳統的語言模型訓練方法通常使用大量的無標簽文本來預訓練模型,然后使用有標簽數據進行微調。然而,這種方法存在一些問題,例如模型生成的文本可能缺乏準確性和一致性。Prompt-Tuning方法通過添加或調整Prompt,可以更精確地指導模型生成特定類型的文本。具體來說,Prompt-Tuning方法有以下幾個步驟:
1. 創建Prompt:根據任務需求,設計一個能夠引導生成文本的Prompt。Prompt可以是一個簡單的問題、一句話的描述、或者一段指令等。
2. 選擇優化策略:根據不同的優化目標,選擇適當的優化策略。常見的策略包括Prompt Engineering、Prompt Language Modeling、Prompt Optimization等。
3. 優化Prompt:根據選擇的優化策略,在訓練數據中對Prompt進行優化。這可以包括通過梯度下降方法調整Prompt的權重,或者通過生成和篩選多個Prompt進行優選。
4. 微調模型:使用優化后的Prompt和有標簽數據對模型進行微調,以便模型能夠更好地生成符合Prompt要求的文本。
????????通過使用Prompt-Tuning方法,可以提高語言模型生成文本的準確性和一致性,并且能夠更好地指導模型生成特定類型的文本,適用于各種任務,例如機器翻譯、對話系統、摘要生成等。
八、超大規模參數模型Prompt-Tuning方法
????????近兩年來,隨著Prompt-Tuning技術的發展,對于超過10億參數量的模型來說,Prompt-Tuning所帶來的增益遠遠高于標準的Fine-tuning. 如GPT-3模型, 只需要設計合適的模板或指令即可以實現免參數訓練的零樣本學習.
????????根本原因:模型參數量足夠大,訓練過程中使用了 足夠多的語料,同時設計的 預訓練任務足夠有效.
????????該方法在參數規模非常大的模型微調時效果很好,當參數規模達到 100億時和全量微調效果一致。
????????面向超大規模的模型的Prompt-Tuning方法有三種:
????????1.上下文學習 In-Context Learning :直接挑選少量的訓練樣本作為該任務的提示.。
????????2.指令學習 Instruction- Tuning :構建任務指令集,促使模型根據任務指令做出反饋。
????????3.思維鏈Chain-of-Thought :給予或激發模型具有推理和解釋的信息,通過線性鏈式的模式指導模型生成合理的結果。
8.1上下文學習 In-Context Learning
????????In-Context learning(ICL)最早在GPT3中提出, 旨在從訓練集中挑選少量的標注樣本,設計任務相關的指令形成提示模板,用于指導測試樣本生成相應的結果,有以下三種學習方式。
8.2.指令學習 Instruction- Tuning
????????其實Prompt-Tuning本質上是對下游任務的指令,簡單的來說:就是告訴模型需要做什么任務,輸出什么內容. 上文我們提及到的離散或連續的模板,本質上就是一種對任務的提示.
????????因此, 在對大規模模型進行微調時, 可以為各種類型的任務定義更明顯的指令, 并進行訓練,來提高模型對不同任務的泛化能力.
舉個例子:
????????指令學習和Prompt的區別是什么?
????????指令學習激發語言模型的理解能力;指令學習激發語言模型的補全能力.
8.3?思維鏈Chain-of-Thought
????????思維鏈方法的核心思想是將思考的過程及其相關的觀念和想法串聯起來,形成一個連續的思維鏈條。這種鏈條可以由線性或非線性的思維過程構成,從而幫助模型不斷延伸和擴展思考。相比于之前傳統的上下文學習(即通過x1,y1,x2 ,y2 ,....xtest作為輸入來讓大模型補全輸出ytest),思維鏈多了中間的推導提示.
九、Prefix-Tuning
????????2021年斯坦福大學論文《Prefix-Tuning: Optimizing Continuous Prompts for Generation》中提出了PrefixTuning 方法,該方法是在輸入 token 之前構造一段任務相關的 virtual tokens 作為Prefix,然后訓練的時候只更新 Prefix 部分的參數,而 Transformer 中的其他部分參數固定.
????????原理簡述:在原始模型基礎上,增加一個可被訓練的Embedding 層,用于給提示詞增加前綴進行信息過濾,從而讓模型更好的理解提示詞意圖, 并在訓練過程中不斷優化這些參數;
? ? ? ? 優點:Prefix Tuning既能夠在模型結構上增加一些新的靈活性,又能夠在模型使用上提供一種自動的、能夠改進模型表現的提示機制;
十、LoRA
????????低秩適應(Low-Rank Adaptation,LoRA)是一種參數高效的微調技術,LoRA是最早由微軟研究院發布的一項微調技術; 其核心思想是對大型模型的權重矩陣進行隱式的低秩轉換,也就是:通過一個較低維度的表示來近似表示一個高維矩陣或數據集。
LoRA 原理:
????????LoRA技術凍結預訓練模型的權重,并在每個Transformer塊中注入可訓練層(稱為秩分解矩陣),即在模型的Linear層的旁邊增加一個“旁支”A和B。其中,A將數據從d維降到r維,這個r是LoRA的秩,是一個重要的超參數;B將數據從r維升到d維,B部分的參數初始為0。模型訓練結束后,需要將A+B部分的參數與原大模型的參數合并在一起使用。
????????簡而言之:基于大模型的內在低秩特性,LoRA通過在模型的權重矩陣中添加一個低秩矩陣來實現微調。這個低秩矩陣可以看作是對原始權重矩陣的一個小的調整,它不會顯著改變模型的參數規模,但可以有效地捕捉到特定任務的特征。
點個收藏,持續更新中。。。