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

【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐

指令微调的局限性

指令微调对于训练llm的能力至关重要,而模型的有用性在很大程度上取决于我们从小指令数据集中获得最大信息的能力。在本文中,我们提出在微调正向传递的过程中,在训练数据的嵌入向量中添加随机噪声,论文实验显示这个简单的技巧可以提高指令微调的效果,通常有很大的优势,而不需要额外的计算或数据开销。

NEFTune虽然简单,但对下游的会话质量有很大的影响。当像LLaMA-2-7B这样的原始LLM被噪声嵌入所微调时,AlpacaEval从29.8%提高到64.7%(图1),令人印象深刻地提高了约35个百分点。NEFTune可以实现在会话任务上惊人的性能跳跃,同时在事实问题回答基线上保持性能,这种技术似乎是LLM微调的免费午餐

代码仓库:https://github.com/neelsjain/NEFTune
论文链接:https://arxiv.org/abs/2310.05914

NEFTune原理

指令模型是在由指令和响应对组成的数据集上进行训练的。

NEFTune的每一步都首先从数据集中采样一条指令,并将其标记转换为嵌入向量。

然后,NEFTune通过向嵌入中添加一个随机噪声向量来脱离标准训练。

噪声通过采样iid均匀分布产生,每个样本都在范围内[−1,1],然后将整个噪声向量缩放为 α / L d α/\sqrt{Ld} α/Ld ,其中L为序列长度,d为嵌入维数,α为可调参数。

for step_count in range(start_step_count, args.max_steps):train_loss = 0for _ in range(accumulation_steps):try:data = next(epoch_iterator)except StopIteration:sampler.set_epoch(sampler.epoch + 1)dataloader = dataloader_fullepoch_iterator = iter(dataloader)data = next(epoch_iterator)if args.neftune_alpha is not None:if isinstance(model, torch.distributed.fsdp.fully_sharded_data_parallel.FullyShardedDataParallel):embed_device = model._fsdp_wrapped_module.model.embed_tokens.weight.deviceembeds_init = model._fsdp_wrapped_module.model.embed_tokens.forward(data['input_ids'].to(embed_device))### add noise to embedsinput_mask = data['attention_mask'].to(embeds_init) # B x Linput_lengths = torch.sum(input_mask, 1) # Bnoise_ = torch.zeros_like(embeds_init).uniform_(-1,1)delta = noise_ * input_mask.unsqueeze(2)dims = input_lengths * embeds_init.size(-1)mag = args.neftune_alpha / torch.sqrt(dims)delta = (delta * mag.view(-1, 1, 1)).detach()data['inputs_embeds'] = delta + embeds_initdata['input_ids'] = None### add noise to embedsout = model(**data)(out.loss/accumulation_steps).backward()train_loss += out.loss.item()/accumulation_stepsmodel.clip_grad_norm_(args.max_grad_norm

实验结果

  • NEFTune提高了文本质量

从表1中,我们可以看到7B尺度的所有数据集的增加,平均增加了15.1%,这表明NEFT训练显著提高了对话能力和回答质量。此外,我们可以从图2中看到,我们也看到了对旧模型的改进,如LLaMA-1和OPT。有趣的是,根据ChatGPT,我们看到ShareGPT的改进不如其他数据集改进。然而,这并没有反映在GPT-4的评估中。

从表2中我们可以看到,在NEFTune加入70B参数模型后,WinRate从75.03%上升到88.81%(+13.78%)

  • NEFTune可以改进Chat模型

从表2中,我们可以看到,在Evol-指令上进一步对LLaMA-2 Chat进行微调(7B)可以将LLaMA-2聊天的性能提高3%。这个模型已经被广泛地调整了,使用了多轮的RLHF。然而,在NEFTune中,我们看到了相当大的额外性能增长10%,尽管我们注意到这个检查点模型的一些功能可能会受到影响,比如它避免输出有毒行为的能力。

  • 基础能力的影响

一个潜在的担忧是,NEFTune会牺牲其他能力为代价来提高会话能力,但是比较微小。我们评估了OpenLLM排行榜任务,使用LMEval利用MMLU、ARC、HellaSwag和真实QA。这些基准让我们得以评测模型知识、推理和真实性。图3显示了分数保持稳定,NEFTune保留了模型功能。

  • NEFTune对QLORA有效

论文表明,NEFTune还通过使用量化低等级适配器(QLORA)进行训练,提高了在受限资源环境下的性能。对于30B,论文将有效批处理规模增加一倍,并将学习率提高一半。表3显示,当使用QLORA进行训练时,在所有研究的模型大小和数据集中,空间性能都有所提高。然而,性能的提高没有全面微调的明显。这可能是因为需要不同的超参数(即微调周期的数量),或者因为量化到4位。

  • 一个定性的例子

在这里,论文展示了一个来自LLaMA-2的含NEFT的羊驼的定性例子。我们从这个例子中可以看到,羊驼产生的回复更短,只给出了量子计算的一个非常基本的定义,提到了量子位元、叠加、纠缠和增加的复杂计算。在Alpaca-NEFT回复中,该模型提供了一个更流畅的答案,对这些主题,更清晰的解释了叠加和量子纠缠,并提到了潜在的应用。我们认为这个例子代表了由NEFT引起的各种变化。

结论

NEFTune的成功指出了算法和正则化器在LLM训练中的重要性被忽视。与多年来一直在研究正则化和过拟合的计算机视觉社区不同,LLM社区倾向于使用标准化的训练循环,而不是泛化。在这种环境下,LLM的研究人员已经专注于数据集和模型缩放作为前进的主要路径。考虑到NEFTune的一致性收益,以及在小指令数据集上的过拟合的倾向,似乎正则化值得在LLM设置中重新加入。

论文的研究有几个局限性:

  • 采用AlpacaEval作为llm教学遵循能力的中心指标,它受到单一法官(GPT-4)偏见的影响。
  • 此外,由于有限的计算资源,无法验证在多个数据集的更大的70B变体上的成功,不得不对大多数NEFTune运行依赖固定的超参数,而不是扫描。
  • 最后,尽管我们进行了实证研究,但我们尚未确定NEFTune工作的原因。

相关文章:

【LLM 论文阅读】NEFTU N E: LLM微调的免费午餐

指令微调的局限性 指令微调对于训练llm的能力至关重要,而模型的有用性在很大程度上取决于我们从小指令数据集中获得最大信息的能力。在本文中,我们提出在微调正向传递的过程中,在训练数据的嵌入向量中添加随机噪声,论文实验显示这…...

JS新手入门笔记整理:对象

对象可以分为两种:一种是“自定义对象”,另外一种是“内置对象”。自定义对象,指的是需要我们自己定义的对象。内置对象,指的是不需要我们自己定义的(即系统已经定义好的)、可以直接使用的对象。在JavaScri…...

Python GIL 一文全知道!

GIL 作为 Python 开发者心中永远的痛,在最近即将到来的更新中,终于要彻底解决了,整个 Python 社群都沸腾了 什么是GIL? GIL是英文学名global interpreter lock的缩写,中文翻译成全局解释器锁。GIL需要解决的是线程竞…...

数据库级别的MD5加密(扩展)

首先,我们要知道什么是MD5? 1.主要是增强算法的复杂性和不可逆性 2.MD5不可逆,具体的值MD5是一样的 3.MD5破解网站的原理,背后有一个字典 代码案例: -- 加密 update testMD5 set pwdmd5(pwd) where id1; update testMD5 set…...

Docker安装Jenkins,配置Maven和Java

前言 这是一个java的springboot项目,使用maven构建 安装准备 需要将maven和jdk安装在服务器上,Jenkins需要用到,还有创建一个jenkins的目录,安装命令如下: docker run -d -uroot -p 9095:8080 -p 50000:50000 --n…...

游戏分组(100用例)C卷 (JavaPythonC语言C++Node.js)

部门准备举办一场王者荣耀表演赛,有10名游戏爱好者参与,分为两队,每队5人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把10名参赛者分为实力尽量相近的两队。一队的实力可以表示为这一队5名队员的评分总和。 现在给你10名参与者的游戏水…...

python函数装饰器保存信息

1 python函数装饰器保存信息 python函数装饰器,可以通过实例属性、全局变量、非局部变量和函数属性,来保存被装饰函数的状态信息。 1.1 统计调用并跟踪 描述 通过装饰器统计函数调用次数,并且用打印来跟踪调用记录。 此装饰器用类的__ca…...

AI真正的Killer App 仍然缺席

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

Docker 镜像以及镜像分层

Docker 镜像以及镜像分层 1 什么是镜像2 Docker镜像加载原理2.1 UnionFs:联合文件系统2.2 Docker镜像加载原理2.3 Docker镜像的特点 3 镜像的分层结构4 可写的容器层 1 什么是镜像 镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行…...

aigc 启动器 sd-webui-aki-v4 decode_base64_to_file

下载地址&#xff1a; SD-WebUI启动器 绘世-启动器 | 万物档案 decode_base64_to_file报错&#xff1a; File "E:\BaiduNetdiskDownload\stable diffusion\sd-webui-aki-v4\extensions\sd-webui-controlnet\scripts\external_code.py", line 7, in <module>fr…...

【C++进阶05】AVL树的介绍及模拟实现

一、AVL树的概念 二叉搜索树的缺点 二叉搜索树虽可以缩短查找效率 但如果数据有序或接近有序 二叉搜索树将退化为单支树 查找元素相当于在顺序表中搜索元素&#xff0c;效率低下 AVL树便是解决此问题 向二叉搜索树中插入新结点 并保证每个结点的左右子树 高度之差的绝对值不超…...

MySQL视图 索引 面试题

一. 视图 视图&#xff1a;一种虚拟存在的表&#xff0c;行和列的数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的&#xff0c;只保存了sql逻辑&#xff0c;不保存查询结果 视图语法 -- 创建 create view 视图名 as 查询语句;-- 使用 select * f…...

JAVA实现文件上传至阿里云

注册阿里云账号后,开通好对象存储服务&#xff08;OSS&#xff09;&#xff0c;三个月试用 阿里云登录页 (aliyun.com) 目录 一.创建Bucket 二.获取AccessKey&#xff08;密钥&#xff09; 三.参考官方SDK文件&#xff0c;编写入门程序 1.复制阿里云OSS依赖&#xff0c;粘贴…...

设计模式之外观模式【结构型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…...

Qt QCheckBox复选按钮控件

文章目录 1 属性和方法1.1 文本1.2 三态1.3 自动排他1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的复选按钮类是QCheckBox它和单选按钮很相似&#xff0c;单选按钮常用在“多选一”的场景&#xff0c;而复选按钮常用在"多选多"的场景比如喜欢的水果选项中&#xf…...

加速科技ST2500 数模混合信号测试设备累计装机量突破500台!

国产数字机&#xff0c;测试中国芯&#xff01;新年伊始&#xff0c;国产半导体测试设备领军企业加速科技迎来了振奋人心的一刻&#xff0c;ST2500 数模混合信号测试设备累计装机量突破500台&#xff01;加速科技凭借其持续的创新能力、完善的解决方案能力、专业热忱的本地化服…...

ASP.NETCore WebAPI 入门 杨中科

ASP.NETCore WebAPI入门1 回顾 mvc开发模式 前端代码和后端代码是混在一个项目之中 WEB API 1、什么是结构化的Http接口。Json。 2、Web API项目的搭建。 3、Web API项目没有Views文件夹。 4、运行项目&#xff0c;解读代码结构。 5、【启用OpenAPI支持】→>swagger,在界…...

问题 C: 活动选择

题目描述 学校在最近几天有n个活动&#xff0c;这些活动都需要使用学校的大礼堂&#xff0c;在同一时间&#xff0c;礼堂只能被一个活动使。由于有些活动时间上有冲突&#xff0c;学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。    现在给出n个活动使用礼堂的起…...

SpringBoot学习(五)-Spring Security配置与应用

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! Spring Security Spring Security是一个基于Java的开源框架&#xff0c;用于在Java应用程…...

Java解决删除子串后的字符串最小长度

Java解决删除子串后的字符串最小长度 01 题目 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c;删除所…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...