一文搞懂LLM大模型!LLM從入門到精通萬字長文(2024.12月最新)

?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通過在模型的權重矩陣中添加一個低秩矩陣來實現微調。這個低秩矩陣可以看作是對原始權重矩陣的一個小的調整,它不會顯著改變模型的參數規模,但可以有效地捕捉到特定任務的特征。

點個收藏,持續更新中。。。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93559.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93559.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93559.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Next.js跟React關系(Next.js是基于React庫的全棧框架)(文件系統路由、服務端渲染SSR、靜態生成SSG、增量靜態再生ISR、API路由)

文章目錄**1. React 是基礎,Next.js 是擴展****2. Next.js 解決了 React 的哪些痛點?****3. 核心區別****4. Next.js 的核心特性**1. **文件系統路由**2. **服務端渲染(SSR)**3. **靜態生成(SSG)**4. **增量…

Nightingale源碼Linux進行跨平臺編譯

最近使用Nightingale 需要實現對服務的監測,想要在Windows 系統中使用,看官方文檔中并不直接提供執行程序,原文如下: 準備工作 本地環境 本地已經安裝git 本地安裝git 便于后續下載源碼并進行自動編譯。 Linux操作系統環境&…

抽絲剝繭丨PostgreSQL 系國產數據庫%SYS CPU newfstatat() high 調優一例(二)

續接上回《PostgreSQL 系國產數據庫%SYS CPU newfstatat() high 調優一例(一)》,這個問題還在持續,并且原因并不只是一個,從調了文件系統級atime,到調整wal size減少日志被動清理,還有在驗證tem…

【新手入門】Android Studio 項目結構拆解,快速理解文件作用!

目 錄 一、【Project】視圖下項目結構(真實目錄) 二、【Android】視圖下項目結構 三、【app/】下重要文件解析 1、 build.gradle 2、AndroidManifest.xml 3、res/ 作為剛剛接觸Android開發的小白,使用Android Studio創建項目后&…

Python實現點云Kmeans、歐式和DBSCAN聚類

本節我們分享點云處理中的三種常見聚類方法,分別是K-means、歐氏與 DBSCAN聚類。具體介紹如下:1. K-means 聚類定義:一種基于距離度量的無監督學習算法,將數據劃分為 K 個緊湊的簇,使簇內數據相似度高、簇間差異大。算…

【Java后端】MyBatis-Plus 原理解析

MyBatis-Plus 原理解析 其實 MyBatis-Plus 的 Service 層設計就是為了讓開發者不用重復寫很多樣板代碼。我們來一點點剖析 UserServiceImpl、IService、UserService、ServiceImpl 之間的關系和調用鏈。1. 類/接口關系圖IService<T>▲│UserService (接口) <-- 自定義…

Nacos 注冊中心學習筆記

&#x1f389; Alibaba微服務組件 Nacos 注冊中心超詳細學習筆記 &#x1f389; &#x1f4cc; 寫在前面&#xff1a;本文基于官方PDF文檔與實戰經驗&#xff0c;整理了Nacos注冊中心的核心知識點、部署流程與實戰技巧&#xff0c;力求圖文并茂、通俗易懂&#xff0c;適合收藏反…

java 策略模式 demo

策略模式介紹策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;將每個算法封裝起來并使它們可相互替換。策略模式讓算法的變化獨立于使用算法的客戶端&#xff0c;從而實現靈活的算法切換。核心角色&#xff1…

SAP Valuation Category在制造業成本核算中的使用場景與配置方案

Valuation Category在制造業成本核算中的使用場景與配置方案一、核心使用場景&#xff08;制造業特有&#xff09;1. 內制 vs 外購成本分離業務需求&#xff1a;同一物料可能通過內部生產&#xff08;成本含料工費&#xff09;或外部采購&#xff08;成本含采購價運費&#xff…

我的 LeetCode 日記:Day 36 - 動態規劃,背包問題的千變萬化

昨天&#xff0c;我初步掌握了 0/1 背包問題的理論基礎和標準解法。今天&#xff0c;我將這種思想應用到了更廣泛的場景中。今天的幾道題&#xff0c;乍一看和背包沒什么關系&#xff0c;但通過巧妙的數學轉化&#xff0c;它們的核心都變成了 0/1 背包問題。 這讓我深刻體會到…

本地處理不上傳!隱私安全的PDF轉換解決方案

PDF能鎖定排版、字體、圖片位置&#xff0c;無論在什么設備打開都保持一致。它是無廣告、簡潔高效的專業PDF處理工具。功能豐富&#xff0c;支持批量操作&#xff1a;只需將文件拖入界面&#xff0c;選擇目標格式&#xff08;如Word、PPT、Excel、圖片等&#xff09;&#xff0…

Docker build創建鏡像命令入門教程

一、核心概念Dockerfile 定義鏡像構建步驟的文本文件&#xff0c;包含一系列指令和配置&#xff0c;用于自動化創建鏡像。鏡像層&#xff08;Layer&#xff09; Docker 鏡像由多層只讀層疊加而成&#xff0c;每個指令&#xff08;如 RUN、COPY&#xff09;會生成一個新的層。層…

Redis 是單線程模型嗎?

最近在面試中經常被問到這個問題&#xff1a;"Redis是單線程的嗎&#xff1f;"很多同學都會脫口而出&#xff1a;"是的&#xff01;"但其實這個答案并不完全正確。今天我們就來聊聊Redis的線程模型&#xff0c;把這個問題徹底搞清楚。 先說結論 Redis的線程…

Hologres實戰:路徑分析函數

前言 Hologres提供了一套高效的路徑分析函數&#xff0c;包括路徑明細計算和結果解析功能&#xff0c;能夠幫助用戶深入理解用戶行為路徑&#xff0c;并通過桑基圖實現數據可視化。 一、核心功能 路徑明細計算&#xff1a;精確記錄用戶在產品或功能中的完整訪問路徑結果解析…

產品開發實踐(常見的軟硬結合方式)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】前面說過&#xff0c;傳統的純軟件開發&#xff0c;在國內的大背景下面是很難存活的。但是如果是把軟件&#xff0c;構建在硬件基礎之上&#xff0c…

Linux | i.MX6ULL網絡通信-套字節 UDP(第十八章)

01 Linux | i.MX6ULL網絡通信-套字節 TCP(第十七章) 02 iTOP-IMX6ULL 實現基于 UDP 的 socket 編程。

學習嵌入式第三十天

文章目錄進程和線程&#xff08;續&#xff09;線程1.線程傳參2.線程屬性3.線程間通信1.概念2.方式3.互斥鎖4.死鎖5.信號量習題 進程和線程&#xff08;續&#xff09; 線程 1.線程傳參使用第四個參數實現對線程內部的傳參 代碼實現&#xff1a; #include <stdio.h> #inc…

GaussDB 數據庫架構師修煉(十三)安全管理(3)-行級訪問控制

1 背景行級訪問控制特性將數據庫的訪問控制精確到數據表行級別 &#xff0c;只允許用戶查看 、更新或刪除特定的行數據。2 實例場景實例以醫生只能看到治療的病人&#xff0c;不能看其它醫生的病人為例&#xff1a;1)醫院病人的信息表pat_info&#xff1a;csdn> set search_…

Wi-Fi 與蜂窩網絡(手機網絡)的核心區別,以及 Wi-Fi 技術未來的發展方向

在日常生活中&#xff0c;我們既離不開家里的 Wi-Fi&#xff0c;也離不開手機的 4G/5G 網絡。它們都能把我們連接到互聯網&#xff0c;但底層的工作方式卻大不相同。一、設計初衷的不同Wi-Fi誕生于 1997 年的 IEEE 802.11 標準&#xff0c;定位是局域網無線替代。它的目標是讓電…

C++編程實戰:高效解決算法與數據結構問題

個人主頁 &#xff1a; zxctscl 專欄 【C】、 【C語言】、 【Linux】、 【數據結構】、 【算法】 如有轉載請先通知 題目1. 數字統計2. 兩個數組的交集3. 牛牛的快遞4. 點擊消除5. 最小花費爬樓梯6. 簡寫單詞1. 數字統計 BC153 數字統計 #include <iostream> using na…