实战 LLaMA Factory:在国产DCU上高效微调 Llama 3 模型

实战 LLaMA Factory:在国产DCU上高效微调 Llama 3 模型

本文在前期实践基础上,进一步补充和详细解读了使用 LLaMA Factory 工具,在国产DCU(海光 K100-AI)上对 Meta-Llama-3-8B-Instruct 模型进行 LoRA 微调、推理及导出各阶段的关键日志输出和核心测试信息。旨在为大模型技术爱好者提供一份更具体、更具参考价值的实践指南。

关键词: LLaMA Factory, Llama 3, LoRA, DCU, K100-AI, 模型微调, SFT, ROCm, 日志解读


一、前言

随着大语言模型(LLM)的飞速发展,如何在特定领域或任务上对预训练模型进行高效微调,已成为业界关注的焦点。LLaMA Factory 作为一个功能强大且易于上手的 LLM 微调框架,受到了广泛关注。本文将聚焦于在国产 DCU 平台上,利用 LLaMA Factory 对 Llama 3 模型进行 LoRA 微调的实践过程,并分享其中的关键步骤与经验。

二、环境准备与 LLaMA Factory 安装

本次实践的环境基于国产海光 DCU K100-AI,DTK 版本为 25.04。核心软件栈包括 Python 3.10 以及针对 DCU 优化的 PyTorch(torch==2.4.1+das.opt2.dtk2504) 及其相关深度学习库(如lmslim,flash-attn,vllm,deepspeed 的特定版本)。

1. 创建虚拟环境
conda create -n dcu_llm_fine python=3.10conda activate dcu_llm_fine 
2. 安装 DCU 特定深度学习库

根据文档指引,从光合开发者社区下载并安装适配 DCUK100-AI (DTK 25.04, Python 3.10) 的 PyTorch, lmslim,flash-attn, vllmdeepspeedwhl包。确保各组件版本严格对应。

3. 安装 LLaMA Factory
git clone http://developer.hpccube.com/codes/OpenDAS/llama-factory.gitcd /your_code_path/llama_factorypip install -e ".[torch,metrics]" 

注意:如遇包冲突,可尝试 pip install --no-deps -e .

三、Llama 3 LoRA 微调实战

我们以 Meta-Llama-3-8B-Instruct 模型为例,采用 LoRA (Low-Rank Adaptation) 方法进行监督式微调 (SFT)。

1. 微调配置文件解析 (llama3_lora_sft.yaml)

以下是核心配置参数:

### modelmodel_name_or_path:/root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct# 模型路径trust_remote_code:true### methodstage:sft # 微调阶段:监督式微调do_train:truefinetuning_type:lora # 微调方法:LoRAlora_rank:8 # LoRA 秩lora_target:all # LoRA 应用目标:所有线性层### datasetdataset:identity,alpaca_en_demo# 使用的数据集template:llama3 # 对话模板cutoff_len:2048 # 序列截断长度max_samples:1000 # 每个数据集最大样本数overwrite_cache:truepreprocessing_num_workers:16 # 预处理进程数### outputoutput_dir:saves/llama3-8b/lora/sft# 输出目录logging_steps:10save_steps:500plot_loss:trueoverwrite_output_dir:truesave_only_model:false # 保存完整checkpoint而非仅模型### trainper_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:180000000resume_from_checkpoint: null 
2. 启动微调
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml 
3. 微调过程关键日志输出与解读
环境初始化与分布式设置 (日志时间: 21:16:40 - 21:16:51)
  • Setting ds_accelerator to cuda (auto detect)
  • Initializing 8 distributed tasks at: 127.0.0.1:54447
  • • 各 GPU 进程 (如 [PG 0 Rank 2]) 初始化 NCCL,日志显示 size: 8, global rank: 2, TIMEOUT(ms): 180000000000
  • 各进程确认信息,例如 Process rank: 2, world size: 8, device: cuda:2, distributed training: True, compute dtype: torch.bfloat16,表明已启用 bf16 混合精度。
  • Set ddp_find_unused_parameters to False in DDP training since LoRA is enabled.
Tokenizer 与模型配置加载 (日志时间: 21:16:51 - 21:16:52)
  • • 加载 tokenizer.json, tokenizer.model 等文件。
  • • 加载模型配置文件 /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct/config.json,确认模型架构如 hidden_size: 4096, num_hidden_layers: 32, torch_dtype: "bfloat16"
数据集加载与预处理 (日志时间: 21:16:52 - 21:17:01)
  • Add pad token: <|eot_id|>Add <|eot_id|>,<|eom_id|> to stop words.
  • • 加载数据集 identity.json (91条样本) 和 alpaca_en_demo.json (1000条样本)。
  • Converting format of dataset (num_proc=16)Running tokenizer on dataset (num_proc=16),共处理 1091 条样本。
  • • 展示了处理后的一个训练样本 training example,包括 input_ids, inputs (已格式化模板) 和 label_ids (prompt部分为-100)。
基础模型权重加载与 LoRA 适配器设置 (日志时间: 21:17:01 - 21:17:16)
  • KV cache is disabled during training.
  • 加载模型权重 /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instruct/model.safetensors.index.json,共4个分片。
  • • 出现警告: Using the SDPA attention implementation on multi-gpu setup with ROCM may lead to performance issues due to the FA backend. Disabling it to use alternative backends.
  • Gradient checkpointing enabled.
  • Fine-tuning method: LoRA
  • Found linear modules: v_proj,q_proj,k_proj,down_proj,o_proj,gate_proj,up_proj (这些是 lora_target: all 选中的层)。
  • trainable params: 20,971,520 || all params: 8,051,232,768 || trainable%: 0.2605,明确了 LoRA 引入的可训练参数量和占比。
Trainer 初始化与训练循环 (日志时间: 21:17:16 - 21:22:15)
  • ***** Running training *****
  • Num examples = 1,091, Num Epochs = 3
  • Instantaneous batch size per device = 1, Total train batch size (w. parallel, distributed & accumulation) = 64
  • Gradient Accumulation steps = 8, Total optimization steps = 51
  • 训练日志周期性输出 (每 logging_steps: 10次迭代,但日志中是按优化步聚合后展示的):
  • {'loss': 1.4091, 'grad_norm': 1.0385..., 'learning_rate': 9.8063...e-05, 'epoch': 0.58}
  • {'loss': 1.0404, 'grad_norm': 0.6730..., 'learning_rate': 7.7959...e-05, 'epoch': 1.17}
  • {'loss': 0.9658, 'grad_norm': 0.4174..., 'learning_rate': 4.4773...e-05, 'epoch': 1.75}
  • {'loss': 0.9389, 'grad_norm': 0.3942..., 'learning_rate': 1.4033...e-05, 'epoch': 2.34}
  • {'loss': 0.894, 'grad_norm': 0.4427..., 'learning_rate': 1.2179...e-07, 'epoch': 2.92}
  • • 训练过程中反复出现 UserWarning: 1Torch was not compiled with memory efficient attention. (Triggered internally at /home/pytorch/aten/src/ATen/native/transformers/hip/sdp_utils.cpp:627.)
训练完成与模型保存 (日志时间: 15:22:15 - 15:22:17)
  • Saving model checkpoint to saves/llama3-8b/lora/sft/checkpoint-51
  • 最终训练指标 ***** train metrics *****
  • epoch = 2.9781
  • train_loss = 1.0481
  • train_runtime = 0:04:56.32 (即 296.3281秒)
  • train_samples_per_second = 11.045
  • train_steps_per_second = 0.172
  • Figure saved at: saves/llama3-8b/lora/sft/training_loss.png
  • • NCCL 通信器关闭,各进程资源清理。

四、模型推理测试

微调完成后,我们加载 LoRA 适配器进行推理测试。

1. 推理配置文件 (llama3_lora_sft.yaml for inference)
model_name_or_path: /root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instructadapter_name_or_path: saves/llama3-8b/lora/sft # 加载微调后的LoRA适配器template: llama3infer_backend: huggingface # 推理后端trust_remote_code: true 
2. 启动推理
llamafactory-cli chat examples/inference/llama3_lora_sft.yaml 
3. 推理过程关键日志输出与测试结果
模型加载 (日志时间: 17:30:16 - 17:31:18)
  • • 加载基础模型 Tokenizer, config (torch_dtype: "bfloat16", use_cache: true) 和权重 (model.safetensors.index.json, 4个分片)。
  • KV cache is enabled for faster generation.
  • • 再次出现 SDPA on ROCm 性能警告。
  • 加载 LoRA 适配器: Loaded adapter(s): saves/llama3-8b/lora/sft
  • Merged 1 adapter(s).,确认 LoRA 权重已合并到基础模型。
  • • 加载后模型参数量 all params: 8,030,261,248
交互测试结果
  • • User:plaintext 你是谁 Assistant:```plaintext
    我是 {{name}},由 {{author}} 训练的 AI 助手。我旨在为您提供帮助,回答问题和完成任务。
  • • 评析:输出中的 {{name}}{{author}} 占位符,表明模型学习了微调数据 identity.json 中的模板格式。

五、模型导出

将微调后的 LoRA 权重与基础模型合并,并导出为独立模型。

1. 导出配置文件 (llama3_lora_sft.yaml for export)
### Note: DO NOT use quantized model or quantization_bit when merging lora adapters### modelmodel_name_or_path:/root/.cache/modelscope/hub/models/LLM-Research/Meta-Llama-3-8B-Instructadapter_name_or_path:saves/llama3-8b/lora/sfttemplate:llama3trust_remote_code:true### exportexport_dir:output/llama3_lora_sft# 导出目录export_size:5 # 模型分片大小上限 (GB)export_device:cpu # 导出时使用的设备export_legacy_format:false # 不使用旧格式,优先safetensors 

重要提示:配置文件中明确指出,合并 LoRA 适配器时不应使用已量化的模型。

2. 启动导出
llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml 
3. 导出过程关键日志输出 (日志时间: 18:06:54 - 18:08:22)
  • • 加载基础模型 Tokenizer, config (torch_dtype: "bfloat16") 和权重 (4个分片)。
  • • 加载 LoRA 适配器: Loaded adapter(s): saves/llama3-8b/lora/sft
  • Merged 1 adapter(s).,LoRA 权重与基础模型合并。
  • Convert model dtype to: torch.bfloat16.
  • • 配置文件保存: Configuration saved in output/llama3_lora_sft/config.jsonoutput/llama3_lora_sft/generation_config.json
  • • 模型权重保存: The model is bigger than the maximum size per checkpoint (5GB) and is going to be split in 4 checkpoint shards. You can find where each parameters has been saved in the index located at output/llama3_lora_sft/model.safetensors.index.json. (根据配置 export_size: 5)
  • • Tokenizer 文件保存: tokenizer config file saved in output/llama3_lora_sft/tokenizer_config.jsonspecial_tokens_map.json
  • • 额外功能: Ollama modelfile saved in output/llama3_lora_sft/Modelfile

七、总结与展望

本次实践完整地展示了使用 LLaMA Factory 在国产 DCU 平台上对 Llama 3 模型进行 LoRA 微调、推理和导出的流程。LLaMA Factory 凭借其清晰的配置和便捷的命令行工具,显著降低了 LLM 微调的门槛。 通过对各阶段关键日志输出和测试信息的详细解读,我们可以更直观地把握模型在训练中的学习动态、在推理中的行为表现以及导出后的结构。

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享

👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI

1. 100+本大模型方向电子书
在这里插入图片描述
2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。
3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述
  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:

三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述
路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。
img
L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。
img
L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
img
L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。
img
L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
img
L5阶段:专题集丨特训篇 【录播课】
img

四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

Read more

Llama-3.2-3B代码审查:基于Java面试题的质量评估体系

Llama-3.2-3B代码审查:基于Java面试题的质量评估体系 1. 当代码审查遇上Java面试题:为什么这个组合特别有效 最近在团队内部做技术分享时,有位刚转行的同事问了一个很实在的问题:“市面上那么多代码审查工具,为什么还要专门用Java面试题来测试模型?”这个问题让我想起自己第一次用Llama-3.2-3B分析一段经典的单例模式实现时的惊讶——它不仅指出了线程安全问题,还顺手给出了三种不同场景下的优化方案,其中一种恰好就是某大厂最新面试题的标准答案。 Java面试题之所以成为检验代码审查能力的黄金标尺,是因为它们天然具备几个关键特质:题目边界清晰但解法多样,既考察基础语法又涉及设计思想,还常常暗藏性能陷阱和并发隐患。比如“如何实现一个线程安全的懒汉式单例”,表面看是考synchronized,实际会牵扯到双重检查锁、volatile关键字、类加载机制甚至JVM内存模型。这种层层嵌套的复杂性,恰恰是检验AI代码理解深度的最佳试金石。 更有趣的是,面试题往往带着明确的业务语境。同样是HashMap,面试官问“为什么HashMap不是线程安全的”和问“在高并发计数场景下如

技术速递|GitHub Copilot SDK 与云原生的完美融合

技术速递|GitHub Copilot SDK 与云原生的完美融合

作者:卢建晖 - 微软高级云技术布道师 排版:Alan Wang 引言 在当今快速演进的 AI 技术格局中,我们已经见证了从简单聊天机器人到复杂智能体系统的转变。作为一名开发者和技术布道者,我观察到一个正在形成的趋势——重点不在于让 AI 无所不能,而在于让每一个 AI Agent 在特定领域做到极致、做到专业。 今天,我想分享一套令人兴奋的技术组合:GitHub Copilot SDK(将生产级智能体引擎嵌入任意应用的开发工具包) + Agent-to-Agent(A2A)Protocol(实现智能体标准化协作的通信规范) + 云原生部署(支撑生产系统的基础设施)。这三者结合在一起,使我们能够构建真正具备协作能力的多智能体系统。 从 AI 助手到智能体引擎:重新定义能力边界 传统的 AI 助手往往追求“全能”——试图回答你抛给它的任何问题。但在真实的生产环境中,这种方式会遇到严重挑战: * 质量不一致:一个模型同时写代码、做数据分析、

多模态大模型微调框架之Llama-factory

多模态大模型微调框架之Llama-factory

LlamaFactory Online 是一个面向科研机构、企业研发团队或个人开发者快速构建和部署AI应用的一站式大模型训练与微调平台,致力于提供简单易用、高效灵活的全流程解决方案。平台以“低门槛、高效率、强扩展”为核心,通过集成化工具链、可视化操作界面与自动化工作流,显著降低大模型定制与优化的技术成本,助力用户快速实现模型从开发调试到生产部署的全周期闭环,功能示意如下所示。 官方文档: https://llamafactory.readthedocs.io/zh-cn/latest/ 安装 使用 uv 工具来安装 Llama-factory 下载工程 git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git uv 安装 cd LlamaFactory uv sync 使用一条命令uv sync就完成 LlamaFactory 的安装,版本以及依赖版本等不会从错误

打造专属模型!使用LLaMA-Factory进行微调,非常详细收藏这一篇就够了

打造专属模型!使用LLaMA-Factory进行微调,非常详细收藏这一篇就够了

一、安装Pytorch 1. 检查GPU计算能力 在开始微调之前,首先需要确认GPU的计算能力,因为不同架构的GPU对PyTorch版本有不同要求。计算能力是NVIDIA GPU的一个重要指标,它决定了GPU支持的CUDA功能和性能特性。 nvidia-smi --query-gpu=compute_cap --format=csv 第一行命令直接查询GPU的计算能力版本,而Python代码则通过PyTorch库来检测CUDA的可用性、版本信息以及具体的GPU设备能力。这些信息对于后续选择合适版本的PyTorch至关重要。 2. 匹配PyTorch版本 根据GPU计算能力选择合适的PyTorch版本是非常重要的,因为不匹配的版本可能导致性能下降甚至无法正常运行。不同的GPU架构有着不同的计算能力要求,下面根据GPU计算能力选择合适的PyTorch版本: 计算能力 < 7.0 (如 Maxwell架构):使用较老版本 计算能力 7.x (Volta/Turing):PyTorch 1.8+ 计算能力 8.x (Ampere):PyTorch 1.10+ 计算能力 9