找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3925

积分

0

好友

553

主题
发表于 17 小时前 | 查看: 2| 回复: 0

本文将唐诗作为训练数据集,基于 Andrej Karpathy 的 nanoGPT 项目,手把手教你从零开始训练一个能够创作古风诗歌的 GPT 模型。这不仅是一个有趣的实践,更是理解现代大语言模型工作原理的绝佳途径。

关于nanoGPT

nanoGPT 是 Andrej Karpathy 开源的一个用于复现 GPT-2 的轻量级大语言模型项目。其核心模型文件 model.py 仅约300行代码,去除了不必要的封装,旨在让开发者清晰理解 Transformer 架构的实现细节。

GitHub项目地址:https://github.com/karpathy/nanoGPT

通过学习与使用 nanoGPT,你可以深入理解 LLM 的实现原理,掌握 PyTorch 框架的实战应用,以及如何从数据准备到模型训练、生成的全流程。


第一步:搭建“炼丹房”(环境配置)

首先,我们需要为模型训练准备好 Python 环境。

# 创建并激活虚拟环境
conda create -n minigpt python=3.10
conda activate minigpt

# 安装 PyTorch(深度学习核心框架)
pip install torch torchvision torchaudio

💡 小贴士:Mac M芯片加速

如果你使用的是 Mac M1/M2/M3/M4 系列芯片,支持通过苹果的 MPS 技术进行硬件加速。你可以用以下代码测试:

import torch
print(torch.backends.mps.is_available()) # 若返回 True,说明你的GPU已就绪!

第二步:准备唐诗数据集

我们需要给模型“喂入”大量的唐诗素材。为了方便,我们可以直接克隆现成的数据预处理脚本。

# 1. 克隆 nanoGPT 主代码库
git clone https://github.com/karpathy/nanoGPT.git
cd nanoGPT

# 2. 安装必要依赖
pip install numpy transformers datasets tiktoken wandb tqdm

# 3. 获取唐诗数据集并准备预处理脚本
mkdir -p data/tang_poetry
cp data/shakespeare_char/prepare.py data/tang_poetry/prepare.py

# 4. 下载整理好的唐诗纯文本 (约4.3万首唐诗)
curl -o data/tang_poetry/input.txt https://raw.githubusercontent.com/yangyin5127/nanoGPT-tang_poetry/master/data/tang-poetry/tang_poetry.txt

# 5. 开始数据预处理
python data/tang_poetry/prepare.py

运行 prepare.py 后,程序会自动扫描文本中的所有汉字(如“春”、“眠”、“不”)和标点符号,构建一个中文字符字典。随后会生成 train.binval.bin 文件,它们的作用是将一首首唐诗转化为模型能理解的“数字序列”。

第三步:配置并开启训练

现在,我们需要根据唐诗数据的特性来调整训练配置。

# 复制配置文件模板
cp config/train_shakespeare_char.py config/train_tang_poetry.py

打开 config/train_tang_poetry.py,进行如下关键修改:

  • out_dir = ‘out-tang-poetry’(设置模型保存路径)
  • dataset = ‘tang_poetry’(指向我们的唐诗数据集)

启动“炼丹”炉:

python train.py config/train_tang_poetry.py --device=mps --compile=False

(注:非Mac用户根据硬件情况将 --device 参数设置为 cudacpu)

训练过程中会产生检查点(checkpoint)。如果想中途暂停训练,只需按下 Ctrl+C。下次想接着训练时,只需添加参数 --init_from='resume' 即可,命令如下。

python train.py config/train_tang_poetry.py --device=mps --compile=False --init_from=‘resume’

第四步:见证奇迹,生成唐诗

训练一段时间后(当 Loss 损失值明显下降时),你就可以测试你的“AI诗人”了!

# 场景1:给它一个开头,让它自由发挥
python sample.py --out_dir=out-tang-poetry --device=mps --start=“春” --num_samples=2

python sample.py --out_dir=out-tang-poetry --device=mps --start=“九曲黄河万里沙,” --max_new_tokens=60 --num_samples=2

nanoGPT生成唐诗的终端输出示例

训练完成后,你的 out-tang-poetry 文件夹里会生成最终的 ckpt.pt 模型权重文件。恭喜你,这就是你亲手训练出的“唐诗大师”。


你会观察到的有趣现象

在训练的不同阶段,你会发现 AI 的“进化”过程非常迷人:

  1. 混沌初开(Loss很高):模型输出的内容是毫无逻辑的汉字堆砌,像是一个刚学会抓笔的孩子在乱涂乱画。
  2. 略通文墨(Loss逐渐下降):它开始学会了换行、使用标点符号,甚至能写出一些像模像样的句子,例如:“相见故乡寒草绿,不知今古送归船”。
  3. 悟出诗魂(Loss较低):奇妙的“涌现能力”出现了!虽然模型从未被明确教授过对仗、押韵等诗词规则,但它能依靠概率预测,创作出颇具意境、且从未在训练集中出现过的原创诗句。这正是大模型的神奇之处。

最后

从动手实践 nanoGPT 开始,你便推开了一扇理解现代 AI 的大门。你不必教它具体的规则,只需提供足够的数据和计算资源,它便能自己从数据分布中“领悟”出模式。

完成这个唐诗 GPT 后,你完全可以举一反三:尝试用金庸小说训练一个“武侠 GPT”,或者用代码库训练一个“代码补全 GPT”。这个完整的项目代码和数据集已托管在 GitHub,欢迎在云栈社区交流你的训练成果和奇思妙想。赶快动手,开启你的专属 AI 创作之旅吧!

最终代码和唐诗数据集地址: https://github.com/yangyin5127/nanoGPT-tang_poetry




上一篇:程序员如何驾驭AI:从代码书写者向问题解决者与架构师转型
下一篇:谷歌、昆仑万维将AI工具使用纳入绩效考核,职场变革加速
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-2 19:26 , Processed in 0.404164 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表