自从Meta发布LLaMA以来,围绕它开发的模型与日俱增,比如Alpaca、llama.cpp、ChatLLaMA以及Vicuna等等,相关的博客可以参考如下:
【Alpaca】斯坦福发布了一个由LLaMA 7B微调的模型Alpaca(羊驼),训练3小时,性能比肩GPT-3.5
【llama.cpp】量化130亿参数LLaMA模型的llama.cpp,推理仅需4GB内存
【ChatLLaMA】Meta开源的LLaMA性能真如论文所述吗?如果增加RLHF,效果会提升吗?
【Vicuna】斯坦福开源一个性能相当于90%ChatGPT的聊天机器人:Vicuna
在线体验地址:https://koala.lmsys.org/
训练和部署框架:https://github.com/young-geng/EasyLM
模型权重下载1:https://drive.google.com/drive/folders/10f7wrlAFoPIy-TECHsx9DKIvbQYunCfl?usp=sharing
模型权重下载2:https://huggingface.co/young-geng/koala/tree/main
训练数据预处理:https://github.com/young-geng/koala_data_pipeline
Koala评估数据集:https://github.com/arnav-gudibande/koala-test-set
今天将继续分享LLaMA系列模型:Koala,它是使用ChatGPT蒸馏数据和公开互联网数据fine-tuning LLaMA模型得到的,仅仅是微调了LLaMA,下面是Alpaca、ChatGPT以及Koala的模型效果对比
它认为高质量的训练数据对于LLM非常重要,尤其是对于小型的LLM,下面分析一下它的训练数据:
ChatGPT蒸馏数据
-
-
ShareGPT数据:使用公开API收集了ShareGPT 60K的对话数据,为保持数据质量,在用户查询级别删除了重复数据,并删除了所有非英语对话。最后保留了大约 30K 个示例。
-
Human ChatGPT Comparison Corpus (HC3):针对24K个问题,得到了60K 人类答案和通过与ChatGPT交互得到的 27K ChatGPT 答案,总共大约 87K 的问答示例。
-
开源数据
-
开放式教学通才 (OIG):从(https://laion.ai/blog/oig-dataset/)中手动选择了大约30K的数据,其中包括小学数学教学、诗歌到歌曲和情节-剧本-书籍-对话数据集。
-
斯坦福Alpaca:使用OpenAI 的 text-davinci-003 按照self-instruct生成52K的数据,值得注意的是,HC3、OIG 和 Alpaca 数据集是单轮问答,而 ShareGPT 数据集是对话对话。
-
Anthropic HH:Anthropic HH数据集包含人类对模型输出的危害性和有用性的评级。该数据集包含约 160,000 个人类评价的示例,其中该数据集中的每个示例都包含来自聊天机器人的一对响应,其中一个是人类更喜欢的。该数据集为我们的模型提供了功能和额外的安全保护。
-
OpenAI WebGPT。OpenAI WebGPT数据集(https://huggingface.co/datasets/openai/webgpt_comparisons)总共包含大约 20K 个比较,其中每个示例都包含一个问题、一对模型答案和元数据。答案由具有偏好分数的人进行评分。
-
OpenAI 摘要。OpenAI摘要数据集包含约 93K 个示例,每个示例都包含人类对模型生成的摘要的反馈。人类评估人员从两个选项中选择了更好的摘要。
使用开源数据集时,一些数据集有两个响应,分别对应评级为好或差的响应(Anthropic HH、WebGPT、OpenAI Summarization)。Keskar 等人、Liu 等人和Korbak 等人之前的研究证明了条件语言模型对人类偏好标记(例如“有用的答案”和“无用的答案”)提高性能的有效性。我们根据偏好标签将模型设置为正标记或负标记。我们在没有人工反馈的情况下对数据集使用正面标记。为了进行评估,我们提示带有正标记的模型。
模型训练
Koala 模型在EasyLM中使用 JAX/Flax 实现,这是我们的开源框架,可以轻松预训练、微调、服务和评估各种大型语言模型。我们在配备 8 个 A100 GPU 的单个 Nvidia DGX 服务器上训练我们的 Koala 模型。完成 2 个 epoch 的训练需要 6 个小时。在公共云计算平台上,使用可抢占实例进行此类训练的成本通常低于 100 美元。
模型评估
评估了两个模型:只使用蒸馏数据的 Koala-Distill 和使用所有数据(包括蒸馏和开源数据)的 Koala-All。目标是比较这些模型的性能,并评估蒸馏和开源数据集对最终性能的影响。上图展示了 Koala-All 与 Koala-Distill、Alpaca 和 ChatGPT 人工评估结果。
Alpaca测试集由从self-instruct数据集中采样的用户提示组成,并代表羊驼模型的分布数据。为了提供第二个更真实的评估协议,还引入了 (Koala) 测试集,其中包含在线发布的180 个真实用户查询。这些用户查询涵盖各种主题,通常是对话式的,并且可能更能代表基于聊天的系统的真实用例。为了减少可能的测试集泄漏,使用训练集中的任何示例过滤掉了 BLEU 分数大于 20% 的查询。此外,还删除了非英语和与编码相关的提示,因为对这些查询的回答无法由评分员(人群工作者)可靠地审查。
有了这两个评估集,通过在 Amazon Mechanical Turk 平台上询问大约 100 名评估员来比较这些保留的提示集上模型输出的质量,从而进行了盲配对比较。在评分界面中,向每个评分者展示一个输入提示和两个模型的输出。然后要求他们使用与响应质量和正确性相关的标准来判断哪个输出更好(或者它们同样好)。
在 Alpaca 测试集上,Koala-All 表现出与 Alpaca 相当的性能。然而,在由真实用户查询组成的测试集上,Koala-All 在近一半的情况下被评为优于Alpaca,并且在 70% 的情况下超过或与Alpaca持平。当然,Koala 测试集中的对话提示越多,越接近 Koala 训练集,所以这也许并不奇怪,但就此类提示越接近此类模型的可能下游用例而言,这表明 Koala 是预期的在类似助手的应用程序中表现更好。这表明来自用户在网络上发布的示例的 LLM 交互数据是赋予此类模型有效指令执行能力的有效策略。
也许更令人惊讶的是,发现除了蒸馏数据 (Koala-All) 之外,对开源数据的训练比仅对 ChatGPT 蒸馏数据 (Koala-Distill) 的训练表现稍差,如与 Koala-Distill 在两个数据集。尽管差异可能并不显着,但这一结果表明 ChatGPT 对话的质量如此之高,以至于即使包含两倍的开源数据也不会带来显着的改进。最初的假设是 Koala-All 应该至少表现得更好一些,因此在所有评估中都将其用作主要模型,但这些实验的一个潜在收获是有效的指令和辅助模型可以从 LLM 主干(如 LLaMA)中进行微调完全使用来自更大更强大模型的数据,只要这些响应的提示代表用户将在测试时提供的提示类型。这也进一步支持了这样一种观点,即建立强大的对话模型的关键可能更多地在于策划用户查询多样化的高质量对话数据,而不是简单地将现有数据集重新格式化为问题和答案。
模型局限性
除了幻觉之外,Koala 还存在其他聊天机器人语言模型的不足之处。其中一些包括:
-
偏见和刻板印象:模型会从它所训练的对话数据中继承偏见,可能会延续有害的刻板印象、歧视和其他危害。
-
缺乏常识:虽然大型语言模型可以生成看起来连贯且语法正确的文本,但它们往往缺乏人类认为理所当然的常识知识。这可能会导致无意义或不适当的反应。
-
有限的理解:大型语言模型可能难以理解对话的上下文和细微差别。他们也可能难以识别讽刺或讽刺,这可能会导致误解。
为了解决 Koala 的安全隐患,在 ShareGPT 和 Anthropic HH 的数据集中加入了对抗性提示,以使模型更加稳健和无害。为了进一步减少潜在的滥用,在线演示中部署了 OpenAI 的内容审核过滤器,以标记和删除不安全的内容。
未来的规划
希望 Koala 模型将成为未来大型语言模型学术研究的有用平台:该模型足以展示我们与现代 LLM 相关的许多功能,同时又足够小以进行微调或用于更多有限的计算。潜在有希望的方向可能包括:
-
安全性和一致性:Koala 允许进一步研究语言模型的安全性并更好地与人类意图保持一致。
-
模型偏差:Koala 能够更好地理解大型语言模型的偏差、对话数据集中虚假相关和质量问题的存在,以及减轻此类偏差的方法。
-
理解大型语言模型:由于 Koala 推理可以在相对便宜的商品 GPU 上执行,能够更好地检查和理解对话语言模型的内部结构,使(以前的黑盒)语言模型更具可解释性。