大語言模型 07 - 從0開始訓練GPT 0.25B參數量 - MiniMind 實機訓練 預訓練 監督微調

寫在前面

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

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

在這里插入圖片描述

訓練階段概覽

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

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

數據收集與預處理

  • 數據來源:收集海量文本(書籍、網頁、新聞、百科、代碼等),例如GPT-3使用了近45TB的原始文本。
  • 數據清洗:去除噪聲(HTML標簽、重復文本、低質量內容)。過濾敏感或有害信息。
  • 分詞(Tokenization):使用子詞分詞方法(如Byte Pair Encoding, BPE)將文本切分為Token(例如GPT-3的詞表大小約5萬)。將文本分割為固定長度的序列(如512個Token的段落)。

無監督學習:無需人工標注,直接從原始文本學習。

  • 規模化(Scaling Law):模型性能隨數據量、參數規模、計算資源的增加而顯著提升。
  • 通用性:捕捉語法、語義、常識等廣泛知識。

單卡訓練

預訓練

執行預訓練,得到 pretrain_.pth 作為預訓練的輸出權重(其中為模型的dimension,默認為512)

cd ..
python train_pretrain.py

執行后對應的輸出如下所示:LLM總參數量:25.830 百萬
在這里插入圖片描述
預估50分鐘訓練完畢,耐心等待即可:

在這里插入圖片描述

監督微調

執行監督微調,得到 full_sft_*.pth 作為指令微調的輸出權重(其中full即為全參數微調)

python train_full_sft.py

PS:項目官方提示:所有訓練過程默認每隔100步保存1次參數到文件./out/***.pth(每次會覆蓋掉舊權重文件)。

執行后輸出的內容如下所示:
在這里插入圖片描述

GPU狀態

查看GPU的運行情況,可以看到已經開始工作了。

nvidia-smi

對應的結果如下所示:
在這里插入圖片描述

測試結果

更多詳細的內容請查看:eval_model.py
model_name有如下內容:
● 0: 預訓練模型
● 1: SFT-Chat模型
● 2: RLHF-Chat模型
● 3: Reason模型

預訓練

默認為0:測試pretrain模型效果,設置為1:測試full_sft模型效果

python eval_model.py --model_mode 0

進行自動測試:
在這里插入圖片描述
后續的輸出內容:
在這里插入圖片描述
可以看到已經可以正常的輸出內容了。

SFT

基本介紹

SFT 是指在已有的大規模預訓練語言模型(如 GPT、LLaMA 等)基礎上,使用人工標注的數據集進行監督學習,從而進一步提升模型在特定任務上的表現。

  • 類比:如果預訓練是讓模型學“語言的全部潛規則”,那么 SFT 就是“讓模型知道應該怎么說話更像人、怎么更好地完成任務”。

SFT 的主要作用

  • 強化任務能力:教會模型完成具體任務,如問答、總結、翻譯、代碼生成等。
  • 對齊人類意圖:通過人工標注的數據,幫助模型“更聽話”,符合人類期望。
  • 打基礎為后續對齊做準備:是 RLHF(強化學習人類反饋)前的必要步驟。

原理與流程

SFT 采用指令微調(Instruction tuning),輸入和輸出通常是:

Input(Prompt): 請你幫我寫一篇關于人工智能的作文。
Output(Response): 當然可以,以下是關于人工智能的作文……

數據格式

一般是 JSON 或 JSONL 格式,結構如下:

{"instruction": "請將以下文本翻譯成英文:我喜歡跑步。","input": "","output": "I like running."
}
{"prompt": "<|user|> 請幫我寫一篇春節的作文 <|assistant|> 好的,以下是春節的作文……"
}

模型訓練方式

  • 凍結大部分參數 or 全參數微調。
  • 使用 交叉熵損失函數(Cross Entropy Loss):讓模型輸出盡可能接近標注的“輸出”。
  • 可選擇 低秩適配(LoRA) 等高效微調技術以節省顯存。

為什么SFT很關鍵?

讓大模型變聰明的第一步;

  • 讓 AI 更能聽懂人話的根基;
  • 產業應用最常使用的訓練階段之一,比如微調成客服、寫作助手、代碼助手等。

監督微調

默認為0:測試pretrain模型效果,設置為1:測試full_sft模型效果

python eval_model.py --model_mode 1

對應的內容如下所示:
在這里插入圖片描述
可以看到經過 SFT,整個回答效果質量獲得了很大的提升!

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

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

相關文章

【Android】從Choreographer到UI渲染(二)

【Android】從Choreographer到UI渲染&#xff08;二&#xff09; Google 在 2012 年推出的 Project Butter&#xff08;黃油計劃&#xff09;是 Android 系統發展史上的重要里程碑&#xff0c;旨在解決長期存在的 UI 卡頓、響應延遲等問題&#xff0c;提升用戶體驗。 在 Androi…

mvc-ioc實現

IOC 1&#xff09;耦合/依賴 依賴&#xff0c;是誰離不開誰 就比如上訴的Controller層必須依賴于Service層&#xff0c;Service層依賴于Dao 在軟件系統中&#xff0c;層與層之間存在依賴。我們稱之為耦合 我們系統架構或者設計的一個原則是&#xff…

MATLAB安裝常見問題解決方案

目前新版本的matlab安裝往往需要十幾G的本地安裝容量&#xff0c;例如matlab2022b、matlab2023b, 首先就是要保證本地硬盤空間足夠大&#xff0c;如果沒有足夠的本地內存空間&#xff0c;那么可以嘗試釋放本地硬盤空間&#xff0c;或者安裝所需內存空間較小的舊版本的matlab&am…

程序代碼篇---python獲取http界面上按鈕或者數據輸入

文章目錄 前言 前言 本文簡單接受了python獲取http界面上按鈕或者數據輸入

深入理解 Cortex-M3 特殊寄存器

在上一篇文章中分享了 Cortex-M3 內核寄存器組的相關知識&#xff0c;實際上除了內核寄存器組外&#xff0c;CM3 處理器中還存在多個特殊寄存器&#xff0c;它們分別為 程序狀態寄存器&#xff0c;中斷/異常屏蔽寄存器 和 控制寄存器。 需要注意的是&#xff0c;特殊寄存器未經…

標準庫、HAl庫和LL庫(PC13初始化)

標準庫 (Standard Peripheral Library) c #include "stm32f10x.h"void GPIO_Init_PC13(void) {GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStruct.GPIO_Pin GPIO_Pin_13;GPIO_InitStruct.GPIO_Mode GPIO_…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序的低集中度市場運營策略研究

摘要&#xff1a;本文聚焦于行業市場集中度問題&#xff0c;探討在低集中度市場中&#xff0c;如何利用開源鏈動21模式AI智能名片S2B2C商城小程序開展有效運營。分析了高集中度市場的競爭劣勢&#xff0c;闡述了開源鏈動21模式、AI智能名片以及S2B2C商城小程序的功能特點及其在…

一文讀懂-嵌入式Ubuntu平臺

現在直接在一些嵌入式Soc上移植ubuntu來用到產品上&#xff0c;剛開始感覺還挺臃腫的&#xff0c;后來細聊了下感覺還是有一定的優勢。 ubuntu相信大家在熟悉不過了&#xff0c;幾乎無處不在&#xff0c;小到咖啡機&#xff0c;大到火星車&#xff0c;為什么ubuntu如此廣泛&am…

箭頭函數及其與普通函數區別的詳細解釋

一、箭頭函數的基本特性 語法簡潔性 箭頭函數使用 > 符號定義&#xff0c;省略 function 關鍵字&#xff0c;適合快速定義匿名函數或簡單表達式。 // 普通函數 function sum(a, b) { return a b; } // 箭頭函數 const sum (a, b) > a b;若函數體為單行表達式&#x…

el-scrollbar 獲取滾動條高度 并將滾動條保持在低端

首先我們用ref綁定一個 scrollbar <el-scrollbar style"height: 100%;" ref"chatScrollRef" scroll"scrollTest">用scroll觸發滾動事件&#xff0c;一路滾到最底下&#xff0c;觀察三個屬性 const scrollTest ({scrollTop}) > {conso…

MyBatis-Plus 的 updateById 方法不更新 null 值屬性的問題

項目場景&#xff1a; 使用Mybatis-plus的updateById去更新實體類的時候&#xff0c;如果設置實體類中的某個字段為null&#xff0c;會導致為null的字段不做更新操作 問題描述 updateById方法 不會更新null值 解決方案&#xff1a; 在字段上加上 TableField(updateStrategy …

STC89C52單片機模擬實現洗衣機控制 Proteus仿真

用直流電機轉動模擬洗衣機。要求有弱洗、普通洗、強洗三種模式,可通過按鍵選擇相應模式。要求能夠設置洗衣時長,可以通過按鍵選擇15、30、45、60、90分鐘。定時結束時蜂鳴器報警提示。LCD顯示相關信息。 基本功能描述用單片機模擬實現洗衣機控制。用直流電機轉動模擬洗衣機運…

游戲引擎學習第290天:完成分離渲染

game_sim_region.cpp&#xff1a;在BeginSim中移除EntityOverlapsRectangle調用 現在我們接近一個關鍵點&#xff0c;雖然還沒完全結束&#xff0c;但我們已經把所有東西遷移到了一個新概念上——即那些臨時創建的控制器結構&#xff0c;稱為“腦”&#xff08;brains&#xf…

JavaScript性能優化實戰(12):大型應用性能優化實戰案例

在前面的系列文章中,我們探討了各種JavaScript性能優化技術和策略。本篇將聚焦于實際的大型應用場景,通過真實案例展示如何綜合運用這些技術,解決復雜應用中的性能挑戰。 目錄 電商平臺首屏加載優化全流程復雜數據可視化應用性能優化案例在線協作工具的實時響應優化移動端W…

Linux 安裝 Unreal Engine

需要對在unreal engine官網進行綁定github賬號&#xff0c;然后到unreal engine github倉庫中進行下載對應的版本&#xff0c;并進行安裝unreal engine官網 github地址

2.2.4

import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score import joblib from xgboost import XGBRegressor # 加載數據集 file_path 大學…

使用IDEA創建Maven版本的web項目以及lombok的使用

1.新建項目 2.修改pom.xml 3.修改項目結構 4.在main/java下面寫一個Servlet測試一下 然后當前頁面往下滑 -Dfile.encodingUTF-8編寫一句輸出語句&#xff0c;測試是否成功部署配置&#xff0c;并選擇到正確的位置&#xff1a; 回車以后 再回到idea里面&#xff0c;發現控…

【數據結構】1-3 算法的時間復雜度

數據結構知識點合集&#xff1a;數據結構與算法 ? 知識點 ? 時間復雜度的定義 1、算法時間復雜度 事前預估算法時間開銷T(n)與問題規模 n 的關系&#xff08;T 表示 “time”&#xff09; 2、語句頻度 算法中語句的執行次數 對于以上算法&#xff0c;語句頻度&#xff1a;…

【Python 算法零基礎 3.遞推】

壓抑與痛苦&#xff0c;那些輾轉反側的夜&#xff0c;終會讓我們更加強大 —— 25.5.16 一、遞推的概念 遞推 —— 遞推最通俗的理解就是數列&#xff0c;遞推和數列的關系就好比 算法 和 數據結構 的關系&#xff0c;數列有點像數據結構中的線性表(可以是順序表&#xff0c;也…

淘寶扭蛋機系統開發前景分析:解鎖電商娛樂化新藍海

在電商行業競爭日益白熱化的當下&#xff0c;如何通過創新玩法提升用戶粘性、激活消費潛力&#xff0c;成為平臺突破增長瓶頸的關鍵。淘寶扭蛋機系統作為“電商娛樂”的跨界融合產物&#xff0c;正憑借其趣味性、隨機性和社交屬性&#xff0c;成為撬動年輕消費市場的潛力工具。…