LLaMA-Factory
LLaMA-Factory copied to clipboard
deepspeed zero2预训练loss不稳定
使用新版本代码(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
}
}
所有设置参数均保持不变,改用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
}
}
请问你是如何使用llama 13b的config,然后随机初始化权重的,启动要设置什么参数? 我也想尝试pretrain
请问你是如何使用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")
请问你是如何使用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的权重。
请问你是如何使用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 ,可以简单看下该工程代码,处理逻辑还是比较清晰的
请问你是如何使用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 ,可以简单看下该工程代码,处理逻辑还是比较清晰的
谢谢,问这个问题的时候还没看,只是试了试,后来看到就改过来了,谢谢!!!