超级 AI 助手:全新提升!中文 NLP 训练框架,快速上手,海量训练数据
“超级 AI 助手:全新提升!中文 NLP 训练框架,快速上手,海量训练数据,ChatGLM-v2、中文 Bloom、Dolly_v2_3b 助您实现更智能的应用!”
1.简介
目标
:基于pytorch
、transformers
做中文领域的 nlp 开箱即用的训练框架,提供全套的训练、微调模型(包括大模型、文本转向量、文本生成、多模态等模型)的解决方案;数据
:从开源社区,整理了海量的训练数据,帮助用户可以快速上手;
同时也开放训练数据模版,可以快速处理垂直领域数据;
结合多线程、内存映射等更高效的数据处理方式,即使需要处理
百GB
规模的数据,也是轻而易举;流程
:每一个项目有完整的模型训练步骤,如:数据清洗、数据处理、模型构建、模型训练、模型部署、模型图解;模型
:当前已经支持gpt2
、clip
、gpt-neox
、dolly
、llama
、chatglm-6b
、VisionEncoderDecoderModel
等多模态大模型;多卡串联
:当前,多数的大模型的尺寸已经远远大于单个消费级显卡的显存,需要将多个显卡串联,才能训练大模型、才能部署大模型。因此对部分模型结构进行修改,实现了训练时
、推理时
的多卡串联功能。
模型训练
2.thu-chatglm-6b
模型教程
本文件夹📁只能进行单机单卡训练,如果想要使用单机多卡,请查看文件夹📁Chatglm6b_ModelParallel_ptuning。
在文件code02_训练模型全部流程.ipynb
的cell-5
代码的前面,创建一个新的cell
,然后把下面的代码放到这个 cell 里面
注意:
如果想要覆盖模型老知识,你数据需要重复很多次才行~
文件不要搞错了,使用我最新的代码文件
只是对transofrmers
包的Trainer
类做了修改,对modeling_chatglm.py
代码也做了修改。这么做,可以让你在拥有 22G 显存的情况下,可以训练thu-chatglm-6b
模型。
那么,基于Trainer
的丰富方法,你可以做很多事情。而且使用peft
包https://github.com/huggingface/peft的lora
算法,让你在一个消费级别的显卡上,就可以训练thu-chatglm-6b
模型。
安装
上面是文件工程,这里开始说安装包,直接使用pip
安装
就这么简单,不需要安装别的东西了
训练部分
在最新的版本中,只需要查看
code02_训练模型全部流程.ipynb
文件就行了推理部分
推理部分,直接看
infer.ipynb
代码能到这里,也是恭喜你,微调模型已经成功了。这个时候,在这个文件夹下,肯定有一个文件夹叫
test003
(就是上面output_dir="test003"
对应的文件夹)在这个文件夹下,你肯定可以看到很多
checkpoint-xxx
,选择一个你喜欢的(当然,肯定是最好选择最新的)。
3.chatglm_v2_6b_lora
添加了上面的参数,确实可以进行模型并行,但是,这是在chatglm
模型代码没有 bug 的情况下,目前已经定位到 bug,并且修复了 bug,我也提交 PR 给 chatglm 团队,可以点击这个链接查看https://huggingface.co/THUDM/chatglm2-6b/discussions/54#64b542b05c1ffb087056001c
考虑到他们团队效率问题,如果他们还没有修改这个 bug,那你们可以自己修改,主要是这么做:
在modeling_chatglm.py
的第955
行代码附近(也就是modeling_chatglm.py/ChatGLMForConditionalGeneration.forward
的loss
部分):
原始代码:
修改为:
是的,就修改那一行即可
然后就可以正常跑起来了~
下载数据集
ADGEN 数据集任务为根据输入(content)生成一段广告词(summary)。
从 Google Drive或者 Tsinghua Cloud 下载处理好的 ADGEN 数据集,将解压后的 AdvertiseGen
目录放到本目录下。
硬件要求
有个
3090
显卡即可(24G 显存左右)在下面这个参数下,显存只需要
14G
训练脚本
使用 vscode 调试,就在
.vscode/launch.json
里面;直接使用 sh,
sh train.sh
推理
使用文件:
infer_lora.ipynb
使用
lora
推理
血的教训
一定要从
huggingface
上把chatglm-v2-6b
的所有文件都下载下来,放在一个文件夹下;这样即使他更新了,也不会影响到你。如果你不下载,你会很被动😒
相关的 BUG
很多人在跑多卡的时候,会遇到一些莫名其妙的错误,建议您按照下面两个步骤进行排查:
一定要看我上面折叠的那一块东西,就是
🚨注意
部分。检查
transformers
的版本,如果太低,就更新一下,建议更新:pip install transformers -U
4.中文的dolly_v2_3b
模型
训练中文的
dolly_v2_3b
模型dolly_v2_3b
模型本质上就是使用的gpt_neox
模型框架,可以商用,而且也都出来很多年了。当前有很多人基于
llama
、gptj
、chatglm-6b
等模型,做了很多微调,有些也都做过了,有些不能商用,有些还要申请,实在是太可惜了,太麻烦了。既然
dolly_v2_3b
可以商用,那我们就主打一个随意,稍微动动手就可以训练一个属于我们的模型。本仓库用到的代码,来源于
databrickslabs/dolly
,对代码做了部分调整和融合。反正就是复制粘贴
、懂得都懂
~模型叫什么名字:
小黑子
😛,已将模型放在https://huggingface.co/yuanzhoulvpi/xiaoheizi-3b
🎯 支持多卡模型并行:也不知道
databrickslabs/dolly
为啥要使用gpt_neox
模型,这个模型transformers
对他支持的其实一般,于是我把代码魔改了一部分,增加了多卡并行计算功能(主要是是模型并行
).🥱 虽然代码是从
databrickslabs/dolly
复制的,但是简化了很多不必要的代码,更简单一点,我不喜欢复杂的代码,越简单越好。😵 支持
bp16
:我原本的打算是说支持fp16
的,但是发现fp16
怎么搞都不行,但是bp16
倒是可以。下一步优化方向
😆 添加
lora
等微调训练代码,这个简单,等后面都训练好了,我添加一下。模型训练情况
训练时间:280 小时左右
训练设备:
4台3090
更多
当前的模型参数是
3b
,但是当你把整个流程跑通之后,可以很轻松的将3b
模型换成7b
模型或者更大的gpt_neox
模型。而你只需要将硬件进行提升即可,无需调整代码~当前的
3b
模型是否满足你的需求还不确定,后面你可以试一试。(当前还没发布)到底是大模型好还是小模型好,可以看看这句话:
吴恩达:有多少应用程序需要用到像GPT-4这样的最大型模型,而不是云提供商提供的更小(更便宜)的模型,甚至是本地托管的模型(比如运行在桌面上的gpt4all)还有待观察
对于个人或者小企业,强调的的就是在
垂直领域
做快速迭代
,希望3b
模型可以帮助到你!
5.chinese_bloom
支持对
falcon模型
做 sft~✅ 基于stanford_alpaca项目,使用
sft
格式数据对bloom
、falcon
模型微调;✅ 支持
deepspeed-zero2
、deepspeed-zero3
;✅ 支持自定义数据,支持大数据训练;
✅ 得益于
bloom
本身的能力,微调后的模型支持中文
、英文
、代码
、法语
、西班牙语
等;✅ 微调后的模型,中文能力显著提升;
✅ 支持不同尺寸
bloom
模型,如560m
、3b
、7b
、13b
;✅ 支持
falcon
模型,如https://huggingface.co/tiiuae/falcon-7b
;
体验
bloom-560m_chat
: 想要体验一个轻量的,那就直接体验5.6亿参数
https://huggingface.co/yuanzhoulvpi/chinese_bloom_560mbloom-7b_chat
: 想要体验一个更大的,那就可以试一试70亿参数
https://huggingface.co/yuanzhoulvpi/chinese_bloom_7b_chat
🎉 在 hugginface 上部署了一个 cpu 版本的(有点慢,毕竟是🆓)https://huggingface.co/spaces/yuanzhoulvpi/chinese_bloom_560_chat
模型
bloom
模型支持中文
、英文
、代码
、法语
、西班牙语
。bloom-系列模型
: https://huggingface.co/bigscience
数据
数据来源于
BelleGroup
,主要是用到这几个数据集:['BelleGroup/generated_chat_0.4M', 'BelleGroup/school_math_0.25M', 'BelleGroup/train_2M_CN', 'BelleGroup/train_1M_CN', 'BelleGroup/train_0.5M_CN', 'BelleGroup/multiturn_chat_0.8M']
;可以基于这些数据样式,制作自己的数据,并训练;
步骤
数据部分
运行
data_proj/process_data.ipynb
代码;或者模仿结果,制作自己的数据集;运行结束之后,有一个文件夹
data_proj/opendata
。文件夹下有若干个json
格式的文件。运行模型
基础运行策略
deepspeed
运行策略
推理代码
infer.ipynb
文件gradio
交互界面:https://huggingface.co/spaces/yuanzhoulvpi/chinese_bloom_560_chat 因为是使用的 huggingface 的免费的 cpu 版本,所以推理速度比较慢。
效果不管是写代码还是写文案,
bloom-7b
在中文领域有极大的潜力
体验
chinese_bloom_560m
模型,可以在这里体验https://huggingface.co/spaces/yuanzhoulvpi/chinese_bloom_560_chatchinese_bloom_7b
模型,可以在这里体验http://101.68.79.42:7861
项目链接:https://github.com/yuanzhoulvpi2017/zero_nlp
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。
版权声明: 本文为 InfoQ 作者【汀丶人工智能】的原创文章。
原文链接:【http://xie.infoq.cn/article/a11082c169d35f6cc0bde7aab】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论