Spaces:
Running
Running
🚀 Speed Benchmark
- XTuner 与 LLaMA-Factory 在 Llama2-7B 模型上的训练效率对比
- XTuner 与 LLaMA-Factory 在 Llama2-70B 模型上的训练效率对比
🎉 更新
- [2024/07] 支持 MiniCPM 模型!
- [2024/07] 支持训练 DPO, ORPO 还有 Reward Model ! 并且能够支持打包数据以及序列并行功能! 请参考 文档 了解更多信息。
- [2024/07] 支持 InternLM 2.5 模型!
- [2024/06] 支持 DeepSeek V2 models! 训练速度提升一倍!
- [2024/04] 多模态大模型 LLaVA-Phi-3-mini 发布!快速开始请查阅此文档!
- [2024/04] 多模态大模型 LLaVA-Llama-3-8B 和 LLaVA-Llama-3-8B-v1.1 发布!快速开始请查阅此文档!
- [2024/04] 支持 Llama 3 模型!
- [2024/04] 支持序列并行训练策略以实现语言模型超长上下文训练![文档] [速度基准]
- [2024/02] 支持 Gemma 模型!
- [2024/02] 支持 Qwen1.5 模型!
- [2024/01] 支持 InternLM2 模型!同时,最新版的多模态大模型 LLaVA-Internlm2-7B / 20B 发布,其表现出强大的性能!
- [2024/01] 支持 DeepSeek-MoE 模型!20GB 显存即可实现 QLoRA 微调,4x80GB 即可实现全参数微调。快速开始请查阅相关配置文件!
- [2023/12] 🔥 支持多模态模型 VLM(LLaVA-v1.5)预训练和指令微调!快速开始请查阅此文档!
- [2023/12] 🔥 支持 Mixtral 8x7B 模型!快速开始请查阅此文档!
- [2023/11] 支持 ChatGLM3-6B 模型!
- [2023/10] 支持 MSAgent-Bench 数据集,并且微调所得大语言模型可应用至 Lagent 框架!
- [2023/10] 优化数据处理逻辑以兼容
system
字段,相关细节请查阅文档! - [2023/09] 支持 InternLM-20B 系列模型!
- [2023/09] 支持 Baichuan2 系列模型!
- [2023/08] XTuner 正式发布!众多微调模型已上传至 HuggingFace!
📖 介绍
XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。
高效
- 支持大语言模型 LLM、多模态图文模型 VLM 的预训练及轻量级微调。XTuner 支持在 8GB 显存下微调 7B 模型,同时也支持多节点跨设备微调更大尺度模型(70B+)。
- 自动分发高性能算子(如 FlashAttention、Triton kernels 等)以加速训练吞吐。
- 兼容 DeepSpeed 🚀,轻松应用各种 ZeRO 训练优化策略。
灵活
- 支持多种大语言模型,包括但不限于 InternLM、Mixtral-8x7B、Llama 2、ChatGLM、Qwen、Baichuan。
- 支持多模态图文模型 LLaVA 的预训练与微调。利用 XTuner 训得模型 LLaVA-InternLM2-20B 表现优异。
- 精心设计的数据管道,兼容任意数据格式,开源数据或自定义数据皆可快速上手。
- 支持 QLoRA、LoRA、全量参数微调等多种微调算法,支撑用户根据具体需求作出最优选择。
全能
- 支持增量预训练、指令微调与 Agent 微调。
- 预定义众多开源对话模版,支持与开源或训练所得模型进行对话。
- 训练所得模型可无缝接入部署工具库 LMDeploy、大规模评测工具库 OpenCompass 及 VLMEvalKit。
🔥 支持列表
模型 | 数据集 | 数据格式 | 微调算法 |
🛠️ 快速上手
安装
推荐使用 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]'
微调
XTuner 支持微调大语言模型。数据集预处理指南请查阅文档。
步骤 0,准备配置文件。XTuner 提供多个开箱即用的配置文件,用户可以通过下列命令查看:
xtuner list-cfg
或者,如果所提供的配置文件不能满足使用需求,请导出所提供的配置文件并进行相应更改:
xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH} vi ${SAVE_PATH}/${CONFIG_NAME}_copy.py
步骤 1,开始微调。
xtuner train ${CONFIG_NAME_OR_PATH}
例如,我们可以利用 QLoRA 算法在 oasst1 数据集上微调 InternLM2.5-Chat-7B:
# 单卡 xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2 # 多卡 (DIST) NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2 (SLURM) srun ${SRUN_ARGS} xtuner train internlm2_5_chat_7b_qlora_oasst1_e3 --launcher slurm --deepspeed deepspeed_zero2
步骤 2,将保存的 PTH 模型(如果使用的DeepSpeed,则将会是一个文件夹)转换为 HuggingFace 模型:
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH} ${SAVE_PATH}
对话
XTuner 提供与大语言模型对话的工具。
xtuner chat ${NAME_OR_PATH_TO_LLM} --adapter {NAME_OR_PATH_TO_ADAPTER} [optional arguments]
例如:
与 InternLM2.5-Chat-7B 对话:
xtuner chat internlm/internlm2-chat-7b --prompt-template internlm2_chat
更多示例,请查阅文档。
部署
步骤 0,将 HuggingFace adapter 合并到大语言模型:
xtuner convert merge \ ${NAME_OR_PATH_TO_LLM} \ ${NAME_OR_PATH_TO_ADAPTER} \ ${SAVE_PATH} \ --max-shard-size 2GB
步骤 1,使用任意推理框架部署微调后的大语言模型,例如 LMDeploy 🚀:
pip install lmdeploy python -m lmdeploy.pytorch.chat ${NAME_OR_PATH_TO_LLM} \ --max_new_tokens 256 \ --temperture 0.8 \ --top_p 0.95 \ --seed 0
评测
- 推荐使用一站式平台 OpenCompass 来评测大语言模型,其目前已涵盖 50+ 数据集的约 30 万条题目。
🤝 贡献指南
我们感谢所有的贡献者为改进和提升 XTuner 所作出的努力。请参考贡献指南来了解参与项目贡献的相关指引。
🎖️ 致谢
🖊️ 引用
@misc{2023xtuner,
title={XTuner: A Toolkit for Efficiently Fine-tuning LLM},
author={XTuner Contributors},
howpublished = {\url{https://github.com/InternLM/xtuner}},
year={2023}
}
开源许可证
该项目采用 Apache License 2.0 开源许可证。同时,请遵守所使用的模型与数据集的许可证。