/RLHF

Implementation of Chinese ChatGPT

Primary LanguagePython

Features

提供2大功能:

Setup

1. Install apex

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

2. Install deepspeed

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架构 image info

或运行torch.cuda.get_device_capability()获取

Data & Model Download

1. 模型下载

模型 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

2. 数据下载

数据集 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

Usage

1. LLM模型评测

对开源中文LLM进行ZeroShot、OneShot或FewShot的评测,评测任务和数据集使用CLUEBenchmark ,评测方法和prompt模板参考Pangu-alpha论文 。详见eval_pretrain.pydata.py

目前支持5个开源模型:

  • Pangu-350M
  • Pangu-2.6B
  • Pangu-13B
  • GLM-350M-chinese
  • GLM-10B-chinese
cd examples
bash eval_pretrain.sh

2. SFT

使用开源LLM + SFT&Reward数据进行SFT训练

cd examples
bash train_sft.sh

3. Reward Model

使用SFT模型 + SFT&Reward数据进行Reward模型训练。训练时,将SFT模型的前70%层固定,不进行梯度更新

cd examples
bash train_reward.sh

4. RLHF

利用PPO算法和Reward Model,进一步更新SFT模型。基于开源RLHF框架trlx 实现

cd examples
bash train_rlhf.sh

Results

1. LLM模型评测

以下为验证集(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

2. SFT

模型训练参数:

模型 可训练参数量 数据量 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] 若申请的是招行贷款,要计算贷款利息或者每月还款金额,需要知道贷款本金,贷款期限,还款方式,贷款年利率。若上述信息都确认到,可以通过我行贷款计算器尝试计算,登录招行官网右下方找到“理财计算器”--“个人贷款计算器”可以计算。

3. Reward Model

模型训练参数:

模型 可训练参数量 数据量 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