[书生·浦语大模型实战营]——XTuner 大模型单卡低成本微调

news2025/2/26 9:24:15

1.Finetune简介

在这里插入图片描述
在未经过微调的pretrained LLM中,模型只会尽量去拟合你的输入,也就是说模型并没有意识到你在提问,因此需要微调来修正。

1.1常用的微调模式

LLM的下游应用中,增量预训练指令跟随是经常会用到的两种的微调模式。
增量预训练微调
使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识
训练数据:文章、书籍、代码等
指令跟随微调
使用场景:让模型学会对话模板,根据人类指令进行对话
训练数据:高质量的对话、问答数据

1.2具体实现

指令跟随微调
指令跟随微调是为了得到能够实际对话的LLM。介绍指令跟随微调前,需要先了解如何使用LLM进行对话。
在实际对话时,通常会有三种角色
System:给定一些上下文信息,比如“你是一个安全的AI助手"
User:实际用户,会提出一些问题,比如“世界第一高峰是?”
Assistant:根据 User 的输入,结合 System 的上下文信息,做出回答,比如“珠穆朗玛峰”
与增量预训练的区别在于,数据中会有Input和Ouput,希望模型学会的是答案(Output),而不是问题(Input),训练时只会对答案(Output)部分计算Loss。
增量预训练微调
输入的数据形式并不是问答的形式,而是只是陈述句。因此实际的模板如下:
System:“”
User:“”
Assistant:根据 User 的输入,结合 System 的上下文信息,做出回答,比如“珠穆朗玛峰”

1.3LoRA&QLoRA

LoRA:LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
LLM的参数量主要集中在模型中的Linear中,训练这些参数会消耗大量显存。而LoRA通过在原本的Linear旁,新增一个支路,包含两个连续的小Linear,新增的这个支路通常叫做Adapter。而这个Adapter的参数量远远小于原本的Linear中的参数量,可以 大幅度降低训练的显存消耗。
QLoRA是LoRA的一种改进方法。
在这里插入图片描述

在这里插入图片描述

2.XTuner介绍

2.1 XTuner 简介

在这里插入图片描述

2.2 XTuner快速上手

1.安装

pip install xtuner

2.挑选配置模板

xtuner list-cfg -p internlm_20b

3.一键训练

xtuner trian interlm_20b_qlora_oasst1_512_e3

Config的命名规则
模型名4.模型对话
Float 16模型对话

xtuner chat internlm/internlm-chat-20b

或4bit模型对话

xtuner chat internlm/internlm-chat-20b --bits 4

加载Adapter模型对话

xtuner chat internlm/internlm-chat-20b --adapater $ADAPATER_DIR

5.工具类模型对话
XTuner还支持工具类模型的对话。

2.3 XTuner数据引擎

2.3.1 数据处理流程

在这里插入图片描述
同时支持多种热门数据集的映射函数和多种对话模板映射函数。使得开发者可以专注于数据内容,而不必花费精力处理复杂的数据格式。

2.3.2 多数据样本拼接(Pack 0Dataset)

在这里插入图片描述

3.8GB显卡玩转LLM

3.1特色功能

下面提到的两个技巧都是XTuner中重要的两个优化技巧。

3.1.1 Flash Attention(默认开启)

Flash Attention 将Attention 计算并行化,避免了计算过程中Attention Score NxN的显存占用。

3.1.2 DeepSpeed ZeRO(非默认)

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

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

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

相关文章

【前后端的那些事】解放后端!10min快速上手人人代码生成器(后端篇)

人人代码生成器【后端篇】 文章目录 人人代码生成器【后端篇】1. 克隆renren-generator2. 配置项目信息3. 配置数据库信息4. 启动项目5. 创建springboot项目5.1 pom.xml5.2 创建包结构5.3 编写application.yml5.4 将生成代码集成到项目中5.5 集成common模块5.6 启动项目 前言&a…

影响邮件打开率的因素有哪些?

影响邮件打开率得因素有很多,比如说邮件地址的有效性、邮件标题、定位人群、发送频率或者时间等因素。目前来讲,我们可以通过技术的手段改善邮件的到达率,但是邮件的打开率取决于收件人本身,所以发件人的发送动作如何在很大程度上…

一、Mindspore 公开课 - Transformer

课程链接:Mindspore 技术公开课 Transformer 论文地址,建议看完课程以后简单看看论文 前言 Transformer是一种神经网络结构,由Vaswani等人在2017年的论文“Attention Is All You Need” 中提出,用于处理机器翻译、语言建模和文…

PLAN B KRYPTO ASSETS GMBH CO. KG 普兰资产管理公司

引领加密技术不断演进 PLAN B KRYPTO ASSETS普兰资产管理以其独创的「Trident Strategy三叉戟模型」技术为基础,持续推动加密技术的发展,打造 Schutz(舒茨盾) AI 金融隐私匿名公链。致力于提供高效的技术服务,基于机构…

SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解

SqlAlchemy使用教程(一) 原理与环境搭建SqlAlchemy使用教程(二) 入门示例及编程步骤 三、使用Core API访问与操作数据库 Sqlalchemy 的Core部分集成了DB API, 事务管理,schema描述等功能,ORM构筑于其上。本章介绍创建 Engine对象,使用基本的…

「企业架构框架」什么是TOGAF?

什么是TOGAF?TOGAF开发概述什么是TOGAF上下文中的架构?什么是企业架构?TOGAF的结构介绍架构开发方法ADM指南和技术架构内容框架企业连续体和工具参考模型架构能力框架相关链接 什么是TOGAF? TOGAF由开放集团推出,是一种…

LangChain 71 字符串评估器String Evaluation衡量在多样化数据上的性能和完整性

LangChain系列文章 LangChain 60 深入理解LangChain 表达式语言23 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 61 深入理解LangChain 表达式语言24 multiple chains链透传参数 LangChain Expression Language (LCEL)LangChain 62 深入理解Lang…

【STK】手把手教你利用STK进行关联分析仿真01-STK/CAT模块介绍

关联分析工具(Conjunction Analysis Tool )主要用于分析航天发射或卫星在轨运行过程中与其他目标之间的接近情况,关联分析包括: 接近分析工具 Close Approach Tool CAT高级接近分析工具 AdvCAT激光接近分析工具 LaserCAT发射窗口分析工具 Launch Window Analysis今天主要介绍…

RAG 评估框架 -- RAGAS

原文 引入 RAG(Retrieval Augmented Generation)的原因 随着ChatGPT的推出,很多人都理所当然直接用LLM当作知识库回答问题。这种想法有两个明显的缺点: LLM无法得知在训练之后所发生的事情,因此无法回答相关的问题存…

大面积光源HUD阳光倒灌实验装置太阳光模拟器

背景 1.根据现在市场上一些量产的hud的结构和原理可知,hud中最重要的零件之一就是凹面镜(自由曲面),hud利用凹面镜放大投影的光学原理进行投影成像。当发生阳光倒灌时,太阳光沿着hud正常工作时成像的逆光路,通过挡风玻璃-凹面镜-…

4.【CPP】入门(初始化列表||explicit||static||友元||静态成员变量/函数)

一.初始化列表 1.引入 我们知道在c11中才能在成员对象声明时初始化,像下面这样。 class Date { public: Date(int year, int month, int day): _year(year), _month(month), _day(day) {} private: int _year2000; int _month12; int _day20; };注意:…

CMake tasks.json launch.json

hehedalinux:~/Linux/cmake/cmakeClass$ tree . ├── CMakeLists.txt ├── include │ ├── Gun.h │ └── Soldier.h ├── main.cpp └── src├── Gun.cpp└── Soldier.cpp2 directories, 6 files hehedalinux:~/Linux/cmake/cmakeClass$ launch.json&am…

每日一题——LeetCode1189.气球的最大数量

方法一 个人方法: 统计text字符串中b、a、l、o、n 这几个字符出现的次数 l和n需要两个才能拼成一个balloon,所以碰到l和o加1,其他字符加2 最后求出出现次数最少的那个字符再除以2就是能拼凑成的单词数量,避免出现小数要使用向下…

godot初学笔记

godot开发工具下载地址 godot下载地址 godot入门视频 godot入门教学b站地址 素材下载地址 素材下载地址 最终成品图 2D3D如何切换 添加2D场景 添加其他节点 添加人物节点 设置人物为接地 给人物添加Sprite 2d 给人物设置材质 解决材质糊的问题 设置材质包切割 在场景中实…

CISP注册信息系统安全认证,2024年1月20日即将开课~想了解点击查看

CISP注册信息系统安全认证 1🈷20日 开课~ 想报名的必须提前预约啦 👇👇👇 课程介绍 本课程包括10个独立的知识域(安全工程与运营、计算环境安全、软件安全开发、网络安全监管、物理与网络通信安全、信息安全保障、信…

杨中科 .NETCORE EFCORE 第一部分 基本使用

一 、什么是EF Core 什么是ORM 1、说明: 本课程需要你有数据库、SOL等基础知识。 2、ORM: ObjectRelational Mapping。让开发者用对象操作的形式操作关系数据库 比如插入: User user new User(Name"admin"Password"123”; orm.Save(user);比如查询: Book b…

自动粘贴文本:高效复制中国邮政编码,提升效率,释放创意

在快节奏的现代生活中,时间就是金钱,效率就是生命。中国邮政EMS,作为您的快递服务首选,一直致力于提供更加便捷、高效的寄递体验。今天,我们隆重推出全新功能——"自动粘贴文本",让您轻松复制邮政…

test-02-test case generate 测试用例生成 EvoSuite 介绍

拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) 拓展阅读 自动生成测试用例 什么…

Centos7 安装与卸载mysql

卸载 ps ajx | grep mysql : 查看当前服务器是否有mysql 没有的话就不需要卸载咯。 centos7 通过yum下载安装包通常是以.rpm为后缀,rpm -qa 可以查看当前服务器上所有的安装包: rpm -qa | grep mysql | xargs yum -y remove :将查询到的mysql…