18.实战 LLaMA2-7B 指令微调

实战 LLaMA2-7B 指令微调

  • 实战 LLaMA2-7B 指令微调
    • 大模型训练技术总结
      • 以模型训练阶段分类:Pre-Training vs Fine-Tuning
      • 以微调权重比例分类:FFT vs PEFT
      • 以模型训练方法分类:Fine-Tuning vs Instruction-Tuning
      • 以模型训练机制分类:SFT vs RLHF
      • 再谈机器学习训练机制
    • 实战 LLaMA2-7B 指令微调
      • 指令微调格式:Alpaca Format
      • 数据集:Databricks Dolly-15K
      • 使用 Huggingface TRL SFTTrainer 训练 LLaMA2-7B 模型

实战 LLaMA2-7B 指令微调

大模型训练技术总结

以模型训练阶段分类:Pre-Training vs Fine-Tuning

Pre-Training 和 Fine-Tuning是深度学习,特别是在自然语言处理(NLP)领域中,训练大模型(如LLaMA、GPT、
Gemini等)的两个关键步骤。这两个步骤共同构成了一种有效的策略,用于利用大量未标记数据学习通用知识,然
后通过少量标记数据将这些知识应用于特定任务。
Pre-Training:
Pre-Training是指在大量未标记数据上训练深度学习模型的过程。这一步骤的目的是使模型能够学习到数据的通用特
征和模式,从而捕获语言的基本语法和语义信息。这一阶段不需要人工标记的数据,因此可以使用互联网上可获得的
大规模文本语料库。
Fine-Tuning:
在Pre-Training之后,模型将进行Fine-Tuning,以适应特定的下游任务。在这个阶段,模型使用较小的、针对特定任
务标记过的数据集进行训练。Fine-Tuning的目的是调整和优化预训练语言模型(Pre-Trained LM)的权重,使其能
够在特定任务上表现良好,如情感分析、文本分类、问答等。通过Fine-Tuning,模型能够利用在Pre-Training阶段学
到的通用知识,并将其应用于具体任务。
Pre-Training和Fine-Tuning是紧密相连的两个步骤,构成了当前NLP领域中一种非常流行且有效的模型训练范式。Pre-Training
阶段让模型学习大量通用的语言知识,为模型提供了一个良好的起点和广泛的语言理解能力。Fine-Tuning阶段则是将这些通用
知识适应并优化到特定的应用或任务上,从而达到更好的性能。这种结合使用Pre-Training和Fine-Tuning的方法,使得深度学习
模型能够在有限的标记数据情况下也能实现出色的任务性能,同时也提高了模型训练的效率
在这里插入图片描述
在这里插入图片描述

以微调权重比例分类:FFT vs PEFT

FFT 和 PEFT都是调整预训练语言模型以适应特定任务的技术。它们的主要区别在于调整模型参数的范围和方式。
Full Fine-Tuning (FFT):
在Full Fine-Tuning中,整个预训练模型的所有参数都会在下游任务的数据上进行调整。这意味着模型的每一层和每
个权重都会根据特定任务的训练数据进行更新,以最小化任务特定的损失函数。FFT通常能够实现很好的性能,因为
它允许模型在整个架构中学习任务相关的调整。然而,这种方法的缺点是计算成本高,尤其是对于大模型,同时也增
加了过拟合的风险,特别是在标注数据有限的情况下。
Parameter-Efficient Fine-Tuning (PEFT):
相比之下,Parameter-Efficient Fine-Tuning专注于只更新模型的一小部分参数,而保持大部分预训练参数固定不变。
这种方法的目的是在保持预训练模型大部分知识不变的同时,通过调整一小部分参数来适应特定任务。 PEFT的实现
方法有多种,包括但不限于:
Adapter层:在模型的特定层中插入小型的可训练模块,仅训练这些模块的参数。
Prompt Tuning:调整输入到模型中的一小部分“提示”token的嵌入,而不改变模型本身的权重。
低秩逼近(LoRA):对模型参数进行因式分解,并只训练分解后的较小矩阵。
PEFT主流技术
在这里插入图片描述

以模型训练方法分类:Fine-Tuning vs Instruction-Tuning

Fine-Tuning和Instruction-Tuning都旨在改善预训练语言模型(如GPT-3等)的性能,但关注点和方法有所不同。
Fine-Tuning:
在Fine-Tuning过程中,模型在一个大型的数据集上进行预训练,学习语言的通用表示。然后,在特定任务的较小数
据集上继续训练(即Fine-Tuning),调整预训练的参数以优化任务特定(Task-specific)的性能。从而提高任务的
准确率和效率。
Instruction-Tuning:
Instruction-Tuning 目标是提高模型对自然语言指令的响应能力,创建一个更加通用的模型。通过在广泛的任务类型
上使用指令性示例来训练模型,使模型能够理解和执行各种各样的指令。与Fine-Tuning针对单一任务不同,这种方
法希望模型不仅能理解任务的指令,还能根据这些指令生成适当的响应格式或输出。
在这里插入图片描述
在这里插入图片描述

以模型训练机制分类:SFT vs RLHF

Supervised Fine-Tuning 和RLHF 虽然有共同的目标——即利用额外的训练步骤来改善模型在特定任务上的表现,但
它们在实现这一目标的方法上存在显著差异。SFT 依赖于预定义的、清晰标注的训练数据,适用于任务输出相对明确
的情况;而RLHF则通过从人类反馈中学习,更适合输出标准不易量化或多样化的生成式任务。
Supervised Fine-Tuning:
在Supervised Fine-Tuning中,预训练模型在具有明确标签的数据集上进行额外训练,以适应特定的下游任务。这个
过程依赖于传统的监督学习方法,其中模型通过最小化预测输出和实际标签之间的差异(例如,使用交叉熵损失函
数)来进行训练。Supervised Fine-Tuning通常用于各种NLP任务,如文本分类、情感分析、命名实体识别等,它能
够使预训练模型利用在特定任务上的标注数据进行进一步优化。
RLHF (Reinforcement Learning from Human Feedback):
与Supervised Fine-Tuning不同,RLHF使用强化学习方法来训练预训练模型,使其行为更符合人类的偏好或期望。
在这个过程中,模型的输出(或行为)会被人类评估员评价,而这些评价反馈作为奖励信号,指导模型学习。RLHF
特别适用于那些难以明确定义正确输出的任务,如生成式任务(例如,生成自然语言文本、艺术创作等)。RLHF的
目的是使模型生成的输出更加符合人类的质量标准和偏好。
ChatGPT 和 LLaMA2-chat 等模型结合了两者优势,以充分利用监督学习的明确性和强化学习的灵活性。

再谈机器学习训练机制

在这里插入图片描述

实战 LLaMA2-7B 指令微调

在这里插入图片描述

指令微调格式:Alpaca Format

在这里插入图片描述

数据集:Databricks Dolly-15K

在这里插入图片描述
databricks-dolly-15k是一个开源数据集,数千名 Databricks 员工按照 InstructGPT论文中概述的类别生成的Instruction 记录。这些行为类别包括头脑风暴、分类、封闭型问答、生成、信息提取、开放型问答和
摘要。
该数据集许可证为 Creative Commons Attribution-ShareAlike 3.0 Unported 。可用于任何目的,无论是学术还是商业。

使用 Huggingface TRL SFTTrainer 训练 LLaMA2-7B 模型

在这里插入图片描述

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

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

相关文章

【五】Linux软件仓库Yum源--SSH远程控制--SCP远程传输

RPM(红帽软件包管理器) RPM建立统一的数据库文件,记录软件信息并分析依赖关系。目前RPM的优势已经被公众所认可,使用范围也已不局限在红帽系统中了。常见RPM命令如下: 安装软件 rpm -ivh file…

PostgreSQL和Oracle的数据类型对比:时间类型 #PG培训

在数据库管理系统中,时间数据类型是非常关键的一部分。时间数据类型的选择和使用直接影响到数据存储、查询效率和应用程序的设计。本文将对比PostgreSQL和Oracle在时间类型方面的实现和特性。 #PG考试#postgresql培训#postgresql考试#postgresql认证 日期和时间类型…

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的&#xff1a;应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource"{local:GetStudents Count5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines"True"><Grid.ColumnDefinit…

springSecurity(二):实现登入获取token与解析token

登入生成token 主要思想 springSecurity使用UsernamePasswordAuthenticationToken类来封装用户名和密码的认证信息 代码实现 发起登入请求后&#xff0c;进入到login()方法 /*** 在接口中我们通过AuthenticationManager的authenticate方法来进行用户认证,* 所以需要在Secur…

淘宝镜像地址失效

1. 使用nvm安装node时候报错 报错内容 Get "https://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt": tls: failed to verify certificate: x509: certificate has expired or is not yet valid:报错原因 淘宝镜像地址的证书过期了 解决 找到nvm安装的根目…

echarts legend 背景色渐变

问题与本文无关&#xff1a;如果检测软件显示loadsh.js 的版本是4.17.10 装element-ui 2.15.8版本以下&#xff0c;2.15.6经过测试可以 代码&#xff1a; <template><div class"levelMain"><div class"survey-head"><div class"…

vue记录:nextTick

nextTick 是 Vue.js 中的一个核心功能&#xff0c;用于在 DOM 更新完成后执行延迟回调。这在 Vue 的响应式系统中非常有用&#xff0c;因为当数据变化时&#xff0c;Vue 并不立即更新 DOM&#xff0c;而是等待一个“tick”&#xff08;或者叫“微任务”&#xff09;来批量更新。…

RK3568平台(音频篇)声音的数字化和数字音频接口

一.声音信号的数字化 我们应该都知道&#xff0c;声音是一种模拟信号&#xff0c;如果想用于计算机&#xff0c;就必须要将模拟信号转换为数字信号&#xff0c;这样&#xff0c;我们就能在计算机上存储声音了&#xff0c;等待用户想播放的时候&#xff0c;再将数字信号转换为模…

【Java】已解决java.lang.CloneNotSupportedException异常

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 已解决java.lang.CloneNotSupportedException异常 在Java编程中&#xff0c;java.lang.CloneNotSupportedException是一个常见的运行时异常&#xff0c;它发生在尝试调用对象的clone()方法时&#xff0c;但该…

vlan、vxlan、vpc学习

文章目录 前言VLAN (Virtual Local Area Network)定义工作原理优点应用场景限制 VXLAN (Virtual eXtensible Local Area Network)工作原理优点应用场景与VLAN的区别 VPC (Virtual Private Cloud)定义特点优势应用场景与VLAN/VXLAN的关联 总结 前言 VLAN&#xff08;Virtual Lo…

Linux | grep命令和 find命令有什么区别

如是我闻&#xff1a; 他们俩都是linux系统中具有查找功能的命令&#xff0c;但是grep 和 find 用于不同的目的。grep 用于在文件中查找文本模式&#xff0c;而 find 用于在文件系统中查找文件和目录。下面是它们的主要区别&#xff1a; grep 用途&#xff1a; grep 是用于在…

使用 Vue.js 实现一个电子签名系统

使用 Vue.js 实现一个电子签名系统 电子签名系统在现代应用中越来越普遍&#xff0c;尤其是在文档管理、合同签署等场景中。本文将介绍如何使用 Vue.js 实现一个简单的电子签名系统。 项目初始化 首先&#xff0c;我们需要创建一个新的 Vue.js 项目。如果你还没有安装 Vue C…

有哪些零售O2O应用模式?如何构建O2O闭环生态系统?

在零售业的演变历程中&#xff0c;O2O模式的兴起标志着一个新时代的开始。这种模式以其创新性&#xff0c;将线上的便捷与线下的实体体验完美融合&#xff0c;为消费者带来了前所未有的购物便利和体验丰富性。随着技术的不断进步和消费者需求的日益多样化&#xff0c;O2O模式已…

Go基础编程 - 08 - 结构体

结构体 1. 自定义类型、类型别名1.1. 自定义类型1.2. 类型别名1.3. 类型定义和类型别名的区别 2. 结构体定义3. 结构体初始化4. 指针类型结构体5. 构造函数6. 方法和接收者6.1. 方法定义6.2. 方法调用6.3. 值方法和指针方法6.4. 指针方法使用场景6.5. 任意类型添加方法 7. 结构…

在windows 台式机电脑部署GLM4大模型

参考这篇文章在windows笔记本电脑部署GLM4大模型_16g显卡本地部署glm4-CSDN博客 我的环境&#xff08;PC台式机电脑&#xff1a; 处理器 Intel(R) Core(TM) i9-14900K 3.20 GHz 机带 RAM 32.0 GB (31.8 GB 可用)、32G内存、NVIDIA RTX4080&#xff08;16G&#xff09;…

Ubuntu20.04中复现FoundationPose

Ubuntu20.04中复现FoundationPose 文章目录 Ubuntu20.04中复现FoundationPose1.安装cuda和cudnn2.下载相关资源3.环境配置4.运行model-based demo5.运行ycbv demoReference &#x1f680; 非常重要的环境配置 &#x1f680; ubuntu 20.04cuda 11.8.0cudnn v8.9.7python 3.9.19…

如何理解电流镜负载的差分对的增益

我们知道最普通的电阻负载的差分对的差分增益是-gmRD&#xff0c;如果我们不希望输出是双端的&#xff0c;而是希望单端输出&#xff0c;那么使用电阻负载的差分对会导致增益变为原先的一半&#xff0c;因此引入了电流镜负载的差分对&#xff0c;它可以在保证增益与原先相同的情…

Nuxt快速学习开发 - Nuxt3静态资源Assets

Nuxt 使用两个目录来处理样式表、字体或图像等资产。 public/目录内容按原样在服务器根目录中提供。 assets/目录包含您希望构建工具&#xff08;Vite 或 webpack&#xff09;处理的所有资产。 public/目录 public目录用作静态资产的公共服务器&#xff0c;可在您的应用程序定…

【LeetCode 128】 最长连续子序列

判断前一位数在不在字典中是这道题的关键之处&#xff0c;这样就可以避免重复查找&#xff0c;从而达到O(n) 的时间复杂度。如果没有这个判断&#xff0c;那么时间复杂度最坏也得是O(N^2)级别的。 1. 题目 2. 分析 合理利用数据结构。本题中使用了set来保存数组的元素&#x…

氮化铝上的厚膜高功率片式电阻器

EAK厚膜高功率片式电阻器和氮化铝片式端接非常适合大多数需要在小尺寸封装中实现高导热性的应用。AlN 是 BeO 的理想替代品&#xff0c;具有高功耗且对环境或健康无危害。厚膜技术以非常实惠的价格提供稳定的电阻元件。 高稳定性厚膜电阻元件 AlN衬底材料 标准电阻范围为 10Ω…