laekov / fastmoe

A fast MoE impl for PyTorch
https://fastmoe.ai
Apache License 2.0
1.57k stars 189 forks source link

你好,我想请问下在fastmoe中如何定义 dp+mp下的moe #188

Closed daixiangzi closed 9 months ago

daixiangzi commented 10 months ago
model = FMoETransformerMLP(num_expert=2,d_model=d_model,d_hidden=d_model*4, world_size =torch.distributed.get_world_size())

训练伪代码:
backbone_ddp = fmoe.DistributedGroupedDataParallel( module=model,device_ids,[local_rank],backbone_ddp._sync_params()
....
....
backbone_ddp.allreduce_params()
opt.step()

我用上面代码训练的时候,我有一点疑问:(单机8卡) 1)上述代码是不是还需要添加一个moe_group? 2)这里是不是相当于我有2 x world_size=2x8=16个专家? 3)当我把num_expert改成1或者8的时候,占用的显存似乎差不多

laekov commented 10 months ago
  1. moe_group 默认是全局所有进程的 group
  2. 对的. 相当于有 16 个专家.
  3. 这个比较奇怪. 可能是专家本身参数比较少. 可能需要进行一些调试以获得更多的信息.
daixiangzi commented 10 months ago
  • moe_group 默认是全局所有进程的 group
  • 对的. 相当于有 16 个专家.
  • 这个比较奇怪. 可能是专家本身参数比较少. 可能需要进行一些调试以获得更多的信息.

那保存模型的时候是不是我得把每个rank的checkpoint 保存下来

laekov commented 9 months ago

那保存模型的时候是不是我得把每个rank的checkpoint 保存下来

是的

Qianshaowei commented 9 months ago

那保存模型的时候是不是我得把每个rank的checkpoint 保存下来

是的

按这样,单机推理的时候是不是得初始化16个专家,然后加载模型的函数得重写? 请问有没有完善的保存成单卡模型的函数?

laekov commented 9 months ago

按这样,单机推理的时候是不是得初始化16个专家,然后加载模型的函数得重写?

是的

请问有没有完善的保存成单卡模型的函数?

我们目前没有。欢迎 contribute

Qianshaowei commented 9 months ago

按这样,单机推理的时候是不是得初始化16个专家,然后加载模型的函数得重写?

是的

请问有没有完善的保存成单卡模型的函数?

我们目前没有。欢迎 contribute

好的,感谢回复