(新手亲测有效)bug解决:在用显存24G的3090采用LoRA微调ChatGLM-6B(FP16)时报错torch.OutOfMemoryError:CUDA out of Memory.

        理论上,ChatGLM-6B(FP16)模型部署运行时需要大约13G的显存空间即可。在采用LoRA对ChatGLM-6B(FP16)进行微调时,显存空间会占用到20G多一点(参考LLM - ChatGLM-6B Lora 微调与推理_chatglm2-6b训练lora-CSDN博客),按照这个情况,显存为24G的3090显卡是足够对其运行的。

        但是,在运行Chatglm_lora_tuning.py时出现的GPU(3090,显存24G)内存溢出(torch.OutOfMemoryError:CUDA out of Memory. Tried to allocate ......)的问题。

        因为,这个bug太过于广泛了,当时本人没有搜索到直接的解决方法,有一些通过将模型进行INT8或INT4量化后,减少对GPU内存的需求进行解决的方法。基于文章开头的理论分析,本人认为不是FP16模型导致的问题,因此,没有通过更换量化模型的方式进行解决。由于本人的电脑有两张GPU,另一张仍然是24G的3090,只是其它应用对其内存占有率较低(相对于GPU0少占用几百兆),采用GPU1运行不再出现该问题,但是出现了ValueError: Attempting to unscale FP16 gradients. 和  AttributeError: 'ChatGLMTokenizer' object has no attribute 'sp_tokenizer'. Did you mean: '_tokenize'?等bug。

        在解决了alueError: Attempting to unscale FP16 gradients. 和  AttributeError: 'ChatGLMTokenizer' object has no attribute 'sp_tokenizer'. Did you mean: '_tokenize'?这两个bug后,在GPU0上运行时,不再有torch.OutOfMemoryError:CUDA out of Memory.报错。

        解决方法参考:        (新手亲测有效)bug解决:ValueError: Attempting to unscale FP16 gradients. 反复出现的问题。-CSDN博客

     

你可能感兴趣的:(bug,人工智能,语言模型)