PaddlePaddle/PaddleNLP

[Question]: 为什么判断attn_mask是否为causal是通过比较上三角矩阵的方式?

runzhech opened this issue · 1 comments

请提出你的问题

PaddleNLP/paddlenlp/transformers /llama/modeling.py这个文件中提供了生成causal_mask以及判断mask是否为causal的方法。
causal_mask应当是一个下三角矩阵,但是这里判断mask是否为causal的方法为什么是取mask的上三角矩阵进行比较呢?
f83fe03bd860192e065f2c611df71304

这里为了适配zero-padding策略,上三角的值为负无穷,并且不在zero-padding(会改变下三角矩阵的值)的范围之内,通过上三角判断比较方便。