训练loss异常
Closed this issue · 6 comments
balabala2023 commented
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),可能看起来会更好。
balabala2023 commented
好的,多谢哈,那如果llm切换成Qwen-14B是不是仅需要修改llm_model名称就可?我切换为14B,loss和7B的类似,但生成的效果差别非常大,基本上不可读;
Coobiw commented
我没有使用过Qwen-14B的模型,暂时想到你可以试着去修改、检查一下这三个地方:
- llm_model是否修改
- llm_tokenizer是否修改,我看到两个模型的tokenizer是有区别的,比如vocab_size就不一样
- 由于构建对话输入输出时需要chatml格式,尤其是im_start和im_end这两个token,所以必须使用chat模型,也就是Qwen-14B-chat
晚些我也可以试着去使用一下Qwen-14B-chat看看有没有类似问题
Coobiw commented
solved