机缘巧合之预训练数据的处理都在Megatron里
但模型后处理改了下模型结构,实现的是HF版本,这个改动不方便加到Megatron上,而且转来转去很麻烦
于是将 Megatron 里处理好的数据接到基于 accelerate 的 HF 训练代码里
可以通过,torch.distributed 代替 mpu 的各种 rank,然后只用 data parallel 就行了
torch.distributed.get_rank()
torch.distributed.get_world_size()
需要用到 process_group 的时候传 None,默认就会使用 accelerate 里隐式运行的
default_group = torch.distributed.init_process_group()
注意不能把 megatron 里 labels 直接丢给 HF,应该 HF 里会再 shift 一次
4d attention mask HF 不支持,可以 hack 改 transformers 里的 _prepare_4d_causal_mask
成 identity 函数