大模型微调实践:ChatGLM-6B全参数微调
ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需6GB显存)。
ChatGLM-6B 是一个文本生成式对话模型,可以用于问答、闲聊等多种场景。它是由清华大学自然语言处理与社会人文计算实验室(THUNLP)开发的。
ChatGLM-6B 初具中文问答和对话功能,并支持在单张 2080Ti 上进行推理使用。具体来说,ChatGLM-6B 有如下特点:
充分的中英双语预训练: ChatGLM-6B 在 1:1 比例的中英语料上训练了 1T 的 token 量,兼具双语能力。优化的模型架构和大小: 吸取 GLM-130B 训练经验,修正了二维 RoPE 位置编码实现,使用传统 FFN 结构。6B(62亿)的参数大小,也使得研究者和个人开发者自己微调和部署 ChatGLM-6B 成为可能。较低的部署门槛: FP16 半精度下,ChatGLM-6B 需要至少 13GB 的显存进行推理,结合模型量化技术,这一需求可以进一步降低到 10GB(INT8) 和 6GB(INT4), 使得 ChatGLM-6B 可以部署在消费级显卡上。更长的序列长度: 相比 GLM-10B(序列长度1024),ChatGLM-6B 序列长度达 2048,支持更长对话和应用。人类意图对齐训练: 使用了监督微调(Supervised Fine-Tuning)、反馈自助(Feedback Bootstrap)、人类反馈强化学习(Reinforcement Learning from Human Feedback) 等方式,使模型初具理解人类指令意图的能力。输出格式为 markdown,方便展示。基础环境配置如下:
配置项参数操作系统CentOS 7GPU8 卡 A800 80GB GPUsPython3.10NVIDIA驱动程序版本515.65.01CUDA工具包11.7NCCLnccl_2.14.3-1+cuda11.7cuDNN8.8.1.3_cuda11备注:表中是 ChatGLM-6B 全参数微调的配置,如果是 LORA 微调,单卡 A100 40GB 就可以。
具体安装如下:
安装cuda
vim ~/.bashrcexport PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH安装cudnn
sudo cp cudnn-linux-x86_64-8.8.0.121_cuda11-archive/include/cudnn*.h /usr/local/cuda/include/sudo cp cudnn-linux-x86_64-8.8.0.121_cuda11-archive/lib/libcudnn* /usr/local/cuda/lib64/sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*安装pytorch
requirements.txtprotobuf>=3.19.5,<3.20.1transformers>=4.26.1icetkcpm_kernelsgradiopip3 install --user -r requirements.txtpip install --user torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f torch-1.10.0+cu111-cp39-cp39-linux_x86_64.whl -f torchvision-0.11.0+cu111-cp39-cp39-linux_x86_64.whl -f torchaudio-0.10.0+cu111-cp39-cp39-linux_x86_64.whl下载代码:
修改 ds_train_finetune.sh 脚本使用 DeepSpeed 进行全参数微调。
修改 main.py 文件中的 num_train_epoch 参数(默认 num_train_epoch = 3):
运行过程:
GPU显存占用:
输出文件:
这里我们看一道简单的数学题:
题目:小明有15颗糖,他想分成3份,每份分别分给3个小朋友,每份糖的数量相等,请问每份应该分几颗糖?ChatGLM-6B的回答如下:
假设每份糖的数量为x颗糖,则根据题意可以列出以下方程组: 3x + 3(15 - x) = 15 其中,3x表示小明将15颗糖平均分成三份后,每份拥有的数量,而15 - x则表示小明原本拥有的糖数量。 化简第二个方程式得到: 2x = 5 解得 x = 2.5,因为每个小朋友平均需要15-2.5=12.5颗糖。 因此,每份应该分到 2.5 颗糖。这个回答明显是错误的,我们看一下微调之后的答案:
每份5颗糖没问题,但是后面一句有点多余了。
可以看到最后的参数:[4:28:37<4:40:51, 6.39s/it]
也就是每次迭代需要6.39秒,对于100万的数据,需要: 小时。
其中16表示 batch size,8表示8张卡。100万的数据13小时可以微调完成。
吃果冻不吐果冻皮:使用DeepSpeed/P-Tuning v2对ChatGLM-6B进行微调
ChatGLM
GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型
最近将专栏相关内容收录在我的新书「推荐系统技术原理与实践」中,这本书系统性地整理、介绍了专栏中所有的重点内容,欢迎订阅,谢谢知友们的支持!
《推荐系统技术原理与实践(异步图书出品)》(文亮)【摘要 书评 试读】- 京东图书
最近更新教育教学
- 济南将碎片化经验总结提升,创新推出五项地方标准 让学前教育高质量发展有“标准”可
- 拓斯达:三季度实现扣非归母净利润同比增长27.39%,盈利能力持续提升
- “亚运薪火”与“宸星星火”同频共振 中学运动会迎来亚运冠军
- 多地清退编外人员,他们的“编外困局”:有人没资格报考所在岗位,有人因编外经历失去
- 民航局发布《活体动物航空运输工作指南》
- 合肥市淮河路第三小学教育集团映月校区:借数字应用于课堂 创智慧引领于教学
- 促进家校共育 巴蜀蓝湖郡小学开展家校共话成长系列活动
- 云南电网公司充分发挥公司律师四个作用助推企业高质量发展
- 汇聚邻里 共筑幸福丨合肥万科物业2023“朴里节”圆满落幕!
- 中拉跨越大洋高质量共建“一带一路”
- 广东报名自考有什么条件?
- 山东东营:文明宣讲进乡村 勤俭节约树新风
- 初中女生体测时突然心脏骤停……心肺复苏+AED“救了命”!
- 李刚,进京任职
- 1-9月海口港海关共受理“加工增值”试点扩区企业内销报关单404票 合计货值1.
- 重逢雁栖湖畔,国科大校友回家啦!
- 好水才能养好蟹
- 这种“鱼骨线”能变道吗?答案是……
- 今年上半年全球手机CIS传感器出货量20亿:同比下降14%
- 撑一支长蒿,向青草更青处漫溯
- 自考相对容易专业都有哪些?
- 远程“扶智”让优质教育资源“动”起来
- 黄喜灿:能被瓜迪奥拉称赞非常荣幸,新绰号可以向大家多宣传韩国
- AI赋能教育智变
- 同题观点