返回

第二百八十六章 视界,加点

首页
关灯
护眼
字:
大
中
小
上一页 回目录 下一章 进书架
写的插件,但是功能是实打实的。

    韩路一打开江松然发过来的适配清单,滚动了一会儿,在里面找到了一个标着三个红色感叹号

    的条目。

    FusedAttentionBackward,注意力融合反向算子。

    这是汤圆的训练框架里最关键的算子之一,前向推理完全用不到,只有在反向传播计算梯度的时候才会触发。

    正因为只在训练里出现,赵文渊和江松然他们一直没有去适配它。毕竟优先保了推理路径的流畅性,但是训练效率上的损耗是真实存在的,如果要想做训练,这个算子必须得做。

    融合算子是什麽?反向算子又是什麽?

    前向Attention(注意力)大家都很熟悉了。

    Query、Key、Value三组张量进来,算出注意力权重,再乘上V,得到输出。

    推理的时候,最重要的是前向快。

    但训练的时候,真正麻烦的是反向。

    你不只要知道输出是什麽,还要知道输出变化之後,Q、K、V三组值要怎麽调整。

    要是按照普通的实现,这里可以用很多其他算子替代。

    先算dV,再算dP,再还原softma梯度,再一步步算过去。

    最後就可以得到一个新值,但每一个算子运算,都要读写一次显存,都要运输一次数据。

    而大家公认的是,搬数据,比算数据贵。

    聪明的晶片工程师们想出了一个解决办法。

    既然这个反向计算每次都要跑,跑法都是固定的,那我们把这些算子融合在一起,直接在显卡核心里一次性跑完,不就不用把数据搬来搬去了吗?

    这就是融合算子。

    想法是很好,但是也很难。

    反向计算本来占的内存就大,融合之後就更大。

    这个算子可以说是在考验工程师对硬体理解、内存编排的极限了。

    这麽难的任务,怎麽办呢?

    韩路一调用新拿到的【算子适配】技能,指向了这个注意力融合反向算子。

    然後在韩路一的眼中,出现了一个L100显卡的透明模型。

    模型在半空中逐渐放大,如同变成了一座悬浮在半空中的立体工厂。

    每一个线程块都是一个发光的巨大机械臂。

    而每一段共享内存都是一排排透明的储物格。

    寄存器像一个传送带,围绕着巨大的计算核心,一块块数据块被送进高速运转的计算核心,然後又被吐出来。

    韩路一明白,自己接下来的任务,是优化这个工厂的操作流程。

    >
上一页 回目录 下一章 存书签