chatglm2-6b在P40上做LORA微调
内容提要
本文介绍了使用chatglm2-6b模型在集团EA的P40机器上进行垂直领域的LORA微调。chatglm2-6b相比于chatglm有性能提升、更长的上下文、更高效的推理和更开放的协议。微调环境包括性能要求和镜像环境。LORA微调方法是冻结预训练模型权重参数,在加入额外的网络层并训练这些新增网络层参数。微调使用huggingface提供的peft工具。目前模型还在finetune中。
延伸解读
P40 显卡的可行性分析
文章指出 chatglm2-6b 在 fp16 精度下推理仅需 14G 显存,而 P40 显卡通常配备 24G 显存,因此能够满足需求。这为在旧款硬件上部署和微调大模型提供了参考,但需注意微调时显存占用可能高于推理,实际训练中需关注 batch size 和优化器状态的影响。
环境配置中的关键依赖
微调环境基于 Docker 镜像构建,需安装 PyTorch、transformers、peft、deepspeed 等包。文章特别提到 EA 上缺少 mpich,若使用 deepspeed 需手动安装。此外,加载本地模型时需通过环境变量指定缓存路径,避免因权限问题导致失败。这些细节对复现实验至关重要。
LoRA 微调的核心机制
LoRA 通过冻结预训练模型权重,在旁路添加降维矩阵 A 和升维矩阵 B,仅训练这两个小矩阵。初始化时 A 用随机高斯分布,B 用零矩阵,保证训练初期旁路输出为零。这种方法大幅减少了可训练参数量,降低了显存需求,适合在有限资源下进行领域适配。
微调进展与 prompt 构建
目前模型仍在 finetune 中,batch=1,epoch=3,已完成一轮迭代。作者强调在领域内微调时,构建 prompt 非常重要,且对最终模型效果影响较大。这提示读者在类似任务中应重视数据构造和提示设计,而非仅关注超参数调整。
Q&A
chatglm2-6b相比于chatglm有哪些提升?
chatglm2-6b在性能、上下文长度、推理效率和协议开放性方面都有提升。
如何在P40上配置chatglm2-6b的微调环境?
需要使用docker镜像配置环境,并安装多种依赖包以满足性能要求。
什么是LORA微调方法?
LORA微调方法通过冻结预训练模型参数,添加额外网络层并训练这些新增层的参数。
huggingface的peft工具有什么用?
peft工具用于方便地微调预训练语言模型,包括LORA微调。
chatglm2-6b的微调结果如何?
目前模型仍在finetune中,已完成一轮迭代,batch为1,epoch为3。
在微调过程中需要注意哪些事项?
需要关注模型加载路径和如何构建prompt,这对微调效果有重要影响。