大语言模型 06 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机配置 GPT训练基本流程概念

写在前面

GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,包括数据收集、预处理、模型设计、训练策略、优化技巧以及后训练阶段(微调、对齐)等环节。

我们将先对 GPT 的训练方案进行一个简述,接着我们将借助 MiniMind 的项目,来完成我们自己的 GPT 的训练。

训练阶段概览

GPT 的训练过程大致分为以下几个阶段:

  • 数据准备(Data Preparation)
  • 预训练(Pretraining)
  • 指令微调(Instruction Tuning)
  • 对齐阶段(Alignment via RLHF 或 DPO)
  • 推理部署(Inference & Serving)

数据准备阶段

数据来源

GPT模型的效果离不开海量数据支持,主要来源包括:

• 开源网络文本(如Common Crawl)

• 开放图书(如Project Gutenberg)

• 维基百科

• 编程数据(GitHub代码库等)

• 学术文献(如arXiv)

• 对话数据、问答数据(如StackExchange、Reddit)

为了提高模型质量,OpenAI 等机构通常会使用多阶段过滤系统对数据进行清洗与优选。

数据清洗与去重

  • 语言识别与筛选(仅保留英文/中文等目标语言)
  • 去除重复内容(MinHash、SimHash 等技术)
  • 垃圾内容过滤(色情、广告、错误文本)
  • 格式标准化(HTML解析、换行统一等)

Tokenization

使用 BPE(Byte Pair Encoding) 或 SentencePiece 对文本进行子词级别的编码,转为Token序列。例如

shell 复制代码
"unbelievable" → ["un", "believ", "able"]

预训练阶段(Pretraining)

模型结构

GPT是基于 Transformer解码器结构 构建的自回归模型。主要组件包括:

  • 多层 Transformer Block(如GPT-3使用96层)
  • 多头自注意力(Self-Attention)
  • 前馈网络(MLP)
  • LayerNorm、Residual连接

训练目标

使用 自回归语言建模目标(Causal Language Modeling, CLM):

给定前 n 个 token,预测第 n+1 个 token 的概率:

Loss = − ∑ t = 1 T log ⁡ P ( x t ∣ x < t ) \text{Loss} = -\sum_{t=1}^{T} \log P(x_t | x_{<t}) Loss=−t=1∑TlogP(xt∣x<t)

超参数与训练规模(以 GPT-3 为例)

  • 参数量:175B(即1750亿)
  • Batch Size:约3.2M tokens
  • 学习率:带warm-up + cosine decay
  • 训练轮数:通常为几轮完整数据遍历(epoch)
  • 训练时长:数周至数月
  • 硬件:高达数千块A100 GPU并行训练

优化器与技巧

  • AdamW 优化器
  • Mixed Precision(混合精度训练):FP16/FP8 提高训练效率
  • Gradient Accumulation:减少显存使用
  • ZeRO, Megatron, DeepSpeed:用于大规模分布式并行训练

指令微调(Instruction Tuning)

  • 目的:让模型更好地理解人类意图与任务指令。
  • 方法:引入人工构造的 指令数据集(如 self-instruct, FLAN, open-instruct),训练模型执行命令式语言。

PS:微调通常使用较小的 Batch Size 和较低学习率,避免遗忘原始语言能力。

举个例子:

shell 复制代码
指令:请总结这段文本的重点。
输入:......
输出:......

对齐阶段(Alignment)

为了使模型行为更加符合人类期望,还需要额外"对齐"步骤。

RLHF(Reinforcement Learning with Human Feedback)

流程:

  • 使用多个模型输出 → 人类打分排序(偏好数据)
  • 训练一个 Reward Model
  • 用PPO(Proximal Policy Optimization)训练GPT主模型,最大化得分

该方法用于 GPT-3.5 / ChatGPT。

DPO(Direct Preference Optimization)

一种比RLHF更稳定的替代方法,不再使用强化学习,而是直接优化模型输出排序概率。

推理与部署

完成训练后的模型通过以下方式部署:

  • 量化(Quantization):如INT8、FP8,减小模型大小
  • 蒸馏(Distillation):训练小模型模拟大模型输出
  • KV Cache:提升推理速度
  • 并行策略:如Tensor并行、Pipeline并行

其他补充

  • 多语言训练:通过多语种数据混合,GPT能掌握中文、英文等多种语言。
  • 安全性与审查:在训练数据清洗、微调、对齐过程中均会加入安全审查策略,过滤不当言论和偏见。

基本介绍

https://github.com/jingyaogong/minimind.git

基本配置

克隆项目

shell 复制代码
git clone https://github.com/jingyaogong/minimind.git
cd minimind

这里是下载 ZIP 然后解压的,也可以git克隆。

环境配置

shell 复制代码
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

对应的结果如下所示,安装需要的依赖:

下载数据

(这里注意,该命令是全部的数据,目前来看是20GB+,如果不是完整的实验,可以选几个必须的即可。)

shell 复制代码
git lfs install
git clone https://www.modelscope.cn/datasets/gongjy/minimind_dataset.git

仓库的内容如下所示:

并不是都需要下载,为了最小成本启动,下载:

● pretrain_hq.jsonl 1.6GB

● sft_mini_512.jsonl 1.2GB

如果是最小成本下载,使用如下的方式,下载之后确认一下是否正确:

shell 复制代码
mkdir dataset
cd dataset

wget https://www.modelscope.cn/datasets/gongjy/minimind_dataset/resolve/master/pretrain_hq.jsonl

wget https://www.modelscope.cn/datasets/gongjy/minimind_dataset/resolve/master/sft_mini_512.jsonl

正在下载pretrain_hq:

正在下载sft_mini_512:

下载完毕后,在当前路径下可以看到如下的结果,可能需要改个名:

相关推荐
Silence4Allen1 小时前
Dify 完全指南(一):从零搭建开源大模型应用平台(Ollama/VLLM本地模型接入实战)》
ai·大模型·dify·rag
归去_来兮1 小时前
LightGBM算法原理及Python实现
人工智能·机器学习·集成学习·lightgbm
Blossom.1181 小时前
脑机接口技术:开启人类与机器的全新交互时代
人工智能·驱动开发·深度学习·计算机视觉·aigc·硬件架构·交互
ProgramHan1 小时前
什么是自然语言处理(NLP)?如何使用NLP进行情感分析?
人工智能·自然语言处理
小白白搭建2 小时前
wordperss AI插件:AI图文+视频+长尾关键词自动生成,已内置deepseek、kimi全模型,支持简单一键接入更多自定义API
人工智能·wordpress·ai插件·deepseek·wordprerss插件·wordpress ai插件
豌豆花下猫2 小时前
uv全功能更新:统一管理Python项目、工具、脚本和环境的终极解决方案
后端·python·ai
giszz2 小时前
【Web3】上市公司利用RWA模式融资和促进业务发展案例
人工智能·web3·区块链
pen-ai3 小时前
【NLP】 26. 语言模型原理与概率建模方法详解(Language Models)
人工智能·语言模型·自然语言处理
pen-ai3 小时前
【NLP】30. 深入理解 In-Context Learning 的核心机制与策略
人工智能·自然语言处理
知舟不叙3 小时前
使用 OpenCV 和 Dlib实现轮廓绘制
人工智能·opencv·计算机视觉·轮廓绘制·人脸关键点检测