序列长度增加一倍,推理时间翻四倍?Transformer注意力复杂度的技术真相

把一篇2000字的文章喂给大模型,它能在毫秒级返回摘要。但当你把一篇20000字的长文档扔进去,等待第一个输出的时间可能从几百毫秒延长到几秒甚至更久。更诡异的是,生成后续内容的速度却没有明显下降。 ...

20 min · 9905 words

隐藏层维度:为什么这个数字决定了大模型的能力边界

打开任何一个大模型的配置文件,你总能看到一些神秘的数字:BERT的768,GPT-2的1024,LLaMA-7B的4096,GPT-3的12288。这些数字从何而来?为什么不是769或4095?为什么LLaMA选择4096而GPT-3选择12288?更关键的是,这个被称为"隐藏层维度"或"隐藏尺寸"的参数,究竟如何影响模型的能力边界? ...

16 min · 7669 words

神经网络中的偏置:为什么简单的加法如此重要

打开任何一本深度学习教材,翻开任何一篇讲解神经网络的博客,你都会看到神经元的基本公式: $$y = \sigma(Wx + b)$$其中 $W$ 是权重矩阵,$x$ 是输入,$\sigma$ 是激活函数,而 $b$ 就是那个不起眼的偏置(bias)。它看起来只是一个简单的加法,一个向量加法操作,却困扰了无数初学者:为什么需要它?它到底在做什么?为什么有些现代大模型(如LLaMA)会把它删掉? ...

19 min · 9053 words

多查询注意力:为什么共享一个KV头能让大模型推理提速数倍

2019年11月,Noam Shazeer在arXiv上发表了一篇标题颇为大胆的论文——《Fast Transformer Decoding: One Write-Head is All You Need》。这篇仅6页的论文提出了一个看似简单的问题:Transformer解码时,我们真的需要那么多Key和Value头吗? ...

17 min · 8445 words

滑动窗口注意力:为什么一个「局部窗口」能看完全局信息?

2023年9月,Mistral AI发布了一款仅有73亿参数的模型,却在几乎所有基准测试上超越了拥有130亿参数的LLaMA 2。这个令人意外的结果背后,一个关键技术就是滑动窗口注意力(Sliding Window Attention,SWA)。 ...

18 min · 8571 words

Transformer的权重共享:为什么一行代码能省下两亿参数

一行代码的魔法 在PyTorch中实现一个简单的语言模型时,你可能会看到这样一行看似普通的代码: self.lm_head.weight = self.embedding.weight 这行代码做的事情非常简单:让输出层的权重指针直接指向嵌入层的权重。但就是这样一行代码,却能够为一个典型的70亿参数大模型节省约2亿个参数——相当于模型总参数量的3%左右。 ...

13 min · 6138 words

相对位置偏置如何改变Transformer的序列理解能力:从Shaw到ALiBi的七年技术演进

2017年,Vaswani等人在《Attention Is All You Need》中提出了Transformer架构,用纯粹的注意力机制取代了循环神经网络。然而,这个革命性的架构有一个致命缺陷:自注意力机制天生不知道顺序。 ...

16 min · 7669 words