实际问题场景:
使用llamafactory进行微调qwen2.5 7B和14B的大模型时,会出现out of memory的报错。尝试使用降低batch_size(原本是2,现在降到1)的方式,可以让qwen2.5:7B跑起来,但时不时会不稳定,还是会报这个错误;微调14B的话,直接就报错了,根本跑起来。(显卡配置为两张23G的4090显卡,显存一共46G)目测lora微调显存的大小是模型本身大小的3倍以上,才能正常跑起来。
解决办法:
- 去qwen的官网找到下载ds_config_zero3.json这个文件
https://github.com/QwenLM/Qwen/blob/main/finetune/ds_config_zero3.json - 将文件放在llamafactory目录下
- 编辑ds_config_zero3.json这个文件,将device改成cpu即可
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"offload_param": {
"device": "cpu",
"pin_memory": true
},
注: 若不知道这个配置的代表什么含义的话,可以看这一篇deepspeed配置讲解
- 启动llamafactory-cli webui ,把参数设置好,然后预览下启动命令,复制出来
- 将命令复制出来 ,在llamafactory当前目录下直接粘贴,启动就大功告成了!!!
(据说更大的模型都可以训练,只是需要的时间很多,没办法,时间换空间是这样了)
启动后查看显卡使用情况,显卡直接拉满
命令:nvitop
如果没有这个命令,pip install nvitop ,就可以实时查看显卡使用情况了
起飞