Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

测试时输出回答无法停止,直到256长度限制,loss很快收敛性,到0.82左右就不再下降 #54

Closed
rookiebird opened this issue Apr 10, 2023 · 3 comments

Comments

@rookiebird
Copy link

配置描述:
1、使用了finetune.sh脚本对llama-7b-hf进行finetune
2、
训练的时候使用的是两卡,32gv100, 对fintune.py进行过修改,主要为半精度加载模型训练,改动部分如下

model = LlamaForCausalLM.from_pretrained(
    args.model_path,
    load_in_8bit=False,
    torch_dtype=torch.float16,
    device_map=device_map,
).half()

tokenizer = LlamaTokenizer.from_pretrained(
    args.model_path, add_eos_token=True
)

#model = prepare_model_for_int8_training(model)

测试的时候,使用的是generate.sh脚本, 没有怎么改动generate.py 文件, 仅仅是将load_in_8bit 改为false。

3、使用的数据集是本github上百度网盘上下载的instruction数据集中的merge.json

问题描述:

  1. 训练了近三个epoch,实际在第1个epoch模型loss就从2.x 收敛到了0.82左右,后续两个epoch loss 就无法再下降了,想请教下你们这边一般loss大概数值是多少
  2. 调用generate.sh查看结果的时候,发现模型会一直输出,似乎无法输出eos符号,可以看下面这两个例子,着两个问题,模型都会一直好像在讲废话一样输出,知道达到Max new tokens的限制

1681093440444

1681092212987

3.有几率生成回复的时候会卡死,如下图
1681093397464

补充问题:
在我这里使用v100 双卡训练是没有问题的,我自己也试过使用原来的配置训练开8bit 双卡v100训练,根据bitsandbytes的回复,现在8bit训练是能适配所有显卡的,所以也符合预期,但是训练速度会比半精度慢不少,所以使用finetune.sh的时候我分别将batch_size 和micro_batch_size 增加了四倍训练了一个epoch, 测试之后还是会有上面三个类似的问题。

想请求下大家是否遇到过相似的问题,麻烦指点一下

@Facico
Copy link
Owner

Facico commented Apr 10, 2023

1、training loss下降的慢到后面不下降很正常(因为现在这个lora的setting要训练的参数比较少,同时batch size开的比较大,不过你将batch_size整体开大确实是会收敛的更慢,可以只增大micro_batch_size会跑的快一点),你可以看一下eval loss是否在下降。我们loss大概也是这样的。
2、将repetition penalty设置高一点可以避免一直生成,不过我们之前测的时候一般很早就到eos(除了有时候会生成重复的东西需要调大repetition penalty),你现在每个问题都是这个情况吗?
3、卡死的情况到没怎么遇过,感觉这种时候可以点一下stop,chatgpt那边有时候也是这样,和刷新、重启之类的一个道理,请求频繁了会造成一定的阻塞

8bit是否能在V100上训练这个我因为没直接在上面跑过,确实不太清楚,不过看很多人在8bit上都多少遇到了生成乱码、loss训练炸了等问题。如果方便的话,你可以把你在V100上的训练方案提供给我们。

@alisyzhu
Copy link

1、training loss下降的慢到后面不下降很正常(因为现在这个lora的setting要训练的参数比较少,同时batch size开的比较大,不过你将batch_size整体开大确实是会收敛的更慢,可以只增大micro_batch_size会跑的快一点),你可以看一下eval loss是否在下降。我们loss大概也是这样的。 2、将repetition penalty设置高一点可以避免一直生成,不过我们之前测的时候一般很早就到eos(除了有时候会生成重复的东西需要调大repetition penalty),你现在每个问题都是这个情况吗? 3、卡死的情况到没怎么遇过,感觉这种时候可以点一下stop,chatgpt那边有时候也是这样,和刷新、重启之类的一个道理,请求频繁了会造成一定的阻塞

8bit是否能在V100上训练这个我因为没直接在上面跑过,确实不太清楚,不过看很多人在8bit上都多少遇到了生成乱码、loss训练炸了等问题。如果方便的话,你可以把你在V100上的训练方案提供给我们。

我也会出现在这个问题,13B的fine-tune完成后,没给问题貌似都要在达到256之后才停止,而非语义完整才停止。

@Facico
Copy link
Owner

Facico commented Apr 11, 2023

这个issue可能对你们的问题有所帮助。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants