当前位置: 首页 > article >正文

探索开放资源上指令微调语言模型的现状

人工智能咨询培训老师叶梓 转载标明出处

开放模型在经过适当的指令调整后,性能可以与最先进的专有模型相媲美。但目前缺乏全面的评估,使得跨模型比较变得困难。来自Allen Institute for AI和华盛顿大学的研究人员们进行了一项全面的研究,探索了不同公开指令数据集对语言模型性能的影响。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。

1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。

CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987 

指令调整及其数据资源探索

在自然语言处理领域,指令微调是一种优化预训练大模型的方法,使其能够更准确地理解和响应人类以自然语言形式提出的请求。这一过程特别关注那些在请求中明确包含任务指示的情境,例如在输入提示中直接包含任务指令。指令微调是实现模型泛化至新场景、无需特定任务训练的关键步骤,同时也为非专业人士提供了与模型自然互动的可能。

指令微调的成功依赖于两大核心要素:首先,需要一个强大的预训练语言模型,该模型通过大规模网络预训练积累了丰富的知识储备;其次,需要一个多样化且具有代表性的指令数据集,以便模型能够适应各种潜在的下游应用场景。本研究围绕这两个要素展开,并对相关的开放资源进行了深入探讨。

研究中尝试收集了多种风格的数据集,这些数据集包括但不限于:由研究人员基于现有NLP数据集创建的(如SuperNI、Flan V2)、专门为指令微调目的由人类编写的(如Dolly、Open Assistant 1)、由专有模型生成的(如Self-Instruct、Unnatural Instructions、Alpaca、Baize、GPT4-Alpaca),以及包含用户共享提示和模型生成完成的(如ShareGPT3)。还有针对特定技能构建的数据集,例如CoT专注于思维链的培养,Code-Alpaca专注于代码生成。Table 1为用于指令调优的数据集的详细信息。

在本研究中,主要使用了LLaMa系列预训练模型,这些模型的参数量从6.7B到65B不等。研究初期使用了LLaMa-1模型,随后在最终版本中引入了LLaMa-2模型,后者虽然参数数量相似,但接受了更多的训练,代表了社区可用的最大、最高质量的预训练模型。研究也考虑了与LLaMa 6.7B模型大小相当的OPT和Pythia模型,以考察不同基础模型对指令微调效果的影响。

为了统一不同数据集的风格和格式,研究中将所有数据集格式化为聊天机器人风格的模式。这种格式允许将用户与语言模型之间的任意轮次交互适配到一个输入序列中,并与因果语言模型一起编码。通过添加特殊的标记来区分用户话语和助手响应,并在每个助手输出的末尾添加了文本结束标记,以确保在推理时模型能够适时停止响应。Figure 1为数据格式化的示例。

在训练过程中,损失仅在助手标记后的令牌和下一个用户标记之前计算。一个指令数据集被视为由多个包含多个轮次的元组组成,每个元组包括用户提示和期望的输出。对于大多数情况,模型被训练为给定用户提示输出相应的响应。然而,在处理对话数据集时,模型被训练为基于部分对话历史预测后续的响应。训练过程中采用了教师强制和损失掩码的技术,确保模型能够有效学习。

现有研究表明,增加指令的多样性可以有效提升指令微调的性能。基于这一动机,研究中创建了两种数据集的混合:人类数据混合物和人类+GPT数据混合物。TÜLU是在人类+GPT数据混合物上训练的LLaMa模型,旨在通过结合多种资源进一步提升指令微调的效果。

评估与结果分析

评估体系包括了对事实知识、推理能力、多语言性、编码能力、开放式指令遵循能力以及安全性的测试。

  • 事实知识:使用Massive Multitask Language Understanding数据集(MMLU)来衡量模型的事实知识。MMLU包含57个不同主题的问题,难度从基础到专业级别不等,其多项选择格式适合探测模型的知识,而不必担心生成的开放性。
  • 推理能力:使用Grade School Math数据集(GSM)的测试分割来评估模型的数学推理能力。同时采用Big-Bench-Hard(BBH),它包含23个来自Big-Bench的挑战性任务,以评估模型的一般推理能力。
  • 多语言性:使用TyDiQA,这是一个涵盖11种语言类型多样的语言的多语言问答基准,用于测试模型处理非英语文本的能力。
  • 编码能力:使用HumanEval数据集来评估模型从文档字符串生成功能正确程序的能力。为了避免与人类评估的歧义,本文中将其称为Codex-Eval。
  • 开放式指令遵循能力:评估模型处理来自真实用户的多样化和开放式请求的能力。例如,ShareGPT数据集包含了用户请求编程帮助、简历格式化技巧、教育角色扮演、发音建议、同人小说写作等多种实例。
  • 安全性:使用ToxiGen来衡量模型在被提示时产生有毒语言和仇恨言论的程度。同时采用TruthfulQA来衡量模型在提供有用信息时避免产生已知错误信息的能力。

为了评估开放式指令遵循能力,作者们采用了AlpacaEval中引入的基于模型的方法。测试集包含805条指令,这些指令来自不同的评估集,如Self-Instruct、Open Assistant、Anthropic的帮助评估、Vicuna评估和Koala评估。

使用模拟的GPT-4注释器,计算测试模型与Davinci-003产生的输出相比,由GPT-4判断的胜率。为了使分数与AlpacaEval排行榜上的分数直接可比,作者们使用了AlpacaEval的代码库和提示。

为了进一步测试开放式生成的质量,作者们进行了基于332条指令的人类评估,这些指令结合了Self-Instruct评估集和Vicuna评估集。

人类评估要求评估者基于几个维度判断模型输出的可接受性,包括输出是否孤立地可接受、是否回答了查询中的请求、是否有重大错误以及是否没有重复信息。

Table 3 展示了不同指令调整数据集对模型性能的影响。结果表明,不同的数据集在不同方面表现优异,而数据集的混合使用在平均性能上表现最佳。例如,CoT 数据集在数学推理(GSM)和编码(Code-Alpaca)任务上特别有帮助。这表明,为了在特定任务上取得成功,需要在训练集中充分代表这些任务。此外,结合多个数据集通常能够在基准测试中获得最佳的整体性能。

Table 4 展示了在Human+GPT数据混合物上训练后不同基础模型的性能。结果显示,使用LLAMA作为基础模型在所有评估设置中表现最佳,这可能是因为LLAMA在预训练时使用了更多的token。这表明,使用更大(或潜在更高质量)语料库预训练的模型更适合作为指令调整的基础模型。

作者们分析了表1中列出的指令数据集如何贡献于模型能力。他们使用评估套件评估了在这些数据集上训练的LLaMa 13B模型。Table 5 展示了TÜLU和其他训练模型与原始LLAMA模型以及最先进的专有模型在评估设置中的性能对比。结果表明,指令调整为所有大小的LLAMA模型带来了显著的好处,而较小的模型从指令调整中受益最大。

作者们比较了在Human+GPT数据混合物上训练的模型(TÜLU模型)在所有LLAMA大小上的性能。他们发现,尽管TÜLU 65B的性能令人印象深刻,但在所有评估设置中,它仍然落后于ChatGPT和GPT-4,这与之前声称使用这些开放资源训练的模型可以匹配ChatGPT的说法相矛盾。

作者们评估了模型在ToxiGen和TruthfulQA上的表现(Table 6),以衡量不同数据集可能导致生成有毒语言或错误信息的程度。他们发现,使用GPT源数据训练的模型产生的有毒生成物比GPT本身要少;TruthfulQA的性能并没有随着模型大小的增加而提高。

观察模型在AlpacaEval中的胜率发现,鼓励长而多样化生成的数据集表现最佳。例如,ShareGPT 在所有模型大小上始终表现最佳,包括在包含ShareGPT的数据混合物上训练的模型。这表明,尽管模型偏好评估很重要,但它并不能全面评估这些模型。因此,模型偏好评估应该只作为更大、更全面的评估设置的一部分。

人类评估结果与AlpacaEval和基于基准的评估大体一致:所有评估都显示65B TÜLU优于7B TÜLU,这表明使用较大的基础模型很重要,而且65B TÜLU与ChatGPT之间的性能差距仍然不小。

研究结果表明,使用强大的基础模型至关重要,结合数据集在平均性能上表现最佳,但目前最强的开放模型尚未达到ChatGPT或GPT-4的水平。

论文链接:https://arxiv.org/pdf/2306.04751

项目链接:GitHub - allenai/open-instruct 


http://www.kler.cn/a/389203.html

相关文章:

  • AI制作ppt
  • HarmonyOS 如何实现传输中的数据加密
  • 代码 RNN原理及手写复现
  • ElasticSearch学习笔记一:简单使用
  • ubuntu cmake CPack将第三方库进行打包
  • Django博客网站上线前准备事项
  • 【Kafka-go】golang的kafka应用
  • ReactPress:深入解析技术方案设计与源码
  • C++学习笔记----10、模块、头文件及各种主题(六)---- C风格可变长度参数列表
  • qt QRunnable 与 QThreadPool详解
  • 【CSS】居中样式
  • Nginx性能调优的具体策略方法
  • opcua认证测试1108 增加对三菱,西门子,modbus支持
  • PySindy学习
  • 无人机避障——(局部规划方法)DWA(动态窗口法)
  • C#开发流程
  • 1.1 算法基本概念与复杂度分析
  • qt QWebSocketServer详解
  • 第十三届交通运输研究(上海)论坛┆智能网联汽车技术现状与研究实践
  • SpringBoot项目编译报错 类文件具有错误的版本 61.0, 应为 52.0
  • ssh2-sftp-client一键将你的前端项目部署到远程服务器,你只需要专注写bug就好了
  • Rust:GUI 开源框架
  • 数据库范式、MySQL 架构、算法与树的深入解析
  • 实现rtos操作系统 【二】基本任务切换实现
  • 大模型,智能家居的春秋战国之交
  • goframe开发一个企业网站 验证码17