更高效的大模型调优方法,华盛顿大学推出“代理调优”

2024-01-25 06:28

本文主要是介绍更高效的大模型调优方法,华盛顿大学推出“代理调优”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着ChatGPT等生成式AI产品朝着多模态发展,基础模型的参数越来越高,想进行权重调优需要耗费大量时间和AI算力。

为了提升模型的调优效率,华盛顿大学和艾伦AI实验室的研究人员推出了全新方法——Proxy Tuning(代理调优)。

该调优方法无需接触模型的内部权重,利用一个小型调整模型和一个未调整的对应模型,通过对比它们的预测结果来引导基础模型的预测

再通过解码时的引导,基础模型可以朝着调优方向进行微调,同时保留了更大规模预训练的优势。

为了验证代理调优的性能,研究人员对LlAMA-2的13B、70B原始模型进行了微调。结果显示,这两个模型分别接近对应的Chat模型的91.1%和88.1%的性能

图片

此外,在知识量大的TruthfulQA数据集测试中,代理调优的真实性比直接调优的模型还高,说明在解码时更好地保留了训练知识。

论文地址:https://arxiv.org/abs/2401.08565

代理调优的核心技术思想是,先调优一个小的语言模型,然后用这个小型调优模型指导大型黑箱语言模型,使其具备像调优后的模型一样行为、功能

但不需要访问其内部权重,只需要其在输出词表上的预测分布。有趣的是,该技术与大模型中的“蒸馏”技术恰恰相反。

代理调优的技术方法

首先,我们需要准备一个小型的预训练语言模型M-,该模型与基础模型M共享相同的词汇表。M-可以是一个现成的模型,也可以是通过较小规模的预训练得到的模型。

图片

接下来,我们使用训练数据对M-进行调优,得到一个调优后的模型M+。调优可以使用各种技术,例如,有监督的微调或领域自适应方法,具体取决于任务的需求。

详细解码流程

在解码时,对于给定的输入,我们通过对基础模型M的输出预测分布和调优模型M+的输出预测分布之间的差异进行操作,来引导基础模型的预测。

使用基础模型M对输入进行解码,得到基础模型的预测结果。这可以通过生成模型的输出概率分布来实现,通常使用一种解码算法,例如,贪婪搜索或束搜索来生成最优的输出序列。

图片

然后,使用调优模型M+对相同的输入进行解码,得到调优模型的预测结果。

接下来,计算基础模型的预测结果与调优模型的预测结果之间的差异。可以使用KL散度或交叉熵方法,来度量两个预测分布之间的差异。

最后,将预测差异应用于基础模型的预测结果,以引导基础模型的预测朝向调优模型的预测方向移动。同时可以将预测差异添加到基础模型的预测分布中,以调整每个词的概率值。

本文素材来源Proxy Tuning论文,如有侵权请联系删除

END

这篇关于更高效的大模型调优方法,华盛顿大学推出“代理调优”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642364

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

JavaScript DOM操作与事件处理方法

《JavaScriptDOM操作与事件处理方法》本文通过一系列代码片段,详细介绍了如何使用JavaScript进行DOM操作、事件处理、属性操作、内容操作、尺寸和位置获取,以及实现简单的动画效果,涵... 目录前言1. 类名操作代码片段代码解析2. 属性操作代码片段代码解析3. 内容操作代码片段代码解析4.

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

python忽略warnings的几种方法

《python忽略warnings的几种方法》本文主要介绍了几种在Python忽略警告信息的方法,,可以使用Python内置的警告控制机制来抑制特定类型的警告,下面就来介绍一下,感兴趣的可以了解一下... 目录方法 1: 使用 warnings 模块过滤特定类型和消息内容的警告方法 2: 使用 warnin

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11