Open lhyscau opened 3 months ago
你好,我这里是直接参考promptcblue的代码,并没有尝试过去掉会对结果有什么影响。另外,我记得model.enable_input_require_grads()
去掉好像会报错?
我尝试在单卡跑,去掉貌似不会报错。还有另外一个问题是在启动的moelora.bash中
deepspeed --num_gpus=4 --master_port $MASTER_PORT run_mlora.py \ --deepspeed src/ds.config \ --do_train \ --train_file $your_data_path/train.json \ --cache_dir $your_data_path \ --prompt_column input \ --response_column target \ --overwrite_cache \ --model_name_or_path $model_name_or_path \ --output_dir $your_checkpopint_path \ --overwrite_output_dir \ --max_source_length $MAX_SOURCE_LENGTH \ --max_target_length 196 \ --per_device_train_batch_size 4 \ --per_device_eval_batch_size 4 \ --gradient_accumulation_steps 8 \
使用4张显卡时,这里per_device_train_batch_size 是4,梯度累计是8,那么对分布式训练中,minibatch在一张卡上应该是32个sample,四张卡的话一次梯度更新应该使用的batch_size应该是4*32=128?
不知道我理解的是否有问题呢?如果这样计算跟论文中的64没有对上
你好,我这里是直接参考promptcblue的代码,并没有尝试过去掉会对结果有什么影响。另外,我记得
model.enable_input_require_grads()
去掉好像会报错?
确实,如果需要使用model.gradient_checkpointing_enable()来节省显存, model.enable_input_require_grads()注释掉会报错
我尝试在单卡跑,去掉貌似不会报错。还有另外一个问题是在启动的moelora.bash中
deepspeed --num_gpus=4 --master_port $MASTER_PORT run_mlora.py \ --deepspeed src/ds.config \ --do_train \ --train_file $your_data_path/train.json \ --cache_dir $your_data_path \ --prompt_column input \ --response_column target \ --overwrite_cache \ --model_name_or_path $model_name_or_path \ --output_dir $your_checkpopint_path \ --overwrite_output_dir \ --max_source_length $MAX_SOURCE_LENGTH \ --max_target_length 196 \ --per_device_train_batch_size 4 \ --per_device_eval_batch_size 4 \ --gradient_accumulation_steps 8 \
使用4张显卡时,这里per_device_train_batch_size 是4,梯度累计是8,那么对分布式训练中,minibatch在一张卡上应该是32个sample,四张卡的话一次梯度更新应该使用的batch_size应该是4*32=128? 不知道我理解的是否有问题呢?如果这样计算跟论文中的64没有对上
这个bash应该是我中间用两卡时候跑的参数,后来整理代码时忘记改梯度累计的步数了。最终使用的超参数是与论文一致的,即batch size为64。感谢提醒!