使用 LLaMA-Factory 训练和微调 LLaMA3 模型指南
本文将探讨如何使用 LLaMA-Factory 工具对 LLaMA3 模型进行微调。随着人工智能领域的不断发展,微调大语言模型(LLM)的过程正变得日益便捷。LLaMA-Factory 作为一个高效且低成本的微调框架,支持对 100 多个模型进行微调,简化了配置过程。
本文详细讲解了基于 LLaMA-Factory 框架微调 LLaMA3 模型的完整流程。涵盖环境配置、依赖安装、数据集处理、WebUI 可视化操作及命令行训练脚本编写。重点介绍了 LoRA 量化微调技术以降低显存占用,并包含推理测试步骤。旨在帮助开发者高效完成大语言模型的定制化训练。

本文将探讨如何使用 LLaMA-Factory 工具对 LLaMA3 模型进行微调。随着人工智能领域的不断发展,微调大语言模型(LLM)的过程正变得日益便捷。LLaMA-Factory 作为一个高效且低成本的微调框架,支持对 100 多个模型进行微调,简化了配置过程。
微调涉及调整预训练模型或基础模型的参数,使其适应特定任务或数据集。这个过程包括向模型提供新数据并修改其权重、偏差和某些参数。通过这种方式,可以让模型在新任务上获得更好的表现,而无需从头开始开发一个模型,从而节省时间和资源。
通常,当创建新的大语言模型时,它会在大量文本数据上进行训练。在预训练阶段之后,该模型会被进行微调,并采取安全措施,以确保其避免生成有害或有毒的响应。微调解决了让模型适应特定需求的问题。
LLaMA Factory 能够高效且低成本地支持对 100 多个模型进行微调。它提供了友好的用户界面(LLama Board),用户可以通过简单的滑块轻松更改参数,如 dropout、epochs、批次大小等。此外,它还支持多种高级算法,如 LoRA、GaLore 等,并提供 Flash Attention、位置编码等功能。
LLama Board 可以帮助人们调整和改进语言模型的性能,而无需了解如何编写代码。它就像一个仪表板,让你可以轻松地自定义语言模型如何学习和处理信息。
为了完成微调任务,我们需要一个具备 GPU 算力的云笔记本环境。以下是基于 Python 环境的标准安装步骤。
首先,我们将克隆官方仓库并进入目录。
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
接下来,我们将安装必要的库。推荐使用 Unsloth 以加速微调过程,同时安装 xformers 和 bitsandbytes 以优化显存使用。
# 安装 unsloth
pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
# 安装 xformers
pip install --no-deps xformers==0.0.25
# 安装 bitsandbytes
pip install .[bitsandbytes]
# 修复 urllib3 版本冲突
pip install 'urllib3<2'
确保 GPU 可用并查看显存情况。
!nvidia-smi
导入 torch 并检查 CUDA 是否可用。
import torch
try:
assert torch.cuda.is_available() is True
except AssertionError:
print("Your GPU is not setup!")
我们可以使用仓库附带的数据集,也可以创建自定义数据集。以下示例展示了如何修改 identity.json 数据集以适配 LLaMA3。
import json
%cd /notebooks/LLaMA-Factory
MODEL_NAME = "Llama-3"
with open("/notebooks/LLaMA-Factory/data/identity.json", "r", encoding="utf-8") as f:
dataset = json.load(f)
for sample in dataset:
sample["output"] = sample["output"].replace("MODEL_NAME", MODEL_NAME).replace("AUTHOR", "LLaMA Factory")
with open("/notebooks/LLaMA-Factory/data/identity.json", "w", encoding="utf-8") as f:
json.dump(dataset, f, indent=2, ensure_ascii=False)
执行下面的代码,为 Llama Factory 生成 Gradio 网络应用链接。
GRADIO_SHARE=1 llamafactory-cli webui
启动后,你可以在浏览器中访问生成的链接进行操作。
在 WebUI 界面中,你需要进行以下关键配置:
all 表示所有线性层。除了 WebUI,你也可以直接使用 CLI 命令指定参数进行训练。创建一个 JSON 配置文件 train_llama3.json。
{
"stage": "sft",
"do_train": true,
"model_name_or_path": "unsloth/llama-3-8b-Instruct-bnb-4bit",
"dataset": "identity,alpaca_gpt4_en",
"template": "llama3",
"finetuning_type": "lora",
"lora_target": "all",
"output_dir": "llama3_lora",
"per_device_train_batch_size": 2,
"gradient_accumulation_steps": 4,
"lr_scheduler_type": "cosine",
"logging_steps": 10,
"warmup_ratio": 0.1,
"save_steps": 1000,
"learning_rate": 5e-5,
"num_train_epochs": 3.0,
"max_samples": 500,
"max_grad_norm": 1.0,
"quantization_bit": 4,
"loraplus_lr_ratio": 16.0,
"use_unsloth": true,
"fp16": true
}
运行训练命令:
llamafactory-cli train train_llama3.json
sft(监督微调)。lora 是推荐选项,适合显存受限场景。一旦模型训练完成,我们就可以使用该模型进行推断。加载保存的 LoRA 适配器进行测试。
创建推理配置文件 infer_llama3.json:
{
"model_name_or_path": "unsloth/llama-3-8b-Instruct-bnb-4bit",
"adapter_name_or_path": "llama3_lora",
"finetuning_type": "lora",
"template": "llama3",
"quantization_bit": 4,
"use_unsloth": true
}
运行聊天命令:
llamafactory-cli chat infer_llama3.json
在此模式下,系统会加载预训练模型和保存的适配器,允许你通过对话界面测试模型效果。
per_device_train_batch_size 或增加 gradient_accumulation_steps。使用 4-bit 量化(QLoRA)是解决显存不足的有效手段。有效的微调已成为大型语言模型适应特定任务的必要条件之一。随着 Llama-Factory 的引入,这一全面的框架让训练更加高效,用户无需编写复杂代码即可为超过 100 个 LLMs 定制微调。通过本文的步骤,开发者可以快速上手 LLaMA3 的微调流程,利用 LoRA 等技术降低成本,推动开源社区的成长。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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