- [2023/10] 支持 ChatGLM3-6B-Base 模型!
- [2023/10] 支持 MSAgent-Bench 数据集,并且微调所得大语言模型可应用至 Lagent 框架!
- [2023/10] 优化数据处理逻辑以兼容
system
字段,相关细节请查阅文档! - [2023/09] 支持 InternLM-20B 系列模型!
- [2023/09] 支持 Baichuan2 系列模型!
- [2023/08] XTuner 正式发布!众多微调模型已上传至 HuggingFace!
XTuner 是一个轻量级微调大语言模型的工具库,由 MMRazor 和 MMDeploy 团队联合开发。
- 轻量级: 支持在消费级显卡上微调大语言模型。对于 7B 参数量,微调所需的最小显存仅为 8GB,这使得用户可以使用几乎任何显卡(甚至免费资源,例如Colab)来微调获得自定义大语言模型助手。
- 多样性: 支持多种大语言模型(InternLM、Llama2、ChatGLM、Qwen、Baichuan2, ...),数据集(MOSS_003_SFT, Alpaca, WizardLM, oasst1, Open-Platypus, Code Alpaca, Colorist, ...)和微调算法(QLoRA、LoRA),支撑用户根据自身具体需求选择合适的解决方案。
- 兼容性: 兼容 DeepSpeed 🚀 和 HuggingFace 🤗 的训练流程,支撑用户无感式集成与使用。
模型 | 数据集 | 数据格式 | 微调算法 |
-
推荐使用 conda 先构建一个 Python-3.10 的虚拟环境
conda create --name xtuner-env python=3.10 -y conda activate xtuner-env
-
通过 pip 安装 XTuner:
pip install xtuner
亦可集成 DeepSpeed 安装:
pip install '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}
-
步骤 1,开始微调。
xtuner train ${CONFIG_NAME_OR_PATH}
例如,我们可以利用 QLoRA 算法在 oasst1 数据集上微调 InternLM-7B:
# 单卡 xtuner train internlm_7b_qlora_oasst1_e3 # 多卡 NPROC_PER_NODE=${GPU_NUM} xtuner train internlm_7b_qlora_oasst1_e3
更多示例,请查阅文档。
-
步骤 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]
例如:
与 InternLM-7B + Alpaca-enzh adapter 对话:
xtuner chat internlm/internlm-7b --adapter xtuner/internlm-7b-qlora-alpaca-enzh --prompt-template internlm_chat --system-template alpaca
与 Llama2-7b + MOSS-003-SFT adapter 对话:
xtuner chat meta-llama/Llama-2-7b-hf --adapter xtuner/Llama-2-7b-qlora-moss-003-sft --bot-name Llama2 --prompt-template moss_sft --system-template moss_sft --with-plugins calculate solve search --command-stop-word "<eoc>" --answer-stop-word "<eom>" --no-streamer
更多示例,请查阅文档。
-
步骤 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 量化!使用指南请见文档。
🎯 我们正在与 LMDeploy 紧密合作,以实现基于插件对话的部署!
- 推荐使用一站式平台 OpenCompass 来评测大语言模型,其目前已涵盖 50+ 数据集的约 30 万条题目。
我们感谢所有的贡献者为改进和提升 XTuner 所作出的努力。请参考贡献指南来了解参与项目贡献的相关指引。
该项目采用 Apache License 2.0 开源许可证。同时,请遵守所使用的模型与数据集的许可证。