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

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.mfbz.cn/a/319540.html

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

相关文章

Qt6.5示例:QDomDocument类解析XML文档和文件

01 QDomDocument介绍 QDomDocument类是用于处理XML文档的一个类。QDomDocument提供了对XML文档数据访问的一系列功能,主要功能包括如下: 解析XML文档:QDomDocument可以将XML文档解析为树形结构,每个节点都是一个QDomNode对象&…

企业网盘助力数字化教育资源库建设

教育行业数字化是适应社会发展的必然选择,是教育行业的未来重要发展趋势。万事开头难,如何在数字化时代升级转型是教育行业团队正在面临的挑战。Zoho Workdrive企业网盘深耕智慧文件管理服务,为教育行业量身打造集中文件管理库,推…

【MATLAB源码-第111期】基于matlab的SCMA系统误码率仿真,采用polar码编码,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 SCMA(Sparse Code Multiple Access)系统是一种先进的多用户多输入多输出(MU-MIMO)通信系统,它采用了一种独特的多址访问技术,旨在提高无线通信网络的效率…

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

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

vue2、vue3里面去掉访问地址中路由‘#‘号--nginx配置

需求 我们这里分享一下关于Vue2和Vue3里面如何去掉浏览器路由里面#号的问题,以及nginx的配置。 去掉#号问题之前我们先讨论一下html中的hash模式和history模式。 html中的hash模式 HTML的hash模式指的是URL中的锚点部分(#后面的内容)被用…

datavrap可视化设计器使用手册

datavrap使用手册 一、产品简介 datavrap是一个动态数据可视化设计器,通过简单配置生成可视化视频,图片和gif。 站长:B站UP,夹克mnnm 这个产品的灵感是在做B站视频时,觉得每次通过修改代码录屏实现视频制作太过于繁琐&…

桌面云虚拟机Ubuntu离线安装open-vm-tools

桌面云虚拟机Ubuntu离线安装open-vm-tools 背景解决思路安装步骤1. 下载open-vm-tools及其依赖软件包2. 软件包转ISO文件3. 安装open-vm-tools 背景 公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMwar…

Springboot中使用Filter过滤器

1、概述 springboot工程中使用Filter过滤器与其他地方使用基本相同,只是注入的方式不同。 2、创建Filter过滤器 实现Filter接口,重写doFilter方法 filterChain.doFilter(servletRequest,servletResponse);表示放行 public class MyFilter implement…

基于TCP的全双工网络编程实践

首先我们先了解一下什么是全双工通信? 全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信相当于是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 TCP服务端代码: #includ…

STM32 定时器输入捕获2——捕获高电平时长

由上图我们可以知道,高电平时间t2-t1。在代码中,可以记录此时t1的时间然后再记录t2的时间,t2-t1,就是我们所想要的答案。 但是,还有更简单一点点的,当到达t1的时候,我们把定时器清零&#xff0c…

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

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

一键批量整理:将相同名称的文件归类至指定文件夹

随着电脑中的文件日益增多,文件管理成为了让人头疼的问题。相似的文件名,难以分类的内容,让你在寻找和整理时耗费大量时间。现在,有了我们的全新工具,这些烦恼全部消失。 第一步:进入文件批量改名高手主页面…

如何在海洋cms添加广告

1:下载广告代码,注意广告中的图片要放在自己的server上,图片地址要改为自己的实际图片地址,图片存放位置,存在模板的image里面 2在海洋cms后台添加广告管理,只需要广告index.html代码,转换成js代码 广告名…

生成式AI如何重塑开发流程和开发工具:引领科技革命的未来

随着人工智能技术的飞速发展,生成式AI正以前所未有的速度改变着世界。在软件开发领域,生成式AI已经开始重塑开发流程和开发工具,为软件开发人员带来前所未有的便利和创新。本文将深入探讨生成式AI如何重塑开发流程和开发工具,以及…

手写springBoot启动器

提示:springboot原理,手写springboot启动器,手写模拟SpringBoot启动过程、手写模拟SpringBoot自动配置功能 文章目录 前言一、本文内容1、手写模拟SpringBoot启动过程2、手写模拟SpringBoot自动配置功能 二、项目总体介绍三、代码实现(手写模…

C#,史密斯数(Smith Number)的计算方法与源代码

一、关于史密斯数的传说 1、关于理海大学Lehigh University 理海大学(Lehigh University),位于宾夕法尼亚州(Pennsylvania)伯利恒(Bethlehem),由富有爱国情怀与民族精神的实业家艾萨…

计算机毕业设计 | SpringBoot+vue的图书馆管理系统(附源码)

1,绪论 1.1 课题背景 随着现在科学技术的进步,人类社会正逐渐走向信息化,图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中作用越来越重要,在我国图书馆计算机等 信息技术的应用起步…

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

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

代码随想录 Leetcode707. 设计链表

题目: 代码(首刷看解析 2024年1月11日): class MyLinkedList { private:struct ListNode{int val;ListNode* next;ListNode(int val):val(val),next(nullptr){}};int size;ListNode* dummyHead; public:MyLinkedList() {dummyHead new List…

Jenkins-执行脚本案例-初步认识JenKins的使用

环境搭建 docker pull jenkins/jenkins:2.440 docker run -d -p 10240:8080 -p 10241:50000 -v /env/liyong/data/docker/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:2.440 #在挂载的目录下去修改仓库地址 vim hudson…