Coobiw/MPP-LLaVA

训练loss异常

Closed this issue · 6 comments

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

Coobiw commented

你好,对于第一个问题,是因为我在这个commit里进行过修改 4ad76d1
简单来说就是我放出来的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

关于log_freq的设置,我在 911fc6b这个新的commit里有设置,你可以仿照,但看整个epoch的loss可能会更靠谱哈

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

Coobiw commented

我没有使用过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看看有没有类似问题

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

solved