大语言模型 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.mzph.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;成为撬动年轻消费市场的潜力工具。…