Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >矩阵成真!Pytorch最新工具mm,3D可视化矩阵乘法、Transformer注意力

矩阵成真!Pytorch最新工具mm,3D可视化矩阵乘法、Transformer注意力

作者头像
新智元
发布于 2023-10-04 06:56:58
发布于 2023-10-04 06:56:58
80100
代码可运行
举报
文章被收录于专栏:新智元新智元
运行总次数:0
代码可运行

新智元报道

编辑:桃子

【新智元导读】Pytorch团队推出的最新3D可视化最新工具mm,能够将矩阵乘法模拟世界还原。

矩阵中的模拟世界,真的来了。

矩阵乘法(matmul),是机器学习中非常重要的运算,特别是在神经网络中扮演着关键角色。

Pytorch团队最新的一篇文章中,介绍了「mm」,一个用于matmuls和matmuls组合的可视化工具。

因为使用了三个空间维度,mm能够有助于建立直觉、激发想法,尤其适合(但不仅限于)视觉/空间思维者。

英伟达高级科学家Jim Fan表示,进入神经网络「矩阵」。

这是一个非常酷的可视化工具,用于矩阵、注意力、并行等等。最好的教育来自最直观的传递。这是一个具有数据并行分割功能的多层感知器。

有了三个维度来组成矩阵乘法,再加上加载训练过权重的能力,就可以用im来可视化像注意力头这样的大型复合表达式,并观察它们的实际表现。

mm工具能够交互,可在浏览器或笔记本notebook iframe中运行,并在URL中保留其完整状态,共享对话链接。

地址:https://bhosmer.github.io/mm/ref.html

下文中,Pytorch提供的参考指南中,介绍了mm所有可用的功能。

研究团队将首先介绍可视化方法,通过可视化一些简单的矩阵乘法、和表达式来建立直觉,然后深入研究一些更多的示例。

为什么这种可视化方式更好?

mm的可视化方法基于这样一个前提,即矩阵乘法从根本上说,是一种三维运算。

换句话说:

是一张纸,用mm打开后变成如下的样子:

当我们以这种方式,将矩阵乘法包在一个立方体周围时,参数形状、结果形状和共享维度之间的正确关系全部都会建立起来。

现在,计算就有了几何意义:

结果矩阵中的每个位置 i, j 锚定了立方体内部沿深度维度 k 运行的向量,其中从 L 中的第 i 行延伸出水平面和从 R 中的第 j 列延伸的垂直平面相交。沿着这个向量,来自左右2个参数的 (i, k) (k, j) 元素对相遇并相乘,得到的乘积沿着 k 相加,存入在结果的位置 i, j 。

这就是矩阵乘法的直观含义:

- 将两个正交矩阵投影到立方体内部

- 将每个交叉点上的一对数值相乘,形成一个乘积网格

- 沿第三个正交维度求和,得出结果矩阵

为了确定方向,mm工具会在立方体内部显示一个指向结果矩阵的箭头,蓝色指标来自左侧参数,红色指标来自右侧参数。

该工具还会显示白色指引线,以指示每个矩阵的行轴,不过在这张截图中这些指引线很模糊。

对于方向,该工具在多维数据集内部显示一个指向结果矩阵的箭头,蓝色叶片来自左参数,红色叶片来自右参数。该工具还显示白色指南来指示每个矩阵的行轴,尽管它们在这个屏幕截图中很模糊。

当然,布局限制简单明了:

- 左参数和结果必须沿着它们共享的高度 (i) 维度相邻

- 右参数和结果必须沿其共享的宽度 (j) 维度相邻

- 左参数和右参数必须沿着它们共享的(左宽/右高)维度相邻,这就是矩阵乘法的深度 (k) 维度

这个几何图形,为我们提供了可视化所有标准矩阵乘法分解的坚实基础,以及探索矩阵乘法的非难复杂组合的直观依据。

下面,我们就会看到真正的矩阵世界。

规范矩阵乘法分解动作

在深入研究一些更复杂的示例之前,Pytorch团队将介绍一些直觉构建器,以了解事物在这种可视化风格中的外观和感觉。

首先是标准算法。通过对相应的左行和右列进行点乘计算每个结果元素。

我们在动画中看到的是乘法值矢量在立方体内部的扫描,每个矢量都会在相应位置产生一个求和结果。

这里, L 的行块填充为1(蓝色)或-1(红色);R 的列块填充类似。k 在这里是24,因此结果矩阵( L @ R )的蓝色值为24,红色值为-24。

矩阵-向量乘积

分解为矩阵向量乘积的matmul,看起来像一个垂直平面(左参数与右参数每列的乘积),当它水平扫过立方体内部时,将列绘制到结果上。

即使在简单的例子中,观察分解的中间值也会非常有趣。

例如,当我们使用随机初始化参数时,请注意中间矩阵-向量乘积中突出的垂直模式。这反映出每个中间值都是左参数的列缩放复制品:

向量-矩阵乘积

分解为向量-矩阵乘积的矩阵乘法在穿过立方体内部时,看起来就像在结果上绘制行的水平面:

切换到随机初始化参数时,我们会看到与矩阵-向量乘积类似的模式,只不过这次的模式是水平的,因为每个中间向量-矩阵乘积都是右参数的行缩放复制品。

在思考矩阵乘法如何表达其参数的秩和结构时,不妨设想一下在计算中同时出现这两种模式的情况:

这里还有一个使用向量矩阵乘积的直觉构建器,显示单位矩阵如何像镜子一样,以45度角设置其反参数和结果:

求和外积

第三个平面分解沿k轴进行,通过向量外积的点和计算出矩阵乘法结果。

在这里,我们看到外积平面「从后向前」扫过立方体,累积成结果:

使用随机初始化的矩阵进行这种分解,我们可以看到,随着每个秩-1 外积的增加,结果中不仅有数值,还有秩的累积。

除其他外,这也让我们明白了为什么「低秩因式分解」,即通过构建深度维度参数很小的矩阵乘法来逼近矩阵,在被逼近的矩阵是低秩矩阵时效果最好。

LoRA 将在后面介绍:

表达式

如何将这种可视化方法扩展到矩阵乘法的组合?

到目前为止,示例可视化了某个矩阵 L 和 R 的单一矩阵 L @ R ,如果 L 和/或 R 本身就是矩阵,并以此类推呢?

事实证明,我们可以很好地将该方法扩展到复合表达式。

关键规则很简单:子表达式(子)矩阵乘法是另一个立方体,受与父表达式相同的布局约束,子表达式的结果面同时是父表达式的相应参数面,就像共价键共享的电子一样。

在这些限制条件下,我们可以随意排列子matmul的面。

在这里,研究人员使用了工具的默认方案,即交替生成凸面和凹面的立方体,这种布局在实践中非常有效,可以最大限度地利用空间并减少遮挡。

在本节中,Pytorch将对ML模型中的一些关键构件进行可视化处理,以熟练掌握可视化习惯用语,并了解即使是简单的示例也能给我们带来哪些直观感受。

左关联表达式

先来看两个(A @ B) @ C形式的表达式,每个表达式都有自己独特的形状和特征。

首先,我们将赋予 A @ B @ C以FFN的特征形状,其中「隐藏维度」比「输入」或「输出」维度更宽。(在本例中,这意味着B的宽度大于A或C的宽度)。

与单个matmul例子一样,浮动箭头指向结果矩阵,蓝色来自左参数,红色来自右参数:

接下来,将可视化 A @ B @ C , B的宽度比A或C窄,使其呈现一个瓶颈或「自动编码器」形状:

这种凸块和凹块交替出现的模式可以扩展到任意长度的链:例如这个多层瓶颈:

右关联表达式

接下来,将可视化一个右关联表达式A @ (B @ C) 。

有时,我们会看到 MLP 采用右侧关联方式,即输入层在右侧,权重层从右至左。

使用上图中的双层FFN例子中的矩阵--经过适当换位--如下所示,C现在扮演输入的角色,B是第一层,A是第二层:

二进制表达式

可视化工具要想超越简单的教学示例之外发挥作用,就必须在表达式变得越来越复杂时,保持可读性。

在现实世界的使用案例中,二进制表达式是一个关键的结构组件,即左右两边都有子表达式的矩阵。

在这里,将可视化最简单的表达式形状,(A @ B) @ (C @ D) :

分割和并行性

下面,可以通过两个快速示例来了解这种可视化风格是如何通过简单的几何分割,使复合表达式的并行化推理变得非常直观的。

在第一个例子中,把规范的「数据并行」分割应用到,上述左关联多层瓶颈的例子中。

沿着i进行分割,分割左初始参数(批)和所有中间结果(激活),但不分割后续参数(权重)。

通过几何图形,我们可以清楚地看到表达式中哪些参与者被分割,哪些参与者保持完整:

第二个例子,展示了如何通过沿着其 j 轴划分左子表达式、沿着其 i 轴划分右子表达式以及沿着其 k 轴划分父表达式来并行化二进制表达式:

注意力头内部

让我们看一个GPT2注意力头——特别是来自NanoGPT的「gpt2」(小)配置(层=12,头=12,嵌入=768)的第5层,通过HuggingFace使用OpenAI权重。

输入激活来自256个token的OpenWebText训练样本的前向传递。

研究人员之所以选择它,主要是因为它计算了一种相当常见的注意力模式,而且位于模型的中间位置,这里的激活已经变得结构化,并显示出一些有趣的纹理。

结构

整个注意力头被可视化为一个单一的复合表达式,以输入开始,以投影输出结束。(注:为了保持自成一体,研究人员按照Megatron-LM中的描述对每个头进行输出投影)。

计算包含六个矩阵:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Q = input @ wQ        // 1
K_t = wK_t @ input_t  // 2
V = input @ wV        // 3
attn = sdpa(Q @ K_t)  // 4
head_out = attn @ V   // 5
out = head_out @ wO   // 6

我们正在查看的内容的缩略图描述:

箭头叶片是矩阵乘法1、2、3和6:前一组是从输入到 Q、K 和 V 的内投影;后一组是从 attn @ V 回到嵌入维度的外投影。

在中心是双矩阵乘法,它首先计算注意力分数(后面的凸立方体),然后使用它们从值向量(前面的凹立方体)生成输出token。因果关系意味着注意力分数形成一个下三角。

计算和值

这是一个计算注意力的动画。具体来说:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sdpa(input @ wQ @ K_t) @ V @ wO

(即上面的矩阵1、4、5 和 6,其中 K_t 和 V 是预先计算好的)的计算过程是一个融合的向量矩阵乘积链:序列中的每个项目都是一步完成,从输入到注意力再到输出的整个过程。

头的不同之处

继续下一步之前,这里还有一个演示,可以让我们简单地了解一下模型的详细工作原理。

这是GPT2的另一个注意头。

它的行为与上面的第5层第4个头截然不同,正如所预料的那样,因为它位于模型的一个非常不同的部分。

这个磁头位于第一层:第0层,头2:

并行注意力

我们将注意力头中的 6个矩阵中的4个可视化为融合的向量矩阵乘积链。

是一个融合了向量-矩阵乘积的链条,证实了从输入到输出的整个左关联链条沿着共享的 i 轴是层状的这一几何直觉,并且可以并行化。

比如沿着i分割

双分区

LoRA

最近的LoRA论文描述了一种高效的微调技术,该技术基于微调期间引入的权重增量是低秩的想法。

根据该论文,这使我们能够通过优化密集层在适应过程中变化的秩分解矩阵,间接训练神经网络中的一些密集层,同时保持预先训练的权重冻结。

基本思想

简而言之,关键的一步是训练权重矩阵的因子,而不是矩阵本身:用 I x K 张量和 K x J 张量的matmul替换 I x J 权重张量,保持 K 为某个小数字。

如果 K 足够小,那么所节省的大小将非常可观,但代价是降低 K 会降低乘积所能表达的秩。

下面是一个随机左 128 x 4 和右 4 x 128 参数的 matmul,也就是 128 x 128 矩阵的秩-4因式分解,可以快速说明节省的大小和对结果的结构影响。请注意 L @ R 的垂直和水平模式(:

参考资料:

https://twitter.com/PyTorch/status/1706384907377770884

https://twitter.com/DrJimFan/status/1706690238083744218

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-30 12:40,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
以3D视角洞悉矩阵乘法,这就是AI思考的样子
如果能以 3D 方式展示矩阵乘法的执行过程,当年学习矩阵乘法时也就不会那么吃力了。
机器之心
2023/10/04
5180
以3D视角洞悉矩阵乘法,这就是AI思考的样子
替换Transformer!谷歌提出 Performer 模型,全面提升注意力机制!
Transformer 有着巨大的内存和算力需求,因为它构造了一个注意力矩阵,需求与输入呈平方关系。谷歌大脑 Krzysztof Choromanski 等人最近提出的 Performer 模型因为随机正正交特性为注意力矩阵构建了一个无偏的估计量,可以获得线性增长的资源需求量。这一方法超越了注意力机制,甚至可以说为下一代深度学习架构打开了思路。
昱良
2020/11/09
1.8K0
替换Transformer!谷歌提出 Performer 模型,全面提升注意力机制!
谷歌 | 大改Transformer注意力,速度、内存利用率都大幅度提升(附源代码)
Google介绍了Performance,Transformer体系结构,它可以估计具有可证明精度的正则(Softmax)full-rank-attention Transformers,但只使用线性(相对于二次)空间和时间复杂度,而不依赖任何先验,如稀疏性或低秩。为了近似Softmax注意内核,Performers使用一种新的快速注意通过 positive Orthogonal 随机特征方法(FAVOR+),这可能是独立的兴趣可伸缩的内核方法。FAVOR+还可用于有效地模拟Softmax以外的核注意力机制。这种代表性的力量是至关重要的,以准确地比较Softmax与其他内核首次在大规模任务,超出常规Transformer的范围,并研究最优的注意-内核。Performers是完全兼容正则Transformer的线性结构,具有很强的理论保证:注意矩阵的无偏或几乎无偏估计、均匀收敛和低估计方差。
计算机视觉研究院
2020/10/30
9770
谷歌 | 大改Transformer注意力,速度、内存利用率都大幅度提升(附源代码)
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
基于Transformer模型在众多领域已取得卓越成果,包括自然语言、图像甚至是音乐。然而,Transformer架构一直以来为人所诟病的是其注意力模块的低效,即长度二次依赖限制问题。随着输入序列长度的增加,注意力模块的问题也越来越突出,算力和内存消耗是输入序列长度的平方。
汀丶人工智能
2023/05/31
8690
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
自己挖坑自己填,谷歌大改Transformer注意力,速度、内存利用率都提上去了
机器之心报道 机器之心编辑部 考虑到 Transformer 对于机器学习最近一段时间的影响,这样一个研究就显得异常引人注目了。 Transformer 有着巨大的内存和算力需求,因为它构造了一个注意力矩阵,需求与输入呈平方关系。谷歌大脑 Krzysztof Choromanski 等人最近提出的 Performer 模型因为随机正正交特性为注意力矩阵构建了一个无偏的估计量,可以获得线性增长的资源需求量。这一方法超越了注意力机制,甚至可以说为下一代深度学习架构打开了思路。 自面世以来,Transforme
机器之心
2023/03/29
5350
自己挖坑自己填,谷歌大改Transformer注意力,速度、内存利用率都提上去了
图解Transformer——注意力计算原理
注意力模块(Attention module)存在于每个Encoder及Decoder中。放大编码器的注意力:
JOYCE_Leo16
2024/03/19
4650
图解Transformer——注意力计算原理
矩阵模拟!Transformer大模型3D可视化,GPT-3、Nano-GPT每一层清晰可见
一位软件工程师Brendan Bycroft制作了一个「大模型工作原理3D可视化」网站霸榜HN,效果非常震撼,让你秒懂LLM工作原理。
新智元
2023/12/05
1.8K0
矩阵模拟!Transformer大模型3D可视化,GPT-3、Nano-GPT每一层清晰可见
视觉 Transformer 的可视化|CVPR2021
可视化对于Transformer的模型调试、验证等过程都非常重要,FAIR的研究者开源了一种Transformer可视化新方法,能针对不同类呈现不同且准确的效果。
AI算法与图像处理
2021/03/12
1.7K0
视觉 Transformer 的可视化|CVPR2021
首发:吴恩达的 CS229的数学基础(线性代数),有人把它做成了在线翻译版本!
这是两个方程和两个变量,正如你从高中代数中所知,你可以找到 和 的唯一解(除非方程以某种方式退化,例如,如果第二个方程只是第一个的倍数,但在上面的情况下,实际上只有一个唯一解)。在矩阵表示法中,我们可以更紧凑地表达:
Ai学习的老章
2019/11/07
1.5K0
首发:吴恩达的 CS229的数学基础(线性代数),有人把它做成了在线翻译版本!
哈希算法、爱因斯坦求和约定,这是2020年的注意力机制
注意力机制是非常优美而神奇的机制,在神经网络「信息过载」的今天,让 NN 学会只关注特定的部分,无疑会大幅度提升任务的效果与效率。借助注意力机制,神经机器翻译、预训练语言模型等任务获得了前所未有的提升。
机器之心
2020/04/01
8440
哈希算法、爱因斯坦求和约定,这是2020年的注意力机制
高效处理多维数组:einsum()函数从入门到精通
通常被视为NumPy文档中那个晦涩难懂的高级函数——功能强大但难以理解。不过一旦掌握其基本原理,
曾高飞
2025/06/05
2630
Bert Pytorch 源码分析:二、注意力层
ApacheCN_飞龙
2023/10/13
2341
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
这里提一下,我维护的几个记录个人学习笔记以及社区中其它大佬们的优秀博客链接的仓库都获得了不少star,感谢读者们的认可,我也会继续在开源社区多做贡献。github主页:https://github.com/BBuf ,欢迎来踩
BBuf
2024/06/18
3K0
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
独家 | Transformer的可视化理解——深入本质探索其优良表现的原因(附链接)
作者:Ketan Doshi 翻译:欧阳锦校对:和中华 本文约3800字,建议阅读10分钟本文通过可视化的方式清晰地展示了Transformer的工作本质,并从本质中探索了它具有优良表现的原因。
数据派THU
2021/07/16
3.3K0
开发者必读:计算机科学中的线性代数(附论文)
来源:机器之心 作者:Petros Drineas、Michael W. Mahoney 本文共3994字,建议阅读6分钟。 本文为你分享一篇来自普渡大学与UC Berkeley两位教授的概述论文中的线性代数知识。 矩阵计算在计算机科学中占有举足轻重的地位,是每个开发者都需要掌握的数学知识。近日,来自普渡大学的 Petros Drineas 与 UC Berkeley 的 Michael Mahoney 提交了一篇概述论文《Lectures on Randomized Numerical Linear
数据派THU
2018/01/29
2.4K0
开发者必读:计算机科学中的线性代数(附论文)
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制
Transformer[^1]论文中使用了注意力Attention机制,注意力Attention机制的最核心的公式为:
PP鲁
2022/09/20
18K0
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制
多种注意力机制详解及其源码
注意力机制的发展历程体现了人工智能领域对模型表达能力和效率的不断追求。从最初在序列模型中的应用,到Transformer模型的提出,再到当前在各个领域的广泛应用,注意力机制已经成为现代人工智能模型的核心组成部分。随着研究的深入,注意力机制将继续演化,推动人工智能技术的发展。因此提出更好的注意力机制,对于模型性能的提升很有帮助。
Srlua
2024/12/21
4430
多种注意力机制详解及其源码
《Transformer Quality in Linear Time》论文解读
原本的Transformer的Block遵循如下的设计范式:MHSA(多头自注意力)+ 一层或者两层的FFN(全连接层),如下图所示。我们只考虑FFN的话,其数学表达式如下:T表示句子长度,d表示词向量维度(也表示模型隐藏层维度),e表示expanded intermediate 特征大小。
marsggbo
2023/06/24
7220
《Transformer Quality in Linear Time》论文解读
原本的Transformer的Block遵循如下的设计范式:MHSA(多头自注意力)+ 一层或者两层的FFN(全连接层),如下图所示。我们只考虑FFN的话,其数学表达式如下:T表示句子长度,d表示词向量维度(也表示模型隐藏层维度),e表示expanded intermediate 特征大小。
marsggbo
2023/06/27
7080
《Transformer Quality in Linear Time》论文解读
图解transformer中的自注意力机制
在整个注意力过程中,模型会学习了三个权重:查询、键和值。查询、键和值的思想来源于信息检索系统。所以我们先理解数据库查询的思想。
deephub
2023/08/30
1K0
图解transformer中的自注意力机制
推荐阅读
以3D视角洞悉矩阵乘法,这就是AI思考的样子
5180
替换Transformer!谷歌提出 Performer 模型,全面提升注意力机制!
1.8K0
谷歌 | 大改Transformer注意力,速度、内存利用率都大幅度提升(附源代码)
9770
深度学习进阶篇7:Transformer模型长输入序列、广义注意力、FAVOR+快速注意力、蛋白质序列建模实操。
8690
自己挖坑自己填,谷歌大改Transformer注意力,速度、内存利用率都提上去了
5350
图解Transformer——注意力计算原理
4650
矩阵模拟!Transformer大模型3D可视化,GPT-3、Nano-GPT每一层清晰可见
1.8K0
视觉 Transformer 的可视化|CVPR2021
1.7K0
首发:吴恩达的 CS229的数学基础(线性代数),有人把它做成了在线翻译版本!
1.5K0
哈希算法、爱因斯坦求和约定,这是2020年的注意力机制
8440
高效处理多维数组:einsum()函数从入门到精通
2630
Bert Pytorch 源码分析:二、注意力层
2341
大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
3K0
独家 | Transformer的可视化理解——深入本质探索其优良表现的原因(附链接)
3.3K0
开发者必读:计算机科学中的线性代数(附论文)
2.4K0
注意力机制到底在做什么,Q/K/V怎么来的?一文读懂Attention注意力机制
18K0
多种注意力机制详解及其源码
4430
《Transformer Quality in Linear Time》论文解读
7220
《Transformer Quality in Linear Time》论文解读
7080
图解transformer中的自注意力机制
1K0
相关推荐
以3D视角洞悉矩阵乘法,这就是AI思考的样子
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验