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

选择大型语言模型自定义技术

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景

 

选择大型语言模型自定义技术

 

企业需要自定义模型来根据其特定用例和领域知识定制语言处理功能。自定义LLM使企业能够在特定的行业或组织环境中更高效,更准确地生成和理解文本。

自定义模型使企业能够创建符合其品牌声音的个性化解决方案,优化工作流程,提供更精确的见解,并提供增强的用户体验,最终推动市场竞争优势。

这篇文章涵盖了各种模型定制技术以及何时使用它们。NVIDIA NeMo 支持許多方法。

NVIDIA NeMo 是一个端到端的云原生框架,可在任何地方构建、定制和部署生成式 AI 模型。它包括训练和推理框架、护栏工具包、数据管理工具和预训练模型,提供了一种简单、经济高效且快速的采用生成 AI 的方法。

选择 LLM 自定义技术

您可以根据数据集大小要求与自定义期间的训练工作量级别(与下游任务准确性要求相比)之间的权衡来对技术进行分类。

该图显示了四个自定义工具,其中包含技术、用例和示例表。

图1.LLM 定制技术可用于 NVIDIA NeMo

图 1 显示了以行的自定义技术:

  • 提示工程:操作发送到LLM的提示,但不以任何方式更改LLM的参数。它在数据和计算要求方面很轻。
  • 快速学习:使用提示和完成对,通过虚拟令牌向LLM传授特定于任务的知识。此过程需要更多的数据和计算,但比提示工程具有更好的准确性。
  • 参数高效微调(PEFT):将少量参数或层引入现有LLM架构,并使用特定于用例的数据进行训练,提供比提示工程和快速学习更高的准确性,同时需要更多的训练数据和计算。
  • 微调:涉及更新预训练的LLM权重,这与前面概述的三种类型的自定义技术不同,这些技术使这些权重保持冻结。这意味着与其他技术相比,微调还需要最多的训练数据和计算。但是,它为特定用例提供了最准确的准确性,从而证明了成本和复杂性的合理性。

有关更多信息,请参见大型语言模型简介:提示工程和 P 调优。

快速工程

提示工程涉及在推理时通过展示和讲述示例进行定制。LLM提供了示例提示和完成,这些详细说明附加到新提示之前以生成所需的完成。模型的参数不会更改。

少数镜头提示:此方法需要在提示前面附加一些示例提示和完成对,以便LLM学习如何为新的不可见提示生成响应。虽然与其他自定义技术相比,少数镜头提示需要相对较少的数据量,并且不需要微调,但它确实增加了推理延迟。

思维链推理:就像人类将大问题分解成小问题并应用思维链来有效地解决问题一样,思维链推理是一种快速的工程技术,可以帮助LLM提高他们在多步骤任务上的表现。它涉及将问题分解为更简单的步骤,每个步骤都需要缓慢而深思熟虑的推理。这种方法适用于逻辑、算术和演绎推理任务。

系统提示:此方法涉及在用户提示之外添加系统级提示,以向LLM提供特定和详细的说明,使其按预期运行。可以将系统提示视为LLM的输入以生成其响应。系统提示的质量和特异性会对LLM响应的相关性和准确性产生重大影响。

及时学习

快速学习是一种高效的自定义方法,可以在许多下游任务上使用预训练的LLM,而无需调整预训练模型的完整参数集。它包括两种具有细微差异的变体,称为 p 调谐和提示调谐;这两种方法统称为快速学习。

快速学习可以向LLM添加新任务,而不会覆盖或中断模型已经预先训练的先前任务。由于原始模型参数被冻结且永远不会更改,因此快速学习还可以避免微调模型时经常遇到的灾难性遗忘问题。当LLM在微调过程中以LLM预培训期间获得的基础知识为代价学习新行为时,就会发生灾难性的遗忘

图中显示,提示学习在训练的虚拟令牌之前附加提示令牌,从而为虚拟令牌训练的特定用例提供更准确的LLM完成。

图2.应用于法学硕士的快速学习

提示调优和 p 调谐不是以手动或自动方式选择离散文本提示,而是使用可通过梯度下降进行优化的虚拟提示嵌入。这些虚拟令牌嵌入与构成模型词汇表的离散、硬令牌或真实令牌相反。虚拟代币是纯粹的一维向量,其维数等于每个真实代币嵌入的维数。在训练和推理中,根据模型配置中提供的模板,在离散令牌嵌入中插入连续令牌嵌入。

提示调整:对于预训练的 LLM,软提示嵌入初始化为大小total_virtual_tokens Xhidden_size的 2D 矩阵。提示优化模型以执行的每个任务都有其自己的关联 2D 嵌入矩阵。任务在训练或推理期间不共享任何参数。NeMo 框架提示调优实现基于参数高效提示调优的规模力量。

P-调谐: 称为 LSTM 或 MLP 模型用于预测虚拟令牌嵌入。 参数在 p 调优开始时随机初始化。所有基本LLM参数都被冻结,并且在每个训练步骤中仅更新权重。p 调优完成后,提示调优的虚拟令牌将自动移动到存储所有提示调优和 p 调优软提示的位置。 然后从模型中移除。这使您能够保留以前 p 调优的软提示,同时仍保持将来添加新的 p 调优或提示调优软提示的能力。prompt_encoderprompt_encoderprompt_encoderprompt_encoderprompt_tableprompt_encoder

prompt_table使用任务名称作为键来查找指定任务的正确虚拟令牌。NeMo框架p调谐实现基于GPT Understands,Too。

参数高效微调

参数高效微调(PEFT)技术使用巧妙的优化来有选择地向原始LLM架构添加和更新一些参数或层。使用 PEFT,针对特定用例训练模型参数。预训练的LLM权重保持冻结,并且在PEFT期间使用域和任务特定的数据集更新的参数明显较少。这使LLM能够在训练的任务上达到高精度。

有几种流行的参数高效替代方法来微调预训练语言模型。与提示学习不同,这些方法不会在输入中插入虚拟提示。相反,他们将可训练层引入变压器架构中,用于特定任务的学习。这有助于在下游任务上获得强大的性能,同时与微调相比,可训练参数的数量减少了几个数量级(参数减少了近 10,000 倍)。

  • 适配器学习
  • 通过抑制和放大内部激活(IA3)注入适配器
  • 低秩适应 (LoRA)

适配器学习:在核心变压器架构各层之间引入小的前馈层。只有这些层(适配器)在微调时针对特定的下游任务进行训练。适配器层通常使用下投影将输入

h

h

投影到低维空间,然后使用非线性激活函数,并使用W_up

 W_up

 

W_up

.残差连接将此输出添加到输入中,从而形成最终形式:h \leftarrow h + f(hW_{down})W_{up}

 

 

h \leftarrow h + f(hW_{down})W_{up}

适配器模块通常被初始化为适配器的初始输出始终为零,以防止由于添加此类模块而导致原始模型的性能下降。NeMo 框架适配器实现基于 NLP 的参数高效迁移学习。

IA3:与适配器相比,添加的参数更少,适配器只是使用学习向量缩放转换器层中的隐藏表示。可以为特定的下游任务训练这些扩展参数。学习的向量 、 和 分别重新缩放注意力机制中的键和值以及位置前馈网络中的内部激活。这种技术还使混合任务批处理成为可能,因为批处理中的每个激活序列都可以单独且廉价地乘以其关联的学习任务向量。NeMo框架IA3 实现基于少镜头参数高效微调比上下文学习更好、更便宜。lklvlff

图表显示 LoRA 微调通过冻结的预训练权重和减少维度层来实现参数效率.

图3.用于参数高效微调的 LoRA

洛拉:将可训练的低秩矩阵注入变压器层以近似权重更新。LoRA 没有更新完整的预训练权重矩阵 W,而是更新其低秩分解,与微调相比,可训练参数的数量减少了 10,000 倍,GPU 内存需求减少了 3 倍。此更新将应用于多头注意力子图层中的查询和值投影权重矩阵。事实证明,将更新应用于低秩分解而不是整个矩阵在模型质量上与微调相当或更好,从而实现更高的训练吞吐量,并且没有额外的推理延迟。

NeMo框架LoRA实现基于大型语言模型的低秩适配。有关如何将 LoRa 模型应用于抽取式 QA 任务的详细信息,请参阅 LoRA 教程笔记本。

微调

当数据和计算资源没有硬约束时,监督微调 (SFT) 和人工反馈强化学习 (RLHF) 等定制技术是 PEFT 和提示工程的绝佳替代方法。与其他自定义方法相比,微调有助于在一系列用例上实现最佳准确性。

有监督的微调: SFT是在输入和输出的标记数据上微调模型所有参数的过程,它教授模型域特定的术语以及如何遵循用户指定的指令。它通常在模型预训练后完成。与预训练阶段相比,使用预训练模型可以实现许多好处,包括使用最先进的模型而无需从头开始训练、降低计算成本并减少数据收集需求。SFT的一种形式被称为指令调优,因为它涉及在通过指令描述的数据集集合上微调语言模型。

该图显示了监督微调使用指令更新预训练的LLM权重,这些指令遵循按任务以不同比例混合的数据集,以帮助提高LLM在看不见的任务上的性能。

图4.通过跟踪数据的标记指令进行监督微调

带有指令的SFT利用了NLP任务可以通过自然语言指令描述的直觉,例如“将以下文章总结为三句话”或“用西班牙语写一封关于即将到来的学校节日的电子邮件”。该方法成功地结合了微调和提示范式的优势,以提高推理时的LLM零镜头性能。

指令调优过程涉及对预训练模型执行微调,这些数据集由以不同比例混合的自然语言指令表达的多个 NLP 数据集的混合物。在推理时,对看不见的任务进行评估,并且已知此过程可以显着提高看不见任务的零镜头性能。SFT也是使用强化学习提高LLM能力过程中的重要中间步骤,我们将在下面描述。

带有人类反馈的强化学习: 带有人类反馈的强化学习(RLHF)是一种定制技术,使LLM能够更好地与人类价值观和偏好保持一致。它使用强化学习使模型能够根据收到的反馈调整其行为。它涉及一个三阶段微调过程,该过程使用人类偏好作为损失函数。使用前面部分中描述的说明进行微调的SFT模型被认为是RLHF技术的第一阶段。

图表显示,具有人类反馈的强化学习是一个三阶段过程,它利用根据人类偏好训练的奖励模型,使用强化学习向受监督的微调LLM提供反馈。

图5.使用强化学习使LLM行为与人类偏好保持一致

SFT 模型在 RLHF 的第 2 阶段被训练为奖励模型 (RM)。由具有多个响应的提示组成的数据集用于训练 RM 以预测人类偏好。

训练 RM 后,RLHF 的第 3 阶段侧重于使用近端策略优化 (PPO) 算法的强化学习针对 RM 微调初始策略模型。RLHF的这三个阶段迭代执行,使LLM能够生成更符合人类偏好的输出,并且可以更有效地遵循指令。

虽然 RLHF 会产生强大的 LLM,但缺点是这种方法可能会被滥用和利用来生成不良或有害的内容。NeMo方法使用PPO价值网络作为批评者模型,以指导LLM远离生成有害内容。研究界正在积极探索其他方法,以引导LLMs采取适当的行为,并减少LLM构成事实的有毒物质产生或幻觉。

原文链接:选择大型语言模型自定义技术 (mvrlink.com)

相关文章:

选择大型语言模型自定义技术

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 企业需要自定义模型来根据其特定用例和领域知识定制语言处理功能。自定义LLM使企业能够在特定的行业或组织环境中更高效,更准确地生成和理解文本。 自定义模型使企业能够创建符合其品牌…...

算法概述-Java常用算法

算法概述-Java常用算法 1、算法概念2、算法相关概念3、算法的性能评价4、算法应用归纳 1、算法概念 广泛算法定义:算法是模型分析的一组可行性的、确定的和有穷的规则。 经典算法特征:有穷性、确切性、输入、输出和可行性。 常用的算法包括递推、递归、穷…...

CCLINK转MODBUS-TCP网关cclink通讯接线图 终端电阻

大家好,今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议,它们的不同使得数据互通比较困难,但捷米JM-CCLK-TCP网关的出现改变了这一切。 1捷米JM-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关,它的主要功能是将各种…...

香蕉派 BPI-P2 Pro采用RK3308芯片,512M内存,8G存储,支持PoE供电

Banana Pi BPI-P2 pro(Armsom pro)是一款基于瑞芯瑞(Rockchip) RK3308B-S芯片的开发板。采用高性能4核ARM Cortex-A35处理器,512M RAM内存。和8G eMMC板载存储,支持PoE网线供电功能。芯片具有丰富的接口,如I2S、PCM、TDM、I2C、UART、SPDIF、…...

「隐语小课」拆分学习之“水平拆分学习”

一、引言 拆分学习是 2018 年由 MIT 最先提出的分布式算法。本文结合该领域的相关英文文献,介绍水平拆分学习的基本方法,同时还将对比拆分模型与中心化模型、联邦模型在不同条件下模型效率和准确性。拆分学习作为主流的隐私计算学习范式之一&#xff0c…...

WPF--关于Action事件小结

WPF--关于Action事件小结 1.需要类实例去调用事件建立订阅关系 public event Action<int, object> MaintainEvent; new GP1().MaintainEvent NormalCmdAction; 2.static用处--在不便实例的时候&#xff0c;可以直接由类调用 public static event Action<int, objec…...

创建一个 React+Typescript 项目

接下来 我们来一起探索一下用TypeScript 来编写react 这也是一个非常好的趋势&#xff0c;目前也非常多人使用 那么 我们就先从创建项目开始 首先 我们先找一个 或者 之前创建一个目录 用来放我们的项目 然后 在这个目录下直接输入 例如 这里 我想创建一个叫 tsReApp 的项目…...

Java课题笔记~ 数据提交的方式

前四种数据注入的方式&#xff0c;会自动进行类型转换。但无法自动转换日期类型。 &#xff08;1&#xff09;单个数据&#xff08;基本数据类型&#xff09;注入 在方法中声明一个和表单提交的参数名称相同的参数&#xff0c;由框架按照名称直接注入。 &#xff08;2&#x…...

VUE3给页面添加按钮事件

在Vue 3中&#xff0c;可以通过使用setup函数来添加事件和自定义逻辑。下面是一个示例代码&#xff0c;演示了如何添加页面上的altb事件 <template><div><p>Press Alt B to trigger the event!</p></div> </template><script setup&g…...

基于centos7.9通过nginx实现负载均衡以及反向代理

摘要&#xff1a;负载均衡&#xff1a; 负载均衡是一种技术&#xff0c;用于在多个服务器之间分发传入的网络流量&#xff0c;以平衡服务器的负载&#xff0c;提高系统的可用性和性能。当您有多台服务器时&#xff0c;您可以使用负载均衡将请求分发到这些服务器上&#xff0c;从…...

前端原生写自定义旋转变换轮播图

html部分&#xff1a; <div class"banner_box"><div class"swiperWrapper" v-show"bannerList.length>0"><div class"swiper-item" :id"swiperSlide${index}" :class"{active:index0,next:index1,pr…...

linux tomcat server.xml 项目访问路径变更不生效

如果想改成默认的127.0.0.1:8080 访问项目 先确定更改的作用文件 server.xml 的 host:appBase 标签 默认找到appBase webapps 下的war包&#xff0c;并解压&#xff0c;解压后的appname为访问路径 也就变成了 127.0.0.1:8080/appname host:Context:path 标签 appBase的 优先…...

介绍原型模式:快速构建和复制对象的设计模式

经过瀑布模式之后&#xff0c;我们不禁想要用模型解决更多的问题&#xff0c;最重要的就是不再单向行径。 由此&#xff0c;介绍 原型模式&#xff0c; 所谓原型&#xff0c;就是我们有一个框架或者初始角色。我们可以根据项目的不同&#xff0c;对它进行不同的修改&#xff0…...

Unity的TimeScale的影响范围分析

大家好&#xff0c;我是阿赵。 这期来说一下Unity的TimeScale。 一、前言 Unity提供了Time这个类&#xff0c;来控制时间。其实我自己倒是很少使用这个Time&#xff0c;因为做网络同步的游戏&#xff0c;一般是需要同步服务器时间&#xff0c;所以我比较多是在使用System.Date…...

爬虫逆向实战(五)--猿人学第三题

一、数据接口分析 主页地址&#xff1a;猿人学第三题 1、抓包 通过抓包可以发现数据接口是api/match/3 2、判断是否有加密参数 请求参数是否加密&#xff1f; 无请求头是否加密&#xff1f; 无响应是否加密&#xff1f; 无cookie是否加密&#xff1f; 无 二、发送请求 …...

[虚幻引擎] UE使用虚拟纹理在模型上显示挖空效果

此教程是记录如在UE中使用虚拟纹理&#xff0c;实现模型挖洞的效果。 1. 新建项目&#xff0c;开启项目支持虚拟纹理并并重启。 2. 新建一个基础关卡 3. 拖动“运行时虚拟纹理体积” 进入场景&#xff0c;并把体积修改变大&#xff0c;以可以完全包括到地板。 4. 创建一个虚拟纹…...

vue3中reactive和ref的比较

1.reactive和ref函数的共同作用是什么&#xff1f; 用函数调用的方式生成响应式数据 2. reactive vs ref? 1.reactive不能处理简单类型的数据 2.ref参数类型支持更好但是必须通过.value访问修改 3.ref函数的内部实现依赖于reactive函数 3. 在实际工作中推荐使用哪个? …...

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x

毫无疑问&#xff0c;日志记录是任何应用程序最重要的方面之一。 当事情出错时&#xff08;而且确实会出错&#xff09;&#xff0c;我们需要知道发生了什么。 为了实现这一目标&#xff0c;我们可以设置 Filebeat 从我们的 golang 应用程序收集日志&#xff0c;然后将它们发送…...

【STM32+ESP8266上云连载①】给ESP8266烧录AT固件

文章目录 一、给NodeMCU烧录固件1.1硬件准备1.2软件准备1.3AT固件下载1.4配置设置1.5开始烧录 二、给ESP8266-01S烧录固件2.1硬件准备2.2AT固件下载2.3连线2.4烧录配置 三、给ESP-12E/F/S单片烧录固件四、指令测试4.1HTTP测试4.2MQTT测试 我在使用ESP8266的时候遇到了一些问题&…...

深入解析Spring基本概念和核心思想

文章目录 基本概念IoCIoc容器IoC理解IoC的步骤Spring中使用ioc的步骤 AopAop的理解Aop的步骤 控制反转谁控制谁? 控制什么?为何叫反转(对应于正向)?哪些方面反转了?为何需要反转? 依赖什么是依赖(按名称理解、按动词理解)? 谁依赖于谁? 为什么需要依赖? 依赖什么东西?…...

Redis数据结构——快速列表quicklist、快表

定义 Redis中的数据结构&#xff0c;链表和压缩列表这两种数据结构是列表对象的底层实现方式。 当时考虑到链表的附加空间太大&#xff0c;节点的内存都是单独分配的&#xff0c;还会导致内存碎片化问题严重。 因此从Redis3.2开始&#xff0c;对列表的底层数据结构进行了改造&…...

excel统计函数篇3之rank系列

下面这三个函数都是返回指定数据在指定范围中的数据中的名次 1、RANK(number,ref,[order]):返回一列数字的数字排位&#xff08;数字排位是相对于列表中其他值的大小&#xff09; rank(数字&#xff0c;数字序列&#xff0c;升序/降序) – 数字在数字序列中的名次 2、RANK.AV…...

Flink 火焰图

方式一 使用 Flink Web UI 的 Flame Graph Flink 自己也支持了 Task 粒度的 Flame Graphs 功能&#xff0c;并且可以细化到 subtask 粒度。 第一步&#xff1a;配置启用功能 Flink 作业动态参数里增加配置&#xff1a;“rest.flamegraph.enabled”: “true” 并重启作业。当前…...

kubectl get 中英文对照

wlzx059node01:~$ kubectl get --help Display one or many resources. (显示一个或多个资源。)Prints a table of the most important information about the specified resources. You can filter the list using a label selector and the --selector flag. If the desired …...

R语言APSIM模型进阶应用与参数优化、批量模拟实践技术

随着数字农业和智慧农业的发展&#xff0c;基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…...

无涯教程-Perl - times函数

描述 此函数返回一个四元素列表,为当前进程及其子进程提供用户,系统,子进程和子系统时间。 语法 以下是此函数的简单语法- times返回值 此函数返回ARRAY,($usertime,$systemtime,$childsystem,$childuser) 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -w($use…...

《计算机网络:自顶向下方法》第五章--网络层:控制平面

控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间的路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理 传统上&#xff0c;控制平面功能与数据平面的转发功能在一起实现&#xff0c;在路由器中作为统一的整体…...

Mysql存储引擎中InnoDB与Myisam的主要区别

在mysql命令窗口中,输入show engins,可以看到mysql的所有引擎,那么这么多的引擎,我们经常使用到的也就两种,MyISAM和InnoDB,这两种引擎究竟有什么区别呢? 1, 事务处理 innodb 支持事务功能,myisam 不支持。 Myisam 的执行速度更快,性能更好。 2,select ,update ,inse…...

数据仓库 ODS->DWD->DWS->ADS

1.数据仓库DW 1.1简介 Data warehouse&#xff08;可简写为DW或者DWH&#xff09;数据仓库&#xff0c;是在数据库已经大量存在的情况下&#xff0c;为了进一步挖掘数据资源、为了决策需要而产生的&#xff0c;它是一整套包括了etl、调度、建模在内的完整的理论体系。数据仓库…...

【SpringBoot】SpringBoot获取不到用户真实IP怎么办

文章目录 前言问题原因解决方案修改Nginx配置文件SpringBoot代码实现 前言 项目部署后发现服务端无法获取到客户端真实的IP地址&#xff0c;这是怎么回事呢&#xff1f;给我都整懵逼了&#xff0c;经过短暂的思考&#xff0c;我发现了问题的真凶&#xff0c;那就是我们使用了N…...