OpenBMB / MiniCPM-V

MiniCPM-V 2.6: A GPT-4V Level MLLM for Single Image, Multi Image and Video on Your Phone
Apache License 2.0
12.01k stars 842 forks source link

全量微调vision端不稳定 #585

Open 128Ghe980 opened 5 days ago

128Ghe980 commented 5 days ago

我的训练方式是分两个阶段

  1. 冻结vision端(vision+resampler),只微调llm
  2. 冻结llm,微调vision
  3. 全部微调

但现在loss曲线很差,请问是什么问题呢

数据集为数学相关,输入题目和图片,输出题目关键点

以下为bash文件中的设置:

per_device_train_batch_size=1
per_device_eval_batch_size=1
gradient_accumulation_steps=1

--tune_vision False \
  --tune_resampler False \
  --model_name_or_path $MODEL \
  --llm_type $LLM_TYPE \
  --data_path $DATA \
  --remove_unused_columns False \
  --label_names "labels" \
  --prediction_loss_only False \
  --bf16 True \
  --bf16_full_eval False \
  --fp16 False \
  --fp16_full_eval False \
  --tf32 True\
  --do_train True\
  --do_eval False\
  --tune_llm True \
  --model_max_length 10240 \
  --max_slice_nums 9 \
  --num_train_epochs 1 \
  --output_dir $output_dir \
  --logging_dir $output_dir \
  --logging_strategy "steps" \
  --logging_steps 1 \
  --per_device_train_batch_size $per_device_train_batch_size \
  --per_device_eval_batch_size $per_device_eval_batch_size \
  --gradient_accumulation_steps $gradient_accumulation_steps \
  --evaluation_strategy "no" \
  --save_strategy steps \
  --save_steps 2000 \
  --save_total_limit 3 \
  --learning_rate 5e-6 \
  --weight_decay 0.1 \
  --adam_beta2 0.95 \
  --warmup_ratio 0.01 \
  --gradient_checkpointing True \
  --deepspeed $deepspeed_config \
  --report_to "wandb" \
  --run_name $RUN_NAME \

不同阶段会修改--llm_tune等设置,其他不变

以下为loss曲线

vision+resampler

另外还试了二阶段是train resampler的情况,以下为loss曲线

resampler

大概什么问题呢,是任务太难了吗?

128Ghe980 commented 5 days ago

补充一下,一阶段的纯llm微调使用的无图数据,希望llm端能适应新的任务,后面的阶段尽量仿造了minicpm的预训练阶段的过程

KeepFaithMe commented 5 days ago

大佬,您好!能不能上传一下funetune文件夹下的dataset.py文件,想参考一下您的,我发现我在微调的时候老是报data fetch error的错误(报错位置定位在dataset.py文件中)。万分感谢!

jackyjinjing commented 5 days ago

大佬,您好!能不能上传一下funetune文件夹下的dataset.py文件,想参考一下您的,我发现我在微调的时候老是报data fetch error的错误(报错位置定位在dataset.py文件中)。万分感谢!

可以按照这个pr改一下试试 #579

KeepFaithMe commented 5 days ago

大佬,您好!能不能上传一下funetune文件夹下的dataset.py文件,想参考一下您的,我发现我在微调的时候老是报data fetch error的错误(报错位置定位在dataset.py文件中)。万分感谢!

可以按照这个pr改一下试试 #579

KeepFaithMe commented 5 days ago

感谢感谢,就是这个问题

jackyjinjing commented 5 days ago

感谢感谢,就是这个问题

对你有用的话,帮忙给pr点个👍,让它更加容易合入吧,免得后面的人在遇到这个问题😊