Facico
Facico
把mirco batch size设置成不会爆显存就行(设置的越小,显存需求越小,最小为1)。V100可能有8bit训练会炸loss的问题,可以参考相关的[issue](https://github.com/Facico/Chinese-Vicuna/issues/39),把8bit关掉然后再开fp16(16bit)。 用deepspeed的offload跑的太慢了就一直没写。
把这行“device_map="auto", #device_map={"": 0}”改成“device_map={"": 0}”(前面那个是多卡推理的,老版本的依赖不支持多卡推理) 或者按照requirement_4bit.txt的依赖升级一下相关的包可以解决(应该升级transformers和peft就能解决) 但是新版本的依赖训练8bit的时候保存会有点问题,所以当时写的时候还是保留了的
@dizhenx @jzsbioinfo 直接用我们的模型效果差很多可能有以下原因: 1、tokenizer和sentencepiece版本的问题,这个问题可以参考我们的提供的[配置](https://github.com/Facico/Chinese-Vicuna/blob/master/docs/problems.md) 2、显卡和8bit不兼容的问题。比如V100就不太兼容(可以到仓库找相关的V100的问题)(这个问题可以用纯cpu推理的方式来排查) 解决方法是推理的时候把8bit相关的去掉改成fp16,相关[issue](https://github.com/Facico/Chinese-Vicuna/issues/39)有说明
@alisyzhu 感谢你提供这个问题。这个可能是bitsandbytes的问题,如果是V100用8bit加载很容易炸loss。想问一下你的显卡是V100吗,我们之前确实没有注意这个问题,V100是不支持8bit tensor core的,如下图。  相关issue: [issue1](https://github.com/TimDettmers/bitsandbytes/issues/100), [issue2](https://github.com/mymusise/ChatGLM-Tuning/issues/19), [issue3](https://github.com/tloen/alpaca-lora/issues/170#issuecomment-1486556500) 还有一个问题,我想知道你用我们的generate、interaction等测试文件能生成正常的结果吗(我们推理文件也是自动load 8bit 的) 如果用V100的话,可以把load_in_8bit改成False,loss应该就不容易炸了。
@alisyzhu 把prepare_model_for_int8_training(model)去掉,然后在get_peft_model之后加上model.half()试试
@alisyzhu 我们没拿V100跑过。粗略估算,7B+8bit差不多是1B1G,13B+16bit可能就是1B4G,你可以拿之前开8bit(虽然会有问题)的显存*2算算。 如果实在需要跑,需要使用deepspeed+zero2/3 offload的技术,在huggingface的trainer上很好加,你可以试试(可以参考这些[博客](https://blog.csdn.net/weixin_43301333/article/details/127237122))。由于使用zero offload代码会跑的很慢,当时我们就没有考虑,如果之后有需求会加上的。或者如果你成功加上跑上了,我们也会非常感谢你的贡献。
@alisyzhu 我好像忘记问你mirco batch size开的多少了,你可以试试开到1
你可以参考一下这个[issue](https://github.com/TimDettmers/bitsandbytes/issues/201)
@xiaoaidafu 你可以试试我们最新的chat.sh,原来的那个脚本会有一点问题,见这个[issue](https://github.com/Facico/Chinese-Vicuna/issues/66)
你现在这个问题和其他一些issue问题类似,如[issue1](https://github.com/Facico/Chinese-Vicuna/issues/74), [issue2](https://github.com/Facico/Chinese-Vicuna/issues/42),问题应该出在你的GPU环境上。