大模型实战营Day4 XTuner大模型单卡低成本微调实战

FINETUNE简介
LLM下游应用中,增量预训练和指令跟随是经常会用到的两种微调模式


指令跟随微调
使用场景:让模型学会对话模板,根据人类指令进行对话
训练数据:高质量的对话,问答数据

为什么需要指令微调?
因为在对话中模型只是根据我们的提问去拟合训练数据集中的分布,它并没有意识你的意图是在向它提问。
通过指令微调后,便可得到instructed LLM,可以输出我们更加相对满意的结果

在进行指令跟随微调前,先定义三个角色
System:给定一些上下文信息,例如我们想微调一个安全的AI助手,那System就是“你是一个安全的AI助手”。
User:用户提问,在微调时将对话样本的提问赋予此角色
Assistant:根据用户提问,结合System上下文信息,输出回答,在微调时将对话样本的回答赋予此角色

这样便构建好了一个对话模板

不同的模型使用的指令各不同 Llama2 InternLM


指令跟随微调的训练
由于希望模型学会的是答案而不是问题,因此训练时只对答案计算损失


增量预训练微调
使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识
训练数据:文章,书籍,代码等

训练LLM时,是为了让模型学会回答一个陈述句,因此相比指令跟随微调,增量预训练的对话模板中,system和user部分留空,只保留assistant。训练数据也不是对话数据,而是陈述句

计算损失时同样计算答案的损失即可。


LoRA & QLoRA
为什么要使用LoRA,如果不使用lora,那么微调时的显存开销会非常大。
lora的原理:比起对大模型的参数全面训练,lora则是在保持原模型参数不变的情况下,在原本的linear旁新增一些可训练分支(Adapter)使得输出结果拟合训练样本,Adapter参数量远小于原本的linear,能大幅减低训练的显存消耗

qlora是对lora的一种改进,使得加载模型到显存时直接量化成4bit,并且gpu满了就会到cpu上进行调度,虽然慢了,但是整个训练还能进行下去

XTuner简介
傻瓜式:以配置文件的形式封装了大部分微调场景,0基础的非专业人员也能一键开始微调
轻量级:对于7B参数量的LLM,微调所需的显存仅为8GB,满足大部分消费级显卡

功能亮点
适配多种生态
多种微调算法:多种微调策略与算法,覆盖各类SFT场景
适配多种开源生态:支持加载HuggingFace、ModelScope模型或数据集
自动优化加速:开发者无需关注复杂的显存优化与计算加速细节

适配多种硬件
训练方案覆盖NVIDIA20系以上所有显卡
最低只需8GB显存即可微调7B模型

8GB 显卡玩转LLM
Flash Attention 和 DeepSpeed ZeRO 是 XTuner 最重要的两个优化技巧

Flash Attention
Flash Attention 将Attention 计算并行化。避免了计算过程中 Attention Score NxN的显存占用(训练过程的N都比较大)

DeepSpeed ZeRO
ZeRO优化,通过将训练过程中的参数,梯度和优化器状态切片保存,能够在多GPU训练时显著节省显存
除了将训练中间状态切片外,DeepSpeed 训练时使用FP16的权重,相较于Pytorch的AMP训练在单GPU上也能大幅节省显存。

为了能让开发者专注于数据,XTuner会自动dispatch Flash Attention,并一键启动DeepSpeed ZeRO
对于QLora,则在启动时使用参数 --deepspeed deepspeed_zero3

下面是优化前与优化后显存占用情况

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

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

相关文章

1222. 密码脱落(dp划分)

题目&#xff1a; 1222. 密码脱落 - AcWing题库 思路&#xff1a; 代码&#xff1a; #include<cstdio> #include<cstring> using namespace std; const int N1010; int f[N][N];//表示以L和R为两端点的字符串的“最长”回文序列长度 char s[N];//存储输入的字符串…

java每日一题——ATM系统编写(答案及编程思路)

前言&#xff1a; 基础语句学完&#xff0c;也可以编写一些像样的程序了&#xff0c;现在要做的是多加练习&#xff0c;巩固下知识点&#xff0c;打好基础&#xff0c;daydayup! 题目&#xff1a;模仿银行ATM系统&#xff0c;可以创建用户&#xff0c;存钱&#xff0c;转账&…

探索商超货架场景目标检测性能,基于YOLOv8【n/s/m/l/x】全系列参数模型开发构建商超货架场景下亨氏米粉食品种类检测识别系统

在前面的系列博文中&#xff0c;我们陆续应用实践开发了很多有趣的项目&#xff0c;但是在密集排布场景下如商超购物场所内货架上货物种类目标检测模型的开发我们则少有涉及&#xff0c;正值周末&#xff0c;本文的主要目的就是想要实践构建这一场景下的目标检测模型&#xff0…

QSpace:Mac上的简洁高效多窗格文件管理器

在Mac用户中&#xff0c;寻找一款能够提升文件管理效率的工具是常见的需求。QSpace&#xff0c;一款专为Mac设计的文件管理器&#xff0c;以其简洁的界面、高效的多窗格布局和丰富的功能&#xff0c;为用户提供了一个全新的文件管理体验。 QSpace&#xff1a;灵活与功能丰富的结…

MySQL面试题 | 05.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Qt打包程序

添加链接描述

Ps:何时需要转换为智能对象

智能对象 Smart Objects提供了广泛的灵活性和控制能力&#xff0c;特别是在处理复杂的合成、重复元素或需要非破坏性编辑的项目中。 ◆ ◆ ◆ 何时需要转换为智能对象 1、当需要对图像进行缩放、旋转等变换时。 涉及到的 Photoshop 命令包括&#xff1a;变换、自由变换、操控…

SwiftUI之深入解析如何使用SwiftUI Charts创建折线图

一、简单折线图 苹果在 WWWDC 2022 上推出了 SwiftUI 图表&#xff0c;这使得在 SwiftUI 视图中创建图表变得异常简单。图表是以丰富的格式呈现可视化数据的一种很好的方式&#xff0c;而且易于理解。本文展示了如何用比以前从头开始创建同样的折线图少得多的代码轻松创建折线…

【深度学习】Anaconda3 + PyCharm 的环境配置 3:GitHub 项目运行前的环境配置

前言 文章性质&#xff1a;实操记录 &#x1f4bb; 主要内容&#xff1a;主要记录了运行 GitHub 项目前的环境配置过程&#xff0c;包括创建并激活新的虚拟环境、安装 torch 和 torchvision&#xff0c;在 PyCharm 中使用新建的虚拟环境&#xff0c;根据项目源代码提供的 requi…

Xtuner大模型微调

Xtuner大模型微调 一、课程笔记 文档链接&#xff1a;https://github.com/InternLM/tutorial/blob/main/xtuner/README.md 视频链接&#xff1a; https://www.bilibili.com/video/BV1yK4y1B75J/ 大模型微调 大模型的训练利用了各类数据&#xff0c;可以说是一个通才&#xff…

Sqoop的增量数据加载策略与示例

当使用Apache Sqoop进行数据加载时&#xff0c;增量数据加载策略是一个关键的话题。增量加载可以仅导入发生变化的数据&#xff0c;而不必每次都导入整个数据集&#xff0c;这可以显著提高任务的效率。本文将深入探讨Sqoop的增量数据加载策略&#xff0c;提供详细的示例代码&am…

如何调整 Windows 11 任务栏位置、对齐方式,及自定义任务栏

更新于&#xff1a;2023-11-22 分类&#xff1a;Windows 阅读(115407) 评论(12) 如果你是 Windows 11 用户中的一员&#xff0c;一定在不断尝试它的新功能。Windows 11 操作系统采用了全新设计的外观&#xff0c;具有重新设计的 Windows 资源管理器、圆润的窗口边缘和默认将应用…

【期末不挂科-C++考前速过系列P5】大二C++实验作业-多态性(3道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

六、新建窗体时,几种窗体的区别

新建窗体时&#xff0c;会有几种类型的选项&#xff0c;很多同学不明白其中的意思&#xff0c;我们在本章节中详细介绍一下几种窗体的区别。 窗体的类型分以下几种 Dialog with Buttons Bottom 带按钮的对话框&#xff0c;按钮在底部 Dialog with Buttons Right 带按钮的对话框…

MySQL面试题 | 06.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Open3D 计算点云质心和中心(18)

Open3D 计算点云质心和中心(18) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 质心和中心是有所区别的,点云质心可以看作每个点的坐标均值,点云中心可以看作点云所在包围盒的中心,这也是上一章坐标最值的常用方法,下面就两种方法进行实现(图例,大概就是这个意思…

SFP/SFP+/QSFP/QSFP+光模块和GTP/GTX/GTH/GTZ/GTY/GTM高速收发器

SFP/SFP/QSFP/QSFP光模块和GTP/GTX/GTH/GTZ/GTY/GTM高速收发器 SFP/SFP/QSFP/QSFP光模块概述SFPSFPQSFPQSFP关键参数说明 GTP/GTX/GTH/GTZ/GTY/GTM高速收发器区别XILINX 7系列FPGA中高速收发器使用 SFP/SFP/QSFP/QSFP光模块 概述 SFP&#xff08; small form-factor pluggabl…

部分城市公交站点数据,Shp+excel格式数据,2020年,几何类型为点

随着城市的发展和人口的增长&#xff0c;公共交通成为了人们出行的重要方式之一。而公交站点作为公共交通的重要组成部分&#xff0c;其数据信息的获取和分析对于城市规划和管理具有重要意义。 今天来分享一下部分城市公交站点数据&#xff1a; 首先先了解下该数据的基本信息 …

Error: error:0308010C:digital envelope routines::unsupported的解决方案

因为最近安装了pnpm对node版本有要求&#xff0c;升级了node版本是18以后&#xff0c;在运行之前的项目&#xff0c;就跑不起来了&#xff0c;报错如下&#xff1a; Error: error:0308010C:digital envelope routines::unsupported解决方案一&#xff1a; node版本切换到16版…

MATLAB - 机器人关节空间运动模型

系列文章目录 前言 关节空间运动模型描述了在闭环关节空间位置控制下机械手的运动&#xff0c;在关节空间运动模型&#xff08;jointSpaceMotionModel&#xff09;对象和关节空间运动模型块中使用。 机器人机械手是典型的位置控制设备。要进行关节空间控制&#xff0c;需要指…