大語言模型 12 - 從0開始訓練GPT 0.25B參數量 MiniMind2 補充 訓練開銷 訓練步驟 知識蒸餾 LoRA等

寫在前面

GPT(Generative Pre-trained Transformer)是目前最廣泛應用的大語言模型架構之一,其強大的自然語言理解與生成能力背后,是一個龐大而精細的訓練流程。本文將從宏觀到微觀,系統講解GPT的訓練過程,包括數據收集、預處理、模型設計、訓練策略、優化技巧以及后訓練階段(微調、對齊)等環節。

我們將先對 GPT 的訓練方案進行一個簡述,接著我們將借助 MiniMind 的項目,來完成我們自己的 GPT 的訓練。

訓練階段概覽

GPT 的訓練過程大致分為以下幾個階段:

  • 數據準備(Data Preparation)
  • 預訓練(Pretraining)
  • 指令微調(Instruction Tuning)
  • 對齊階段(Alignment via RLHF 或 DPO)
  • 推理部署(Inference & Serving)

在這里插入圖片描述

項目經驗

訓練開銷

● 時間單位:小時 (h)。
● 成本單位:人民幣 (¥);7¥ ≈ 1美元。
● 3090 租卡單價:≈1.3¥/h(可自行參考實時市價)。
● 參考標準:表格僅實測 pretrain 和 sft_mini_512 兩個數據集的訓練時間,其它耗時根據數據集大小估算(可能存在些許出入)。

作者對于成本的計算如下:
在這里插入圖片描述

這是作者進行測試的結果:
在這里插入圖片描述

?僅價值3塊錢成本的MiniMind-Zero并不是噱頭!Chat測試:
👶: 請介紹一下自己。
🤖?: 作為人工智能,我沒有實際的生活,也沒有自我意識,所以沒有自己的生活。我被設計成能夠幫助用戶解答問題、提供信息、進行對話等。我的設計和功能是由計算機科學、機器學習、人工智能技術和算法所構建的,我通過編程和算法實現。

👶: 推薦一些杭州的特色美食吧。
🤖?: 杭州有很多美味的特色美食,比如雞肉串、鰻魚頭、水煮魚、豆腐腦等。這些美食都非常美味,有著獨特的風味和口感,絕對是值得一試的美食。

👶: 請為我講解“大語言模型”這個概念。
🤖?: 大語言模型是一種人工智能技術,它使用大量的文本數據來訓練模型,然后在不斷的迭代中不斷優化模型。它的目標是根據輸入的數據來生成符合特定需求的文本,這些文本可以是任何你感興趣的主題。

👶: Introduce the history of the United States, please.
🤖?: 您提到的“Introok’s the believeations of theument." 這個名字來源于中國古代的"groty of of the change."

極速且初具效果,甚至仍然可以進一步壓縮獲取更小更優質的訓練數據。 Zero模型權重保存為 full_sft_512_zero.pth(見下文MiniMind模型文件鏈接),如有興趣可下載檢驗此模型效果。

主要訓練步驟

預訓練(Pretrain)

LLM首先要學習的并非直接與人交流,而是讓網絡參數中充滿知識的墨水,“墨水” 理論上喝的越飽越好,產生大量的對世界的知識積累。 預訓練就是讓Model先埋頭苦學大量基本的知識,例如從Wiki百科、新聞、書籍整理大規模的高質量訓練數據。 這個過程是“無監督”的,即人類不需要在過程中做任何“有監督”的校正,而是由模型自己從大量文本中總結規律學習知識點。 模型此階段目的只有一個:學會詞語接龍。例如我們輸入“秦始皇”四個字,它可以接龍“是中國的第一位皇帝”。

有監督微調(Supervised Fine-Tuning)

經過預訓練,LLM此時已經掌握了大量知識,然而此時它只會無腦地詞語接龍,還不會與人聊天。 SFT階段就需要把半成品LLM施加一個自定義的聊天模板進行微調。 例如模型遇到這樣的模板【問題->回答,問題->回答】后不再無腦接龍,而是意識到這是一段完整的對話結束。 稱這個過程為指令微調,就如同讓已經學富五車的「牛頓」先生適應21世紀智能手機的聊天習慣,學習屏幕左側是對方消息,右側是本人消息這個規律。 在訓練時,MiniMind的指令和回答長度被截斷在512,是為了節省顯存空間。就像我們學習時,會先從短的文章開始,當學會寫作200字作文后,800字文章也可以手到擒來。 在需要長度拓展時,只需要準備少量的2k/4k/8k長度對話數據進行進一步微調即可(此時最好配合RoPE-NTK的基準差值)。

其它訓練步驟

人類反饋強化學習(Reinforcement Learning from Human Feedback, RLHF)

在前面的訓練步驟中,模型已經具備了基本的對話能力,但是這樣的能力完全基于單詞接龍,缺少正反樣例的激勵。 模型此時尚未知什么回答是好的,什么是差的。我們希望它能夠更符合人的偏好,降低讓人類不滿意答案的產生概率。 這個過程就像是讓模型參加新的培訓,從優秀員工的作為例子,消極員工作為反例,學習如何更好地回復。
此處使用的是RLHF系列之-直接偏好優化(Direct Preference Optimization, DPO)。 與PPO(Proximal Policy Optimization)這種需要獎勵模型、價值模型的RL算法不同; DPO通過推導PPO獎勵模型的顯式解,把在線獎勵模型換成離線數據,Ref模型輸出可以提前保存。 DPO性能幾乎不變,只用跑 actor_model 和 ref_model 兩個模型,大大節省顯存開銷和增加訓練穩定性。

PS:RLHF訓練步驟并非必須,此步驟難以提升模型“智力”而通常僅用于提升模型的“禮貌”,有利(符合偏好、減少有害內容)也有弊(樣本收集昂貴、反饋偏差、多樣性損失)。

知識蒸餾(Knowledge Distillation, KD)

在前面的所有訓練步驟中,模型已經完全具備了基本能力,通常可以學成出師了。 而知識蒸餾可以進一步優化模型的性能和效率,所謂知識蒸餾,即學生模型面向教師模型學習。 教師模型通常是經過充分訓練的大模型,具有較高的準確性和泛化能力。 學生模型是一個較小的模型,目標是學習教師模型的行為,而不是直接從原始數據中學習。

在SFT學習中,模型的目標是擬合詞Token分類硬標簽(hard labels),即真實的類別標簽(如 0 或 6400)。 在知識蒸餾中,教師模型的softmax概率分布被用作軟標簽(soft labels)。小模型僅學習軟標簽,并使用KL-Loss來優化模型的參數。

通俗地說,SFT直接學習老師給的解題答案。而KD過程相當于“打開”老師聰明的大腦,盡可能地模仿老師“大腦”思考問題的神經元狀態。
例如,當老師模型計算1+1=2這個問題的時候,最后一層神經元a狀態為0,神經元b狀態為100,神經元c狀態為-99… 學生模型通過大量數據,學習教師模型大腦內部的運轉規律。

這個過程即稱之為:知識蒸餾。 知識蒸餾的目的只有一個:讓小模型體積更小的同時效果更好。 然而隨著LLM誕生和發展,模型蒸餾一詞被廣泛濫用,從而產生了“白盒/黑盒”知識蒸餾兩個派別。
GPT-4這種閉源模型,由于無法獲取其內部結構,因此只能面向它所輸出的數據學習,這個過程稱之為黑盒蒸餾,也是大模型時代最普遍的做法。

黑盒蒸餾與SFT過程完全一致,只不過數據是從大模型的輸出收集,因此只需要準備數據并且進一步FT即可。 注意更改被加載的基礎模型為full_sft_*.pth,即基于微調模型做進一步的蒸餾學習。
./dataset/sft_1024.jsonl與./dataset/sft_2048.jsonl 均收集自qwen2.5-7/72B-Instruct大模型,可直接用于SFT以獲取Qwen的部分行為。

LoRA (Low-Rank Adaptation)

LoRA是一種高效的參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)方法,旨在通過低秩分解的方式對預訓練模型進行微調。 相比于全參數微調(Full Fine-Tuning),LoRA 只需要更新少量的參數。
LoRA 的核心思想是:在模型的權重矩陣中引入低秩分解,僅對低秩部分進行更新,而保持原始預訓練權重不變。 代碼可見./model/model_lora.py和train_lora.py,完全從0實現LoRA流程,不依賴第三方庫的封裝。

非常多的人困惑,如何使模型學會自己私有領域的知識?如何準備數據集?如何遷移通用領域模型打造垂域模型?
這里舉幾個例子,對于通用模型,醫學領域知識欠缺,可以嘗試在原有模型基礎上加入領域知識,以獲得更好的性能。
同時,我們通常不希望學會領域知識的同時損失原有基礎模型的其它能力,此時LoRA可以很好的改善這個問題。 只需要準備如下格式的對話數據集放置到./dataset/lora_xxx.jsonl,啟動 python train_lora.py 訓練即可得到./out/lora/lora_xxx.pth新模型權重。

后續我們放到下篇!

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

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

相關文章

SID 2025上的天馬,用“好屏”技術重構產業敘事

作為全球最具影響力的顯示行業盛會,SID國際顯示周不僅是技術比拼的舞臺,更是未來產業方向的風向標。SID 2025上的技術密度與產業動態,再一次驗證了這一定律。 Micro-LED、柔性OLED、裸眼3D、量子點、透明顯示等新技術在SID 2025集中亮相&…

【AI News | 20250520】每日AI進展

AI Repos 1、nanoDeepResearch nanoDeepResearch 是一個受 ByteDance 的 DeerFlow 項目啟發,旨在從零開始構建深度研究代理的后端項目。它不依賴 LangGraph 等現有框架,通過實現一個 ReAct 代理和狀態機來模擬 Deep Research 的工作流程。項目主要包含規…

釘釘開發之AI消息和卡片交互開發文檔收集

AI消息和卡片交互開發文檔 智能交互接口能力介紹 AI助理發消息(主動直接發送模式 AI 助理發消息 - 主動發送模式 AI 助理發消息 - 回復消息模式 AI 助理發消息 - Webhook 回復消息模式 Stream 模式響應卡片回傳請求事件 upload-media-files AI 助理發消息&a…

Redis中的事務和原子性

在 Redis 中,事務 和 原子性 是兩個關鍵概念,用于保證多個操作的一致性和可靠性。以下是 Redisson 和 Spring Data Redis 在處理原子性操作時的區別與對比: 1. Redis 的原子性機制 Redis 本身通過以下方式保證原子性: 單線程模型…

Apollo10.0學習——planning模塊(8)之scenario、Stage插件詳解二

scenario插件 插件總覽插件ValetParkingScenario階段一:StageApproachingParkingSpotprocess()方法 階段二:StageParkingprocess()方法FinishStage方法 插件PullOverScenarioIsTransferable: 場景切入條件 代碼邏輯階段一:PullOverStageAppro…

JVM的面試相關問題

面試中的相關問題主要是三塊 1.JVM 內存區域劃分 2.JVM 的類加載機制 3.JVM 的垃圾回收機制 JVM Java虛擬機 VM Virtual Machine 虛擬機,用 軟件 來 模擬 硬件 傳統意義上的"虛擬機" 更多指的是 VMWare, Virtual Box, Hyper-V, KVM(構造出虛擬的電腦,甚至可以…

win10使用nginx做簡單負載均衡測試

一、首先安裝Nginx: 官網鏈接:https://nginx.org/en/download.html 下載完成后,在本地文件中解壓。 解壓完成之后,打開conf --> nginx.config 文件 1、在 http 里面加入以下代碼 upstream GY{#Nginx是如何實現負載均衡的&a…

[特殊字符]車牌識別相機,到底用在哪?

停車場管理,快速通行不是夢 停車場大概是車牌識別相機最常見的 “工作崗位” 啦!以前進出停車場,取卡、刷卡、人工收費,一系列操作下來,高峰期的時候真的能把人等得不耐煩😫 現在有了車牌識別相機&#xff…

nosqlbooster pojie NoSQLBooster for MongoDB

測過可用,注意 asar的安裝使用報錯改用 npx asar extract app.asar app 路徑 C:\Users{computerName}\AppData\Local\Programs\nosqlbooster4mongo\resources npm install asar -g asar extract app.asar app 打開shared\lmCore.js 修改MAX_TRIAL_DAYS3000 修改…

組態王通過開疆智能profinet轉ModbusTCP網關連接西門子PLC配置案例

本案例是組態王通過使用開疆智能研發的Profinet轉ModbusTCP網關采集西門子1200PLC中數據的案例。 網關配置 首先來配置網關的參數,打開網關配置軟件“Gateway Configuration Studio” 由于組態王那側設定為ModbusTCP客戶端所以網關作為ModbusTCP服務器。新建項目…

大模型服務如何實現高并發與低延遲

寫在前面 大型語言模型(LLM)正以前所未有的速度滲透到各行各業,從智能客服、內容創作到代碼生成、企業知識庫,其應用場景日益豐富。然而,將這些強大的 AI 能力轉化為穩定、高效、可大規模應用的服務,卻面臨著巨大的挑戰,其中高并發處理能力和低響應延遲是衡量服務質量的…

k8s監控方案實踐補充(二):使用kube-state-metrics獲取資源狀態指標

k8s監控方案實踐補充(二):使用kube-state-metrics獲取資源狀態指標 文章目錄 k8s監控方案實踐補充(二):使用kube-state-metrics獲取資源狀態指標一、Metrics Server簡介二、kube-state-metrics實戰部署1. 創…

Manus 全面開放注冊,OpenAI 發布 Codex,ChatGPT 上線 GPT-4.1!| AI Weekly 5.12-18

📢本周 AI 快訊 | 1 分鐘速覽🚀 1?? 📝 Manus 全面開放注冊 :無需邀請碼即可注冊,新用戶免費獲得 1000 積分,每日 300 積分免費任務。 2?? 🔍 阿里 Qwen 推出「深入研究」 :Qw…

代理(主要是動態)和SpringAOP

代理 靜態代理基于繼承實現動態代理是基于接口實現 業務層每次實現轉賬都需要執行,可以把他們拿出來當成一個切面,自己寫出一個代理類,讓業務層只執行業務的邏輯,重復的代碼代理類來完成,然后調用代理類來執行。 代理類…

uniapp打包H5,輸入網址空白情況

由于客戶預算有限,最近寫了兩個uniapp打包成H5的案例,總結下面注意事項 1. 發行–網站-PCWeb或手機H5按鈕,輸入名稱,網址 點擊【發行】,生成文件 把這個給后端,就可以了 為什么空白呢 最重要一點&#xf…

uniapp-商城-63-后臺 商品列表(分類展示商品的刪除)

商品列表中的數據需要進行狀態管理,如上架、下架、刪除和修改等操作。對于存在錯誤或后期需要重新上傳的商品,可以通過刪除操作進行處理。 具體到商品刪除功能的實現,其基本流程如下:用戶在前端頁面點擊刪除按鈕后,系統…

學習設計模式《十》——代理模式

一、基礎概念 代理模式的本質【控制對象訪問】; 代理模式的定義:為其他對象提供一種代理以控制對這個對象的訪問; 代理模式的功能:代理模式是通過創建一個代理對象,用這個代理對象去代表真實的對象;客戶端得…

阿里云web端直播(前端部分)

阿里云&#xff1a;Web播放器快速接入_視頻點播(VOD)-阿里云幫助中心 import Aliplayer from aliyun-aliplayerimport aliyun-aliplayer/build/skins/default/aliplayer-min.css<div id"J_prismPlayer" style"width: 300px; height: 300px;" />var …

深入解析OrientDB:多模型數據庫的技術優勢與實際應用

OrientDB 是一款開源的多模型 NoSQL 數據庫&#xff0c;融合了文檔數據庫、圖數據庫和對象數據庫的特性。它不僅支持靈活的數據建模&#xff0c;還提供了高性能的查詢能力&#xff0c;適用于社交網絡、物聯網、內容管理等場景。本文詳細探討 OrientDB 的核心特性、應用場景&…

STM32控制電機

初始化時鐘&#xff1a;在 STM32 的程序中&#xff0c;初始化系統時鐘&#xff0c;一般會使用 RCC&#xff08;Reset and Clock Control&#xff09;相關函數來配置時鐘。例如&#xff0c;對于 STM32F103 系列&#xff0c;可能會使用 RCC_APB2PeriphClockCmd 函數來使能 GPIO 和…