Coobiw / MPP-LLaVA

Personal Project: MPP-Qwen14B & MPP-Qwen-Next(Multimodal Pipeline Parallel based on Qwen-LM). Support [video/image/multi-image] {sft/conversations}. Don't let the poverty limit your imagination! Train your own 8B/14B LLaVA-training-like MLLM on RTX3090/4090 24GB.
349 stars 19 forks source link

训练loss异常 #5

Closed balabala2023 closed 4 months ago

balabala2023 commented 9 months ago

按照您的步骤进行复现,训练时发现loss下降很慢,此外训练完的train_loss相比您提供的也不是一个数量级(高一个数量级)

image
Coobiw commented 9 months ago

你好,对于第一个问题,是因为我在这个commit里进行过修改 https://github.com/Coobiw/MiniGPT4Qwen/commit/4ad76d15c79cec9b08e8f0f0da69732d0924a9db 简单来说就是我放出来的log里的loss是除过梯度积累的iteration数的(就是accum_grad_iters,在yaml文件里是设置成16或者32),所以你看到的会差一个数量级,如果你使用的是这个commit之后的代码跑出这个结果是正常的

第二个问题的话,是因为事实上每隔accum_grad_iters个iterations才会进行更新,所以这个log_freq设置成50的话,其实会有点难看出来,你可以看每个epoch的下降情况,其实是稳定下降的。 或者: 你可以尝试在yaml文件的run部分(https://github.com/Coobiw/MiniGPT4Qwen/blob/master/lavis/projects/instruction_tuning/train.yaml#66)加入log_freq进行设置,设置成accum_grad_iters的整数倍(比如:128),可能看起来会更好。

Coobiw commented 9 months ago

关于log_freq的设置,我在 https://github.com/Coobiw/MiniGPT4Qwen/commit/911fc6b72bb90e526e285658e9866474519a8003这个新的commit里有设置,你可以仿照,但看整个epoch的loss可能会更靠谱哈

balabala2023 commented 9 months ago

好的,多谢哈,那如果llm切换成Qwen-14B是不是仅需要修改llm_model名称就可?我切换为14B,loss和7B的类似,但生成的效果差别非常大,基本上不可读;

Coobiw commented 9 months ago

我没有使用过Qwen-14B的模型,暂时想到你可以试着去修改、检查一下这三个地方:

  1. llm_model是否修改
  2. llm_tokenizer是否修改,我看到两个模型的tokenizer是有区别的,比如vocab_size就不一样
  3. 由于构建对话输入输出时需要chatml格式,尤其是im_start和im_end这两个token,所以必须使用chat模型,也就是Qwen-14B-chat 晚些我也可以试着去使用一下Qwen-14B-chat看看有没有类似问题
Coobiw commented 6 months ago

已经更新14B版本的训练,采用DeepSpeed的流水线并行在双卡3090上训练:commit

Coobiw commented 4 months ago

solved