走出原始丛林
在上一节(2.2 Transformer架构拆解)中,我们明白了 Self-Attention 是如何在一眼之内、无视距离地让单词之间互通款曲的。 这篇发表于 2017 年的架构,确立了“并行+注意力”的盛世。
但如果你真的拿这套原始配置去跑今天的千亿参数模型,你会:
- 当用户丢给你一本 10 万字的小说,它会因为“绝对坐标刻度”不够长而当场变乱码。
- 为了算一个字,模型要把所有千亿参数在硬盘和内存间轮转一次,每次聊天都会破产。
- 注意力矩阵的算力需求是字数的平方指数级爆炸,长度翻倍,它直接死机。
为了解决这些要命的工程极限,顶尖学者们为 Transformer 进行了一次次疯狂的器官替换与魔改。
1. 记住远近:RoPE (旋转位置编码)
在上一章我们提到过,Transformer 默认是个“词袋(Bag of Words)”,它不知道语序。 原始论文的解决方法是硬塞:用固定的 几何波浪,强行赋予第 1 个字和第 1000 个字一个“绝对坐标”。
1.1 绝对坐标的局限:不会拐弯的木头
如果我的模型只被训练过支持最大 2048 个字的长度。你突然丢给我一本 1 万字的小说,那些落在 2048 号位置开外的坐标它从来没见过,结果显然是灾难性的。 更惨的是,人类理解语言靠的是相对位置。 不管“中国”和“北京”这两个词是在文章的第 1 段出现,还是在第 500 段出现,只要它俩挨在一起(相对距离是 1),注意力机制就应该能秒懂它们的羁绊。