一些问题
1、在Ch4.7中:关于反向传播
已知:

理论上 对 求导应该得到一个的三阶张量,但是在如下公式中

其直接将结果写成了
这是因为如果我们详细计算,会发现得出的三阶张量是一个块对角矩阵,其对应的元素与 相同,在形式上是等价的,所以可以这么写。
2、什么是KV Cache
对于token分解之后、再进行embedding得到的矩阵E(词向量矩阵)
一方面经过Wq变成Query矩阵Q(进行了一些发问)
另一方面经过Wk变成Key矩阵K(尝试回答一些问题)
同时也经过Wv(down)变成值矩阵V
通过softmax(Q与K的点积),得出每个上下文对某个询问的更新权重,乘以Wv(down)变为要修改该询问的元素的向量偏移量,再将多头注意力concat到一起,并乘output matrix得到最终的向量偏移量,添加到原有的向量中。
在实际的推理过程中,新预测的token是一个一个出来的,流程类似{i,am}预测出{i,am,your),再拿{i,am,your},预测{i am your father}
每次预测时,拿新的Q去和K与V相乘,我们可以把之前的K、V缓存下来用于下一次计算,如图:

Q不用缓存的原因是下一步运算时不需要上一步的Q(实际上缓存V就是缓存了上一步Q计算的结果)
3、张量并行是如何实现的?
MLP阶段:先列剖分再行剖分,这样在一个MLP层中,各GPU不用相互通信

MHA阶段:多头注意力自带并行性,拆开计算即可。注意:对于MHA的张量并行,最小单位最好是一个注意力头,否则在MHA内部各GPU还需要互相通信