xingzhaohu's picture
Add files using upload-large-folder tool
0143a83 verified
|
Raw
History Blame Contribute Delete
1.67 kB

Optimizer Offloading 修复

Patch文件仅适用于 Megatron-LM-250328, 对于其他版本的Megatron-LM,您需要手动修改代码

Megatron-LM Commit ID: 6ba97dd37150a6bfba03d31808674211cf2a4d0d

使用Patch文件修复

cp Pai-Megatron-Patch/megatron_patch/fixes/optimizer_offloading/fix_optimizer_offloading.patch Pai-Megatron-Patch/Megatron-LM-250328
cd Pai-Megatron-Patch/Megatron-LM-250328
git apply fix_optimizer_offloading.patch

手动修复

Fix 1

修改 DistributedOptimizer._copy_model_params_to_main_params:

Before

    def _copy_model_params_to_main_params(self):
        """
        Copy model params to main params.

        During finetuning, this method is used to reload the main params from
        the model params. This copy does not make use of the grad buffer as
        an intermediary.
        """
        if isinstance(self.optimizer, HybridDeviceOptimizer):
            return

        ... # other code

After

    def _copy_model_params_to_main_params(self):
        """
        Copy model params to main params.

        During finetuning, this method is used to reload the main params from
        the model params. This copy does not make use of the grad buffer as
        an intermediary.
        """
        if isinstance(self.optimizer, HybridDeviceOptimizer):
            return self.optimizer._update_fp32_param_by_new_param()

        ... # other code

Fix 2

HybridDeivceOptimizer增加以下方法

    def _update_fp32_param_by_new_param(self):
        for param, fp32_param in self.param_to_fp32_param.items():
            fp32_param.data.copy_(param)