使用 XTuner 微调 InternLM#
XTuner 是一个高效的大语言模型微调工具箱。
安装#
pip install xtuner
基本微调#
准备配置文件#
xtuner list-cfg -p internlm3
xtuner copy-cfg internlm3_8b_qlora_alpaca_e3 ./
开始训练#
xtuner train internlm3_8b_qlora_alpaca_e3_copy.py --deepspeed deepspeed_zero2
模型转换#
# 将 PTH 模型转换为 HuggingFace 模型
xtuner convert pth_to_hf internlm3_8b_qlora_alpaca_e3_copy.py ./work_dirs/internlm3_8b_qlora_alpaca_e3_copy/epoch_3.pth ./hf_model
# 将 HuggingFace 模型合并到原模型
xtuner convert merge InternLM/internlm3-8b-instruct ./hf_model ./merged_model
数据格式#
XTuner 支持多种数据格式,包括:
Alpaca 格式#
[
{
"instruction": "给出三个保持健康的建议。",
"input": "",
"output": "以下是保持健康的三个建议:\n1. 保持均衡的饮食\n2. 定期进行体育锻炼\n3. 保证充足的睡眠"
}
]
对话格式#
[
{
"conversation": [
{
"role": "user",
"content": "你好"
},
{
"role": "assistant",
"content": "你好!我是InternLM,很高兴为您服务。"
}
]
}
]
高级配置#
LoRA 配置#
# LoRA 配置
lora_config = dict(
r=64,
lora_alpha=16,
lora_dropout=0.1,
bias='none',
task_type='CAUSAL_LM'
)
训练参数#
# 训练配置
train_cfg = dict(
max_epochs=3,
dataloader=dict(
batch_size=1,
num_workers=0,
),
optim_wrapper=dict(
optimizer=dict(
type='AdamW',
lr=2e-4,
weight_decay=0.01
)
)
)
评估和测试#
# 使用微调后的模型进行对话
xtuner chat ./merged_model --prompt-template internlm3_chat