ChatGLM2-6B icon indicating copy to clipboard operation
ChatGLM2-6B copied to clipboard

[BUG/Help] <微调训练完毕发现output文件夹中只有几个json文件后续怎么使用>

Open wys2641970184 opened this issue 2 years ago • 5 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues

Current Behavior

微调训练完毕发现output文件夹中只有几个json文件后续怎么使用,这几个json都是训练中结果的输出,模型微调怎么调了 我应该加载那个模型?后续怎么操作 望解答!

Expected Behavior

No response

Steps To Reproduce

1.bash train.sh 2.output文件夹

Environment

- OS:ubuntu
- Python:3.10
- Transformers:
- PyTorch:2.0.0
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :12

Anything else?

No response

wys2641970184 avatar Aug 08 '23 02:08 wys2641970184

不管是二次预训练,微调,还是奖励模型训练,最终都会生成.bin文件,没有则说明你的参数写错了,或者是中途失败了

Veken avatar Aug 10 '23 02:08 Veken

检查一下你的脚本中的--max_steps,这表示每隔多少步存一次checkpoint,这里面有你的模型文件。如果这个值大于你实际的steps,那是不存checkpoint的,所以没有模型文件,一般来说,这个值要被你的steps整除,然后你选择最后存的那次checkpoint目录就行

yinheng-gh avatar Aug 10 '23 04:08 yinheng-gh

是不是你的transformer版本太高,生成的是model.safetensors,把Transformer的modeling_utils.py文件下的save_pretrained函数参数safe_serialization改成False就可以生成之前格式的bin

izyForever avatar Dec 15 '23 16:12 izyForever

image

izyForever avatar Dec 15 '23 16:12 izyForever

我也刚刚遇到这个问题。个人认为也许是代码逻辑里有不太合理的地方(算不上bug)。

比如说我一个epoch是50 steps,设置了训练2 epochs,也就是100 steps。 我设置每save_steps=32,即每32 steps保存一次checkpoint。 最终会发现在32、64、96 steps处都保存了完整的checkpoint(即包含bin参数文件),但是并不会保存100 steps完全训练完成时的bin文件。 这个地方就需要我们自己确定save_steps可以被总steps数整除,才能确保训练完成时会生成一个checkpoint。这对直接设置训练epochs数(而不是steps数)的用户来说,并不方便。

EdwardKSG avatar Jan 08 '24 03:01 EdwardKSG