FlagOpen / FlagEmbedding

Retrieval and Retrieval-augmented LLMs
MIT License
7.76k stars 565 forks source link

添加gradient_checkpointing参数,finetune脚本报错,请教一下这个怎么解决 #184

Open liuzhiyong01 opened 1 year ago

liuzhiyong01 commented 1 year ago

训练参数: torchrun --nnodes=1 --nproc_per_node=2 --master_port=$PORT \ -m FlagEmbedding.baai_general_embedding.finetune.run \ --output_dir $OUTPUT_DIR \ --model_name_or_path $MODEL_PATH \ --train_data $DATA_PATH \ --learning_rate 1e-5 \ --fp16 \ --num_train_epochs $EPOCH \ --per_device_train_batch_size 64 \ --gradient_checkpointing \ --dataloader_drop_last True \ --evaluation_strategy "no" \ --normlized True \ --temperature 0.02 \ --negatives_cross_device \ --query_max_len 64 \ --passage_max_len 128 \ --train_group_size 2 \ --logging_steps 10 \ --save_strategy "steps" \ --save_steps 200 \ --save_total_limit 2 \ --report_to "none"

image

不管是单GPU还是多GPU,都会报错, bu tian jia不添加--gradient_checkpointing参数,训练正常

staoxiao commented 1 year ago

--gradient_checkpointing 目前只能在deepspeed框架下使用,需要同时添加

--deepspeed ds_config.json \
--gradient_checkpointing

ds_config.json可以参考https://github.com/FlagOpen/FlagEmbedding/blob/master/examples/finetune/ds_config.json

liuzhiyong01 commented 1 year ago

使用deepspeed的 zero-stage=2,会出现如下错误: image zero-stage=0,1可以正常运行

staoxiao commented 1 year ago

应该是deepspeed的问题,deepspeed最新版fix了这个bug,可以更新到最新版,

billvsme commented 1 week ago

使用deepspeed的 zero-stage=2,会出现如下错误: image zero-stage=0,1可以正常运行

在微调bge-en-icl,使用deepspeed stage2的时候遇到了同样错误。deepspeed版本0.15.4

billvsme commented 1 week ago

使用deepspeed的 zero-stage=2,会出现如下错误: image zero-stage=0,1可以正常运行

在微调bge-en-icl,使用deepspeed stage2的时候遇到了同样错误。deepspeed版本0.15.4

当我添加use_reentrant=False,在stage2下运行正常

--gradient_checkpointing_kwargs '{"use_reentrant":false}'