提供2大功能:
- LLM模型评测:参考GPT类模型,基于ZeroShot和FewShot实现
- ChatGPT模型训练pipeline:根据Learning to Summarize from human feedback ,实现3大流程: SFT、Reward Model和RLHF
git clone https://github.com/NVIDIA/apex
cd apex
pip install --global-option="--cpp_ext" --global-option="--cuda_ext" --no-cache -v --disable-pip-version-check . 2>&1 | tee build.log
git clone https://github.com/microsoft/deepspeed
cd deepspeed
rm -rf build
TORCH_CUDA_ARCH_LIST="7.0" DS_BUILD_OPS=1 pip install -e . --global-option="build_ext" --global-option="-j8" --no-cache -v --disable-pip-version-check
如果想创建binary wheel,方便在其他机器上安装,可使用如下命令,会在dist
目录生成类似可安装文件deepspeed-0.3.13+8cd046f-cp38-cp38-linux_x86_64.whl
git clone https://github.com/microsoft/deepspeed
cd deepspeed
rm -rf build
TORCH_CUDA_ARCH_LIST="7.0" DS_BUILD_OPS=1 python setup.py build_ext -j8 bdist_wheel
根据下图,调整TORCH_CUDA_ARCH_LIST="7.0"
为对应的NVIDIA GPU架构
或运行torch.cuda.get_device_capability()
获取
模型 | size | 百度网盘地址 | 提取码 |
---|---|---|---|
Pangu-350M | 659MB | Pangu-350M | c5jj |
Pangu-2.6B | 9.8GB | Pangu-2.6B | 2rad |
Pangu-13B | 23.6GB | Pangu-13B | u3dx |
GLM-350M-chinese | 679MB | GLM-350M-chinese | ii8e |
GLM-10B-chinese | 18.4G | GLM-10B-chinese | fynj |
数据集 | size | huggingface地址 | 百度网盘地址 | 提取码 |
---|---|---|---|---|
CLUE Benchmark | 500MB | CLUE Benchmark | m6gt | |
SFT & Reward Data | 5GB | sunzeyeah/chinese_chatgpt_corpus | SFT & Reward Data | ecyc |
百科 | 652MB | baike_qa_2019 | 7jad | |
知道问答 | 847MB | zhidao | neds | |
对联 | 221MB | couplets | 54ey | |
古文 | 125MB | Classical & Modern | a4cr | |
古诗词 | 87MB | chinese poetry | 5zzj | |
微博新闻评论 | 522MB | weibo summary comments | w0g1 |
PS: SFT & Reward Data基于百科、知道问答、对联、古文、古诗词、微博新闻评论数据构造,可直接用于SFT和Reward阶段训练。详见data_prepare.py
对开源中文LLM进行ZeroShot、OneShot或FewShot的评测,评测任务和数据集使用CLUEBenchmark ,评测方法和prompt模板参考Pangu-alpha论文 。详见eval_pretrain.py 和 data.py
目前支持5个开源模型:
- Pangu-350M
- Pangu-2.6B
- Pangu-13B
- GLM-350M-chinese
- GLM-10B-chinese
cd examples
bash eval_pretrain.sh
使用开源LLM + SFT&Reward数据进行SFT训练
cd examples
bash train_sft.sh
使用SFT模型 + SFT&Reward数据进行Reward模型训练。训练时,将SFT模型的前70%层固定,不进行梯度更新
cd examples
bash train_reward.sh
利用PPO算法和Reward Model,进一步更新SFT模型。基于开源RLHF框架trlx 实现
cd examples
bash train_rlhf.sh
以下为验证集(dev.json)结果:
Dataset | Method | Metrics | Task Type | Zero-shot | Few-shot | ||||||||
GLM-350M-chinese | Pangu-350M | Pangu-2.6B | GLM-10B-chinese | Pangu-13B | GLM-350M-chinese | Pangu-350M | Pangu-2.6B | GLM-10B-chinese | Pangu-13B | ||||
OCNLI | PPL | acc | NLI | 0.3074 | 0.3369 | 0.3061 | 0.3288 | 0.3301 | 0.3298 | 0.3352 | 0.3216 | ||
CMNLI | PPL | acc | NLI | 0.3279 | 0.3302 | 0.3310 | 0.3338 | 0.3358 | 0.3356 | 0.3328 | 0.3300 | ||
CHID | PPL | acc | Cloze(multi-choices) | 0.0734 | 0.0916 | 0.0670 | 0.1016 | 0.1018 | 0.0979 | 0.1007 | 0.0996 | ||
CMRC2018 | generation | f1 | MRC | 0.093 | 0.0979 | 0.1007 | 0.1392 | 0.021 | 0.09345 | 0.097 | 0.1007 | ||
CLUEWSC2020 | PPL | acc | WSC | 0.4934 | 0.5328 | 0.5592 | 0.5131 | 0.4671 | 0.5526 | 0.4473 | 0.4671 | ||
C3 | PPL | acc | Common sense reasoning | 0.2360 | 0.2426 | 0.2418 | 0.2573 | 0.2567 | 0.2476 | 0.2559 | 0.2515 | ||
AFQMC | PPL | acc | Text classification | 0.6306 | 0.4582 | 0.4914 | 0.4960 | 0.5000 | 0.4872 | 0.4993 | 0.5018 | ||
CSL | PPL | acc | Text classification | 0.4943 | 0.4913 | 0.4666 | 0.5126 | 0.4996 | 0.5140 | 0.5036 | 0.4973 | ||
IFLYTEK | PPL | acc | Text classification | 0.1292 | 0.3058 | 0.265 | 0.2620 | 0.2408 | 0.2539 | 0.2535 | 0.2524 | ||
TNEWS | PPL | acc | Text classification | 0.1582 | 0.2022 | 0.2449 | 0.2489 | 0.2527 | 0.2555 | 0.2466 | 0.2494 |
模型训练参数:
模型 | 可训练参数量 | 数据量 | batch size | sequence length | 硬件 | 显存占用 | speed | Hours per epoch |
---|---|---|---|---|---|---|---|---|
GLM-350M-chinese | 355M | 5.4M | 4 | 512 | V100 16G | 13G | 3.7 s/iter | 88h |
Pangu-350M | 345M | 5.4M | 48 | 512 | A100 80G | 78G | 1.91 s/iter | 27.5h |
Pangu-2.6B | 2.6B | 5.4M | 8 | 512 | A100 80G | 79.4G | 9.61 s/iter | 116h |
SFT模型下载:
预训练模型 | SFT数据集 | size | huggingface地址 | 百度网盘地址 | 提取码 |
---|---|---|---|---|---|
Pangu-350M | SFT & Reward Data | 1.3GB | sunzeyeah/pangu-350M-sft | Pangu-350M-SFT | 0f8j |
Pangu-2.6B | SFT & Reward Data | 9.8GB | sunzeyeah/pangu-2.6B-sft | Pangu-2.6B-SFT | r13w |
Pangu-2.6B-SFT部分生成示例:
# 生成参数
max_length = 512
max_length_generation = 100
top_k = 10
temperature = 0.8
do_sample=True
[Input] 我不能确定对方是不是喜欢我,我却想分分秒秒跟他在一起,有谁能告诉我如何能想他少一点<sep>回答:
[Generated] 你爱他就多关心他,少在他面前表现出你的脆弱。这样他才更会爱你。
[Input] 一次次买彩,一次次倾听那比分,一次次兴奋,一次次失落,一次次无归而返!最终还是任8~~~~<sep>回答:
[Generated] 我也是这样,买彩的时间也不长,但是每次都是这样。。。。。。。
[Input] 现代文:太祖很高兴地说:凭着这样的部下去作战,还担心不能取胜么?<sep>古文:
[Generated] 太祖悦曰:此自是以去,何忧不胜?
[Input] 现代文:十一年秋,丞相伯颜与阿术会师襄阳,遣阿剌罕率诸翼军攻郢、复诸州,十月夺取郢州之南门堡。<sep>古文:
[Generated] 十一年秋,丞相伯颜与阿术会师襄阳,遣阿剌罕率诸翼军攻郢、复诸州,十月夺郢州之南门堡。
[Input] 以孔⁇的风格,写一篇经书,题为中庸<sep>
[Generated] 我闻昔者夫子之言也,曰:吾道一以贯之。其或行之或不行,吾未知之。是故君子慎其独也。吾未见好德如好色者也。好德如好色者,未之有也。好德如好色者,既已之有也。君子不以言举人,不以人废言。好德如好色者,其如命何!吾
[Input] 以陆游的风格,写一首七言诗,题为晨起<sep>
[Generated] 秋光满纸清⁇明,睡醒一江万马奔。自笑身如枯木鹤,何妨食饱作闲人。
[Input] 上联:霜风几笔雕残画<sep>下联:
[Generated] 云海千山叠翠峰
[Input] 新闻内容:据悉,这名14岁的女生在Facebook上发布了戏谑考试的博文,其中使用了胡志明1946年反对法国殖民者的讲话,随后被越南当局停课一年。越南官员称,该学生歪曲了历史事件,侮辱了老师的情感。多数网友虽对越南当局做法不满,但都表示,至少他们还能上Facebook.<sep>摘要:越南女生Facebook上模仿胡志明讲话被停课<sep>评论:
[Generated] 这女的,还真有勇气,我喜欢你!
[Input] 新闻内容:***天津考察时勉励大学生志存高远、脚踏实地,转变择业观念,坚持从实际出发,勇于到基层一线和艰苦地方去,把人生的路一步步走稳走实,善于在平凡岗位上创造不平凡的业绩<sep>摘要:***勉励大学生转变择业观念勇于到基层和艰苦地方去<sep>评论:
[Generated] 现在的社会,很多年轻人都是在父母的安排下,去了不同的单位,在不同的地方工作,在不同的城市生活,这就导致了年轻人的思维方式,价值观都不一样,这也导致了年轻人的成长道路,也有很多的不安全感,这也是很正常的事情,年轻人需要正确的引导,正确的引导,也需要正确的引导!
[Input] 问题:劳动仲裁申请法院强制执行,法院强制执行需要多长时间<sep>回答:
[Generated] 一般申请法院强制执行需要3-6个月时间,具体需要看法院的执行措施。
[Input] 问题:银行贷款50万,30年!年利率是4.41怎么算一个月还多少钱<sep>回答:
[Generated] 若申请的是招行贷款,要计算贷款利息或者每月还款金额,需要知道贷款本金,贷款期限,还款方式,贷款年利率。若上述信息都确认到,可以通过我行贷款计算器尝试计算,登录招行官网右下方找到“理财计算器”--“个人贷款计算器”可以计算。
模型训练参数:
模型 | 可训练参数量 | 数据量 | batch size | sequence length | 硬件 | 显存占用 | speed | Hours per epoch |
---|---|---|---|---|---|---|---|---|
Pangu-350M | 131M | 12M | 32 | 512 | A100 80G | 72.6G | 1.91 s/iter | 105h |
Pangu-2.6B | 815M | 12M | 8 | 512 | A100 80G | 80.7G | 423h |
Reward模型下载:
预训练模型 | SFT数据集 | size | huggingface地址 | 百度网盘地址 | 提取码 |
---|---|---|---|---|---|
Pangu-350M | SFT & Reward Data | 1.3GB | sunzeyeah/pangu-350M-reward | Pangu-350M-Reward | 4gju |