自媒体123网站,用app怎么样建网站,商城网站栏目,ppt模板免费下载 素材手机版#x1f92f; 前言#xff1a;为什么要自己训练#xff1f;
你可能觉得#xff1a;“调用 API 不就好了吗#xff1f;”
但是#xff0c;会调用 API 只能让你成为 AI 的用户#xff0c;会训练模型才能让你成为 AI 的主人。
通过亲手写下 Self-Attention 的代码#xff… 前言为什么要自己训练你可能觉得“调用 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. Tokenization2. Embedding3. LayerNorm4. Self-Attention残差连接 (Add)5. LayerNorm6. FeedForward残差连接 (Add)7. Linear Head8. 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_attnnn.Linear(config.n_embd,3*config.n_embd,biasFalse)self.c_projnn.Linear(config.n_embd,config.n_embd,biasFalse)defforward(self,x):B,T,Cx.size()# Batch, Time(Sequence Length), Channel(Embedding Size)# 1. 计算 Q, K, Vq,k,vself.c_attn(x).split(self.config.n_embd,dim2)# 2. 计算 Attention Scores (Q K转置)# 这里的 mask 保证了模型只能看过去不能看未来 (Causal)att(q k.transpose(-2,-1))*(1.0/math.sqrt(k.size(-1)))attatt.masked_fill(self.bias[:,:,:T,:T]0,float(-inf))attF.softmax(att,dim-1)# 3. 聚合信息 (Scores V)yatt 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,encodingutf-8)asf:textf.read()# 构建词表charssorted(list(set(text)))vocab_sizelen(chars)stoi{ch:ifori,chinenumerate(chars)}# 字转数字itos{i:chfori,chinenumerate(chars)}# 数字转字# 编码datatorch.tensor([stoi[c]forcintext],dtypetorch.long)2. 配置模型 (The Engine)我们要训练一个Baby GPT参数量控制在 10M 左右适合 T4 显卡16GB 显存快速跑完。n_layer(层数): 6n_head(头数): 6n_embd(向量维度): 384block_size(上下文长度): 256 (写诗够用了)3. 开始训练 (The Training)将数据喂给 NanoGPT 的train.py。python train.py config/train_shakespeare_char.py\--devicecuda\--compileTrue\--eval_interval250\--max_iters5000\--batch_size64你会在终端看到 Loss损失函数疯狂下降Iter 0: Loss 10.5 (完全在瞎猜)Iter 1000: Loss 4.2 (学会了逗号和句号)Iter 3000: Loss 2.1 (学会了五言、七言格式)Iter 5000: Loss 1.5 (学会了对仗和押韵)✨ 四、 见证奇迹模型生成训练 15 分钟后我们让模型写首诗。Prompt:“明月”模型输出 (Temperature0.8):明月照高楼含光入如虚。愁心不可转只有泪沾裾。点评这就很离谱这首诗在《全唐诗》里是不存在的是模型原创的。“明月照高楼”意境对了。“泪沾裾”悲伤的情绪也对上了。虽然逻辑经不起深推但格式、韵律完全符合唐诗规范。 五、 总结与思考通过这个仅有 10M 参数的小模型我们揭示了 LLM 的真相压缩即智能模型把 40000 首唐诗“压缩”进了权重矩阵里。规模法则 (Scaling Law)我们用了 10M 参数能写打油诗。如果我们把参数加到 100B再喂给它全互联网的文本它就能写代码、做数学、讲笑话——这就是 ChatGPT。算力门槛NanoGPT 证明了学习 Transformer 根本不需要 A100你的游戏本甚至 Colab 就能跑。Next Step:下载NanoGPT源码把数据集换成周杰伦歌词或者金庸小说看看你的 AI 能学会什么样的 Style