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

参考教程:XTuner

Finetune简介

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

增量预训练微调

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

指令跟随微调

使用场景:让模型学会对话模版,根据人类指令进行对话
训练数据:高质量的对话、问答数据
在这里插入图片描述

在这里插入图片描述
在实际对话时,经常有三种角色

  • system 给定一些上下文信息 比如:你是一个xxx
  • user 实际用户 给提出一些问题
  • Assistant 根据user的输入,结合system的上下文信息 作出回答
    在这里插入图片描述
    在这里插入图片描述

LoRA

LoRA是通过在原本的Linear旁,新增一个支路,包含两个连续的小Linear 新增的这个支路通常叫做Adapter
Adapter参数远小于原本的Linear 能大幅减低训练的显存消耗。
在这里插入图片描述
在这里插入图片描述

XTuner介绍

功能亮点

适配多种生态

  • 多种微调算法
  • 适配多种开源生态
  • 自动优化加速
    在这里插入图片描述

8GB显存玩转LLM

Flash Attention 和 DeepSpeed ZeRO是XTuner最重要的两个优化技巧

Flash Attention

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

DeepSpeed ZeRO

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

在这里插入图片描述

上手操作

平台

Ubuntu + Anaconda + CUDA/CUDNN + 8GB nvidia显卡

激活环境

conda create --name xtuner0.1.9 python=3.10 -y
mkdir xtuner019 && cd xtuner019
git clone -b v0.1.9  https://github.com/InternLM/xtuner
# 进入源码目录
cd xtuner

# 从源码安装 XTuner
pip install -e '.[all]'

准备在 oasst1 数据集上微调 internlm-7b-chat

# 创建一个微调 oasst1 数据集的工作路径,进入
mkdir ~/ft-oasst1 && cd ~/ft-oasst1

微调

准备配置文件

XTuner 提供多个开箱即用的配置文件,用户可以通过下列命令查看:
# 列出所有内置配置
xtuner list-cfg

在这里插入图片描述

假如显示bash: xtuner: command not found的话可以考虑在终端输入 export PATH=$PATH:‘/root/.local/bin’
拷贝一个配置文件到当前目录: # xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}

cd ~/ft-oasst1
xtuner copy-cfg internlm_chat_7b_qlora_oasst1_e3 .

配置文件名的解释:
在这里插入图片描述

最近更新

  1. TCP协议是安全的吗?

    2024-01-12 11:48:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-12 11:48:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-12 11:48:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-12 11:48:02       18 阅读

热门阅读

  1. Devops相关问题及答案(2024)

    2024-01-12 11:48:02       29 阅读
  2. 【Pytorch简介】1.Introduction 简介

    2024-01-12 11:48:02       32 阅读
  3. Python基础(二十六、封装、继承)

    2024-01-12 11:48:02       34 阅读
  4. springcloud gateway动态路由

    2024-01-12 11:48:02       38 阅读
  5. windows编译的rpm下载后配置文件格式转换

    2024-01-12 11:48:02       41 阅读
  6. 设计模式的艺术P1基础—2.1 uml概述

    2024-01-12 11:48:02       30 阅读
  7. Cocoapad安装和依赖添加

    2024-01-12 11:48:02       28 阅读
  8. 【Python】如何实现交叉匹配后去重

    2024-01-12 11:48:02       34 阅读
  9. 二级C语言备考3

    2024-01-12 11:48:02       21 阅读