昇腾社区首页
中文
注册

Torch对接DeepSpeed框架

  1. 使用业务用户登录到计算节点。

    业务用户非{MindIO-install-user}、HwHiAiUser、hwMindX用户,由用户根据实际情况决定。

  2. 进入DeepSpeed安装目录。
    cd {deepspeed安装目录}/runtime
  3. 修改engine.py文件。
    1. 打开engine.py文件。
      vim engine.py
    2. 按“i”进入编辑模式,修改如下内容。
      • 在文件首行加入以下内容。
        import mindio_acp
      • 将torch.load函数替换为mindio_acp.load函数。
        替换前:
        optim_checkpoint = torch.load(optim_load_path,
                                      map_location=torch.device('cpu'))

        替换后:

        optim_checkpoint = mindio_acp.load(optim_load_path, map_location='cpu')
      • 将普通的torch.save函数替换为mindio_acp.save函数。
        替换前:
        torch.save(state, save_path)

        替换后:

        mindio_acp.save(state, save_path)
      • 将包含torch.save函数的with open语句替换为mindio_acp.save函数。
        替换前:
        with open(self._get_optimizer_ckpt_name(save_dir, tag, expp_rank), 'wb') as fd:
            torch.save(optimizer_state, fd)
            fd.flush()

        替换后:

        mindio_acp.save(optimizer_state, self._get_optimizer_ckpt_name(save_dir, tag, expp_rank))
      • 替换DeepSpeedEngine._get_expert_ckpt_name函数。

        替换前:

                        expert_state_dict = torch.load(DeepSpeedEngine._get_expert_ckpt_name(
                            checkpoint_path,
                            -1, # -1 means ignore layer_id
                            global_expert_id,
                            tag,
                            mpu),
                            map_location=torch.device('cpu'))

        替换后:

                        expert_state_dict = mindio_acp.load(DeepSpeedEngine._get_expert_ckpt_name(
                            checkpoint_path,
                            -1, # -1 means ignore layer_id
                            global_expert_id,
                            tag,
                            mpu),
                            map_location='cpu')
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  4. 修改module.py文件。
    1. 打开module.py文件。
      vim pipe/module.py
    2. 替换torch.save和torch.load,替换方式参见步骤3.b ~步骤 3.c
  5. 修改state_dict_factory.py文件。
    1. 打开state_dict_factory.py文件。
      vim state_dict_factory.py
    2. 替换torch.save和torch.load,替换方式参见步骤3.b ~ 步骤3.c
  6. 完成步骤3 ~ 步骤5的.py文件修改,DeepSpeed即可使用MindIO ACP服务。