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("聚合参数完成")
posted @ 2025-01-14 19:45  Cold_Chair  阅读(777)  评论(0)    收藏  举报