libai icon indicating copy to clipboard operation
libai copied to clipboard

Use fuse multi head att

Open xiezipeng-ML opened this issue 2 years ago • 2 comments

xiezipeng-ML avatar Nov 01 '22 04:11 xiezipeng-ML

batch size = 4, acc step = 8, amp, open Checkpointing

1n1g use_fuse_multi_head_att = False use_fuse_multi_head_att = True
Throughput total_throughput: 151.70 samples/s total_throughput: 155.41 samples/s
GPU Memory 3147MiB 3129MiB

encoderdecoder中的self_attcross_att中都使用了fuse_multihead_att. 在28号上简单测了一下,带来的提升有限,应该是transpose的使用次数太多,我下个commit准备把if,else直接取消,默认使用fuse_multihead_att来测一下.

@chengtbf @strint @ouyangyu @CPFLAME

xiezipeng-ML avatar Nov 01 '22 07:11 xiezipeng-ML

  • 这里魔改了一下,self_attcross_att都使用了fuse_muti_head_attattention层默认为fuse_multi_head_att,一共只多出3个必须的transposeencode_embedding的输出进行一次transposedecoder_embedding的输出进行一次transposeloss接收的logits进行一次transpose
  • 如果数据处理的时候直接处理成[seq_len, batch_size]shape的话上述3个transpose可以取消
  • 用这个pr下面的单测测过了修改后的模型和huggingface对齐:tests/model_utils/test_mt5_loader_2.py

@chengtbf @CPFLAME @strint @ouyangyu

xiezipeng-ML avatar Nov 02 '22 11:11 xiezipeng-ML