Llama 3 模型微调实战指南:基于 XTuner 的 QLoRA 方法
Llama 3 模型的技术特性及基于 XTuner 框架的 QLoRA 微调实战流程。内容涵盖环境配置、数据集格式化、配置文件参数解析、模型训练与合并以及推理验证步骤。通过具体代码示例,指导用户如何在有限算力下完成大模型的个性化定制,包括解决显存溢出等常见问题的调优方案,适用于希望掌握大模型落地技术的开发者。

Llama 3 模型的技术特性及基于 XTuner 框架的 QLoRA 微调实战流程。内容涵盖环境配置、数据集格式化、配置文件参数解析、模型训练与合并以及推理验证步骤。通过具体代码示例,指导用户如何在有限算力下完成大模型的个性化定制,包括解决显存溢出等常见问题的调优方案,适用于希望掌握大模型落地技术的开发者。

Meta 近期发布了 Llama 3,包含 8B 和 70B 参数量的模型。相比 Llama 2,Llama 3 在多个方面进行了显著升级:
XTuner 团队测试显示,使用 2 张 A100 80G GPU 即可对 Llama 3 8B 进行全量微调或高效微调。对于 QLoRA 微调,显存需求更低,消费级显卡亦可尝试。
建议使用 Linux 环境,安装 Python 3.10+ 及 PyTorch 2.1.2。
conda create -n llama3 python=3.10
conda activate llama3
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
conda install git
git-lfs install
通过 OpenXLab 或 HuggingFace 下载 Meta-Llama-3-8B-Instruct 模型。
mkdir -p ~/model
cd ~/model
git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
若使用云开发环境,可直接软链接共享模型路径:
ln -s /root/share/new_models/meta-llama/Meta-Llama-3-8B-Instruct \
~/model/Meta-Llama-3-8B-Instruct
XTuner 是 InternLM 推出的大模型微调工具包。
cd ~
git clone -b v0.1.18 https://github.com/InternLM/XTuner
cd XTuner
pip install -e .
微调需要格式化的对话数据。标准格式为 JSONL,包含 conversation 字段,内含 system, input, output。
以下脚本用于生成自我认知训练数据示例:
import json
# 输入你的名字或者机构名称
name = '您的团队名称'
n = 2000
data = [
{
"conversation": [
{
"system":"你是一个懂中文的小助手",
"input": "你是(请用中文回答)",
"output": "您好,我是 {},一个由 {} 打造的人工智能助手,请问有什么可以帮助您的吗?".format(name, name)
}
]
}
]
for i in range(n):
data.append(data[0])
with open('data/personal_assistant.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
生成的数据文件应放置在 ~/Llama3-XTuner-CN/data/ 目录下。
XTuner 使用 Python 脚本定义训练配置。关键参数说明如下:
model_name_or_path: 基座模型路径。lora_r: LoRA 秩,通常设为 8 或 16。lora_alpha: LoRA 缩放系数,通常为 lora_r * 2。epochs: 训练轮数,过拟合风险需控制。batch_size: 根据显存调整。配置文件示例路径:configs/assistant/llama3_8b_instruct_qlora_assistant.py。
执行训练命令,指定配置文件和工作目录:
cd /root/project/llama3-ft
xtuner train configs/assistant/llama3_8b_instruct_qlora_assistant.py --work-dir /root/llama3_pth
训练完成后,将 Adapter 权重转换为 HuggingFace 格式:
xtuner convert pth_to_hf /root/llama3_pth/llama3_8b_instruct_qlora_assistant.py \
/root/llama3_pth/iter_500.pth \
/root/llama3_hf_adapter
合并模型以便直接部署:
export MKL_SERVICE_FORCE_INTEL=1
xtuner convert merge /root/model/Meta-Llama-3-8B-Instruct \
/root/llama3_hf_adapter \
/root/llama3_hf_merged
使用 Streamlit 部署 Web Demo 进行验证:
streamlit run ~/Llama3-XTuner-CN/tools/internstudio_web_demo.py \
/root/llama3_hf_merged
访问本地服务地址,输入'你是',模型应能正确输出预设的自我认知信息。
per_device_train_batch_size 或启用 gradient_checkpointing。flash-attn 加速库。通过 XTuner 进行 Llama 3 的 QLoRA 微调,可以在较低资源消耗下实现模型个性化定制。本文介绍了从环境搭建、数据处理到训练部署的全流程。在实际生产中,建议结合具体业务场景构建多样化指令集,并持续监控模型表现以迭代优化。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online