news 2026/4/18 11:00:14

从零训练一个小参数模型 (SLM):用 NanoGPT 训练一个能写唐诗的 10M 模型,搞懂 Transformer 底层原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零训练一个小参数模型 (SLM):用 NanoGPT 训练一个能写唐诗的 10M 模型,搞懂 Transformer 底层原理

🤯 前言:为什么要自己训练?

你可能觉得:“调用 API 不就好了吗?”
但是,会调用 API 只能让你成为 AI 的用户,会训练模型才能让你成为 AI 的主人。
通过亲手写下Self-Attention的代码,看着 Loss 曲线下降,看着模型从输出乱码到输出“床前明月光”,这种去魅的过程是任何理论课都给不了的。

我们将使用NanoGPT—— 这是前 Tesla AI 总监 Karpathy 写的最简单的 Transformer 实现,代码极度干净,是学习 LLM 的圣经。


🏗️ 一、 架构拆解:GPT 是怎么工作的?

GPT (Generative Pre-trained Transformer) 的本质就是一个**“文字接龙机器”**。
给定前文,预测下一个字。

它的核心引擎是Transformer Decoder。我们可以把它看作一个多层的“汉堡包”。

模型架构图 (Mermaid):

Transformer Block (重复 N 次)

1. Tokenization
2. Embedding
3. LayerNorm
4. Self-Attention

残差连接 (Add)

5. LayerNorm
6. FeedForward

残差连接 (Add)

7. Linear Head
8. Softmax

输入文字 (Input)

数字序列 (Indices)

词向量 + 位置编码

LayerNorm

多头自注意力 (MSA)

+

LayerNorm

前馈神经网络 (MLP)

+

输出概率分布

预测下一个字


🧪 二、 核心原理:自注意力机制 (Self-Attention)

这是 Transformer 的灵魂。模型通过它来理解“字与字之间的关系”。
比如“帆远影碧空尽”,“孤”和“帆”的关系很近,和“尽”的关系较远。

Attention 的计算公式是面试必考题:

  • Q (Query):我想查什么?
  • K (Key):我有什么特征?
  • V (Value):我的内容是什么?

PyTorch 代码实现 (NanoGPT 核心):

classCausalSelfAttention(nn.Module):def__init__(self,config):super().__init__()# Q, K, V 的投影矩阵self.c_attn=nn.Linear(config.n_embd,3*config.n_embd,bias=False)self.c_proj=nn.Linear(config.n_embd,config.n_embd,bias=False)defforward(self,x):B,T,C=x.size()# Batch, Time(Sequence Length), Channel(Embedding Size)# 1. 计算 Q, K, Vq,k,v=self.c_attn(x).split(self.config.n_embd,dim=2)# 2. 计算 Attention Scores (Q @ K转置)# 这里的 mask 保证了模型只能看过去,不能看未来 (Causal)att=(q @ k.transpose(-2,-1))*(1.0/math.sqrt(k.size(-1)))att=att.masked_fill(self.bias[:,:,:T,:T]==0,float('-inf'))att=F.softmax(att,dim=-1)# 3. 聚合信息 (Scores @ V)y=att @ vreturnself.c_proj(y)

🛠️ 三、 实战步骤:训练诗人

1. 准备数据 (The Fuel)

我们需要一本《全唐诗》。数据格式很简单,就是一个巨大的input.txt文件,里面塞满了诗句。

  • Tokenizer:对于中文,最简单的 Tokenizer 就是字级别 (Character-level)。把每个汉字映射为一个整数。

  • 例如:床: 102,前: 55,明: 890

  • Vocab Size:全唐诗常用的汉字大约 3000-5000 个。

# 读取数据withopen('tang_poems.txt','r',encoding='utf-8')asf:text=f.read()# 构建词表chars=sorted(list(set(text)))vocab_size=len(chars)stoi={ch:ifori,chinenumerate(chars)}# 字转数字itos={i:chfori,chinenumerate(chars)}# 数字转字# 编码data=torch.tensor([stoi[c]forcintext],dtype=torch.long)
2. 配置模型 (The Engine)

我们要训练一个Baby GPT,参数量控制在 10M 左右,适合 T4 显卡(16GB 显存)快速跑完。

  • n_layer(层数): 6
  • n_head(头数): 6
  • n_embd(向量维度): 384
  • block_size(上下文长度): 256 (写诗够用了)
3. 开始训练 (The Training)

将数据喂给 NanoGPT 的train.py

python train.py config/train_shakespeare_char.py\--device=cuda\--compile=True\--eval_interval=250\--max_iters=5000\--batch_size=64

你会在终端看到 Loss(损失函数)疯狂下降:

  • Iter 0: Loss 10.5 (完全在瞎猜)
  • Iter 1000: Loss 4.2 (学会了逗号和句号)
  • Iter 3000: Loss 2.1 (学会了五言、七言格式)
  • Iter 5000: Loss 1.5 (学会了对仗和押韵)

✨ 四、 见证奇迹:模型生成

训练 15 分钟后,我们让模型写首诗。
Prompt:“明月”

模型输出 (Temperature=0.8):

明月照高楼,
含光入如虚。
愁心不可转,
只有泪沾裾。

点评
这就很离谱!这首诗在《全唐诗》里是不存在的,是模型原创的。

  • “明月照高楼”:意境对了。
  • “泪沾裾”:悲伤的情绪也对上了。
  • 虽然逻辑经不起深推,但格式、韵律完全符合唐诗规范。

📊 五、 总结与思考

通过这个仅有 10M 参数的小模型,我们揭示了 LLM 的真相:

  1. 压缩即智能:模型把 40000 首唐诗“压缩”进了权重矩阵里。
  2. 规模法则 (Scaling Law):我们用了 10M 参数能写打油诗。如果我们把参数加到 100B,再喂给它全互联网的文本,它就能写代码、做数学、讲笑话——这就是 ChatGPT。
  3. 算力门槛:NanoGPT 证明了,学习 Transformer 根本不需要 A100,你的游戏本甚至 Colab 就能跑。

Next Step:
下载NanoGPT源码,把数据集换成周杰伦歌词或者金庸小说,看看你的 AI 能学会什么样的 Style!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 10:06:11

YOLOv8训练时如何可视化特征图响应?

YOLOv8训练时如何可视化特征图响应? 在目标检测的实际开发中,我们常常会遇到这样的问题:模型看起来收敛了,但推理结果却不尽如人意——要么漏检关键物体,要么频繁误触发背景噪声。这时候,仅仅盯着损失曲线和…

作者头像 李华
网站建设 2026/4/18 10:51:39

【稀缺实战资料】:大型电商系统PHP微服务容器化迁移全过程揭秘

第一章:大型电商系统容器化迁移背景与挑战随着业务规模的持续扩张,传统单体架构已难以满足高并发、快速迭代和弹性伸缩的需求。大型电商平台正逐步将服务从物理机或虚拟机迁移至容器化环境,以提升资源利用率与部署效率。容器化技术通过标准化…

作者头像 李华
网站建设 2026/4/18 1:09:21

【高并发缓存架构】:PHP对接Redis集群的4种模式及选型建议

第一章:高并发缓存架构的核心挑战在现代分布式系统中,缓存已成为提升性能、降低数据库负载的关键组件。然而,面对高并发场景,缓存系统本身也面临诸多严峻挑战,稍有不慎便可能导致服务雪崩、数据不一致或响应延迟激增。…

作者头像 李华
网站建设 2026/4/18 9:40:19

为什么90%的PHP生产事故都被忽略?日志异常检测盲区大揭露

第一章:为什么90%的PHP生产事故都被忽略?日志异常检测盲区大揭露在高并发的PHP生产环境中,系统崩溃或性能骤降往往来得悄无声息。更令人担忧的是,超过90%的异常事件在初期并未被有效捕捉,最终演变为线上故障。其根本原…

作者头像 李华
网站建设 2026/4/18 8:15:50

YOLOv8镜像内置Ultranalytics库功能全面介绍

YOLOv8镜像内置Ultranalytics库功能全面介绍 在智能安防摄像头自动识别可疑行为、工业质检流水线上毫秒级定位缺陷零件的今天,目标检测早已不再是实验室里的概念验证。越来越多的开发者希望快速将AI视觉能力集成到实际项目中——但往往卡在第一步:环境怎…

作者头像 李华