0
点赞
收藏
分享

微信扫一扫

Bart的训练和推理


Bart 训练和预测的逻辑是不一样的。
训练的时候:

  • 并行
    因为要根据之前的序列得到后续的序列,于是可以采取并行训练的方式。比如说,我们的目标序列长度是N,那么并行训练就是搞一个N*N 的矩阵,但是这个矩阵是一个下三角的矩阵,这样就可以解决生成当前词看见后续词的问题了。
    是通过下面这个方法得到​​​decoder_attention_mask​​,
  • Bart的训练和推理_机器学习

  • 详细说说下面几个参数:
    input_shape: 维度信息是 [bsz,tgt_len],
    inputs_embeds
    past_key_values_length

程序会进入第一个if逻辑,进入到 _make_causal_mask() 中

Bart的训练和推理_机器学习_02


full()函数会得到一个指定初始化值的矩阵。

arange()函数会初始化一个从0到 mask.size(-1) 的值,在本代码中就是一个如下的序列:

Bart的训练和推理_python_03


再经过一次的比较运算就得到了mask矩阵:

Bart的训练和推理_python_04


得到这个mask矩阵之后,需要根据bsz进行扩展一下,扩展的函数就是expand。最后得到的combined_attention_mask,为啥这个combined_attention_mask 为啥需要 past_key_value_length ?在得到这个 attention_mask 之后,就送入到decoder的第一层self-attention 中,计算得到每个位置的输出向量:

Bart的训练和推理_python_05

inference的时候
因为inference的时候是自回归的,无法并行。


举报

相关推荐

0 条评论