当前位置: 首页 > news >正文

XTuner学习

一、XTuner简单介绍

XTuner:大模型微调的高效实战工具

一、核心定位与技术亮点

1. 产品定位
XTuner是由上海人工智能实验室(Shanghai AI Lab)开发的一款开源大模型微调工具库,专注于降低大语言模型(LLM)和多模态模型(VLM)微调的门槛。其设计目标是让开发者在有限硬件资源(如单卡8GB显存)下,也能高效完成模型优化,支持从训练到部署的全流程。

2. 技术优势

  • 硬件适配性强
    • 单卡8GB显存即可微调70亿参数(7B)模型,支持多节点扩展至700亿参数以上模型。
    • 兼容NVIDIA 20系列及以上显卡,优化显存利用。
  • 高性能优化
    • 集成Flash Attention(并行化注意力计算)、Triton内核(高性能算子)和DeepSpeed ZeRO(显存优化策略),提升训练吞吐量。
  • 算法支持全面
    • 提供QLoRA(量化LoRA,显存占用更低)、LoRA(低秩适配)和全参数微调三种模式,适配不同需求。
    • 支持增量预训练(学习新知识)、指令微调(对话模板构建)和座席微调(角色认知强化)。
  • 数据处理灵活
    • 支持JSON、CSV等多格式数据集,通过多样本拼接优化GPU利用率,提升变长序列处理效率。
二、核心功能与应用场景

1. 主要功能

  • 一键式配置:内置多种预训练模型(如InternLM、Llama 2、ChatGLM)的配置模板,用户可通过命令行快速启动微调任务。
  • 全流程支持:涵盖数据预处理、模型训练、评估与部署,支持与部署工具(如LMDeploy)无缝集成。
  • 多模态支持:适配LLaVA等视觉-语言模型,支持图文理解与生成任务。

2. 典型应用场景

  • 个性化助手开发:通过指令微调构建垂直领域对话机器人(如医疗问诊、法律咨询服务)。
  • 行业模型定制:结合增量预训练提升模型在特定领域(如金融、医疗)的专业性。
  • 低成本长文本处理:利用显存优化技术处理超长文本(如百万级token序列)。
三、用户评价与市场对比

1. 用户反馈

  • 优势:被赞为“单卡低成本微调神器”,尤其适合初创团队或学术研究。社区认可其文档完善性(提供详细教程)和模型兼容性(支持主流开源模型)。
  • 局限性:部分用户反馈与特定模型(如部分闭源模型)的模板兼容性需进一步优化。

2. 竞品对比

工具XTunerUnslothLLaMA-Factory
硬件适配单卡8GB显存支持7B模型,扩展性强显存优化更激进,短序列速度更快支持QLoRA,硬件门槛较低
长序列支持支持百万级token训练,集成ZeRO策略短序列优势显著,长序列扩展性较弱依赖配置文件,长序列支持有限
算法多样性QLoRA/LoRA/全参数微调聚焦速度优化,算法选择较少以QLoRA为主,功能较单一
社区生态开源活跃,教程丰富,团队响应快开源但社区活跃度较低功能迭代快,但文档支持较弱

---------------------------------------- 以下为Linux环境ubuntu22.04,windows环境不行---------------------------

二、创建环境

步骤 0. 使用 conda 先构建一个 Python-3.10 的虚拟环境

conda create --name xtuner python=3.10 -y
conda activate xtuner
#####
cd /mnt/workspace/Anaconda3/etc
sudo vi /etc/profile
export PATH=$PATH:/mnt/workspace/Anaconda3/bin
source ./profile.d/conda.sh
conda --version

二、安装 XTuner

步骤 1. 安装 XTuner

方案a: 通过 pip 直接安装

pip install -U 'xtuner[deepspeed]'

方案b: 从源码安装

git clone https://github.com/InternLM/xtuner.git
cd xtuner
pip install -e '.[deepspeed]'
xtuner) root@dsw-986081-844988d967-76t98:/mnt/workspace/demo06/xtuner# pip install -e '.[deepspeed]'

在这里插入图片描述

pip install -e '.[deepspeed]'之前需要修改为如下版本,不然会报错。
在这里插入图片描述

三、下载模型

  • 使用modelscope下载预训练模型(以Qwen1.5-0.5B-Chatt为例):
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen1.5-0.5B-Chat',cache_dir='/root/llm/Qwen1.5-0.5B-Chat')

四、 微调配置

  • 复制配置文件
    xtuner\xtuner\configs\qwen\qwen1_5\qwen1_5_0_5b_chat\qwen1_5_0_5b_chat_qlora_alpaca_e3.py复制到根目录。
  • 修改关键配置
  # 预训练模型路径
  pretrained_model_name_or_path = '/root/llm/Qwen1.5-0.5B-Chat'
  # 微调数据文件路径
  data_files = '/root/public/data/target_data.json'
  # 最大文本长度
  max_length = 512
  # 批大小
  batch_size = 2
  # 最大训练轮数
  max_epochs = 3
  # 验证数据示例
  evaluation_inputs = [
      '只剩一个心脏了还能活吗?', '爸爸再婚,我是不是就有了个新娘?',
      '樟脑丸是我吃过最难吃的硬糖有奇怪的味道怎么还有人买',
      '马上要上游泳课了,昨天洗的泳裤还没干,怎么办',
      '我只出生了一次,为什么每年都要庆生'
  ]
  # 数据集加载配置
  dataset = dict(type=load_dataset, path="json", data_files=data_files)
  dataset_map_fn = None
绝对路径

在这里插入图片描述

如果是需要批量训练

# dataset.json可按照LLama Factory的dataset_info.json配置
alpaca_en_path = r"D:\data\dataset.json"
dataset=dict(type=load_dataset, path=alpaca_en_path) 
dataset_map_fn=alpaca_map_fn

五、微调训练

  • 启动微调脚本
绝对路径 不然找不到
 xtuner train xtuner\xtuner\configs\qwen\qwen1_5\qwen1_5_0_5b_chat\qwen1_5_0_5b_chat_qlora_alpaca_e3.py
 比如说:
 (xtuner) root@dsw-986081-844988d967-76t98:/mnt/workspace/demo06# xtuner train /mnt/workspace/demo06/qwen1_5_0_5b_chat_qlora_alpaca_e3.py

如下为训练正常启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、 模型转换

  • 将PTH模型转换为HuggingFace格式
  xtuner convert pth_to_hf ${FINETUNE_CFG} ${PTH_PATH} ${SAVE_PATH}
  # 示例:
  xtuner convert pth_to_hf qwen1_5_0_5b_chat_qlora_alpaca_e3.py ./iter_2000.pth /mnt/workspace/llm

七、 模型合并(可选)

  • 合并LoRA/QLoRA适配器与原LLM参数
    xtuner convert merge ${LLM} ${LLM_ADAPTER} ${SAVE_PATH}
    

八、附:资源链接

  • X-Tuner中文文档:https://xtuner.readthedocs.io/zh-cn/latest/index.html

中途中断训练

修改下面的值

load_from = None

比如说你在iter_2000.pth中断了,那么可以继续从这里开始训练

load_from=\qwen1_5_0_5b_chat_qlora_alpaca_e3\iter_2000.pth

相关文章:

  • WHAT - Typescript 定义元素类型
  • 大数据(7.2)Kafka万亿级数据洪流下的架构优化实战:从参数调优到集群治理
  • 数据结构与算法之ACM Fellow-算法3.4 散列表
  • Unity 设置弹窗Tips位置
  • LLaMA-Factory从安装到微调全流程
  • Linux上搭建NFS共享存储
  • SpringBoot项目集成Seata 2.0.0
  • Kubernetes核心架构:从组件协同到工作原理
  • LED恒流驱动驱动电路原理图 LM3406HV-Q1
  • SpringBoot 为何启动慢
  • 第1课:MCP服务协议核心架构解析
  • Cursor中rules配置参考-202504版(含前后端Golang/TypeScript/Kotlin等)
  • Android 自己的智能指针
  • leetcode:905. 按奇偶排序数组(python3解法)
  • 解读json.loads函数参数
  • 【免费公测】可遇AI直播/无人直播/矩阵直播/AI场控
  • 微信小程序跳6
  • CondaError: Run ‘conda init‘ before ‘conda activate‘
  • 大数据(7.1)Kafka实时数据采集与分发的企业级实践:从架构设计到性能调优
  • 蓝桥杯基础数论入门
  • Wordpress+仿站+工具/搜索引擎优化代理
  • wordpress文章页名称/亚马逊seo什么意思
  • 国外购物独立网站建设/网络安全
  • 有什么好的网站可以接单子做/360站长平台
  • 琶洲网站建设/网店代运营公司靠谱吗
  • 佛山最好的网站建设/seo网络推广是什么意思