第二百八十六章 视界,加点 (第2/2页)
学公开课:
【资料价值:62】
【适配相关性:低】
【重复内容:高】
哈子,不是说你不好的意思哈,内容重复了主要是。
韩路一这次算是真正体会到了什麽叫「知识滑过大脑皮层」的感觉。
各种各样的相关信息飞速地在脑海中穿行,其中最重要最本质的东西被整理归位。
这种感觉就很爽,就像是开了挂一样。
哦,原来我真开了啊,那没事了。
在视界的可编程界面里,韩路一开辟出了一个单独的地址,存放这些被视界整理出来最有用最相关的知识。
随着文档逐渐成型,视界面板上的内容也开始发生变化。
原本散乱漂浮的知识点,像是被一根根细线串在了一起,然後变成了一张复杂又有序的大网。
【技能结构识别中————】
【知识片段整理中————】
【推理路径压缩中————】
韩路一猛地睁开眼睛。
等等,让我有点儿仪式感。
「视界,加点!」
【算子适配 Lv.1,已习得】
这下舒服了。
韩路一精神一振。
虽然所有的提示语都是他自己给自己写的插件,但是功能是实打实的。
韩路一打开江松然发过来的适配清单,滚动了一会儿,在里面找到了一个标着三个红色感叹号
的条目。
FusedAttentionBackward,注意力融合反向算子。
这是汤圆的训练框架里最关键的算子之一,前向推理完全用不到,只有在反向传播计算梯度的时候才会触发。
正因为只在训练里出现,赵文渊和江松然他们一直没有去适配它。毕竟优先保了推理路径的流畅性,但是训练效率上的损耗是真实存在的,如果要想做训练,这个算子必须得做。
融合算子是什麽?反向算子又是什麽?
前向Attention(注意力)大家都很熟悉了。
Query、Key、Value三组张量进来,算出注意力权重,再乘上V,得到输出。
推理的时候,最重要的是前向快。
但训练的时候,真正麻烦的是反向。
你不只要知道输出是什麽,还要知道输出变化之後,Q、K、V三组值要怎麽调整。
要是按照普通的实现,这里可以用很多其他算子替代。
先算dV,再算dP,再还原softma梯度,再一步步算过去。
最後就可以得到一个新值,但每一个算子运算,都要读写一次显存,都要运输一次数据。
而大家公认的是,搬数据,比算数据贵。
聪明的晶片工程师们想出了一个解决办法。
既然这个反向计算每次都要跑,跑法都是固定的,那我们把这些算子融合在一起,直接在显卡核心里一次性跑完,不就不用把数据搬来搬去了吗?
这就是融合算子。
想法是很好,但是也很难。
反向计算本来占的内存就大,融合之後就更大。
这个算子可以说是在考验工程师对硬体理解、内存编排的极限了。
这麽难的任务,怎麽办呢?
韩路一调用新拿到的【算子适配】技能,指向了这个注意力融合反向算子。
然後在韩路一的眼中,出现了一个L100显卡的透明模型。
模型在半空中逐渐放大,如同变成了一座悬浮在半空中的立体工厂。
每一个线程块都是一个发光的巨大机械臂。
而每一段共享内存都是一排排透明的储物格。
寄存器像一个传送带,围绕着巨大的计算核心,一块块数据块被送进高速运转的计算核心,然後又被吐出来。
韩路一明白,自己接下来的任务,是优化这个工厂的操作流程。
>