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}
    

八、附:资源链接

中途中断训练

修改下面的值

load_from = None

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

load_from=\qwen1_5_0_5b_chat_qlora_alpaca_e3\iter_2000.pth
### 使用 XTuner 进行大模型微调的方法教程 #### 1. 构建数据集 为了使模型能够学习特定的任务或行为,首先需要准备高质量的数据集。根据需求,可以创建一个对话形式的数据集,其中包含提问和对应的理想回答。这些数据将用于指导模型的学习方向[^1]。 ```bash # 数据集应保存为 JSONL 文件格式,每条记录是一个独立的对话样本。 { "instruction": "解释什么是机器学习", "input": "", "output": "机器学习是一种通过算法让计算机从经验中自动改进的技术..." } ``` #### 2. 配置文件编写 XTuner 的配置文件定义了训练的具体参数以及使用的模型架构等信息。以 `internlm_chat_7b` 模型为例,可以通过修改现有的 `.py` 配置模板来适配自己的任务场景[^3]。 以下是简化版配置文件的一个片段: ```python from xtuner.engine import Config model = dict( type='InternLM', version='chat-7b' ) train_dataset_type = 'CustomDataset' data_root = '/path/to/dataset' max_epochs = 3 per_device_train_batch_size = 4 gradient_accumulation_steps = 8 learning_rate = 5e-5 weight_decay = 0.01 warmup_ratio = 0.05 lr_scheduler_type = 'cosine' logging_dir = './logs' save_total_limit = 3 checkpointing_steps = 1000 fp16 = True bf16 = False deepspeed_config_path = "/root/deepspeed_zero2.json" work_dir = "./work_dirs/assistTuner" cfg = Config(locals()) ``` #### 3. 开始微调过程 利用 XTuner 提供的命令行工具可以直接运行指定配置下的微调流程。下面展示了一个典型的执行指令案例: ```bash xtuner train ./config/internlm2_5_chat_7b_qlora_alpaca_e3_copy.py \ --deepspeed deepspeed_zero2 \ --work-dir ./work_dirs/assistTuner ``` 此命令会加载预设好的超参设置并基于 DeepSpeed 技术加速计算效率,在工作目录下逐步存储中间结果与最终完成后的权重文件。 #### 4. 转换至 Hugging Face 格式 当微调完成后如果希望分享成果或者进一步部署应用,则可能需要用到标准框架支持的形式。XTuner 支持把内部生成的结果导出成兼容 Hugging Face Transformers 库的标准结构化存档[^2]。 转换操作如下所示: ```bash xtuner convert-to-hf-model \ ./work_dirs/assistTuner/best_model.pth \ /root/output/huggingface_model/ ``` 这样就可以轻松地与其他依赖该生态系统的项目集成起来了。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值