大语言模型
大语言模型(Large Language Model,LLM)是一类强大的人工智能模型,具有出色的自然语言处理能力。它们在许多任务中表现出色,如机器翻译、文本摘要、对话生成和情感分析等。
LLM 的核心原理是基于深度学习和神经网络技术,通过训练大规模的语言数据集,从中学习语言的模式和规律,并根据这些学习到的知识生成新的文本,其训练过程是一个迭代的过程,通过不断调整模型参数,使得模型能够更好地预测下一个词或句子的概率分布。
举个例子,假设我们要训练一个大型语言模型来生成句子。我们会向模型输入大量的句子样本,比如:“今天天气很好。”、“我喜欢吃冰淇淋。”等等。模型会根据这些输入样本学习到词语之间的关联和语法规则。通过不断调整模型的权重,它逐渐学会生成符合语言规则的新句子。
大模型微调技巧
在人工智能领域,大型语言模型(LLMs)已经成为了一个重要的研究方向。随着模型规模的增大,模型的性能也在不断提升。但是,训练一个大型模型需要大量的数据和计算资源,并且模型的可解释性也面临着挑战。为了解决这些问题,人们开始研究如何对大型模型进行微调。
微调是指在一个预训练的模型上,根据具体的任务和数据,进行少量的训练和调整,以获得更好的性能。在本文中,我们将介绍四类微调方法,包括Prefix Tuning、Prompt Tuning、P-Tuning和P-Prompting v2.0等。这些方法在不同的任务和数据集上,都有着不同的应用和效果。
Prefix Tuning
这种方法是通过修改预训练模型的前缀,来适应具体的任务和数据。通过添加或修改前缀,可以让模型更好地理解任务和数据,从而提高性能。
Prompt Tuning
这种方法是通过在输入中添加提示词,来引导模型的输出。这些提示词可以是一些问题、实体、时间等,帮助模型更好地理解输入,从而提高性能。
P-Tuning
这种方法是通过调整预训练模型的参数,来适应具体的任务和数据。通过对一些重要参数进行调整,可以让模型更好地适应任务和数据,从而提高性能。
P-Prompting v2.0
这种方法是通过在预训练模型中添加提示模块,来引导模型的输出。这些提示模块可以是一些问题、实体、时间等,帮助模型更好地理解输入,从而提高性能。
在实际应用中,这些方法都有着不同的应用和效果。例如,在NLP任务中,Prompt Tuning和P-Prompting v2.0等方法可以有效地提高模型的性能。在机器阅读理解任务中,Prefix Tuning和P-Tuning等方法可以有效地提高模型的性能。
什么是LLaMA
LLaMA是由美国的Meta AI发布的大语言系列模型,全称是Large Language Model Meta AI,来自论文:LLaMA: Open and Efficient Foundation Language Models。LLaMA是一个基于大规模语言模型的生成式对话系统,可以对输入的问题或文本进行理解和生成回答。llama这个单词本身是指美洲大羊驼,所以社区也将这个系列的模型昵称为羊驼系模型。
LLaMA的训练集
在这篇论文中,使用数万亿个(trillions of) token 训练LLaMA模型,证明了使用公开数据集就能训练出最先进的模型, 而并非必须使用专有和私有数据集。
训练数据集有几种不同来源,涵盖了多个领域,如表1所示。
LLaMA的不同版本
LLaMA 模型能够生成文本、进行对话、总结书面材料以及解决数学定理或预测蛋白质结构等。按照参数量规模,LLaMA可分为四个:LLaMA-7B、LLaMA-13B、LLaMA-30B与LLaMA-65B。这里的B是billion的缩写,指代模型的参数规模。故最小的模型7B包含70亿个参数,而最大的一款65B则包含650亿个参数。
不同模型的超参信息如表2所示:
如何获取LLaMA
LLaMA的源码
LLaMA本身的代码开源,其Github地址为:llama,如下图所示:
LLaMA的权重申请
但是其权重需要向Meta在线申请。下载完成后的权重文件大概如下所示:
LLaMA
├── 13B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ ├── consolidated.01.pth
│ └── params.json
├── 30B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ ├── consolidated.01.pth
│ ├── consolidated.02.pth
│ ├── consolidated.03.pth
│ └── params.json
├── 65B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ ├── consolidated.01.pth
│ ├── consolidated.02.pth
│ ├── consolidated.03.pth
│ ├── consolidated.04.pth
│ ├── consolidated.05.pth
│ ├── consolidated.06.pth
│ ├── consolidated.07.pth
│ └── params.json
├── 7B
│ ├── checklist.chk
│ ├── consolidated.00.pth
│ └── params.json
├── llama.sh
├── tokenizer_checklist.chk
└── tokenizer.model
全部文件加起来的大小约253.2GB。注意使用附带的checklist.chk文件校验文件哈希值。
md5sum -c checklist.chk
不过,基于 Llama 2 构建应用并不只是把它从开源库里下载下来那么简单,模型的后续调优、中文增强、安全评估、与外部数据的融合、推理算力消耗等都是摆在开发者、企业面前的现实问题。这也是当前很多大模型的共性问题。大模型和应用之间需要一座桥梁。
以LLaMA为基础,后续衍生出了多个“羊驼家族”模型如Vicuna(小羊驼)和Alpaca(羊驼)。