一、安装 PyTorch
1. 检查 GPU 计算能力
在开始微调之前,首先需要确认 GPU 的计算能力,因为不同架构的 GPU 对 PyTorch 版本有不同要求。
nvidia-smi --query-gpu=compute_cap --format=csv
2. 匹配 PyTorch 版本
根据 GPU 计算能力选择合适的 PyTorch 版本:
- 计算能力 < 7.0 (如 Maxwell 架构):使用较老版本
- 计算能力 7.x (Volta/Turing):PyTorch 1.8+
- 计算能力 8.x (Ampere):PyTorch 1.10+
- 计算能力 9.x (Ada Lovelace):PyTorch 2.0+
3. 重新安装合适版本的 PyTorch
如果当前安装的 PyTorch 版本与 GPU 计算能力不匹配,需要重新安装合适版本。
# 卸载当前版本
pip uninstall torch torchvision torchaudio
# 安装新版本 (参考官网命令)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
二、安装 LLaMA-Factory
1. LLaMA-Factory
LLaMA-Factory 是一个专门用于微调大语言模型的工具包。
git clone -b v0.8.1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .[torch,metrics]
2. unsloth 的显存优化机制
为了降低显存占用,建议安装 liger_kernel 0.5.2 版本。
pip install liger-kernel==0.5.2
三、下载模型
模型下载是微调过程中的关键步骤,需确保下载正确的模型文件和权重。
# 模型安装目录示例
/data/models/Qwen/Qwen2.5-7B-Instruct
建议使用 Git LFS 管理大文件。Qwen2.5-7B-Instruct 适合进行进一步的领域适配微调。
四、数据集
1. 内置数据集
LLaMA-Factory 提供了内置的数据集支持。
- 准备数据集文件,json 格式,存放到 data 目录下。
- 注册数据集,将 json 文件注册到 data 目录下的 dataset_info.json 文件。
- 使用内置 identity 数据集,用于修改模型的自我意识。
- 替换 identity.json 里面的占位符。
sed -i 's/{{name}}/XX 智能助手/g; s/{{author}}/XX 科技/g' data/identity.json
2. 数据集注册
对于非内置数据集,需要在 dataset_info.json 文件中添加数据集的元信息,包括文件路径、格式说明等。
五、微调
1. 基本
基本微调配置提供了最基础的训练参数设置。
llamafactory-cli train \
--stage sft \
--model_name_or_path path_to_model \
--dataset identity \
--template default \
--finetuning_type lora \
--output_dir saves/lora/sft
此配置使用了 LoRA 微调方法,学习率调度器使用 cosine 衰减。
2. 使用 unsloth
当启用 unsloth 优化时,可以进一步调整参数以获得更好的显存效率。
llamafactory-cli train \
--stage sft \
--model_name_or_path path_to_model \
--dataset identity \
--finetuning_type lora \
--quantization_bit 4 \
--gradient_accumulation_steps 4
3. 查看 LoRA 权重
训练完成后,可以检查生成的 LoRA 权重文件。
ll -lhS ./saves/lora/sft
4. 预测评估
使用微调后的模型进行预测评估是验证训练效果的重要环节。
llamafactory-cli chat \
--model_name_or_path saves/lora/sft \
--dataset identity
5. 权重合并导出
为了部署微调后的模型,需要将 LoRA 权重与基础模型合并。
llamafactory-cli export \
--model_name_or_path path_to_base_model \
--adapter_name_or_path saves/lora/sft \
--export_dir saves/merged \
--export_size 2 \
--export_legacy_format false
六、测试
1. 原始模型
在微调前后对比测试原始模型的表现。
# 这里使用单卡
vllm serve path_to_base_model
2. 微调模型
测试微调后模型的表现变化。
# 单卡
vllm serve saves/merged
3. 多轮对话测试(Chat 模式)
除了 API 测试,还可以使用交互式对话模式进行更全面的测试。
llamafactory-cli chat --model_name_or_path path_to_export_model
七、转换导入 Ollama
1. 下载 llama.cpp
为了在更多设备上部署模型,需要转换为 GGUF 格式。
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
2. 转换
将合并后的模型转换为 GGUF 格式。
./convert-hf-to-gguf.py path_to_merged_model --outfile model.gguf
GGUF 是 llama.cpp 使用的模型格式,具有更好的跨平台兼容性和推理效率。
3. 导入
将转换后的模型导入 Ollama 进行管理。
首先建立一个 Modelfile 文件,文件内容:
FROM /opt/fine-tune/LLaMA-Factory/saves/lora/xxx.gguf
TEMPLATE "{{ .System }} {{ .Prompt }}"
PARAMETER system "You are a helpful assistant."
导入模型:
ollama create sunmao -f Modelfile
成功导入后,模型就可以通过 Ollama 进行管理和使用了。


