大语言模型 07 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机训练 预训练 监督微调

news2025/5/20 21:55:02

写在前面

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.coloradmin.cn/o/2380268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[免费]苍穹微信小程序外卖点餐系统修改版(跑腿点餐系统)(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】苍穹微信小程序外卖点餐系统修改版(跑腿点餐系统)(SpringBoot后端Vue管理端) Java毕业设计…

【RAG】RAG-MCP:基于检索增强生成来缓解大语言模型工具选择中的提示膨胀问题

摘要 由于提示膨胀和选择复杂性&#xff0c;大型语言模型 (LLM) 难以有效利用越来越多的外部工具&#xff0c;例如模型上下文协议 (MCP)[1]中定义的那些工具。 我们引入了 RAG-MCP&#xff0c;这是一个检索增强生成框架&#xff0c;通过卸载工具发现来克服这一挑战。 RAG-MCP …

甘特图工具怎么选?免费/付费项目管理工具对比测评(2025最新版)

2025年甘特图工具的全面指南 在项目管理领域&#xff0c;甘特图作为最直观的任务规划和进度追踪工具&#xff0c;已成为团队协作和项目执行的核心手段。随着数字化技术的快速发展&#xff0c;2025年的甘特图工具市场呈现出前所未有的多元化和智能化趋势。从开源软件到云端协作…

AIGC与数字金融:人工智能金融创新的新纪元

AIGC与数字金融&#xff1a;人工智能金融创新的新纪元 引言 人工智能生成内容&#xff08;AIGC&#xff09;在数字金融领域发挥着关键作用&#xff0c;从金融内容生成到智能风控&#xff0c;从个性化服务到投资决策&#xff0c;AIGC正在重塑金融的方式和效果。本文将深入探讨A…

手机怎么查看网络ip地址?安卓/iOS设备查询指南

在移动互联网时代&#xff0c;IP地址作为设备的网络身份证&#xff0c;无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法&#xff0c;帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…

无损耗协议:PROFINET和EtherNet IP网关的高效安装指南

作为风力发电机组监控系统的重要组成部分&#xff0c;PROFINET和EtherNet/IP协议转换网关倍讯BX-606-EIP的安装至关重要。作为安装工,我们要确保网关安装的高效顺利,保证风力发电机组的稳定运行。 首先,我们需要仔细检查网关的硬件接口,确保所有连接线缆与设备端口相匹配。网关…

【知识产权出版社-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

基于OAuth2+SpringSecurity+Jwt实现身份认证和权限管理后端服务

1、简介 本文讲述了如何实现简易的后端鉴权服务。所谓“鉴权”&#xff0c;就是“身份鉴定”“权限判断”。涉及的技术有&#xff1a;OAuth2、SpringSecurity、Jwt、过滤器、拦截器。OAuth2用于授权&#xff0c;使用Jwt签发Access Token和Refresh Token&#xff0c;并管理token…

liunx定时任务,centos定时任务

yum install cronie crontabs -y直接运行 crond -n 在前台运行 crond -i 守护进程在没有inotify支持的情况下运行systemctl service crond start # 启动服务 systemctl enable crond.service # 设置开机自启 sudo systemctl restart crond # 重启 cron 服务systemctl serv…

三种嵌入式开发常用的组网方式

一、三种嵌入式开发常用的组网方式 这里记录了三种嵌入式开发常用的网络环境&#xff0c;最终目标也就是让开发板、虚拟机、物理机在同一个局域网下。一般的网络环境下都非常容易实现&#xff0c;但是对于学生校园网可得想些法子了&#xff0c;因为校园网一般会有设备连接数限…

ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案

ping baidu.coom可以通&#xff0c;ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址&#xff0c;记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6&#xff0c;eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…

城市排水管网流量监测系统解决方案

一、方案背景 随着工业的不断发展和城市人口的急剧增加&#xff0c;工业废水和城市污水的排放量也大量增加。目前&#xff0c;我国已成为世界上污水排放量大、增加速度快的国家之一。然而&#xff0c;总体而言污水处理能力较低&#xff0c;有相当部分未经处理的污水直接或间接排…

Ubuntu Desktop QEMU/KVM中使用Ubuntu Server 22.04配置k8s集群

Ubuntu Desktop QEMU/KVM中使用Ubuntu Server 22.04配置k8s集群 1.本机部署个代理 这里我是自己用dockersing-box 部署的 http://192.168.2.105:10808 如果 用v2rayN等软件部署的&#xff0c;记得开启局域网共享 2.安装虚拟机 我本机使用的是Ubuntu Desktop ,这里在QEMU/K…

YOLOv8 在单片机上的几种部署方案

YOLOv8 在单片机上的部署方案 单片机资源&#xff08;如内存、计算能力&#xff09;有限&#xff0c;直接部署完整的 YOLOv8 模型并不现实。不过&#xff0c;我们可以通过模型量化、优化和使用轻量级框架来实现简化版的目标检测。下面为你介绍几种可行的方案&#xff1a; 方案…

后端框架(1):Mybatis

什么是框架&#xff1f; 盖高楼&#xff0c;框架结构。 框架结构就是高楼的主体&#xff0c;基础功能。 把很多基础功能已经实现了(封装了)。 在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率。 mybatis&#xff1a;对jd…

linux下tcp/ip网络通信笔记1,

本文章主要为博主在学习网络通信的笔记一个Udp_echo_server,和client的代码实现 1&#xff0c;网络发展&#xff0c;网络协议&#xff0c;意识到网络通信——不同主机的进程间通信&#xff0c; 2&#xff0c;学习如何在应用层调用系统提供的接口进行通信&#xff0c;echo_Udp…

语音识别——声纹识别

通过将说话人的声音与数据库中的记录声音进行比对&#xff0c;判断说话人是否为数据库白名单中的同一人&#xff0c;从而完成语音验证。目前&#xff0c;3D-Speaker 声纹验证的效果较为出色。 3D-Speaker 是一个开源工具包&#xff0c;可用于单模态和多模态的说话人验证、说话…

window 显示驱动开发-报告图形内存(三)

图形内存报告示例 示例 1&#xff1a;笔记本电脑上的 128 MB 专用板载图形内存 以下屏幕截图显示了使用 Intel Iris 离散图形适配器运行 Windows 11 的 Surface 笔记本电脑的计算图形内存数。 适配器的可用内存总数为 16424 MB&#xff0c;用于图形用途&#xff0c;细分如下&…

UE5 GAS框架解析内部数据处理机制——服务器与客户端

当&#xff0c; gas通过点击鼠标光标触发事件时&#xff0c;内部的处理机制。 当通过点击事件&#xff0c;命中中目标时&#xff0c; 可获取到对应的TargetData 目标数据。处理相应的操作。 仅有本地的客户端的情况下。命中并不会有什么异常。 当存在服务器时&#xff0c; 服…

开源GPU架构RISC-V VCIX的深度学习潜力测试:从RTL仿真到MNIST实战

点击 “AladdinEdu&#xff0c;同学们用得起的【H卡】算力平台”&#xff0c;H卡级别算力&#xff0c;按量计费&#xff0c;灵活弹性&#xff0c;顶级配置&#xff0c;学生专属优惠。 一、开篇&#xff1a;AI芯片架构演变的三重挑战 &#xff08;引述TPUv4采用RISC-V的行业案…