第四课-XTuner 大模型低成本微调实战

一、Finetune 简介

1.1 Finetune技术路线

从参数规模的角度,大模型(LLM)的微调分成两条技术路线:

一条是对全量的参数,进行全量的训练,这条路径叫全量微调FFT(Full Fine Tuning)。

一条是只对部分的参数进行训练,这条路径叫PEFT(Parameter-Efficient Fine Tuning)。

FFT的原理,就是用特定的数据,对大模型进行训练,将W变成W,W相比W ,最大的优点就是上述特定数据领域的表现会好很多。

但FFT也会带来一些问题,影响比较大的问题,主要有以下两个:

  1. 一个是训练的成本会比较高,因为微调的参数量跟预训练的是一样的多的;
  2. 一个是叫灾难性遗忘(Catastrophic Forgetting),用特定训练数据去微调可能会把这个领域的表现变好,但也可能会把原来表现好的别的领域的能力变差。

PEFT主要想解决的问题,就是FFT存在的上述两个问题,PEFT也是目前比较主流的微调方案。

从训练数据的来源、以及训练的方法的角度,大模型的微调有以下几条技术路线:

  1. 监督式微调SFT(Supervised Fine Tuning),这个方案主要是用人工标注的数据,用传统机器学习中监督学习的方法,对大模型进行微调;
  2. 基于人类反馈的强化学习微调RLHF(Reinforcement Learning with Human Feedback),这个方案的主要特点是把人类的反馈,通过强化学习的方式,引入到对大模型的微调中去,让大模型生成的结果,更加符合人类的一些期望;
  3. 基于AI反馈的强化学习微调RLAIF(Reinforcement Learning with AI Feedback),这个原理大致跟RLHF类似,但是反馈的来源是AI。这里是想解决反馈系统的效率问题,因为收集人类反馈,相对来说成本会比较高、效率比较低。

不同的分类角度,只是侧重点不一样,对同一个大模型的微调,也不局限于某一个方案,可以多个方案一起。
微调的最终目的,是能够在可控成本的前提下,尽可能地提升大模型在特定领域的能力。

1.2 增量预训练和指令跟随

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

在这里插入图片描述

指令跟随微调是为了得到能够实际对话的 LLM。
在实际对话时,通常会有三种角色

System: 给定一些上下文信息,比如“你是一个安全的 AI 助手”
User: 实际用户,会提出一些问题,比如“世界第一高峰是?”
Assistant : 根据 User 的输入,结合 System 的上下文信息,做出回答,比如“珠穆朗玛峰”

对话模板

在这里插入图片描述

二、LoRA和QLoRA

LoRA和QLoRA是最常用的两种微调方法。

1.LoRA

LoRA(Low-Rank Adaptation of Large Language Models),直译为大语言模型的低阶自适应。LoRA 的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型参数参与微调类似的效果。
LLM 的参数量主要集中在模型中的 Linear,训练这些参数会耗费大量的显存,LoRA 通过在原本的Linear 旁,新增一个支路,包含两个连续的小 Linear,新增的这个支路通常叫做 Adapter。Adapter 参数量远小于原本的 Linear,能大幅降低训练的显存消耗。

2.QLoRA

QLoRA就是量化版的LoRA,它是在LoRA的基础上,进行了进一步的量化,将原本用16bit表示的参数,降为用4bit来表示,可以在保证模型效果的同时,极大地降低成本。量化(Quantization),是一种在保证模型效果基本不降低的前提下,通过降低参数的精度,来减少模型对于计算资源的需求的方法。量化的核心目标是降成本,降训练成本,特别是降后期的推理成本。

在这里插入图片描述

  1. Full Finetuning: Base Model 参与训练并更新参数,需要保存 Base Model 中参数的优化器状态.
  2. LoRA: Base Model 只参与 Forward,只有 Adapter 部分 Backward 更新参数,只需保存
    Adapter 中参数的优化器状态。
  3. QLoRA:Base Model 量化为 4-bit,优化器状态在 CPU 与 GPU 间 Offload,Base Model 只参与
    Forward,只有 Adapter 部分 Backward 更新参数,只需保存 Adapter 中参数的优化器状态。

三、 XTuner

XTuner 是由上海人工智能实验室开发的低成本大模型训练、微调工具箱,通过 XTuner, 最低只需 8GB 显存即可微调 7B 模型,仅需 24GB 显存,就可以微调 InternLM-20B 系列模型。
在这里插入图片描述
目前,XTuner 已支持 InternLM-20B 模型的 LoRA、QLoRA、全参数微调,集成 DeepSpeed ZeRO 训练优化技巧,并支持诸如 Alpaca、OpenAssistant、MSAgent 等热门开源数据集,用户可以“开箱即用”!
XTuner GitHub 链接:
https://link.zhihu.com/?target=https%3A//github.com/InternLM/xtuner

四、实战

实战环节:
https://github.com/InternLM/tutorial/tree/main/xtuner
微调自己的私人助手:
https://github.com/InternLM/tutorial/blob/main/xtuner/self.md
视频教程:
https://www.bilibili.com/video/BV13t4y1o75X/

参考:
https://blog.youkuaiyun.com/qq_42672770/article/details/134656083
https://zhuanlan.zhihu.com/p/663510798

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值