4. ⼤模型微调方法

到底有哪些微调⽅法呢?

  • 第⼀类⽅法:借助OpenAI提供的在线微调⼯具进⾏微调;
  • 第⼆类⽅法:借助开源微调框架进⾏微调;

1. OpenAI在线微调⼯具

网址:https://platform.openai.com/docs/guides/fine-tuning/common-use-cases

  • OpenAI提供了GPT在线⼤模型的微调API:Fine-tuning,⽤于在线微调在线⼤模型;
  • ⽬前⽀持A、B、C、D四⼤模型在线微调;根据格式要求在线提交数据集并⽀付算⼒费⽤,即可在线进⾏模型微调;
  • 微调后会⽣成单独模型的API供使⽤;
  • ⼀个模型可以多次微调;OpenAI在线微调是⿊箱算法;

OpenAI提供的“傻⽠式”微调流程:
在这里插入图片描述

  • 按照格式要求,准备并上传数据集;
  • 排队、⽀付费⽤并等待微调模型训练完成;
  • 赋予微调模型API单独编号,调⽤API即可使⽤;
from openai import OpenAI
client = OpenAI()client.fine_tuning.jobs.create(training_file="file-abc123", model="gpt-3.5-turbo"
)

关于OPENAI的在线微调需要重点考虑以下几点

  • 成本:在线微调可能会产生较高的成本,因为需要大量的计算资源来训练和调整模型,所以如果数据量大的话会支付比较高的成本。
  • 数据隐私和安全性:用户需要将数据上传到OpenAI的服务器进行微调,这可能引发数据隐私和安全的担忧,这一般是企业最担心的问题。
  • 当然还需要注意的是,想要使用OpenAI是需要科学上网的。

2. 开源微调框架

深度学习微调⽅法⾮常多,主流⽅法包括LoRA、Prefix Tuning、P- Tuning、Promt Tuning、AdaLoRA等;
⽬前这些⽅法的实现均已集成⾄Hugging Face项⽬的库中,我们可以通过安装和调⽤Hugging Face的PEFT(⾼效微调)库,来快速使⽤这些⽅法;
在这里插入图片描述

  • Hugging Face 是⼀家专注于⾃然语⾔处理(NLP)技术的公司,同时也开发并维护了多个⼴受欢迎的⾃然语⾔处理的开源库和⼯具,如Transformers 库、ChatGLM-6B库等;
  • ⾼效微调,State-of-the-art Parameter-Efficient Fine-Tuning (SOTA PEFT),与之对应的更早期的简单的全量参数训练微调的⽅法(Fine- Tuning),⾼效微调则是⼀类算⼒功耗⽐更⾼的⽅法

2.1 ⾼效微调⽅法⼀:LoRA

LoRA:LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS(2021)
基于低阶⾃适应的⼤语⾔模型微调⽅法

Github地址: https://github.com/microsoft/LoRA
论⽂地址: https://arxiv.org/abs/2106.09685

  • 原理简述:基于⼤模型的内在低秩特性,增加旁路矩阵来模拟全参数微调;
  • LoRA最早由微软研究院发布的⼀项微调技术;
  • 简⽽⾔之,是通过修改模型结构进⾏微调,是⼀种四两拨千⽄的微调⽅法,是⽬前最通⽤、同时也是效果最好的微调⽅法之⼀;
  • 后面实战将详细介绍LoRA微调实践⽅法;

在这里插入图片描述

概念辨析:⼤模型微调LoRA与通信技术LoRa,⼆者相差⼀个字⺟的⼤⼩写,是完全两种不同的技术;
LoRA除了可以⽤于微调⼤语⾔模型(LLM)外,⽬前还有⼀个⾮常⽕爆的应⽤场景:围绕diffusion models(扩散模型)进⾏微调,并在图⽚⽣成任务中表现惊艳

2.2 ⾼效微调⽅法⼆:Prefix Tuning

Prefix-Tuning: Optimizing Continuous Prompts for Generation(2021)
基于提示词前缀优化的微调⽅法
论⽂地址: https://aclanthology.org/2021.acl-long.353/

  • 来源于斯坦福⼤学的⼀种⾼效微调⽅法;
  • 原理简述:在原始模型基础上,增加⼀个可被训练的Embedding层,⽤于给提示词增加前缀,从⽽让模型更好的理解提示词意图,并在训练过程中不断优化这些参数;
  • Prefix Tuning既能够在模型结构上增加⼀些新的灵活性,⼜能够在模型使⽤上提供⼀种⾃动的、能够改进模型表现的提示机制;
    在这里插入图片描述

2.3 ⾼效微调⽅法三:Prompt Tuning

The Power of Scale for Parameter-Efficient Prompt Tuning (2021)
论⽂地址: https://arxiv.org/abs/2104.08691

  • 由⾕歌提出的⼀种轻量级的优化⽅法;
  • 原理简述:该⽅法相当于是Prefix Tuning的简化版本,即⽆需调整模型参数,⽽是在已有的参数中,选择⼀部分参数作为可学习参数,⽤于创建每个Prompt的前缀,从⽽帮助模型更好地理解和处理特定的任务;
  • 不同于Prefix⽅法,Prompt Tuning训练得到的前缀是具备可解释性的,我们可以通过查看这些前缀,来查看模型是如何帮我们优化prompt的;
  • 该⽅法在参数规模⾮常⼤的模型微调时效果很好,当参数规模达到100亿时和全量微调效果⼀致;
    在这里插入图片描述

2.4 ⾼效微调⽅法四:P-Tuning v2

P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks(2022)

GitHub地址:https://github.com/THUDM/P-tuning-v2
论⽂地址: https://aclanthology.org/2021.acl-long.353/
ChatGLM-6B+P-Tuning微调项⽬地址: https://github.com/THUDM/ChatGLM-6B/blob/main/ptuning/README.md

  • 来源于清华⼤学团队提出的⾼效微调⽅法;
  • 原理简述:可以理解为Prefix tuning的改进版本,即P-Tuning v2不仅在输⼊层添加了连续的prompts(可被训练的Embedding层),⽽且还在预训练模型的每⼀层都添加了连续的prompts;
  • 这种深度的prompt tuning增加了连续prompts的容量,出于某些原因,PTuning v2会⾮常适合GLM这种双向预训练⼤模型微调;
    在这里插入图片描述

2.5 基于强化学习的进阶微调⽅法

RLHF:Reinforcement Learning from Human Feedback
基于⼈⼯反馈机制的强化学习⽅法

  • 最早由OpenAI研究团队提出,并⽤于训练OpenAI的InstructGPT模型;
  • 效果惊艳:根据OpenAI相关论⽂说明,基于RLHF训练的InstructGPT模型,在仅拥有1.3B参数量的情况下,输出效果已经开源和GPT-3 175B模型媲美。这充分说明了RLHF⽅法的实践效果;
  • ⽬前Hugging Face、PyTorch和微软研究院都有提供RLHF实现⽅法,其中微软研究院的DeepSpeed Chat是⽬前最⾼效稳定的端到端RFHL训练系统;

项⽬地址: https://github.com/microsoft/DeepSpeed/
在这里插入图片描述

  • 步骤1:监督微调(SFT) —— 使⽤精选的⼈类回答来微调预训练的语⾔模型以应对各种查询;
  • 步骤2:奖励模型微调 —— 使⽤⼀个包含⼈类对同⼀查询的多个答案打分的数据集来训练⼀个独⽴的(通常⽐ SFT ⼩的)奖励模型(RW);
  • 步骤3:RLHF 训练 —— 利⽤ Proximal Policy Optimization(PPO)算法,根据 RW 模型的奖励反馈进⼀步微调 SFT 模型。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EasyRecovery2024永久免费版电脑数据恢复软件下载

EasyRecovery数据恢复软件是一款非常好用且功能全面的工具,它能帮助用户恢复各种丢失或误删除的数据。以下是关于EasyRecovery的详细功能介绍以及下载步骤: EasyRecovery-mac最新版本下载:https://wm.makeding.com/iclk/?zoneid50201 EasyRecovery-win…

一台Mac同时安装vue2和vue3

背景:电脑需要运行vue2和vue3项目,就得同时有vue2和vue3环境,之前以配置好vue2了,现在增加vue3 1. 新建一个安装vue3的目录 进入vue3文件夹安装vue3 // 注意这里没有参数-g,因为-g全局安装的命令 npm install vue/cli…

Yearning审核平台本地安装配置并结合内网穿透实现远程访问

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”(词嵌入)是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示,向量之间的距离(例…

力扣热门100题 - 3.无重复字符的最长子串

力扣热门100题 - 3.无重复字符的最长子串 题目描述:示例:提示:解题思路 (滑动窗口 哈希表):代码: 题目链接:3. 无重复字符的最长子串 题目描述: 给定一个字符串 s &…

step导入到solidworks外观处理方法

在导入到solidworks中的kuka机器人会变成灰色。看上去很不好看。如何才能大体恢复一下原外观呢?主要可以使用如下两种方法。 主要是使用了将里面的形状单独变成零件,方便装配,使机器人可以变化姿态。造成外观颜色丢失。 1.外观复制 如下图所…

springboot165科研工作量管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

WebSocket基础详解

文章目录 前言由来简介优缺点适用场景兼容性 API介绍构造函数实例方法send()close() 实例属性ws.readyState(只读)ws.bufferedAmount(只读)ws.binaryTypeextensions(只读)protocol(只读&#xf…

Power Designer的使用 创建数据库表模型,生成sql语句,生成C#实体类

几年前用过PowerDesigner,好几年没用,有点忘记了,在这里记个笔记,需要的时候翻一翻 PowerDesigner版本16.5 下面的例子是以MySQL数据库为准 生成C#实体类 一 安装 1.1 安装 不让放网盘链接,审核通不过。。。。 …

JCTC | 利用几何深度学习对蛋白质-配体结合pose进行等变灵活建模

Overview 该论文解决了药物开发中蛋白质-配体复合结构灵活建模的挑战。作者提出了一种名为FlexPose的新型深度学习框架,它可以直接对复杂结构进行建模,而不需要传统的采样和评分策略。 该模型结合了标量-向量双特征表示和 SE(3)等变网络设计来处理动态结…

用Python做一个文件夹整理工具

文章目录 目标文件夹对话框文件映射组件完整组件 此前曾经基于函数实现过这个功能:用Python做一个文件夹整理工具。这次基于面向对象的方法,重新实现这个小工具。 本文中提到的FileSystem,来自于这里:Python根据文件后缀整理文件…

2024年G3锅炉水处理证考试题库及G3锅炉水处理试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年G3锅炉水处理证考试题库及G3锅炉水处理试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大纲随机…

Linux安装Java

yum安装 下面命令直接复制粘贴一件安装java17 yum list installed | grep java #查看已经安装的javayum remove java* -y #移除现在系统已经安装的javayum list | grep java-17 #查看安装java17yum install -y java-17-openjdk #安装java17此处可…

Win32 SDK Gui编程系列之--弹出式菜单

1.弹出式菜单 例如,在命令提示窗口中点击鼠标右键,会出现如下图所示的弹出菜单(下拉菜单)。 这种弹出式菜单的实现很简单。不创建菜单栏,用CreatePopupMenu函数创建的菜单是最顶端的菜单就可以了。 菜单的显示使用TrackPopupMenu函数进行。 例如,点击鼠标右键显示弹出…

C#中使用OpenCvSharp4绘制直线、矩形、圆、文本

C#中使用OpenCvSharp4绘制直线、矩形、圆、文本 继之前的Python中使用Opencv-python库绘制直线、矩形、圆、文本和VC中使用OpenCV绘制直线、矩形、圆和文字,将之前的Python和C示例代码翻译成C#语言,很简单,还是借用OpenCvSharp4库中的Line、…

每日一题——LeetCode1422.分割字符串的最大得分

方法一 暴力枚举 枚举所有分割点的情况&#xff0c;取最大得分 var maxScore function(s) {let res 0;const n s.length;for (let i 1; i < n; i) {let score 0;for (let j 0; j < i; j) {if (s[j] 0) {score;}}for (let j i; j < n; j) {if (s[j] 1) {sco…

小白代码审计入门

最近小白一直在学习代码审计,对于我这个没有代码审计的菜鸟来说确实是一件无比艰难的事情。但是着恰恰应了一句老话:万事开头难。但是小白我会坚持下去。何况现在已经喜欢上了代码审计,下面呢小白就说一下appcms后台模板Getshell以及读取任意文件,影响的版本是2.0.101版本。…

SpringBoot集成Swagger2的增强版Knife4j

1. 背景 作为SpringBoot集成中间件其中的一篇文章吧&#xff0c;既然打算出这么一个系列了&#xff0c;争取做到虽小却全&#xff0c;又精又美的一个系列吧。 Swagger应该都有接触吧&#xff0c;knife4j是Swagger2的增强版&#xff0c;更加友好的操作页面&#xff0c;更多强大…

【Java程序设计】【C00187】基于SSM的旅游资源网站管理系统(论文+PPT)

基于SSM的旅游资源网站管理系统&#xff08;论文PPT&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的旅游资源网站 本系统分为前台系统、用户和管理员3个功能模块。 前台系统&#xff1a;当游客打开系统的网址后&#xff0c;首先看到的就是…

介绍 MSTest Runner – CLI、Visual Studio 等

作者&#xff1a;Amaury Lev Marco Rossignoli Jakub Jareš 排版&#xff1a;Alan Wang 我们很高兴推出 MSTest 运行器&#xff0c;这是一款全新的轻量级 MSTest 测试运行器。这个新的运行器使测试更加便携和可靠&#xff0c;运行速度更快&#xff0c;并且具有可扩展性&#x…