前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >论文解读 Chinese-LLaMA-Alpaca 中文版大语言模型

论文解读 Chinese-LLaMA-Alpaca 中文版大语言模型

作者头像
唐国梁Tommy
发布2023-09-01 09:52:19
8210
发布2023-09-01 09:52:19
举报
文章被收录于专栏:唐国梁Tommy
论文链接:

https://arxiv.org/pdf/2304.08177.pdf

github链接:

https://github.com/ymcui/Chinese-LLaMA-Alpaca

摘要

本项目开源了中文LLaMA和Alpaca大型模型,强调指令微调。

我们通过添加2万个中文标记,扩展了原始LLaMA的中文词汇表,提高了编码效率并增强了基本语义理解。

通过结合使用中文数据的二次预训练和中文指令数据的微调,我们大大提高了模型对指令的理解和执行能力。

1 引言

总之,本技术报告的贡献如下:

(1)通过在原始LLaMA词汇表中额外添加20,000个中文标记,我们提高了中文编码和解码效率,提升了LLaMA对中文的理解能力。

(2)我们采用低秩适应(LoRA)方法进行中文LLaMA和Alpaca模型的高效训练和部署,使研究人员能够在不产生过多计算成本的情况下使用这些模型。

(3)我们评估了中文Alpaca7B和13B模型在各种自然语言理解(NLU)和自然语言生成(NLG)任务上的性能,证明了它们在中文语言任务背景下相较于原始LLaMA模型有显著的改进。

2 中文LLaMA

(1)我们建议使用额外的中文标记扩展LLaMA分词器,并调整模型以适应新的分词器。

① 为了增强分词器对中文文本的支持,我们首先使用SentencePiece在中文语料库上训练一个中文分词器,词汇量为20,000。然后,我们将中文分词器与原始LLaMA分词器合并,组合它们的词汇表。最终,我们得到一个合并后的分词器,称为中文LLaMA分词器,词汇量为49,953。

② 为了使模型适应中文LLaMA分词器,我们将词嵌入和语言模型头部从形状 V×H 调整为 V′×H,其中V = 32,000代表原始词汇量,V′ = 49,953是中文LLaMA分词器的词汇量。新的行添加到原始嵌入矩阵的末尾,确保原始词汇中的标记嵌入不受影响。

③ 完成上述调整步骤后,我们使用中文LLaMA分词器对中文LLaMA模型进行预训练,用于标准的非正式语言建模(CLM)任务。给定一个输入标记序列x =(x0,x1,x2,. . .),模型以自回归的方式训练以预测下一个标记。

png-01

3 中文AIpaca

(1)获得预训练的中文LLaMA模型后,我们遵循Stanford Alpaca中使用的方法,应用self-instruct的微调来训练遵循指令的模型。

(2)我们采用来自Stanford Alpaca的以下提示模板进行self-instruct的微调,这在推理期间也会被利用:

png-02

(3)我们的方法与Stanford Alpaca之间的一个关键区别在于,我们仅使用为没有输入字段的示例设计的提示模板,而Stanford Alpaca则分别为有和无输入字段的示例使用两个模板。

4 使用LoRA进行参数高效微调

(1)低秩适应(LoRA)是一种参数高效的训练方法,它保持预训练模型的权重,同时引入可训练的秩分解矩阵。

(2)这种方法显著减少了可训练参数的数量。LoRA的一般公式如下方程所示,其中r是预定的秩,d是隐藏大小,A和B是分解后的可训练矩阵:

png-03

(3)为了在遵循严格预算的同时实现参数高效训练,我们将LoRA应用于所有实验中的中文LLaMA/Alpaca模型,包括预训练和微调阶段。我们主要将LoRA适配器整合到注意力模块的权重中,在某些情况下,还包括额外的MLP层。

5 实验设置

5.1 预训练和微调的实验设置

① 7B 版本

>>> 预训练

我们使用原始LLaMA权重初始化中文LLaMA模型,并在通用中文语料库上进行预训练,与中文BERT-wwm、MacBERT、LERT等所使用的语料库一致,形成一个20GB的文本语料库。

预训练过程分为两个阶段:

阶段1:我们固定模型中的Transformer编码器的参数,只训练嵌入向量,在最小化对原始模型的干扰的同时调整新添加的中文词向量。

阶段2:我们为注意力机制添加LoRA权重(适配器),并训练嵌入向量、LM头部和新添加的LoRA参数。

>>> 指令微调

我们还使用LoRA进行高效微调,通过在MLP层添加LoRA适配器来增加可训练参数的数量。我们利用约200万个数据点,包括翻译、pCLUE3、Stanford Alpaca和爬取的SFT数据来调整7B模型。

对于爬取的数据,我们采用self-instruct方法,从ChatGPT(gpt-3.5-turbo API)自动获取数据。

② 13B 版本

>>> 预训练

13B模型的预训练过程与7B模型的过程大致相同,不同之处在于我们跳过预训练中的阶段1。我们在设置嵌入向量和LM头部为可训练的同时,直接将LoRA应用于注意力机制和MLP进行训练。

>>> 指令微调

13B模型的预训练过程与7B模型的过程大致相同,不同之处在于我们跳过预训练中的阶段1。我们在设置嵌入向量和LM头部为可训练的同时,直接将LoRA应用于注意力机制和MLP进行训练。

png-04

5.2 解码的实验设置

在我们的实验中,我们使用以下解码超参数:

png-05

• 上下文大小:我们将上下文大小设置为2048,这决定了模型在生成文本时可以同时考虑的最大token数量。

• 最大序列长度:我们将生成的序列长度限制为512个token,以确保输出保持聚焦且与输入提示相关。

• 温度:我们将温度设置为0.2,这控制了采样过程的随机性。较低的值使模型生成更聚焦和确定性的输出,而较高的值以牺牲连贯性为代价增加多样性。

• Top-k采样:我们使用k=40的Top-k采样,这意味着模型在每一步从概率最高的前40个token中选择下一个token,为生成的文本增加随机性和多样性。

• Top-p采样:我们还使用p=0.9的Top-p采样,它通过考虑动态token集合进一步增强多样性,这些token集合共同占据了90%的概率质量。

• 重复惩罚:为了防止模型生成重复文本,我们应用重复惩罚系数为1.3的方法,惩罚已经被选择的token。

5.3 在CPU上部署

(1)在许多开源社区的帮助下,如llama.cpp(Gerganov,2023),用户可以将LLMs有效地量化为4-bit形式,显著减少内存使用和计算需求,使LLMs更容易在个人计算机上部署。

(2)总的来说,使用llama.cpp(或类似工具)将LLMs部署在个人计算机上为在各个领域更多样化和注重隐私的利用LLMs铺平了道路。

5.4 评估和任务设计

(1)我们使用以下提示模板来评分系统的输出:

png-06

(2)我们的评估集旨在对中文Alpaca模型在广泛的自然语言理解和生成任务中进行全面评估。该集合包括160个样本,涵盖10个不同的任务,包括问答、推理、文学、娱乐、翻译、多轮对话、编码和伦理等。

6. 结果

png-07

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 唐国梁Tommy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档