Fork me on GitHub

Chinese-LLaMA-Alpaca技术报告

EFFICIENT AND EFFECTIVE TEXT ENCODING FOR CHINESE LL AMA AND ALPACA

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

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

Part1介绍

  • 我们通过在原有的LLaMA词汇中增加20,000个中文符号来提高中文编码和解码的效率,并提高LLaMA的中文理解能力。
  • 我们采用低秩适应(LoRA)的方法来有效地训练和部署中国的LLaMA和Alpaca模型,使研究人员能够在不产生过多计算成本的情况下使用这些模型。
  • 我们评估了中国羊驼7B和13B模型在各种自然语言理解(NLU)和自然语言生成( NLG)任务中的表现,表明在中文语言任务中比原来的LLaMA对应模型有明显的改进。
  • 我们公开了我们的研究资源和结果,促进了NLP社区的进一步研究和合作,并鼓励将LLaMA和Alpaca模型改编为其他语言。

Part2CHINESE LLAMA

针对于中文而言,LLaMA存在的问题:

  • LLaMA标记器的原始词汇中只有不到一千个中文字符。尽管LLaMA标记器通过回退到字节来支持所有的中文字符,但这种回退策略大大增加了序列的长度,降低了中文文本的处理效率。
  • 字节令牌并不是专门用来表示汉字的,因为它们也被用来表示其他UTF-8令牌,这使得字节令牌很难学习汉字的语义。

为了解决这些问题,我们建议用额外的中文标记来扩展LLaMA标记器,并为新的标记器调整模型(Yang等人,2022):

  • 为了加强标记器对中文文本的支持,我们首先用SentencePiece(Kudo & Richardson, 2018)在中文语料库上训练一个中文标记器,使用的词汇量为20,000。然后,我们通 过组合它们的词汇,将中文标记器合并到原始的LLaMA标记器中。最终,我们得到了 一个合并的标记器,我们称之为中文LLaMA标记器,其词汇量为49,953。
  • 为了适应中文LLaMA标记器的模型,我们将词嵌入和语言模型头的大小从形状V×H调整为V′×H,其中V=32,000代表原始词汇量,V′=49,953是中文LLaMA标记器的词汇量。新的行被附加到原始嵌入矩阵的末尾,以确保 原始词汇中的标记的嵌入仍然不受影响。

我们的初步实验表明,中文LLaMA标记器产生的标记数量大约是原始LLaMA标记器的一半。表1显示了原始LLaMA标记器和我们的中文LLaMA标记器之间的比较实例。正如我们所看到的,使用中文LLaMA标记器大大减少了与原始标记器相比的编码长度。在固定的语境长度下,该模型可以容纳大约两倍的信息,而且生成速度比原来的LLaMA标记器快两倍。这证明了我们提出的方法在提高LLaMA模型的中文理解和生成能力方面的有效性。

在完成上述适应步骤后,我们在标准的休闲语言建模(CLM)任务中使用中文-LLaMA标记器对中文-LLaMA模型进行预训练。

Part3CHINESE ALPACA

在获得预训练的中文LLaMA模型后,我们按照斯坦福大学Al-paca(Taori等人,2023)中使用的方法,应用自我训练的微调来训练指令跟随模型。

每个例子由一条指令和一个输出组成。我们将指令输入模型,并提示模型自动生成输出。这个过程类似于普通的语言建模任务。我们采用以下来自斯坦福大学Alpaca的提示模板,用于自我指导的微调,这也是在推理过程中使用的:

我们的方法和Stanford Alpaca的一个关键区别是,我们只使用为没有输入字段的例子设计的提示模板,而Stanford Alpaca为有输入字段和没有输入字段的例子分别采用了两个模板。如果例子中包含一个非空的输入字段,我们用一个"/n "将指令和输入连接起来,形成新的指令。注意,Alpaca模型有一个额外的填充标记,导致词汇量为49,954。

Part4用LORA进行参数有效的微调

低等级适应(LoRA)(Hu等人,2021)是一种参数高效的训练方法,它在引入可训练的等级分解矩阵的同时保留了预训练的模型权重。这种方法大大减少了可训练参数的数量。LoRA的一般公式如下,其中r是预先确定的等级,d是隐藏的大小,A和B是分解的可训练矩阵:

为了在遵守严格预算的情况下实现参数有效的训练,我们在所有的实验中都将LoRA应用于chinese-LalaMA/Alpaca模型,包括预训练和微调阶段。我们主要将LoRA适配器纳入注意力模块的权重中,在某些情况下,还包括额外的MLP层。进一步的细节,请参考下一节和表2。

Part5实验设置

1用于预训练和微调的实验设置

7B版本

预训练:我们用原始的LLaMA权重初始化中文-LLaMA模型,并在一般的中文语料上进行预 训练,与中文BERT-wwm(Cui等人,2021)、MacBERT(Cui等人,2020)、LERT(Cui 等人,2022)等使用的语料一致,形成了一个20GB的文本语料。预训练过程包括两个阶段:

  • 第一阶段:我们在模型内固定transformer编码器的参数,只训练嵌入,适应新增加的中文词向量,同时尽量减少对原始模型的干扰。
  • 第二阶段:我们将LoRA权重(适配器)添加到注意力机制中,并训练嵌入、LM头和新增加的LoRA参数。

指令微调:在得到预训练的模型后,我们根据第3章对其进行微调。我们还使用LoRA进行有效的微调,通过在MLP层添加LoRA适配器来增加可训练参数的数量。我们利用大约200万个数据点,包括翻译(Xu,2019)、pCLUE3 , Stanford Alpaca,以及爬行的SFT数据,用于调整7B模型。

对于抓取的数据,我们采用了Taori等人(2023)使用的从ChatGPT(gpt-3.5-turboAPI)中自动获取数据的自我指导(Wang等人,2022)方法。模板和代码细节可在GitHub上找到。超参数列于表2。有关微调数据的详细信息在表3中提供。

13B版本

预训练:13B模型的预训练过程与7B模型的预训练过程基本相同,只是我们跳过了预训练的 第1阶段。我们直接将LoRA应用于注意力和MLPs的训练,同时将嵌入和LM头设置为可训练。

指令微调:LoRA设置和可训练参数与预训练阶段保持一致。我们在13B模型的微调中使用了额外的100万个爬行的自我指导的数据点,使得13B模型的总数据量为3M。表2中列出了超参数。

2解码的设置

LLMs的解码过程在决定生成文本的质量和多样性方面起着关键作用。在我们的实验中,我们使用了以下解码超参数:

  • 语境大小:我们将上下文大小设置为2048,这决定了模型在生成文本时可以同时考虑的最大数量的标记。
  • 最大的序列长度:我们将生成的序列长度限制在512个标记,以确保输出结果保持重点,并与输入提示相关。
  • 温度:我们将温度设置为0.2,控制采样过程的随机性。较低的值使模型产生更集中和确定的输出,而较高的值则以一致性为代价增加多样性。
  • Top-k抽样:我们使用k=40的Top-k抽样,这意味着模型在每一步从最有可能的40个标记中选择其下一个标记,为生成的文本添加随机性和多样性元素。
  • Top-p抽样:我们还采用了p=0.9的Top-p抽样,通过考虑集体占概率质量90%的动态标记集,进一步提高了分歧度。
  • 重复性惩罚:为了阻止模型生成重复的文本,我们应用了一个系数为1.3的重复惩罚,惩罚那些已经被选中的标记。

请注意,这些值对于每个测试场景来说可能都不是最佳的。我们没有对每个任务的这些超参数进行进一步的调整,以保持一个平衡的观点。

3在CPU上部署

在个人电脑上部署大型语言模型,特别是在CPU上部署,由于其巨大的计算需求,历来都是一个挑战。然而,在许多社区努力的帮助下,如llama.cpp(Gerganov,2023),用户可以有效地将LLM量化为4位形式,大大减少内存使用和计算需求,使LLM更容易部署在个人电脑上。这也使得与模型的互动更加快速,并有利于本地数据处理。量化LLM并将其部署在个人电脑上,有几个好处。首先,它帮助用户保护他们的数据隐私,确保敏感信息留在他们的本地环境中,而不是被传输到外部服务器。其次,它通过使计算资源有限的用户更容易接触到LLMs,实现了对它们的民主化访问。最后,它促进了利用本地LLM部署的新应用和研究方向的发展。总的来说,使用llama.cpp(或类似的)在个人电脑上部署LLM的能力,为在各种领域中更多地利用LLM和关注隐私铺平了道路。在下面的章节中,我们将使用4位的圆对近(RTN)(Yao等人,2022;Dettmers等人,2022)量化的中国羊驼进行评估,从用户的角度来看,这比面向研究的观点更现实。作为一个善意的提醒,4位量化的模型一般比FP16或FP32模型的表现要差。

4评价和任务设置

评估文本生成任务的性能可能具有挑战性,因为它们的形式有很大的不同,这与自然语言理解任务(如文本分类和提取式机器阅读理解)不同。继以前利用GPT-4作为评分方法的工作之后,我们也采用GPT-4为每个样本提供一个总分(10分制),这比人工评估更有效。然而,GPT-4可能并不总是提供准确的分数,所以我们对其评分进行人工检查,必要时进行调整。人工检查确保了评分的一致性,并反映了被评估模型的真实性能。我们使用以下提示模板对系统的输出进行评分:

通过采用GPT-4作为评分方法,结合人工检查,我们建立了一个可靠的评估框架,有效地衡量了我们的中国羊驼模型在一系列自然语言理解和生成任务中的表现。

我们的评估集旨在对中国羊驼模型在广泛的自然语言理解和生成任务中提供全面的评估。该评估集由160个样本组成,涵盖10个不同的任务,包括问题回答、推理、文学、娱乐、翻译、多轮对话、编码和伦理等。一项具体任务的总分是通过将该任务中所有样本的分数相加,并将总分归一化为100分来计算的。这种方法确保了评价集反映了模型在各种任务中的能力,为其性能提供了一个平衡而有力的衡量。

Part6结果

在这一节中,我们介绍并分析了我们用4位量化的中国Alpaca-7B和Alpaca-13B模型进行实验的结果,如表4所示。评估是基于GPT-4在10个不同的NLP任务中的评分结果,共包括160个样本。值得注意的是,所提出的分数只可以相互比较,而不能与其他模型比较,这就需要对系统重新评分。

中国的Alpaca-7B和Alpaca-13B模型的性能都显示出比原来的LLaMA模型有明显的提高。中国的Alpaca-13B模型的性能一直优于7B变体,突出了增加模型容量的好处。

对于问题回答任务,中国的Alpaca-13B获得了77分,而7B模型为53分。在开放式问答中也可以看到类似的改进,13B和7B模型的得分分别为73和64。数字推理显示出更大的改进,13B模型的得分是50,而7B模型的得分是23。

在诗歌、文学、哲学、音乐、体育和娱乐等领域,13B模型的表现继续优于7B模型,其得分分别为54和65,而7B模型为31和36。在涉及信件和文章、翻译和多轮对话的任务中,性能差距仍然很大,13B模型一直取得较高的分数。有趣的是,我们观察到,即使我们没有使用任何多轮对话数据来调整系统,中国羊驼仍然有能力跟踪对话历史,并以连续的方式遵循用户指令。

编码任务表现出明显的改进,中国的Alpaca-13B模型得到49分,而7B模型得到27分。最显著的性能差异可以在伦理学任务中观察到,13B模型获得了100分的满分,而7B模型的得分是50分,这表明在拒绝任何不道德的用户输入方面表现出色。

总之,实验结果表明,中国的Alpaca-7B和Alpaca-13B模型都比原来的LLaMA模型有明显的改进,其中13B模型在所有任务中的表现一直优于7B模型。这强调了我们的方法在提高LLaMA和Alpaca模型的中文理解和生成能力方面的有效性。

Part7结论

在这份技术报告中,我们提出了一种方法来提高LLaMA模型的中文理解和生成能力。认识到原来的LLaMA中文词汇的局限性,我们通过加入2万个额外的中文符号来扩展它,极大地提高了它对中文的编码效率。在中文LLaMA的基础上,我们用指令数据进行了监督性的微调,从而开发出了中文羊驼模型,它表现出了更好的指令跟随能力。

为了有效地评估我们的模型,我们在10种不同的任务类型中注释了160个样本,并使用GPT-4进行评估。我们的实验表明,所提出的模型在中文理解和生成任务中明显优于原LLaMA,与7B变体相比,13B变体一直取得更大的改进。

展望未来,我们计划探索从人类反馈中强化学习(RLHF)或从人工智能指导的反馈中再强化学习(RLAIF),以进一步使模型的输出与人类的偏好一致。此外,我们打算采用更先进和有效的量化方法,如GPTQ(Frantar等人,2022)等。此外,我们还打算研究LoRA的替代方法,以便更有效地对大型语言模型进行预训练和微调,最终提高它们在中文NLP社区各种任务中的性能和适用性。

限制条件 虽然这个项目成功地加强了对LLaMA和Alpaca模型的中文理解和生成能力,但必须承认有几个局限性:

  • 有害的和不可预知的内容:我们的结果表明,13B版本比7B版本有更好的能力来拒绝不道德的查询。然而,这些模型仍然可能产生有害的或与人类偏好和价值观不一致的内容。这个问题可能来自于训练数据中存在的偏见,或者模型在某些情况下无法辨别适当的输出。
  • 训练不充分:由于计算能力和数据可用性的限制,模型的训练可能不足以达到最佳性能。因此,模型的中文理解能力仍有改进的余地。
  • 缺少稳健性:在某些情况下,模型可能会表现出脆性,在面对对抗性输入或罕见的语 言现象时产生不一致或无意义的输出。
  • 可扩展性和效率:尽管我们应用了LoRA和4位量化,使模型更容易被更多的人接受, 但当与原来的LLaMA相结合时,模型的大尺寸和复杂性会导致部署上的困难,特别是 对于计算资源有限的用户。这个问题可能会阻碍这些模型在各种应用中的可及性和广泛采用。

未来的工作应该解决这些局限性,以进一步提高模型的能力,使其在中文NLP社区的更广泛的应用中更强大、更易获得和更有效。

posted @ 2023-04-18 17:25  西西嘛呦  阅读(504)  评论(0编辑  收藏  举报