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

请问可以实现用qlora+model parallel 吗

Open zin-Fu opened this issue 2 years ago • 2 comments

          因为`bitsandbytes`实现模型量化的时候是通过重载`.cuda()`函数实现的,也就是说模型在放到显卡的时候会发生量化(改变tensor维度)。在微调的时候,加载的预训练权重是fp16的,所以需要设置`args.device='cpu'`,把权重加载进来再调用`.cuda()`。因为这个是`bitsandbytes`的实现,我们也没办法控制,只能适配。

所以维度不一致是显卡配置的问题,.cuda()调用失败了。

Originally posted by @1049451037 in https://github.com/THUDM/VisualGLM-6B/issues/125#issuecomment-1592488628

zin-Fu avatar Apr 09 '24 09:04 zin-Fu

显卡资源有限 (4070*2), 用lora+model parallel 还是会报错OOM(并且根据这个issue作者有提到这个https://github.com/THUDM/VisualGLM-6B/issues/209#issuecomment-1683482499)

我根据https://github.com/THUDM/VisualGLM-6B/issues/209 这个issue修改了finetune_qlora.sh和finetune_visualglm.py这两个文件

但是如果用qlora的话如果要先在cpu上加载模型,那么 model, args = FineTuneVisualGLMModel.from_pretrained(model_type, args, overwrite_args={'model_parallel_size':2}) 这个命令就无法执行了(我只有一个cpu)

那这样的话请问怎么实现用qlora+model parallel呢

zin-Fu avatar Apr 09 '24 09:04 zin-Fu

显卡资源有限 (4070*2), 用lora+model parallel 还是会报错OOM(并且根据这个issue作者有提到这个#209 (comment))

我根据#209 这个issue修改了finetune_qlora.sh和finetune_visualglm.py这两个文件

但是如果用qlora的话如果要先在cpu上加载模型,那么 model, args = FineTuneVisualGLMModel.from_pretrained(model_type, args, overwrite_args={'model_parallel_size':2}) 这个命令就无法执行了(我只有一个cpu)

那这样的话请问怎么实现用qlora+model parallel呢

请问您实现了吗?能进一步探讨下吗?

corkiyao avatar Sep 09 '24 00:09 corkiyao