LLaMA-Factory 大模型微调完整指南
LLaMA-Factory 大模型微调完整指南涵盖环境搭建、模型下载、数据集准备及训练部署全流程。首先检查 GPU 计算能力并安装匹配版本的 PyTorch,随后克隆并安装 LLaMA-Factory 工具包。支持通过 unsloth 优化显存占用。提供内置与自定义数据集注册方法,利用 LoRA 技术进行高效微调。训练后可合并权重导出,并通过 Ollama 转换为 GGUF 格式实现本地部署。包含原始模型与微调后模型的对比测试及多轮对话验证。

LLaMA-Factory 大模型微调完整指南涵盖环境搭建、模型下载、数据集准备及训练部署全流程。首先检查 GPU 计算能力并安装匹配版本的 PyTorch,随后克隆并安装 LLaMA-Factory 工具包。支持通过 unsloth 优化显存占用。提供内置与自定义数据集注册方法,利用 LoRA 技术进行高效微调。训练后可合并权重导出,并通过 Ollama 转换为 GGUF 格式实现本地部署。包含原始模型与微调后模型的对比测试及多轮对话验证。

在开始微调之前,首先需要确认 GPU 的计算能力,因为不同架构的 GPU 对 PyTorch 版本有不同要求。
nvidia-smi --query-gpu=compute_cap --format=csv
第一行命令直接查询 GPU 的计算能力版本,而 Python 代码则通过 PyTorch 库来检测 CUDA 的可用性、版本信息以及具体的 GPU 设备能力。这些信息对于后续选择合适版本的 PyTorch 至关重要。
根据 GPU 计算能力选择合适的 PyTorch 版本是非常重要的,因为不匹配的版本可能导致性能下降甚至无法正常运行。
这个匹配关系基于 NVIDIA 官方对不同架构 GPU 的 CUDA 支持情况。较新的 GPU 架构需要更新版本的 PyTorch 来充分发挥其性能优势,而老架构的 GPU 如果使用过新的 PyTorch 版本可能会出现兼容性问题。
如果当前安装的 PyTorch 版本与 GPU 计算能力不匹配,需要重新安装合适版本。建议访问 PyTorch 官方网站获取最新的安装命令,确保安装的版本与 CUDA 版本完全匹配。
# 卸载当前版本
pip uninstall torch torchvision torchaudio
# 安装新版本(示例)
pip install torch==<version> torchvision==<version> --index-url https://download.pytorch.org/whl/cu118
LLaMA-Factory 是一个专门用于微调大语言模型的工具包,它提供了丰富的微调选项和便捷的操作接口。
git clone -b v0.8.1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
这里使用 -b v0.8.1 指定了版本号,确保使用稳定的发布版本。pip install -e . 命令以可编辑模式安装,方便后续的开发和调试。
为了在资源受限的环境中运行大模型,LLaMA-Factory 集成了 unsloth 优化技术,这可以显著降低训练过程中的显存占用。
pip install liger_kernel==0.5.2
unsloth 通过优化内存管理和计算图来减少显存使用,特别适合在消费级 GPU 上进行大模型微调。liger_kernel 是其中的核心组件,提供了底层的内存优化功能。
模型下载是微调过程中的关键步骤,需要确保下载正确的模型文件和权重。
# 模型安装目录示例
/data/models/Qwen/Qwen2.5-7B-Instruct
由于大语言模型文件体积很大,必须使用 Git LFS(Large File Storage)来管理。Qwen2.5-7B-Instruct 是一个 70 亿参数的中英双语指令调优模型,适合进行进一步的领域适配微调。如果机器的 GPU 配置不够强,可以下载参数低一些的版本。
LLaMA-Factory 提供了内置的数据集支持,简化了数据准备过程:
sed -i 's/{{name}}/XX 智能助手/g; s/{{author}}/XX 科技/g' data/identity.json
identity 数据集主要用于修改模型的身份认知,通过替换占位符可以自定义助手的名称和所属机构。使用 sed 命令进行批量替换是一种高效的方式。
数据集注册是将自定义数据集纳入 LLaMA-Factory 管理的重要步骤:
对于非内置数据集,需要在 dataset_info.json 文件中添加数据集的元信息,包括文件路径、格式说明等,这样训练时才能正确加载和使用数据集。
基本微调配置提供了最基础的训练参数设置:
llamafactory-cli train \
--model_name_or_path path_to_model \
--dataset identity \
--finetuning_type lora \
--output_dir saves/lora/sft
这个配置使用了 LoRA(Low-Rank Adaptation)微调方法,这是一种参数高效的微调技术,只训练少量的额外参数而不是整个模型。学习率调度器使用 cosine 衰减,训练过程中会记录损失曲线以便监控训练效果。
当启用 unsloth 优化时,可以进一步调整参数以获得更好的显存效率:
llamafactory-cli train \
--model_name_or_path path_to_model \
--dataset identity \
--finetuning_type lora \
--quantization_bit 4 \
--gradient_accumulation_steps 4
这个配置增加了 4 位量化、梯度累积等优化技术,显著降低了显存需求。lora_rank 和 lora_alpha 参数控制了 LoRA 适配器的容量和缩放因子,影响微调的效果和稳定性。
训练完成后,可以检查生成的 LoRA 权重文件:
ll -lhS ./saves/lora/sft
这个命令会列出 LoRA 权重文件的详细信息,包括文件大小和修改时间。LoRA 权重通常比完整模型小很多,这使得存储和分发变得更加便捷。
使用微调后的模型进行预测评估是验证训练效果的重要环节:
llamafactory-cli chat \
--model_name_or_path path_to_export_model
预测评估会在测试集上运行模型并生成回复,通过观察生成结果可以直观了解模型微调后的表现变化。
为了部署微调后的模型,需要将 LoRA 权重与基础模型合并:
llamafactory-cli export \
--model_name_or_path path_to_base_model \
--adapter_name_or_path path_to_lora \
--export_dir saves/merged_model
权重合并会创建一个独立的模型文件,包含了基础模型和微调适配器的所有参数,这样可以脱离 LLaMA-Factory 环境直接使用标准推理引擎加载模型。
在微调前后对比测试原始模型的表现:
# 这里使用单卡
vllm serve path_to_base_model
使用 vLLM 推理引擎部署模型并提供 OpenAI 兼容的 API 接口,这样可以方便地进行测试和集成。原始模型的回答反映了其默认的身份认知。
测试微调后模型的表现变化:
# 单卡
vllm serve path_to_merged_model
通过与原始模型的对比,可以清晰看到微调对模型身份认知的改变效果,验证微调是否达到了预期目标。
除了 API 测试,还可以使用交互式对话模式进行更全面的测试:
llamafactory-cli chat --model_name_or_path path_to_export_model
这种交互式测试方式可以模拟真实的使用场景,检查模型在多轮对话中的表现一致性、上下文理解能力和回复质量。
为了在更多设备上部署模型,需要转换为 GGUF 格式:
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
llama.cpp 是一个高效的 C++ 推理框架,支持在各种硬件上运行大语言模型,特别适合资源受限的环境。
将合并后的模型转换为 GGUF 格式:
python convert-hf-to-gguf.py path_to_merged_model --outfile model.gguf
GGUF 是 llama.cpp 使用的模型格式,具有更好的跨平台兼容性和推理效率。f16 精度在保持模型质量的同时减少了存储空间需求。
将转换后的模型导入 Ollama 进行管理:
首先建立一个 Modelfile 文件,文件内容:
FROM /opt/fine-tune/LLaMA-Factory/saves/lora/xxx.gguf
TEMPLATE "{{ .System }} {{ .Prompt }}"
PARAMETER stop "</s>"
Modelfile 定义了模型的加载配置和对话模板,确保模型按照正确的格式处理输入和生成输出。Qwen 模型使用特殊的标记格式来区分不同角色。
导入模型:
ollama create sunmao -f Modelfile
成功导入后,模型就可以通过 Ollama 进行管理和使用了。Ollama 提供了便捷的模型管理、版本控制和 API 服务,大大简化了模型的部署和使用流程。

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