InternLM Xtuner Qlora 微调

Xtuner 简介

在这里插入图片描述

XTuner 是由上海人工智能实验室开发的一款低成本大模型训练工具箱。它以高效、灵活和全能的特性,成为轻量化大模型微调的理想选择。借助 XTuner,用户仅需 8GB 显存即可对 InternLM2-7B 模型进行微调,从而定制出独一无二的 AI 助手。这一创新工具极大地降低了微调大型模型的门槛,使得更多研究者和开发者能够轻松地进行个性化 AI 应用的开发。

仓库地址:https://github.com/InternLM/xtuner

Xtuner 特点概览

高效性能

  • 大模型支持:Xtuner 能够在仅 8GB 显存的环境下微调 7B 模型,同时支持跨多节点的更大规模模型(70B+)微调。
  • 算子加速:自动集成高性能算子,如 FlashAttention 和 Triton kernels,显著提升训练效率。
  • 深度优化:与 DeepSpeed 兼容,利用 ZeRO 优化策略,进一步提高训练性能。

灵活适应

  • 模型多样性:支持多种大语言模型,包括 InternLM、Mixtral-8x7B、Llama2、ChatGLM、Qwen 和 Baichuan 等。
  • 多模态能力:支持 LLaVA 等多模态图文模型的预训练与微调,如表现出色的 LLaVA-InternLM2-20B 模型。
  • 数据管道:设计灵活的数据管道,兼容各种数据格式,无论是开源数据还是自定义数据,都能快速适应。
  • 微调算法:提供 QLoRA、LoRA 及全量参数微调等多种微调算法,满足不同需求。

全能应用

  • 训练模式:支持增量预训练、指令微调及 Agent 微调,适应多种训练场景。
  • 对话模板:预设丰富的开源对话模板,便于与各类模型进行交互。
  • 无缝集成:训练后的模型可直接部署于 LMDeploy,或通过 OpenCompass 和 VLMEvalKit 进行大规模评测。

环境准备

创建工作目录

创建本次微调实践的工作目录 /root/autodl-tmp/ft-learn

# 创建微调工作目录
mkdir -p /root/autodl-tmp/ft-learn

# 创建微调数据集存放目录
mkdir -p /root/autodl-tmp/ft-learn/dataset

# 创建微调配置文件存放目录
mkdir -p /root/autodl-tmp/ft-learn/config

安装

  • 推荐使用 conda 先构建一个 Python-3.10 的虚拟环境

    conda create --name xtuner-env python=3.10 -y
    conda activate xtuner-env
    
  • 通过 pip 安装 XTuner:

    pip install -U xtuner
    

    亦可集成 DeepSpeed 安装:

    pip install -U 'xtuner[deepspeed]'
    
  • 从源码安装 XTuner:

    git clone https://github.com/InternLM/xtuner.git
    cd xtuner
    pip install -e '.[all]'
    

安装依赖

# 升级pip
python -m pip install --upgrade pip
# 安装python依赖
pip install modelscope==1.9.5
pip install transformers==4.36.2
pip install streamlit==1.2
### 使用 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/ ``` 这样就可以轻松地与其他依赖该生态系统的项目集成起来了。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果粒橙_LGC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值