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

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

开放模型在经过适当的指令调整后,性能可以与最先进的专有模型相媲美。但目前缺乏全面的评估,使得跨模型比较变得困难。来自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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/910849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序uniapp基于Android的流浪动物管理系统 70c3u

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 以往流浪猫狗的救助网站相关信息的管理,都是工作人员手工统计。这种方式不但时效性低,而且需要查…

MiniWord

1.nuget 下载配置 2.引用 3. var value = new Dictionary<string, object>() { ["nianfen"] = nianfen, ["yuefen"] = yuefen, ["yuefenjian1"] = (int.Par…

【算法与数据结构】【链表篇】【题1-题5】

题1.从尾到头打印链表 题目&#xff1a;输入一个链表的头结点&#xff0c;从尾到头反过来打印出每个节点的值。链表的定义如下&#xff1a; struct ListNode {int mValue;ListNode *mNext;ListNode *mPrev; }; 1.1 方法一&#xff1a;栈 思路&#xff1a;要反过来打印&…

8.机器学习--决策树

(⊙﹏⊙)下周有要开组会&#xff0c;不知道该说啥&#xff0c;啊啊啊啊&#x1f62b; 目录 1.基本概念 2.ID3算法 3.C4.5算法 4.CART算法 5.连续与缺失值处理 5.1.连续值处理 5.2.缺失值处理 6.剪枝处理 6.1.预剪枝策略 6.2.后剪枝策略 7.实例代码 1.基本概念 提…

C#的6种常用集合类

一.先来说说数组的不足&#xff08;也可以说集合与数组的区别&#xff09;&#xff1a; 1.数组是固定大小的&#xff0c;不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小&#xff0c;但是该方法是重新创建新设置大小的数组&#xff0c;用的是旧数组的元素初始…

以太网交换安全:MAC地址漂移

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址&#xff0c;后学习到的MAC地址表项覆盖原MAC地址表项的现象。 MAC地址漂移的定义与现象 基本定义&#xff1a;MAC地址漂移发生在一个VLAN内的两个不同端口学习到相同的MAC地…

qt QHttpMultiPart详解

1. 概述 QHttpMultiPart是Qt框架中用于处理HTTP多部分请求的类。它类似于RFC 2046中描述的MIME multipart消息&#xff0c;允许在单个HTTP请求中包含多个数据部分&#xff0c;如文件、文本等。这种多部分请求在上传文件或发送带有附件的邮件等场景中非常有用。QHttpMultiPart类…

【SQL实验】高级查询(难点.三)含附加数据库操作

完整代码在文章末尾【代码是自己的解答&#xff0c;并非标准答案&#xff0c;也有可能写错&#xff0c;文中可能会有不准确或待完善之处&#xff0c;恳请各位读者不吝批评指正&#xff0c;共同促进学习交流】 将素材中的“学生管理”数据库附加到SQL SERVER中&#xff0c;完成以…

基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)

&#x1f388;系统亮点&#xff1a;协同过滤算法、节流算法、支付宝沙盒支付、图形化分析、实时聊天&#xff1b; 一.系统开发工具与环境搭建 1.系统设计开发工具 后端使用Java编程语言的Spring boot框架 项目架构&#xff1a;B/S架构 运行环境&#xff1a;win10/win11、jdk1…

std::copy

std::copy 是 C 标准库中的一个算法&#xff0c;用于将一个序列中的元素复制到另一个位置。这个算法定义在 <algorithm> 头文件中。 --- 函数原型 std::copy 有几个不同的重载版本&#xff0c;但以下是最常用的两个&#xff1a; template <class InputIterator, c…

Linux之sed命令详解

文章目录 &#x1f34a;自我介绍&#x1f34a;sed概述&#x1f34a;sed语法讲解格式&#xff1a;options 命令选项{commmand}[flags] &#x1f34a;场景训练 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff…

现代Web开发:React Hooks深入解析

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 现代Web开发&#xff1a;React Hooks深入解析 现代Web开发&#xff1a;React Hooks深入解析 现代Web开发&#xff1a;React Hook…

大语言模型(LLM)入门级选手初学教程 III

指令微调 一、指令数据的构建 包括任务描述&#xff08;也称为指令&#xff09;、任务输入-任务输出以及可选的示例。 Self-Instruct 指令数据生成&#xff1a;从任务池中随机选取少量指令数据作为示例&#xff0c;并针对Chat-GPT 设计精细指令来提示模型生成新的微调数据…

算法工程师重生之第四十六天(字符串接龙 有向图的完全可达性 岛屿的周长)

参考文献 代码随想录 一、字符串接龙 题目描述 字典 strList 中从字符串 beginStr 和 endStr 的转换序列是一个按下述规格形成的序列&#xff1a; 1. 序列中第一个字符串是 beginStr。 2. 序列中最后一个字符串是 endStr。 3. 每次转换只能改变一个字符。 4. 转换过程…

魅力标签云,奇幻词云图 —— 数据可视化新境界

目录 目的原理详解建议 标签云&#xff1a;用于汇总生成的标签&#xff0c;一般是独立词汇运行前的准备代码示例 词云&#xff1a;对本文中出现频率较高的词&#xff0c;视觉上突出显示总结 目的 掌握文本与文档可视化&#xff1a;使用特定软件或编程语言&#xff08;如Python…

云计算答案

情境一习题练习 一、选择题 1、在虚拟机VMware软件中实现联网过程&#xff0c;图中箭头所指的网络连接方式与下列哪个相关&#xff08; C &#xff09;。 A.仅主机模式 B.桥接 C.NAT D.嫁接 2、请问下图这个虚拟化架构属于什么类型&#xff08; A …

【测试】【Debug】vscode pytest 找不到测试用例测试文件 行号部位没有绿色箭头

出现这种情况首先检查&#xff1a; 是否安装pytest点击vscode的这个图标如果其中都是空的&#xff0c;没有识别上&#xff0c;并且写好的.py测试文件的行号前面没有运行符号&#xff0c;要检查名称是否按照pytest的要求写&#xff0c;不然会识别不到。 命名规则注意&#xff1…

Echats柱状图的横坐标用图片显示

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片作为横坐标示例 - ECharts</title><!-…

D-ID 推出能模仿用户的头部动作以及实时互动的 AI 头像

D-ID 宣布推出两种新型 AI 头像 — — Express 和 Premium&#xff0c;旨在提升内容创作的灵活性和人性化。这些头像将为企业在营销、销售和客户支持等领域的视频制作提供便利。用户只需少量文本输入和视觉数据&#xff0c;即可生成更自然的商业视频。 Express 头像可以通过约一…

vue使用canves把数字转成图片验证码

<canvas id"captchaCanvas" width"100" height"40"></canvas>function drawCaptcha(text) {const canvas document.getElementById(captchaCanvas);const ctx canvas.getContext(2d);// 设置背景颜色ctx.fillStyle #f0f0f0;ctx.f…