“这不是魔法,这是技术。”——这是作者记录自己从零用Java实现GPT时写下的一句话。别人用现成框架跑模型,他偏要放下TensorFlow、PyTorch,用几百行线性代数手搓一个Transformer。这个项目叫MiniGPT,目标很明确:手动构建每一个组件,搞明白每个环节到底在干什么。
项目清单有些“自虐”:tokenization(分词)、embeddings(嵌入)、self-attention(自注意力)、backpropagation(反向传播)、训练和文本生成。每一步都要自己写,不碰任何AI框架。作者说,AI生态演进太快,他每天用RAG、copilot这些应用层技术,但更想知道底层到底是什么在支撑。这种“只会用,不懂里面”的挫败感,催生了MiniGPT。
为什么要这么折腾?因为Transformer几乎支撑着今天所有的生成式AI应用。2017年,Google团队在论文《Attention Is All You Need》里提出这个架构,最初解决的是机器翻译。
原版Transformer有两个部分:编码器读完整输入句,解码器逐词生成输出句。而GPT只取了一半——解码器,所以叫“decoder-only”。为什么可以砍掉一半?因为语言模型不需要先“读”一段源文本再翻译,它只需要根据前面已经出现的内容,预测下一个最可能的token。
这个“预测下一个”的机制,叫自回归建模。训练时,模型看一段文本,学习预测下一个词;生成时,它做同样的事,一遍遍循环,把自己刚生成的输出接回输入。作者强调,这不是玄学,是工程:同一个操作,重复几百万次。
真动手才知道,最磨人的是反向传播。手动实现损失函数的梯度更新,很少第一次就跑通,不是维度对不上,就是数值出问题。但作者认为,把这些坑和试错过程记录下来,恰恰是这套系列文章的价值所在——它不是给你一堆能直接复制的代码,而是展示每个设计决策背后的“为什么”,以及踩坑时的思考路径。
接下来的内容会沿着模型内部的真实处理路径展开:从句子进入模型,经过分词和嵌入变成向量,再通过自注意力层层传递,最后输出下一个token的概率分布。每一步都会单独拆解,从数学基础讲到最终的文本生成。这条路,走通了,也就真正读懂了Transformer。
热门跟贴