分类 增量预训练 下的文章
医疗大模型增量预训练的方法
文档可以参考:
https://juejin.cn/post/7301909180230074420
基于ChatGPT Training Pipeline,融入领域增量知识,进行训练预训练,需要进行四阶段训练:
第一阶段:PT(Continue PreTraining)增量预训练,在海量领域文档数据上二次预训练GPT模型,以注入领域知识
第二阶段:SFT(Supervised Fine-tuning)有监督微调,构造指令微调数据集,在预训练模型基础上做指令精调,以对齐指令意图
第三阶段:RM(Reward Model)奖励模型建模,构造人类偏好排序数据集,训练奖励模型,用来对齐人类偏好,主要是"HHH"原则,具体是"helpful, honest, harmless"
第四阶段:RL(Reinforcement Learning)基于人类反馈的强化学习(RLHF),用奖励模型来训练SFT模型,生成模型使用奖励或惩罚来更新其策略,以便生成更高质量、更符合人类偏好的文本
一、模型介绍
1、 训练数据集
50 万条中文 ChatGPT 指令 Belle 数据集:BelleGroup/train_0.5M_CN:https://huggingface.co/datasets/BelleGroup/train_0.5M_CN
100 万条中文 ChatGPT 指令 Belle 数据集:BelleGroup/train_1M_CN:https://huggingface.co/datasets/BelleGroup/train_1M_CN
5 万条英文 ChatGPT 指令 Alpaca 数据集:50k English Stanford Alpaca dataset:
https://github.com/tatsu-lab/stanford_alpaca#data-release
2 万条中文 ChatGPT 指令 Alpaca 数据集:shibing624/alpaca-zh:
https://huggingface.co/datasets/shibing624/alpaca-zh
69 万条中文指令 Guanaco 数据集 (Belle50 万条 + Guanaco19 万条):Chinese-Vicuna/guanaco_belle_merge_v1.0 :
https://huggingface.co/datasets/Chinese-Vicuna/guanaco_belle_merge_v1.0
240 万条中文医疗数据集 (包括预训练数据和指令微调数据集):shibing624/medical:
https://huggingface.co/datasets/shibing624/medical
2、继续预训练 Continual pretraining
参考 LLaMA 模型的增量预训练方法、资源和时间:
原始数据包含英文和中文,其中英文数据来自 openwebtext、Books、Wikipedia 和 Code,中文数据来自清洗后的悟道数据集、自建的中文数据集。在对原始数据进行去重、模型打分、数据分桶、规则过滤、敏感主题过滤和数据评估后,最终得到 125B tokens 的有效数据。
为了解决 LLaMA 原生分词对中文编解码效率低下的问题,我们在 LLaMA 词表的基础上增加了 7k + 个常见中文字,通过和 LLaMA 原生的词表去重,最终得到一个 39410 大小的词表,并通过复用 Transformers 里 LlamaTokenizer 来实现了这一效果。
在增量训练过程中,我们使用了 160 张 40GB 的 A100,采用 2.6M tokens 的训练集样本数量和 FP 16 的混合精度,吞吐量达到 118 TFLOP per GPU per second。因此我们能够在 8 天的时间里在原生的 LLaMA-13B 模型基础上,增量训练 110B tokens 的数据。
训练期间,虽然遇到了机器宕机、底层框架 bug、loss spike 等各种问题,但我们通过快速调整,保证了增量训练的稳定性。我们也放出训练过程的 loss 曲线,让大家了解可能出现的问题。
Training Pipeline
Training Stage:
Stage | Introduction | Python script | Shell script |
---|---|---|---|
Continue Pretraining | 增量预训练 | pretraining.py | run_pt.sh |
Supervised Fine-tuning | 有监督微调 | supervised_finetuning.py | run_sft.sh |
Direct Preference Optimization | 直接偏好优化 | dpo_training.py | run_dpo.sh |
Reward Modeling | 奖励模型建模 | reward_modeling.py | run_rm.sh |
Reinforcement Learning | 强化学习 | rl_training.py | run_rl.sh |
- 提供完整PT+SFT+DPO全阶段串起来训练的pipeline:run_training_dpo_pipeline.ipynb ,其对应的colab: ,运行完大概需要15分钟,我运行成功后的副本colab:
- 提供完整PT+SFT+RLHF全阶段串起来训练的pipeline:run_training_ppo_pipeline.ipynb
一、基座模型选择指标
(1)模型大小 9分 :
(2)Token size 6分 :模型包含知识的能力
(3)各种官方测评 10分 :以中文测评为主
(4)支持上下文长度 3分:4K基本上都能满足要求
(5)base 7分 :生态支持
(6)测评排名 7分:模型综合能力体现
(7)开发难度 3分:预训练代码是否开源,官方是否有多机多卡示例
(8)可持续更新的前景8分 :是否满足本公司的生态
(9)基座公司实力:4分
(10)github的star数量 5分:模型受欢迎程度
(11)语言 2分 :所选模型都支持中英文
二、生态角度分类
1.LLaMa系列
(1)baichuan
(2)Yi
(3)TigerBot
(4)XuanYuan-70B
(5)Chinese-LLaMA-Alpaca、Chinese-LLaMA-Alpaca-2
2.bloom系列
(1)bloom
(2)Yuan-2.0
(3)BELLE
3.自研修改系列
(1)ChatGLM
(2)Qwen
三、官方测评排名
https://opencompass.org.cn/leaderboard-llm
今年7月,上海AI实验室联合多家机构发布“书生通用大模型体系” ,包含三大基础模型及贯穿数据、预训练、微调、部署和评测五大环节的全链条工具体系。此次正式推出的OpenCompass,从评测角度进一步巩固了大模型创新的技术基石,以纯粹技术及中立视角为产学研界提供客观的大模型能力参考。
加入评测及查看报告,可访问:
官网链接 https://opencompass.org.cn
开源链接 https://github.com/open-compass/opencompass
六大亮点功能,提供专业模型评测
作为高效、全面的大模型评测体系及开放平台,OpenCompass提供完整开源可复现的评测框架,支持大语言模型、多模态模型的一站式评测,基于分布式技术,对大参数量模型亦能实现高效评测。同时,通过零样本评测、小样本评测和思维链评测等多样化评测,OpenCompass可全方位量化模型在各个的维度能力。
底座选择
Model Name | Model Size | Token size | 语言 | 长度 | base | 选择 |
---|---|---|---|---|---|---|
BLOOMZ | 560M/1.1B/1.7B/3B/7.1B/176B | 多种,1% | - | bloom | X | |
LLaMA | 7B/13B/33B/65B | 0.13%, | LLaMa | X | ||
LLaMA-2 | 7B/13B/70B | llama2 | LLaMa | X | ||
Chinese-LLaMA-Alpaca | 7B/13B/33B | 120G | LLaMa | X | ||
Baichuan | 7B/13B | 1.4 万亿 tokens | LLaMa | X | ||
Baichuan2 | 7B/13B | 2.6 万亿 Tokens | LLaMa | X | ||
InternLM2-Chat-20B 书生 | 7B/20B | 3T tokens | 中英 | 20k | ColossalAI | X |
XVERSE | 13B | 3.2 万 | 40多 | X | ||
ChatGLM | 6B | 1.4T | 中英 | - | ChatGLM | X |
ChatGLM2 | 6B | 1.4T | 中英 | - | ChatGLM | X |
ChatGLM3 | 6B | 1.4T | 中英 | - | ChatGLM | X |
Yi | 6B/34B | 3T | 中英 | 20k | LLaMa | √ |
SUSChat-34B | 6B/34B | 3T | 中英 | 20k | LLaMa | √ |
OrionStar-Yi-34B-Chat | 6B/34B | 3T | 中英 | 20k | LLaMa | √ |
DeepSeek | 7B/67B | 2T | 中英 | 4k | LLaMa? | √ |
Yuan-2.0 | 2B/50B/102B | 288B | 中英 | 4k | bloom | √ |
TigerBot | 7B/13B/70B | 300B | 中英 | 4k | LLaMa | √ |
Qwen | 1.8B/7B/ 14B/74B | 3T tokens | 中英 | 32k | Qwen | √ |
XuanYuan-70B | 13B/70B | 60G | 中英 | 8k | bloom->LLaMa | √ |
Yayi2-30B | 30B | 2T | 多语言 | 8k | ? | √ |
首先可以排除几个备选模型:
(1)SUSChat-34B
SUS-Chat-34B模型是南方科技大学联合IDEA研究院CCNL团队开源的通用大模型, 2023-12-05在Huggingface的权威榜单上open_llm_leaderboard取得了同级别模型最好成绩。
SUS-Chat-34B是一个340亿参数规模的双语模型,基于01-ai/Yi-34B预训练模型通过数百万高质量、多语言的指令数据进行了微调。 在保持基础模型强大的语言能力的同时,SUS-Chat-34B模型通过高质量指令微调改善了模型对人类指令的响应方式,并擅长通过思维链的方式模仿人类思考过程。 与Yi-34B和Yi-34B-chat相比,它不仅在几乎所有基准测试中提升了性能,而且能够更好地满足了复杂多语言任务的实际需求。 在指令微调阶段,我们加入了大量高质量长文本和多轮对话指令数据,将文本窗口从基础模型的4K扩展到8K。 这种扩展有助于模型更有效地遵循多轮对话中的指令,显著减少在扩展对话和长文本理解中上下文丢失的问题。
SUS-Chat-34B模型具有以下亮点:
大规模复杂指令跟随数据:使用1.4B token的高质量复杂指令数据进行训练,涵盖中英文、多轮对话、数学、推理等多种指令数据;
强大的通用任务性能:SUS-Chat-34B模型在众多主流的中英文任务上表现出色,其效果超越了相同参数规模的其他开源的指令微调模型。即使与更大参数规模的模型相比,SUS-Chat-34B模型也具有不错的竞争力;
更长的上下文窗口与出色的多轮对话能力:目前,SUS-Chat-34B原生支持8K的上下文窗口,在大量多轮指令以及单多轮混合数据中进行训练,具有出色的长文本对话信息关注与指令跟随能力。
SUS-Chat-34B模型有力地证明了通过正确的指令微调,学术机构可以在不增加模型参数的情况下,通过开源的数据集和模型,获得更好的性能, 这弥合了学术界和工业界的在大语言模型上的差距,为学术界和工业界的合作提供了新的可能性。
(3)OrionStar-Yi-34B-Chat
OrionStar-Yi-34B-Chat 是猎户星空基于零一万物开源的Yi-34B模型,使用 15W+ 的高质量语料训练而来微调大模型,旨在为大模型社区用户提供卓越的交互体验。
Yi系列模型是由零一万物团队开源的大模型,在多个权威的中文、英文及通用领域 benchmark 上取得不错的效果。今天我们推出的Orionstar-Yi-34B-Chat更进一步挖掘了Yi-34B的潜力。通过对大量高质量微调语料库的深度训练,Orionstar-Yi-34B-Chat在评估数据上表现出色,我们致力于将其打造成为ChatGPT领域中的杰出开源替代品!
(4)XuanYuan-70B
第一版用了bloom,第二版用了llama,只是增量预训练的金融领域数据。
最懂金融领域的开源大模型“轩辕”系列,继176B、70B之后推出更小参数版本——XuanYuan-13B。这一版本在保持强大功能的同时,采用了更小的参数配置,专注于提升在不同场景下的应用效果。我们将在之后继续推出XuanYuan-13B量化版本
主要特点:
“以小搏大”的对话能力:在知识理解、创造、分析和对话能力上,可与千亿级别的模型相媲美
金融领域专家:在预训练和微调阶段均融入大量金融数据,大幅提升金融领域专业能力。在金融知识理解、金融业务分析、金融内容创作、金融客服对话几大方面展示出远超一般通用模型的优异表现
人类偏好对齐:通过人类反馈的强化学习(RLHF)训练,在通用领域和金融领域均与人类偏好进行对齐
30B左右模型选择
还剩下两个:(1)Yi (2) yayi-30B
从以下几个指标:基座模型选择指标 看Yi完胜
50B以上模型选择
可选的还剩下:
(1)Yuan-2.0(50B)
(2)DeepSeek(67B)、TigerBot(70B)、Qwen(74B)
DeepSeek(67B)
四个模型的对比
英文:
1. MMLU:多任务语言理解:
“Mean Multi-Language Understanding”,中文意为“多语言理解均值(大规模多任务语言理解)是一种新的基准,旨在通过在zero-shot和few-shot设置中专门评估模型来衡量在预训练期间获得的知识。这使得基准更具挑战性,更类似于我们评估人类的方式。该基准涵盖 STEM、人文科学、社会科学等 57 个科目。它的难度从初级到高级专业水平不等,它考验着世界知识和解决问题的能力。科目范围从传统领域,如数学和历史,到更专业的领域,如法律和道德。主题的粒度和广度使基准测试成为识别模型盲点的理想选择。
MMLU是一个包含 57个多选问答任务的英文评测 数据集【多样性基准】,涵盖了初等数学、美国历史、计算机科学、法律等,难度覆盖高中水平到专家水平的人类知识,是目前主流的LLM评测数据集。
2、GSM8K :小学数学题
8.5千道高质量小学数学题,由人工编写答案。其中7.5K是训练集,1K是测试集。
论文:https://arxiv.org/pdf/2110.14168.pdf
排行榜:https://paperswithcode.com/sota/arithmetic-reasoning-on-gsm8k
一句话点评:GSM8K 由数学题组成,主要考察模型的理解和推理能力。
3、MATH
数据集包含 12,500 个数学问题(其中 7500 个属于训练集,5000 个属于测试集),这些问题收集自 AMC 10、AMC 12、AIME 等数学竞赛。
**4、HumanEval数据集
包括164个人工手写的编程问题,其中每个编程问题包括函数头、docstrings、函数体和几个unittests。HumanEval中的编程问题可以用来评估语言理解能力、推理能力、算法能力和简单的数学能力。
整个设计是标准数答案,设定通过的checkpoint。aigc类的task是不是可以借鉴这样的思路去评测。**
5、MBPP数据集
包含974个编程任务,人给出所需程序的描述,引导模型生成正确的代码。
与HumanEval不一样的是,H主要是通过docString,而MBPP是通过description来生产,更加接近自然语言的instruction。
6、BBH
BBH 是一个挑战性任务 Big-Bench 的子集。Big-Bench 目前包括 204 项任务。任务主题涉及语言学、儿童发展、数学、常识推理、生物学、物理学、社会偏见、软件开发等方面。
中文:
1.CEval:学科知识评测集
范围广泛:人文、社科、理工等52个学科。
数据形式:13948道单选题,涉及52个学科,4类不同难度(初中、高中、大学、专业)。
论文:https://arxiv.org/pdf/2305.08322.pdf
评测代码:https://github.com/hkust-nlp/ceval
排行榜:C-Eval: A Multi-Level Multi-Discipline Chinese Evaluation Suite for Foundation Models
一句话评价:C-Eval整体围绕学科知识,覆盖范围广、难度跨度合适,选择题适合快速评测,但是缺乏对生成表达能力的考察。
2、CMMLU 数据集
构建方式与C-EVAL貌似差不多。除了涵盖人文科学、社会科学、STEM(科学、技术、工程和数学)以及其他在人类日常生活中很重要的四个通用领域的知识外,还涵盖一些特定领域的知识,用于验证模型的中国知识的蕴含能力以及对中文的理解和适应能力。
范围广泛:常识类、人文、社科、理工等共67个主题(详见下图)
难易平衡:小学、中学、大学均有涉及
数据形式:11,528道单选题,其中67个主题每个主题至少105道题
论文:https://arxiv.org/pdf/2306.09212.pdf
评测代码:https://github.com/haonan-li/CMMLU
Huggingface: haonan-li/cmmlu · Datasets at Hugging Face
一句话评价:CMMLU整体围绕学科知识,覆盖范围广、难度跨度合适,选择题适合快速评测,但是缺乏对生成表达能力的考察。
Model | MMLU | C-Eval | GSM8K | MATH | HumanEval | MBPP | BBH | CMMLU |
---|---|---|---|---|---|---|---|---|
5-shot | 5-shot | 8-shot | 4-shot | 0-shot | 3-shot | 3-shot | 5-shot | |
LLaMA2-7B | 46.8 | 32.5 | 16.7 | 3.3 | 12.8 | 20.8 | 38.2 | 31.8 |
LLaMA2-13B | 55.0 | 41.4 | 29.6 | 5.0 | 18.9 | 30.3 | 45.6 | 38.4 |
LLaMA2-34B | 62.6 | - | 42.2 | 6.2 | 22.6 | 33.0 | 44.1 | - |
ChatGLM2-6B | 47.9 | 51.7 | 32.4 | 6.5 | - | - | 33.7 | - |
InternLM-7B | 51.0 | 53.4 | 31.2 | 6.3 | 10.4 | 14.0 | 37.0 | 51.8 |
InternLM-20B | 62.1 | 58.8 | 52.6 | 7.9 | 25.6 | 35.6 | 52.5 | 59.0 |
Baichuan2-7B | 54.7 | 56.3 | 24.6 | 5.6 | 18.3 | 24.2 | 41.6 | 57.1 |
Baichuan2-13B | 59.5 | 59.0 | 52.8 | 10.1 | 17.1 | 30.2 | 49.0 | 62.0 |
Yi-34B | 76.3 | 81.8 | 67.9 | 15.9 | 26.2 | 38.2 | 66.4 | 82.6 |
XVERSE-65B | 70.8 | 68.6 | 60.3 | - | 26.3 | - | - | - |
Qwen-1.8B | 45.3 | 56.1 | 32.3 | 2.3 | 15.2 | 14.2 | 22.3 | 52.1 |
Qwen-7B | 58.2 | 63.5 | 51.7 | 11.6 | 29.9 | 31.6 | 45.0 | 62.2 |
Qwen-14B | 66.3 | 72.1 | 61.3 | 24.8 | 32.3 | 40.8 | 53.4 | 71.0 |
Qwen-72B | 77.4 | 83.3 | 78.9 | 35.2 | 35.4 | 52.2 | 67.7 | 83.6 |
DeepSeek LLM 67B Chat | 71.1 | 65.2 | 84.1 | - | 73.8 | - | 71.7 | 67.8 |
TigerBot | 68.03 | 67.75 | 84.91 | - | - | - | - | - |
Yuan-2.0(102B) | - | - | 76.6 | - | 67.1 | - | - | - |
测评结果:
1.Yuan-2.0(102B) 论文和官网都是用102B进行测评,比不过DeepSeek(67B)、TigerBot(70B)、Qwen(74B),先排除
2.DeepSeek(67B)、TigerBot(70B)、Qwen(74B)三个排名,
Qwen(74B)排名第一
剩下:DeepSeek(67B)、TigerBot(70B)
DeepSeek:基座模型选择指标
(1)模型大小 5分 :
(2)Token size 8分 :模型包含知识的能力
(3)官方排序 4分 :以中文测评为主
(4)支持上下文长度 3分:4K基本上都能满足要求
(5)base 1分 :生态支持 (llama? issue:22个)
(6)测评排名 4分:模型综合能力体现
(7)开发难度 2分:预训练代码是否开源,官方是否有多机多卡示例
(8)可持续更新的前景3分 :是否满足本公司的生态
(9)基座公司实力:5分 (幻方量化)
(10)github的star数量 3分:(909)模型受欢迎程度
(11)语言 2分 :所选模型都支持中英文
总分:40分
TigerBot:基座模型选择指标
(1)模型大小 5分 :
(2)Token size 4分 :模型包含知识的能力
(3)官方排序 8分 :以中文测评为主
(4)支持上下文长度 3分:4K基本上都能满足要求
(5)base 5分 :生态支持 (llama ; issue:116个)
(6)测评排名 6分:模型综合能力体现
(7)开发难度 3分:预训练代码是否开源,官方是否有多机多卡示例
(8)可持续更新的前景5分 :是否满足本公司的生态
(9)基座公司实力:2分 (虎博科技几十人)
(10)github的star数量 5分:(2.1k)模型受欢迎程度
(11)语言 2分 :所选模型都支持中英文
总分:48分
Llama2
虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,