实战 LLaMA Factory:在国产 DCU 上高效微调 Llama 3 模型
在国产海光 DCU K100-AI 平台上,利用 LLaMA Factory 框架对 Llama 3-8B-Instruct 模型进行 LoRA 微调的完整流程。内容涵盖环境搭建、配置文件解析、训练日志解读、推理测试及模型导出。通过具体日志分析,展示了分布式训练设置、参数加载、损失函数变化及最终指标,为同类硬件上的大模型微调提供实践参考。

在国产海光 DCU K100-AI 平台上,利用 LLaMA Factory 框架对 Llama 3-8B-Instruct 模型进行 LoRA 微调的完整流程。内容涵盖环境搭建、配置文件解析、训练日志解读、推理测试及模型导出。通过具体日志分析,展示了分布式训练设置、参数加载、损失函数变化及最终指标,为同类硬件上的大模型微调提供实践参考。

本文基于前期实践,详细解读使用 LLaMA Factory 工具,在国产 DCU(海光 K100-AI)上对 Meta-Llama-3-8B-Instruct 模型进行 LoRA 微调、推理及导出的关键日志输出和核心测试信息。
随着大语言模型(LLM)的飞速发展,如何在特定领域或任务上对预训练模型进行高效微调,已成为业界关注的焦点。本文将聚焦于在国产 DCU 平台上,利用 LLaMA Factory 对 Llama 3 模型进行 LoRA 微调的实践过程,并分享其中的关键步骤与经验。
本次实践的环境基于国产海光 DCU K100-AI,DTK 版本为 25.04。核心软件栈包括 Python 3.10 以及针对 DCU 优化的 PyTorch (torch==2.4.1+das.opt2.dtk2504) 及其相关深度学习库(如 lmslim, flash-attn, vllm, deepspeed 的特定版本)。
conda create -n dcu_llm_fine python=3.10
conda activate dcu_llm_fine
根据文档指引,从光合开发者社区下载并安装适配 DCU K100-AI (DTK 25.04, Python 3.10) 的 PyTorch, lmslim, flash-attn, vllm, deepspeed 等 whl 包。确保各组件版本严格对应。
git clone http://developer.hpccube.com/codes/OpenDAS/llama-factory.git
cd /your_code_path/llama_factory
pip install -e ".[torch,metrics]"
注意:如遇包冲突,可尝试 pip install --no-deps -e .。
我们以 Meta-Llama-3-8B-Instruct 模型为例,采用 LoRA (Low-Rank Adaptation) 方法进行监督式微调 (SFT)。
以下是核心配置参数:
### model
model_name_or_path: /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct
# 模型路径
trust_remote_code: true
### method
stage: sft # 微调阶段:监督式微调
do_train: true
finetuning_type: lora # 微调方法:LoRA
lora_rank: 8 # LoRA 秩
lora_target: all # LoRA 应用目标:所有线性层
### dataset
dataset: identity, alpaca_en_demo # 使用的数据集
template: llama3 # 对话模板
cutoff_len: 2048 # 序列截断长度
max_samples: 1000 # 每个数据集最大样本数
overwrite_cache: true
preprocessing_num_workers: 16 # 预处理进程数
### output
output_dir: saves/llama3-8b/lora/sft # 输出目录
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
save_only_model: false # 保存完整 checkpoint 而非仅模型
### train
per_device_train_batch_size: 1 # 每 GPU 批大小
gradient_accumulation_steps: 8 # 梯度累积步数
learning_rate: 1.0e-4 # 学习率
num_train_epochs: 3.0 # 训练轮次
lr_scheduler_type: cosine # 学习率调度器
warmup_ratio: 0.1 # 预热比例
bf16: true # 使用 bf16 混合精度
ddp_timeout: 180000000
resume_from_checkpoint: null
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
微调完成后,我们加载 LoRA 适配器进行推理测试。
model_name_or_path: /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft # 加载微调后的 LoRA 适配器
template: llama3
infer_backend: huggingface # 推理后端
trust_remote_code: true
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
- 评析:输出中的 {{name}} 和 {{author}} 占位符,表明模型学习了微调数据 identity.json 中的模板格式。
#### 五、模型导出
将微调后的 LoRA 权重与基础模型合并,并导出为独立模型。
##### 1. 导出配置文件 (llama3_lora_sft.yaml for export)
```yaml
### Note: DO NOT use quantized model or quantization_bit when merging lora adapters
### model
model_name_or_path: /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct
adapter_name_or_path: saves/llama3-8b/lora/sft
template: llama3
trust_remote_code: true
### export
export_dir: output/llama3_lora_sft # 导出目录
export_size: 5 # 模型分片大小上限 (GB)
export_device: cpu # 导出时使用的设备
export_legacy_format: false # 不使用旧格式,优先 safetensors
重要提示:配置文件中明确指出,合并 LoRA 适配器时不应使用已量化的模型。
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml
本次实践完整地展示了使用 LLaMA Factory 在国产 DCU 平台上对 Llama 3 模型进行 LoRA 微调、推理和导出的流程。LLaMA Factory 凭借其清晰的配置和便捷的命令行工具,显著降低了 LLM 微调的门槛。通过对各阶段关键日志输出和测试信息的详细解读,我们可以更直观地把握模型在训练中的学习动态、在推理中的行为表现以及导出后的结构。

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