LLM基础模型系列:Fine-Tuning总览

由于对大型语言模型,人工智能从业者经常被问到这样的问题:如何训练自己的数据?回答这个问题远非易事。生成式人工智能的最新进展是由具有许多参数的大规模模型驱动的,而训练这样的模型LLM需要昂贵的硬件(即许多具有大量内存的昂贵GPU)和花哨的训练技术(例如,完全分片的数据并行训练)。

幸运的是,这些模型通常分两个阶段进行训练——预训练和微调。其中前一个阶段(要)昂贵得多。鉴于高质量的预训练LLMs很容易在网上获得,大多数人工智能从业者可以简单地下载一个预训练的模型,并专注于使这个模型(通过微调)适应他们想要的任务。

“就所需的硬件和为不同任务托管独立实例的存储/交换成本而言,微调庞大的语言模型的成本高得令人望而却步。”

模型的大小并没有在微调过程中改变。因此微调一个LLM虽然比预训练便宜,可是也不是易事,仍然需要训练技术和硬件来处理这样的模型。每次微调运行都会创建一个完全独立的“副本”。

参数高效微调(PEFT)是微调一种比较好的技术,它不是端到端地训练完整的模型,而是固定预训练的模型权重,并且在微调期间仅调整少量特定于任务的参数。这种方法大大减少了内存开销,简化了存储/部署过程,并允许使用更易于访问的硬件进行微调LLMs。

微调与转移学习

首先先来明确两个概念,微调和转移学习。转移学习是将一个通用的预训练模型应用到全新的但是相关领域的过程。而微调是将通用的预训练模型进一步的训练。一般而言,微调是包含转移学习的。

上图展示了预训练,特征提取和微调的过程,预训练就是使用训练数据直接训练基础模型,比较常见的有T5,BloombergGPT,GPT-4。特征提取一般是利用基础模型进行内容的Embedding,然后在另接其他的模型进行预测,例如Bert。微调是利用训练数据训练完基础模型,然后采用微调技术(例如更新部分参数,更新所有层或者额外添加层)进行二次训练。

微调和Prompt Engineering(通过提示词优化结果,基础模型的参数是冻结的,经常在论文中会用雪花图标标识)不同,它重新精校模型参数的数值。若是全部精校所有的参数,读者需要大量的计算资源。

上图为2018年的一篇论文的插图,有三幅图片分别代表着:a为预训练,b为全量参数微调,c为分类器微调。

Instruction-tuned就是全量微调中的一种,FLAN在基础模型上面,通过指令调整(在通过指令描述的数据集集合上微调语言模型)可以显著提高未见任务的零样本性能。它采用 137B参数预训练语言模型,并在通过自然语言指令模板表达的60多个NLP数据集上对其进行指令调整。

FLAN 显著提高了其未修改版本的性能,并在评估的25个数据集中的20个数据集上超越了零样本175B GPT-3。FLAN 甚至在 ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze上的表现远远优于少样本 GPT-3。消融研究表明,微调数据集的数量、模型规模和自然语言指令是指令调整成功的关键。大白话而言,它将这些数据集根据不同的模版构建不同的指令训练样本,然后再次训练模型:

全量微调是美味的,但是若没有太多的计算资源,那么存在两种方法可以在有限的资源下将模型调教得较为服帖。一 种是X-shot Prompt,这点在介绍Dspy的时候说过了。另外一种是高效参数微调(微调部分参数),简称PEFT(Parameter-efficient fine tuning)。本系列还是会将重点放在PEFT的技术上面。

PEFT概览

最后先来看看PEFT的技术分类和全景图,大致可分为四类:

  • Additive PEFT:通过注入新的可训练模块或参数来修改模型架构;Selective PEFT:使选择部分的参数子集在微调期间可训练,其余的冻结;

  • Reparameterization PEFT:将原来的参数重新结构化,比如用低轶矩阵重新表示以进行训练,然后等效地将其转换推理。

  • Hybrid PEFT,它结合了不同PEFT方法的优点,建立了一个统一的PEFT模型。

上图为各种算法,都是围绕着各种主流微调技术的微调方法,比如之前的文章已经介绍过的LoRA,后续将围绕这根主线开展学习之旅。

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

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

相关文章

万字长文!流行 AI 视频生成大模型介绍 浅体验

目录 国外 AI 视频生成大模型Sora——值得期待的引领者官方描述拥有强大的能力一经发布,立即爆火不同业内人士的评价周鸿祎的评价陈楸帆的评价 值得期待的引领者 Dream Machine——宣传虽好,但仍需努力新兴的 AI 视频生成大模型媒体强烈的追捧实测体验&a…

看番工具 -- oneAnime v1.2.5绿色版

软件简介 OneAnime是一款专为动漫爱好者设计的应用程序,它提供了一个庞大的动漫资源库,用户可以在这里找到各种类型的动漫,包括热门的、经典的、新番的等等。OneAnime的界面设计简洁明了,操作方便,用户可以轻松地搜索…

企业微信与大量外部成员的即时消息沟通和文档协作解决方案

背景 公司使用企业微信,现在有部门需要招聘大量外包成员,但是不希望外包成员进入公司企微的组织架构,要实现公司与外包成员的即时消息沟通和管理,以及文档共享协作。 痛点 虽然企微可以将外包成员的微信加为外部联系人&#xf…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十八章 Linux编写第一个自己的命令

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

MySQL字符串相关数据处理函数

目录 1. 转大小写 2. 截取字符串 sunstr 3. 获取字符长度 4. 字符串拼接 concat 5. 去掉空白 trim 1. 转大小写 转大写:upper() 转小写:lower() 虽然MySQL不严格区分大小写,但是我们还是需要掌握这种大小写的操作以方便学习其他…

MySQL 数据库基础概念

一、什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件中&…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(五)仿钉钉流程的json数据保存与显示

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 1、需要做一个界面保存与显示仿钉钉的流程,先建一个表,用online建 2、通过上面生成代码,放入到相应的前后端工程里 3、修改前端仿钉钉流程的设计功能&a…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

一、自定义菜单 1、打开Settings,找到Menus and Toolbars 2、点击右边的Main Menu,点击号,选择Add Action 3、弹出Add Action弹窗,搜索或者选择你要添加的指令 二、自定义工具栏 1、右键IDEA上方的工具栏空白位置,选…

Python学习笔记35:进阶篇(二十四)pygame的使用之音频文件播放

前言 基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。 我们的下一步目标是完成python crash course中的外星人入侵项目,这是一个2D游戏项目。在这之前&#xff…

Linux Ubuntu MySQL环境安装

1. 更新软件源 首先,确保你的Ubuntu系统已经更新了软件源列表,以便能够下载到最新的软件包。打开终端并输入以下命令: sudo apt update 2. 安装MySQL服务器 打开终端并输入以下命令来安装MySQL服务器 sudo apt install mysql-server 在…

vue3 + tsx 表格 Action 单独封装组件用法

前言 先上图看右侧列 action 的 UI 效果: 正常来说,如果一个表格的附带 action 操作,我们一般会放在最右侧的列里面实现,这个时候有些UI 框架支持在 SFC 模板里面定义额外的 solt,当然如果不支持,更通用的…

无头单向非循环链表实现 and leetcode刷题

无头单向非循环链表实现 1. 单链表的模拟实现IList.java接口:MySingleList.java文件: 2. leetcode刷题2.1 获取链表的中间节点2.2 删除链表中所有值为value的元素2.3 单链表的逆置2.4 获取链表倒数第k个节点2.5 给定 x, 把一个链表整理成前半部分小于 x,…

【C++】C++书店管理系统(源码+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

如何在 Python 中创建一个类似于 MS 计算器的 GUI 计算器

问题背景 假设我们需要创建一个类似于微软计算器的 GUI 计算器。这个计算器应该具有以下功能: 能够显示第一个输入的数字。当按下运算符时,输入框仍显示第一个数字。当按下第二个数字时,第一个数字被替换。 解决方案 为了解决这个问题&am…

mysql高可用解决方案:MHA原理及实现

MHA:Master High Availability。对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要…

STL(一)

书写形式:string (const string& str, size_t pos, size_t len npos); 举例: int main(){ string url("https://mp.csdn.net/mp_blog/creation/editor?spm1000.2115.3001.4503") string sub1(url,0,5);//从下标为0开始向后5个字符&…

07列的完整性约束

文章目录 设置表字段的主键约束设置表字段的外键约束(FOREIGN KEY,FK)、设置表字段的非空约束(NOT NULL, NK)设置表字段唯一约束(UNIQUE,UK)设置表字段值自动增加(AUTO_INCREMENT)设置表字段的默认值(DEFAULT)修改默认值DEFAULT、自增长和非空NK设置表字段的主键约…

30.ROM-IP核的调用

(1)ROM IP核简介: ROM是只读存储器,是一种只能读出事先锁存的固态半导体存储器。其特性是一旦存储资料就无法再将之改变或删除,并且资料也不会因为电源关闭而消失。(掉电不丢失) FPGA使用内部RA…

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介

JavaScript青少年简明教程:为何学习JavaScript及JavaScript简介 JavaScript最初是为web浏览器(前端开发)设计的。它可以在所有现代浏览器中运行,包括Chrome, Firefox, Safari, Edge等。 这意味着JavaScript代码可以在任何能运行…

学习测试7-ADB的使用

ADB是什么? ADB,即 Android Debug Bridge(安卓调试桥) 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell&…