​Firefly-LLaMA2-Chinese:低资源增量预训练的开源中文LLaMA2大模型

Firefly系列模型一脉相承,专注于低资源增量预训练,既支持对Baichuan2、Qwen、InternLM等原生中文模型进行增量预训练,也可对LLaMA2、Falcon等英文模型进行中文词表扩充,然后进行增量预训练。Firfly系列模型均已开源到wisemodel.cn社区,欢迎大家注册使用。

开源的Firefly-LLaMA2-Chinese系列模型,都是中英双语系列模型。以LLaMA2🦙为基座模型,对LLaMA2进行中文词表扩充,使用22GB中英文预训练语料对其进行增量预训练。最后使用大规模中英文多轮对话指令对模型进行训练。同时对模型进行了榜单评测和人工评测,与现有的开源工作相比,具有不错的竞争力。

在Open LLM Leaderboard和CMMLU上,Firefly系列模型超越了Linly、Yayi、FlagAlpha等模型;在Open LLM Leaderboard上超越Ziya,在CMMLU上比Ziya略低0.43分。在人工测评中,Firefly系列模型以33.08%获胜、60.77%平局、6.15%失败的成绩,超越Linly。Firefly也开源了firelfy-baichuan2-13b模型,在OpenCompass的CMMLU榜单上以56.83的分数,位列第8,比百川官方模型略低1.57分。

更重要的是,在整个增量预训练和指令微调阶段,Firefly最多仅使用了4*V100的GPU,训练更加低资源高效。相较于Ziya的160*A100,Linly的32*A100,Chinese-LLaMA-Alpaca的48*A40,Firefly所使用的训练资源少得多。

授人以鱼🐟,不如授人以渔🎣,Firefly不仅开源了模型权重,也开源了项目全流程的训练代码、训练数据,以及训练细节。

主要工作:

  • 📗 对LLaMA2进行中文词表扩充,提高编解码效率。与原始LLaMA2相对,中文序列长度减少约54.11%,变相提升了模型在中文域的最大长度。

  • 📗 使用大规模中英文语料进行增量预训练,然后进行多轮指令微调。开源7B和13B的Base和Chat的模型权重。

  • 📗 收集、整理并开源训练数据,包括22GB中英文预训练语料,以及多轮指令数据。

  • 📗 开源增量预训练、指令微调等全流程代码。支持在主流的开源模型上进行增量预训练和指令微调,如Baichuan2、Baichuan、Qwen、InternLM、LLaMA2、LLaMA、Falcon等。

  • 📗 对模型进行开源榜单评测和人工评测。构建人工评测集,包含13种评测任务,对模型进行人工评测。

模型列表 & 数据列表

Firefly开源了7B和13B的Base与Chat模型。Base模型是基于LLaMA2扩充中文词表后增量预训练得到的模型,Chat模型是在Base模型的基础上进行多轮对话指令微调。

为了探究基座模型对指令微调的影响,也微调了baichuan2-base模型,获得firefly-baichuan2-13b,具有不错的效果。更多中文微调,可查看Firefly项目。

模型类型训练任务训练长度
Firefly-LLaMA2-7B-Base基座模型CLM1024
Firefly-LLaMA2-13B-Base基座模型CLM1024
Firefly-LLaMA2-7B-Chat指令模型多轮指令微调1024
Firefly-LLaMA2-13B-Chat指令模型多轮指令微调1024
Firefly-Baichuan-13B指令模型多轮指令微调1024
Firefly-Baichuan2-13B指令模型多轮指令微调1024

Firefly-LLaMA2-7B-Base:https://wisemodel.cn/models/YeungNLP/firefly-llama2-7b-base

Firefly-LLaMA2-13B-Base:https://wisemodel.cn/models/YeungNLP/firefly-llama2-13b-base

Firefly-LLaMA2-7B-Chat:https://wisemodel.cn/models/YeungNLP/firefly-llama2-7b-chat

Firefly-LLaMA2-13B-Chat:https://wisemodel.cn/models/YeungNLP/firefly-llama2-13b-chat

Firefly-Baichuan-13B:https://wisemodel.cn/models/YeungNLP/firefly-baichuan-13b

Firefly-Baichuan2-13B:https://wisemodel.cn/models/YeungNLP/firefly-baichuan2-13b

本项目使用的数据如下表,其中firefly-pretrain-dataset是我们增量预训练阶段所使用的数据:

数据集介绍
firefly-pretrain-datasetFirefly项目整理和使用的22GB预训练数据,主要包含CLUE、ThucNews、CNews、COIG、维基百科等开源数据集,以及我们收集的古诗词、散文、文言文等。
moss-003-sft-data由复旦大学MOSS团队开源的中英文多轮对话数据,包含100万+数据
ultrachat由清华大学开源的英文多轮对话数据,包含140万+数据
school_math_0.25M由BELLE项目组开源的数学运算指令数据,包含25万条数据。

firefly-pretrain-dataset:

https://wisemodel.cn/datasets/YeungNLP/firefly-pretrain-dataset

moss-003-sft-data:

https://wisemodel.cn/datasets/YeungNLP/moss-003-sft-data

ultrachat:https://wisemodel.cn/datasets/YeungNLP/ultrachat

school_math_0.25M:

https://wisemodel.cn/datasets/YeungNLP/school_math_0.25M

模型评测

Firefly在CMMLU和Open LLM Leaderboard上分别对模型的中文和英文能力进行了客观评测,并且在构建的人工评测集上进行了人工评测。 Open LLM Leaderboard和CMMLU榜单倾向于评测大模型的做题能力,不够全面,所以Firefly进一步进行了人工评测。

Open LLM Leaderboard

模型AverageARCHellaSwagMMLUTruthfulQA
chinese-alpaca-2-13b60.9458.779.7455.150.22
openbuddy-llama2-13b-v8.160.4755.9779.7954.9551.16
flagalpha-llama2-13b-chat60.4155.9782.0554.7448.9
llama-2-13b-chat59.9359.0481.9454.6444.12
vicuna-13b-v1.159.2252.7380.1351.9452.08
guanaco-13b59.1857.8583.8448.2846.73
firefly-llama2-13b-chat59.0557.5177.9452.5648.18
llama-2-7b-chat56.3452.978.5548.3245.57
flagalpha-llama2-7b-chat56.1352.3977.5247.7246.87
yayi-7b-llama254.4555.0377.8440.9244.02
chinese-alpaca-2-7b54.3349.5772.6246.548.63
firefly-llama2-7b-chat54.1951.1973.3245.4746.78
yayi-13b-llama251.0648.5574.8238.6842.19
linly-llama2-7b49.0648.0473.2535.0439.92
linly-llama2-13b38.2233.6239.5933.9745.71
ziya-llama-13b*--76.950.3-

*表示分数来源于OpenCompass官方,而非Open LLM Leaderboard官方数据

Conclusion:Firefly的模型保留了llama2模型优秀的英文能力,在Open LLM Leaderboard上,与llama2-chat、vicuna-v1.1、guanaco等模型的表现及其接近。

CMMLU榜单

模型CMMLU训练细节
firefly-baichuan2-13b56.834*V100,QLoRA,指令微调
chinese-alpaca-2-13b45.1748*A40,LoRA,词表扩充 + 增量预训练 + 指令微调
openbuddy-llama2-13b-v8.141.66全量参数训练,词表扩充 + 指令微调
chinese-alpaca-2-7b40.8648*A40,LoRA,词表扩充 + 增量预训练 + 指令微调
ziya-llama-13b*39.9160*A100,全量参数训练,词表扩充 + 增量预训练 + 指令微调 + RLHF
chinese-alpaca-plus-13b*39.948*A40,LoRA,词表扩充 + 增量预训练 + 指令微调
firefly-llama2-13b-chat39.474*V100,QLoRA,词表扩充 + 增量预训练 + 指令微调
flagalpha-llama2-13b-chat39.20LoRA,指令微调
llama-2-13b-chat38.65全量参数训练,预训练 + 指令微调 + RLHF(全流程为英文)
firefly-llama2-7b-chat34.034*V100,QLoRA,词表扩充 + 增量预训练 + 指令微调
llama-2-7b-chat33.76全量参数训练,预训练 + 指令微调 + RLHF(全流程为英文)
flagalpha-llama2-7b-chat32.61LoRA,指令微调
chinese-alpaca-plus-7b*32.648*A40,LoRA,词表扩充 + 增量预训练 + 指令微调
yayi-13b-llama230.73指令微调
yayi-7b-llama230.47指令微调
linly-llama2-7b28.6832*A100,全量参数训练,词表扩充 + 混合训练
linly-llama2-13b26.3232*A100,全量参数训练,词表扩充 + 混合训练

Firefly统一采用OpenCompass工具来离线评测CMMLU,其中*表示结果来源于OpenCompass官方榜单或者由模型作者自测的分数。

Conclusions:

  • 与llama-2-chat相比,我们的模型在中文方面的能力具有一定的提升。

  • 对于中文词表扩充模型而言,我们的模型大幅领先全量训练的linly,与全量训练的ziya、chinese-alpaca-1及其接近。

  • firefly-baichuan2-13b一骑绝尘,并且在OpenCompass的CMMLU榜单,该分数可排第8,小幅落后于百川官方模型,进一步验证了基座模型的重要性。

  • 我们的模型在CMMLU上的指标与chinese-alpaca-2也存在一定的差距。这一现象很大程度与增量预训练数据量和数据分布相关,我们的增量预训练数据仅为22GB(未充分使用,详情见训练细节),增量预训练不够充分,且大部分为新闻语料,对于CMMLU能力的提升有限。

人工评测

Firefly构建了评测集,其中包含13种评测任务,评测数据详见data/firefly-eval.xlsx。大部分数据从Belle数据中进行采样和优化。每种任务包含10条数据,一共130条数据。13种任务包含:头脑风暴、分类、Close QA、代码生成、 信息抽取、开放式生成、有害性检验、数学题、阅读理解、Open QA、Rewrite、Summarization、翻译。

评测标准如下:

  • 对于同一道题目,对两两模型的生成结果进行比较,存在胜负平三种关系。

  • 对于客观题,如果两个模型均回答正确,或均回答错误,则为平局。

  • 对于主观题,回答更加详细、真实、细节更丰富,则为获胜。当两者内容正确,并且详细程度非常接近时,或者各有千秋时,可视为平局。

  • 对于中文题目,如果目标回复为中文,但模型却回复英文,则判为错误。

详细的评测结果可参考:人工评测结果。在评测中,Firefly遵守设定的评测标准,但依旧难以完全避免主观因素的影响, 本着公开透明的原则,Firefly公开了评测细节,大家可比较模型效果。

同为基于LLaMA2进行汉化的模型,对Firefly-LLaMA2-13B-Chat和Linly-LLaMA2-13B进行了人工测评,从评测结果来看,Firefly系列模型存在非常大的优势。并且与Llama2-Chat-13B也进行了人工评测,也存在非常大的优势。

模型获胜平局失败
Firefly-LLaMA2-13B-Chat VS Linly-LLaMA2-13B43(33.08%)79(60.77%)8(6.15%)
Firefly-LLaMA2-13B-Chat VS Llama2-Chat-13B86(66.15%)40(30.77%)4(3.08%)

训练细节

Firefly的训练流程在QLoRA上进行优化,流程大致如下:

  • 对LLaMA2进行中文词表扩充,提高模型在中文上的编解码效率。我们使用了Chinese-LLaMA-Alpaca-2项目扩充后的词表。

  • 使用22GB中英文语料,对扩充词表后的模型进行增量预训练,采用自回归任务。

  • 使用两百多万条中英文多轮对话指令数据,对增量预训练模型进行指令微调。

Firefly对LLaMA2的词表进行扩充,加入了常见的中文token,提高模型对中文的编解码效率。Firefly在CNews数据集上对新的tokenizer进行了测试,经过词表扩充后,token数量由2.98亿减少为1.37亿, 长度减少约54.11%。对于中文任务,不仅极大地提高了模型的训练和推理效率,并且变相地提高了模型的最大长度。

图片

Firefly系列将增量预训练数据集命名为firefly-pretrain-dataset,主要包含CLUE、ThucNews、CNews、COIG、维基百科等开源数据集,以及我们收集的古诗词、散文、文言文等,数据分布如下图。由于训练资源等原因,在增量预训练阶段,我们并未充分利用全部数据,仅消耗了大约2B的token。

图片

指令微调的数据主要包括UltraChat、Moss、school math等数据,对这些数据进行清洗、过滤、采样、合并等操作,最终获得两百多万条数据,原始数据详见Firefly项目。

在整个训练流程中,我们最多仅使用了4*V100 GPU,两个阶段的训练长度均为1024,LoRA rank=64, LoRA alpha=16。在预训练与指令微调阶段,word embedding与lm_head的权重均参与训练。7B与13B模型,最终参与训练的参数量分别约为612.9M和816.6M。指令微调阶段使用Firefly项目的训练代码。

Firefly-LLaMA2-Chat模型的训练loss曲线如下图所示,训练loss具有良好的收敛性。7b和13b模型分别对应粉色和橙色曲线:

图片

结语

Firefly探索了一种基于QLoRA的轻量级增量预训练和指令微调方案,并且在公开榜单和人工评测中验证了该方案的有效性。

虽然Firefly收集了22GB的增量预训练数据,但与动辄上百GB或者上千亿token的其他中文Llama项目相比,仍是相形见绌。并且由于训练资源的问题,在增量预训练阶段,Firefly并未完全使用这些数据,大约仅消耗了2B token。

在模型词表扩充的情况下,这会导致新增的词向量训练不够充分,但最终的评测结果仍足以表明我们的方法是有效的。如果直接在中文Base模型上使用该方案进行垂直域增量预训练,不改变模型词表,模型将会在垂直域具有更优秀的效果。

始智AI wisemodel

构建中立开放AI开源社区,共建中国AI创新生态。

公众号

在中国做开源社区是件非常充满挑战的事,也是一项需要长期坚持和投入的工作,希望大家多多支持,多点包容和多点耐心!欢迎扫码添加wisemodel助手,加入始智AI-wisemodel社区用户群,添加请注明“姓名-单位-职位”信息。  

图片

      

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值