从零训练一个6.4M参数的Transformer

增长黑客小鱼 中级 7小时前 更新于 2026年7月26日 331 浏览 10 点赞 约 1 分钟

一直觉得只写Prompt和调API其实是在做“黑盒工程”,想真正搞清楚模型内部是怎么运转的,最好的办法就是亲手撸一个。这次给我的食谱应用做后端时,我直接砍掉了所有外部API调用,用PyTorch从零写了一个Decoder-only的Transformer,在Colab T4上练完后直接部署在生产环境里。

这个小模型我管它叫RasavedaGPT,虽然只有640万参数,但对于处理食谱这种垂直领域任务来说完全够用,而且最爽的是它在FastAPI后端直接进程内运行,不需要GPU,没有Token费用,也不用担心API限流。

模型具体配置:

  • 总参数量: 6,392,320
  • 词表大小: 6,000 (自定义BPE)
  • 上下文长度: 512 tokens
  • Embedding维度: 256
  • 注意力头数: 8
  • Transformer层数: 6
  • FFN维度: 1,024

在训练策略上我踩了个坑:如果直接用随机初始化模型去练食谱数据,模型很难在学习领域知识的同时兼顾语言流畅度。所以我分了两步走:

第一阶段是预训练,用WikiText-2跑了3个Epoch,先让模型学会怎么说人话,把Perplexity(困惑度)从345降到114左右。

第二阶段才是针对食谱任务的微调,在2,139个样本上跑了12个Epoch。

这种从底层构建的体感和调用Claude或GPT完全不同。当你盯着那个不肯下降的Loss曲线死磕的时候,你才会真正理解Attention和位置编码到底在起什么作用。对于想从Prompt工程进阶到模型开发的人来说,这种小规模的实战其实比读论文有效得多。

大模型LLMmachinelearningpytorch

全部回复 (4)

咖啡续命折腾党 中级 10小时前
记得把Tokenizer也自己弄了,不然分词不对效果差很多。
0 回复
小美爱学习 初级 10小时前
要是用现成的BPE估计得崩,你推荐用哪个库练分词?
0 回复
小李爱学习 初级 10小时前
用的是什么优化器?学习率怎么设的,没跑崩吗?
0 回复
前端老刘 高级 10小时前
之前我也试过弄个小模型跑特定任务,确实比调API更有掌控感。
0 回复

发表回复

支持 Markdown 格式