deepspeed 使用小记
deepspeed 优化原理:
不是专门做优化的,只是使用的话,大致了解原理即可,参考:
https://zhuanlan.zhihu.com/p/674745061
官网:
https://github.com/microsoft/DeepSpeed
安装:
先安装 torch,再直接安装 deepspeed 和 mpi4py(只能 conda 安装)。
pip install deepspeed
conda install mpi4py
之后在第一次运行时,deepspeed 会用 ninja (根据环境里的 torch 和 cuda 版本)自动 build。
zero1/2 不支持 eval
当开启了 deepspeed 的 zero1/2 optimize 时
对 transformers 的 Trainer 调用 evaluate,会发现不支持
此时可以临时改成 zero3 来做推理,或者直接把 deepspeed 关了
zero3 自定义保存
如果想重载 save_model 方法,需要注意,用了 zero3,每一个 gpu 进程上没有完整的模型切片,需要先做参数聚合,再做后面的保存操作,例如:
if self.args.deepspeed is not None and self.args.hf_deepspeed_config is not None and \
self.args.hf_deepspeed_config.is_zero3():
from deepspeed.runtime.zero import GatheredParameters
with GatheredParameters(self.model.parameters(), modifier_rank=0):
model = copy.deepcopy(self.model).to('cpu')
print("聚合参数完成")
转载注意标注出处:
转自Cold_Chair的博客+原博客地址

浙公网安备 33010602011771号