LLaMA-Factory icon indicating copy to clipboard operation
LLaMA-Factory copied to clipboard

deepspeed zero2预训练loss不稳定

Open AGI-player opened this issue 1 year ago • 2 comments

使用新版本代码(commit 33f2c0d4f89cf76671c0fdfbcee79d732b6a020e),随机初始化权重训练llama2-13b模型,多机情况下采用deepspeed zero3模式,配置如下,采用bf16,训练学习率(warmup)和loss情况如下,整体看着还算正常 { "train_batch_size": "auto", "train_micro_batch_size_per_gpu" :"auto", "gradient_accumulation_steps": "auto", "gradient_clipping": "auto", "fp16": { "enabled": "auto", "loss_scale": 0, "loss_scale_window": 1000, "initial_scale_power": 16, "hysteresis": 2, "min_loss_scale": 1 }, "bf16": { "enabled": "auto" }, "zero_optimization": { "stage": 3, "overlap_comm": true, "stage3_gather_16bit_weights_on_model_save": true } } lr

ds3

所有设置参数均保持不变,改用deepspeedzero2配置时,训练loss变得极其不稳定,有哪位大佬了解类似情况不?如果是学习率较大造成的话,应该是两种情况都不稳定更合理些。 { "train_batch_size": "auto", "train_micro_batch_size_per_gpu": "auto", "gradient_accumulation_steps": "auto", "gradient_clipping": "auto", "zero_allow_untested_optimizer": true, "fp16": { "enabled": "auto", "loss_scale": 0, "initial_scale_power": 16, "loss_scale_window": 1000, "hysteresis": 2, "min_loss_scale": 1 }, "zero_optimization": { "stage": 2, "allgather_partitions": true, "allgather_bucket_size": 5e8, "reduce_scatter": true, "reduce_bucket_size": 5e8, "overlap_comm": true, "contiguous_gradients": true } } ds2

AGI-player avatar Jan 06 '24 06:01 AGI-player

请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain

YixinSong-e avatar Jan 08 '24 09:01 YixinSong-e

请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain

参考的https://github.com/FlagAlpha/Llama2-Chinese/blob/main/train/pretrain/pretrain_clm.py 需要在LLaMA-Factory对应加载模型的地方进行修改

    model = AutoModelForCausalLM.from_config(config)
    n_params = sum({p.data_ptr(): p.numel() for p in model.parameters()}.values())
    logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params")

AGI-player avatar Jan 09 '24 09:01 AGI-player

请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain

参考的https://github.com/FlagAlpha/Llama2-Chinese/blob/main/train/pretrain/pretrain_clm.py 需要在LLaMA-Factory对应加载模型的地方进行修改

    model = AutoModelForCausalLM.from_config(config)
    n_params = sum({p.data_ptr(): p.numel() for p in model.parameters()}.values())
    logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params")

你好请问一下训练的命令是什么,我现在使用推荐的pretrain命令,得到的结果是一个lora的权重。

Lizidong01 avatar Jan 31 '24 01:01 Lizidong01

请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain

参考的https://github.com/FlagAlpha/Llama2-Chinese/blob/main/train/pretrain/pretrain_clm.py 需要在LLaMA-Factory对应加载模型的地方进行修改

    model = AutoModelForCausalLM.from_config(config)
    n_params = sum({p.data_ptr(): p.numel() for p in model.parameters()}.values())
    logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params")

你好请问一下训练的命令是什么,我现在使用推荐的pretrain命令,得到的结果是一个lora的权重。

做如下调整:--stage pt --finetuning_type full ,可以简单看下该工程代码,处理逻辑还是比较清晰的

AGI-player avatar Feb 03 '24 02:02 AGI-player

请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain

参考的https://github.com/FlagAlpha/Llama2-Chinese/blob/main/train/pretrain/pretrain_clm.py 需要在LLaMA-Factory对应加载模型的地方进行修改

    model = AutoModelForCausalLM.from_config(config)
    n_params = sum({p.data_ptr(): p.numel() for p in model.parameters()}.values())
    logger.info(f"Training new model from scratch - Total size={n_params/2**20:.2f}M params")

你好请问一下训练的命令是什么,我现在使用推荐的pretrain命令,得到的结果是一个lora的权重。

做如下调整:--stage pt --finetuning_type full ,可以简单看下该工程代码,处理逻辑还是比较清晰的

谢谢,问这个问题的时候还没看,只是试了试,后来看到就改过来了,谢谢!!!

Lizidong01 avatar Feb 04 '24 08:02 Lizidong01