爱笑的小姐姐 · 2023年05月12日

南洋理工开源海外中文大语言模型Panda LLM | 探索数据因素和训练策略如何影响大模型性能表现

image.png

Title: Panda LLM: Training Data and Evaluation for Open-Sourced Chinese Instruction-Following Large Language Models
PDF: https://arxiv.org/pdf/2305.03025v1.pdf
Code: https://github.com/dandelionsllm/pandallm

导读

本项目以LLaMA为基础模型,采用了两阶段训练方法开发了中文大语言模型Panda LLM同时探索了各种训练数据因素(如数量、质量和语言分布),以及指令数据集多样性对大语言模型性能的影响。 作者通过大量的定量分析和补充评估,为如何构建一个高性能大模型的持续发展提供了有价值的见解。本项目已公开模型权重,代码和数据集,欢迎大家使用!

项目亮点

  1. 本项目采用了两阶段训练方法:首先在五大中文语料进行训练微调,其次在少量且多样的数据上进行指令微调。该训练方法取得了非常棒的结果,并超越了以往所有可用的具有相同参数数量的中文开源大型语言模型
  2. 本项目首次对各种中文开源大型语言模型进行了比较评估
  3. 本项目发布了一系列模型权重和源代码,旨在促进人工智能的民主化,并且这些资源不仅适用于学术界,还适用于个人和中小型企业。

Panda LLM模型开发流程

为了在有限的硬件资源下,开发一个高质量的中文指令跟随instruction-following大语言模型,需要两个关键组成部分。

  1. 一个强大的预训练大语言模型
  2. 一个高质量的指令跟随数据集

本文作者详细展示了团队开发Panda LLM模型的过程,包括训练数据量,质量,语言分布,训练策略等。首先,作者以强大的LLaMA模型作为基础模型,并通过指令微调instruction-tuning技术在六个中文语料库上进一步优化其性能,使其能够在各种任务上表现良好。

Base Model

Panda LLM是基于各种LLaMA模型建立的,包括Meta最近发布的LLaMA-7BLLaMA-13BLLaMA-33BLLaMA-65B作为基础模型。LLaMA模型虽然比像ChatGPTGPT4这样的商业大模型小,但具有高性能和开源的特点,可为不同领域提供更易于访问的基础大型语言模型,并且需要更少的计算资源。与其他大型语言模型类似,LLaMA模型通过接收一系列单词作为输入,并预测下一个单词来递归生成文本。

image.png

在大型语言模型的最新工作中,Panda LLM网络基于Transformer架构。利用各种改进来增强模型,包括预归一化、SwiGLU激活函数和旋转嵌入等。如上表3所示,LLaMA-65B模型是在由1.4T token组成的7个公开可用数据集上混合训练的。训练配置和模型超参数如下表1所示。

image.png

Train Datasets

目前许多开源的大语言模型在英语任务上表现出的惊人性能,但它们主要是在英语数据集上进行预训练,限制了它们理解中文语料库的能力。为了让Panda LLM在中文数据集上获得强大的性能,作者使用了强大的指令微调instruction-tuning技术,将LLaMA基础模型在五个开源的中文数据集进行混合训练,其中包括来自各种语言领域的1530万个样本,例如维基百科语料,新闻语料,百科问答语料,社区问答语料,和翻译语料

维基百科语料

简介: 104万个词条(1,043,224条; 原始文件大小1.6G,压缩文件519M;数据更新时间:2019.2.7)

数据集下载地址:https://pan.baidu.com/s/1uPMlIY3vhusdnhAge318TA

用途: 可以做为通用中文语料,做预训练的语料或构建词向量,也可以用于构建知识问答。

数据预览:

经济学
经济学是一门对产品和服务的生产、分配以及消费进行研究的社会科学。西方语言中的“经济学”一词源于古希腊的。经济学注重的是研究经济行为者在一个经济体系下的行为,以及他们彼此之间的互动。在现代,经济学的教材通常将这门领域的研究分为总体经济学和个体经济学。微观经济学检视一个社会里基本层次的行为,包括个体的行为者(例如个人、公司、买家或卖家)以及与市场的互动。而宏观经济学则分析整个经济体和其议题,包括失业、通货膨胀、经济成长、财政和货币政策......

image.png

新闻语料

简介: 250万篇新闻( 原始数据9G,压缩文件3.6G;新闻内容跨度:2014-2016年)

数据集下载地址:https://pan.baidu.com/s/1MLLM-CdM6BhJkj8D0u3atA
密码:k265

用途:

  1. 可以做为【通用中文语料】,训练【词向量】或做为【预训练】的语料
  2. 也可以用于训练【标题生成】模型,或训练【关键词生成】模型(选关键词内容不同于标题的数据)
  3. 亦可以通过新闻渠道区分出新闻的类型

数据预览:

image.png

百科问答语料

简介: 150万个问答( 原始数据1G多,压缩文件663M;数据更新时间:2018年)

数据集下载地址:https://pan.baidu.com/s/12TCEwC\_Q3He65HtPKN17cA
密码:fu45

用途:

  1. 可以做为通用中文语料,训练词向量或做为预训练的语料
  2. 也可以用于构建百科类问答;其中类别信息比较有用,可以用于做监督训练,从而构建更好句子表示的模型、句子相似性任务等

数据预览:

image.png

社区问答语料

简介: 410万个问答( 过滤后数据3.7G,压缩文件1.7G;数据跨度:2015-2016年)

数据集下载地址:https://drive.google.com/open?id=1u2yW\_XohbYL2YAK6Bzc5XrngHstQTf0v

用途:

  1. 构建百科类问答:输入一个问题,构建检索系统得到一个回复或生产一个回复;或根据相关关键词从,社区问答库中筛选出你相关的领域数据
  2. 训练话题预测模型:输入一个问题(和或描述),预测属于话题
  3. 训练社区问答(cQA)系统:针对一问多答的场景,输入一个问题,找到最相关的问题,在这个基础上基于不同答案回复的质量,问题与答案的相关性,找到最好的答案
  4. 做为通用中文语料,做大模型预训练的语料或训练词向量。其中类别信息也比较有用,可以用于做监督训练,从而构建更好句子表示的模型、句子相似性任务等
  5. 结合点赞数量这一额外信息,预测回复的受欢迎程度或训练答案评分系统

数据预览:

image.png

翻译语料

简介: 520万个中英文平行语料( 原始数据1.1G,压缩文件596M)

数据集下载地址:https://drive.google.com/open?id=1EX8eE5YWBxCaohBO8Fh4e2j3b9C2bTVQ

用途:

  1. 可以用于训练中英文翻译系统,从中文翻译到英文,或从英文翻译到中文;
  2. 由于有上百万的中文句子,可以只抽取中文的句子,做为通用中文语料,训练词向量或做为预训练的语料。英文任务也可以类似操作;

数据预览:

image.png

作者在以上五类中文混合数据集上进行了几次尝试直接训练模型后发现,模型在遵循指令instruction任务上表现受限。推测这可能是因为整个训练语料库中遵循指令样本数量不足,导致模型在指令遵循任务上的表现不足。

为了增强Panda LLM的指令跟随/遵循instruction-following能力(理解指令的能力),作者进一步将中文开放指令通用数据集COIG进一步合并到训练语料库中。COIG是一个开源的中文语料库,包含来自各个领域的遵循指令样本instruction-sample,包括经过手工验证的翻译通用指令语料库、手工注释的考试指令语料库、人类价值对齐指令语料库、多轮因果校正聊天语料库和leetcode指令语料库

COIG语料

数据集地址:https://huggingface.co/datasets/BAAI/COIG

数据预览:
image.png

将以上中文开放指令通用数据集COIG加入到训练中后,Panda LLM在一些instruction问答上带来了显着的性能提升。如下表4所示,其中Panda-7B是作者在五类中文混合数据集上进行混合训练模型,在加入COIG中文指令数据集后,Panda-Instruct-7B-*steps性能表现强劲,其中训练到第9k个step后,Panda-Instruct-7B-9steps在C3-m数据集上,直接将模型性能从43.66拔高到57.04,获得了13.38%的性能增益。

image.png

由此可见,instruction指令数据集的引入是非常有必要的,它可以增强大模型对于指令的理解能力,并作出更为符合人类口味的回答。

训练细节

使用了两个AWS计算节点,每个节点配备了16块NVIDIA A100-80G GPU,训练了Panda-7B和Panda-13B模型。使用标准的随机梯度下降SGD优化器进行训练,Panda-7B和Panda-13B的batch size大小分别为8192和4096,学习率为1e-5,其中1%的总训练step用于学习率预热策略warm-up。对于两个模型,均不使用权重衰减。为了加速模型训练,使用了微软的DeepSpeed6 ZERO-1进行训练,并使用bfloat16和梯度检查点技术。Panda-7B和Panda-13B的训练过程分别需要大约7天和14天的时间。有关更多训练细节,可参考作者GitHub代码仓库中的配置文件。

实验结果

image.png

  1. Panda-7B: 以LLaMA-7B模型为基础,在Chinese-Wiki-2019, Chinese-News-2016, Chinese-Baike-2018, Chinese-Webtext-2019, and Translation-2019上进行微调训练
  2. Panda-7B-instruction-3k: Panda-7B在COIG指令数据集上训练 3k 个steps.
  3. Panda-7B-instruction-6k: Panda-7B在COIG指令数据集上训练 6k 个steps.
  4. Panda-7B-instruction-9k: Panda-7B在COIG指令数据集上训练 9k 个steps.

为了评估模型的问答推理能力,作者采用了C3数据集,包含多种文档类型的C3-Mixed数据集,和以对话为文档形式的C3-Dialogue三个公开数据集作为评估数据集,上表4为评估结果。可以发现在加入COIG中文指令数据集后,模型对于指令的理解能力大幅增强,并作出更符合人类口味的回答。

其次,在多个领域进行指令微调instruction tuning可以提高中文语言模型的理解推理能力。 因此使用包含来自不同领域的指令数据集COIG进行微调非常有必要。结果表明,仅使用 COIG 数据集的 4.2% 就可以显著地提高模型的性能(因为COIG 数据集包含多个领域),尤其是在 C3-m 数据集上获得了惊人的 13.38 的增益。同时将 NLP 中文语料库数据集和 COIG 数据集混合使用并不会提高模型的性能,而且会削弱 COIG 数据集的有效性,这表明:将此类数据混合在一起并不会导致性能的提升。

结论

本项目以LLaMA为基础模型,采用两阶段训练方法,首先在五大中文语料进行训练微调,其次在少量但多样数据上进行指令微调,开发了中文大语言模型Panda LLM。因此,整篇文章的核心结论可归纳为:通过丰富的训练语料进行模型微调得到知识储备丰富的预训练模型,然后仅在少量但具有多样性的数据上进行指令微调即可以产生高度有效的中文语言模型。作者已开放模型权重,模型代码,和训练数据集,欢迎大家使用!

作者:派派星
文章来源:CVHub

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
18756
内容数
1315
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息