RNN 和 Transformer 复杂度比较

这里假设BatchSize为 1,就是单样本的情况。

原始 RNN 块:

(1)单步计算 H,包含两个矩阵向量乘法,和一个激活,复杂度HidSize²

(2)一共有SeqLen步,所以整体复杂度SeqLen * HidSize²

LSTM 块:

(1)单步计算 F I C_hat O,包含八个矩阵向量乘法,和四个激活:HidSize²

(2)单步计算 C,包含两个逐元素乘法,和一个加法;HidSize²

(3)单步计算 H,包含一个逐元素乘法和一个激活;HidSize²

(4)一共有SeqLen步,所以整体复杂度SeqLen * HidSize²

TF 块:

(1)计算 QKV,包含三个矩阵乘法,SeqLen * HidSize²

(2)计算注意力矩阵,包含 HeadCount 个 矩阵乘法,HeadCount * HeadSize * SeqLen²

由于HidSize = HeadCount * HeadSize,实际上是HidSize * SeqLen²

(3)Softmax 激活,HeadCount * SeqLen² << HidSize * SeqLen²

(4)计算 O,包含HeadCount个矩阵乘法,HeadCount * HeadSize * SeqLen² = HidSize * SeqLen²

(5)计算输出向量,包含一个矩阵乘法SeqLen * HidSize²

(6)FFN ,两个矩阵乘法,SeqLen * HidSize²

(6)整体复杂度,SeqLen * HidSize² + HidSize * SeqLen²

HidSize是每层之间传输的嵌入向量的维度,大概几百维。

聊天的时候SeqLen大概几十到一百,明显低于HidSize,这个时候二者是差不多的。

长文本翻译的时候SeqLen是几千,那么 RNN 明显比 Transformer 快。

等于说,Transformer 的高复杂度缺点被并行掩盖了。在单机单卡这种不能并行的环境,效率远不如 RNN。这就是很多人一定要搞线性注意力的原因。

相关推荐
vocal8 分钟前
谷歌第七版Prompt Engineering—第一部分
人工智能
MonkeyKing_sunyuhua9 分钟前
5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
人工智能·microsoft·agent
arbboter17 分钟前
【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明
人工智能·大模型·notepad++·ai助手·ai插件·aicoder·notepad++插件开发
IT_Octopus29 分钟前
AI工程pytorch小白TorchServe部署模型服务
人工智能·pytorch·python
果冻人工智能34 分钟前
AI军备竞赛:我们是不是正在造一个无法控制的神?
人工智能
暴龙胡乱写博客39 分钟前
OpenCV---图像预处理(四)
人工智能·opencv·计算机视觉
程序员辣条1 小时前
深度测评 RAG 应用评估框架:指标最全面的 RAGas
人工智能·程序员
curdcv_po1 小时前
字节跳动Trae:一款革命性的免费AI编程工具完全评测
人工智能·trae
程序员辣条1 小时前
为什么需要提示词工程?什么是提示词工程(prompt engineering)?为什么需要提示词工程?收藏我这一篇就够了!
人工智能·程序员·产品经理
孔令飞1 小时前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go