🚀 Speed Benchmark
- XTuner 与 LLaMA-Factory 在 Llama2-7B 模型上的训练效率对比
- XTuner 与 LLaMA-Factory 在 Llama2-70B 模型上的训练效率对比
🎉 更新
📖 介绍
XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。
高效
- 支持大语言模型 LLM、多模态图文模型 VLM 的预训练及轻量级微调。XTuner 支持在 8GB 显存下微调 7B 模型,同时也支持多节点跨设备微调更大尺度模型(70B+)。
- 自动分发高性能算子(如 FlashAttention、Triton kernels 等)以加速训练吞吐。
- 兼容 DeepSpeed 🚀,轻松应用各种 ZeRO 训练优化策略。
灵活
全能
🔥 支持列表
🛠️ 快速上手
安装
-
推荐使用 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-Chat-7B:
# 单卡
xtuner train internlm2_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
# 多卡
(DIST) NPROC_PER_NODE=${GPU_NUM} xtuner train internlm2_chat_7b_qlora_oasst1_e3 --deepspeed deepspeed_zero2
(SLURM) srun ${SRUN_ARGS} xtuner train internlm2_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-Chat-7B, oasst1 adapter 对话:
xtuner chat internlm/internlm2-chat-7b --adapter xtuner/internlm2-chat-7b-qlora-oasst1 --prompt-template internlm2_chat
与 LLaVA-InternLM2-7B 对话:
xtuner chat internlm/internlm2-chat-7b --visual-encoder openai/clip-vit-large-patch14-336 --llava xtuner/llava-internlm2-7b --prompt-template internlm2_chat --image $IMAGE_PATH
更多示例,请查阅文档。
部署
-
步骤 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
🔥 追求速度更快、显存占用更低的推理?欢迎体验 LMDeploy 提供的 4-bit 量化!使用指南请见文档。
评测
- 推荐使用一站式平台 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 开源许可证。同时,请遵守所使用的模型与数据集的许可证。