【LLM】LLaMA-Factory 训练模型入门指南

【LLM】LLaMA-Factory 训练模型入门指南

1. 前言

这篇文章主要带你了解如何使用 LLaMA-Factory 来微调大模型,包括如何安装、如何使用其web可视化界面训练、在线测试、导出模型等。
你可以先阅读我的这篇文章,了解 QLoRA 微调流程 一篇文章带你入门QLoRA微调

2. 安装

2.1 从源码安装

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git 

建议使用虚拟环境管理 python 依赖,我这里使用 uv (也可以使用 conda)。

# 安装 uv pip install uv # 进入项目目录 cd LLaMA-Factory # 创建基于 python 3.11 的虚拟环境 uv venv --python=3.11 # 激活虚拟环境 .\.venv\Scripts\activate # 安装依赖 pip install -e ".[torch,metrics]" --no-build-isolation 

2.2 验证

验证 torch 是否正确安装

# 验证 GPU 版torch是否安装,返回true说明安装正确 python -c "import torch; print(torch.cuda.is_available())" 

如果返回 false,请参考我之前的文章,安装对应版本的 cuda

【踩坑笔记】50系显卡适配的 PyTorch 安装_cuda13.0对应pytorch-ZEEKLOG博客

我的显卡型号为:NVIDIA GeForce RTX 5070 Ti Laptop,50系显卡可参考以下命令安装:

# 先卸载(可选) pip uninstall torch torchvision # 安装 pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu129 

安装完成后,继续执行上述验证代码查看是否正确安装。

验证 llamafactory 是否正确安装

# 出现下图说明成功 llamafactory-cli version 

2.3 LLaMA Board 可视化微调

llamafactory-cli webui 

启动成功

浏览器访问:http://127.0.0.1:7860 进入 LLaMA Factory web 面板。

在这里插入图片描述

3. 数据集准备

在训练之前我们需要先准备数据集,LLaMA-Factory 支持HuggingFace / ModelScope / Modelers 上的数据集或加载本地数据集。如何配置参考:

LLaMA-Factory/data/README_zh.md at main · hiyouga/LLaMA-Factory

以配置本地数据集为例,首先将数据集放到 /data 路径下,然后打开 dataset_info.json 文件,增加如下配置:

"code_alpaca":{"file_name":"code_alpaca.json"},

4. 模型训练(Train)

4.1 基础配置

配置你要训练的模型以及是否启用量化等信息。

4.2 训练配置

可配置一些训练相关的参数,learning_rate(初始学习率)、num_train_epochs(训练轮数)、per_device_train_batch_size(每个 GPU 处理的样本数量)等等

4.3 其他参数配置

参数配置可参考:参数介绍

4.4 开始训练

点击 开始 按钮即可开始训练,你可以在这边预览 llamafactory-cli 训练命令。

llamafactory-cli 命令

llamafactory-cli train ` --stage sft ` --do_train True ` --model_name_or_path Qwen/Qwen2.5-Coder-7B-Instruct ` --preprocessing_num_workers 16` --finetuning_type lora ` --template qwen ` --flash_attn auto ` --dataset_dir data ` --dataset code_alpaca ` --cutoff_len 2048` --learning_rate 0.0001` --num_train_epochs 5.0` --max_samples 100000` --per_device_train_batch_size 2` --gradient_accumulation_steps 8` --lr_scheduler_type cosine ` --max_grad_norm 1.0` --logging_steps 5` --save_steps 100` --warmup_steps 0` --packing False ` --enable_thinking True ` --report_to none ` --output_dir saves\Qwen2.5-Coder-7B-Instruct\lora\train_code4 ` --bf16 True ` --plot_loss True ` --trust_remote_code True ` --ddp_timeout 180000000` --include_num_input_tokens_seen True ` --optim adamw_torch ` --quantization_bit 4` --quantization_method bnb ` --double_quantization True ` --lora_rank 8` --lora_alpha 16` --lora_dropout 0 ` --lora_target all 

训练日志截图:可以看到训练总步数等信息。

4.5 loss曲线

4.5.1 什么是 loss 曲线

Loss 曲线(损失函数曲线) 展示模型在训练过程中的误差随迭代次数(或 epoch)变化的趋势。

理想情况是:持续下降,趋于稳定

4.5.2 original 和 smoothed 曲线

名称含义特点常见用途
Original curve(原始曲线)数据未经平滑处理,直接绘制的曲线保留所有波动、噪声明显用于展示真实观测值或模型输出的原貌
Smoothed curve(平滑曲线)通过数学方法去除短期波动,使趋势更清晰噪声减少,更易观察整体趋势用于趋势分析、可视化优化、报告展示

示例

针对我的数据集,下面是不同 学习率 + **训练轮数 **的loss曲线。

  1. 5e-5 + 3轮
  1. 2e-5 + 3轮
  1. 1e-4 + 3轮
  1. 1e-4 +** 5轮**

5. 模型对话(Chat)

检查点路径选择上面训练阶段结果导出的路径,然后点击加载模型,即可在web端与模型对话。

6. 导出

检查点路径选择上面训练阶段结果导出的路径,然后点击 开始导出,即可导出模型。

7. 参考文档

LLaMA-Factory github

LLaMA Factory-参数介绍

Read more

【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题

【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题

【踩坑记录】使用 Layui 框架时解决 Unity WebGL 渲染在 Tab 切换时黑屏问题 在开发 Web 应用时,尤其是集成了 Unity WebGL 内容的页面,遇到一个问题:当 Unity WebGL 渲染内容嵌入到一个 Tab 中时,切换 Tab 后画面会变黑,直到用户点击黑屏区域,才会恢复显示。 这个问题通常是因为 Unity 渲染在 Tab 切换时被暂停或未能获得焦点所致。 在本文中,我们将介绍如何在使用 Layui 框架时,通过监听 Tab 切换事件并强制 Unity WebGL 渲染恢复,来解决这一问题。 1. 问题描述 当 Unity WebGL 内容嵌入到页面中的多个

Youtu-Parsing效果展示:同一张试卷解析出文本+LaTeX公式+Mermaid流程图三合一

Youtu-Parsing效果展示:同一张试卷解析出文本+LaTeX公式+Mermaid流程图三合一 你是不是也遇到过这样的烦恼?拿到一份电子版的试卷或者报告,里面既有文字,又有复杂的数学公式,还有流程图、表格,想把这些内容整理成可编辑的文档,简直是一场噩梦。手动输入公式?光是那些符号就让人头疼。重新画流程图?费时费力还不一定准确。 今天我要给你展示一个真正能解决这个痛点的工具——Youtu-Parsing。它能把一张包含多种元素的试卷图片,一次性解析成结构化的文档,文字、公式、流程图各归其位,而且格式干净漂亮,直接就能用。 1. 先看看它能做什么:一张图看懂全流程 想象一下这个场景:你有一张数学试卷的截图,上面有题目描述、解题步骤、复杂的数学公式,还有一个解题思路的流程图。传统的OCR工具只能识别文字,公式变成乱码,流程图更是无从下手。 Youtu-Parsing不一样,它能做到: * 文字识别:把图片里的所有文字准确提取出来 * 公式转换:把数学公式转换成标准的LaTeX格式 * 流程图解析:把图形化的流程图转换成Mermaid代码 * 表格处理:如果有表格,

SkyWalking - 告警通知渠道集成:Webhook、Slack、钉钉、企业微信

SkyWalking - 告警通知渠道集成:Webhook、Slack、钉钉、企业微信

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕SkyWalking这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * SkyWalking - 告警通知渠道集成:Webhook、Slack、钉钉、企业微信 * 🚨 SkyWalking 告警机制基础 * 告警规则(Alarm Rules) * 通知渠道(Notifiers) * 🔗 Webhook:最通用的集成方式 * 配置 SkyWalking 使用 Webhook * Webhook 接收端开发(Java 示例) * Webhook 集成的优势与注意事项 * 💬 集成 Slack 通知 * 在 Slack 中创建 Incoming Webhook * 配置 SkyWalking * 自定义 Slack

前端直连模型 vs 完整 MCP:大模型驱动地图的原理与实践(技术栈Vue + Cesium + Node.js + WebSocket + MCP)

适合读者:完全新手、前端开发者、对大模型工具调用感兴趣的工程师 技术栈示例:Vue + Cesium + Node.js + WebSocket + MCP 教程目标:看懂并搭建一套“用户通过聊天输入指令,大模型决定调用工具,再驱动地图执行动作”的完整链路 目录 * 1. 这篇教程要解决什么问题 * 2. 先别写代码:先搞懂两个很像但本质不同的方案 * 2.1 方案一:前端直连模型 * 2.2 方案二:真正完整的 MCP * 2.3 它们最核心的区别 * 3. 为什么很多人一开始会把两套方案混在一起 * 4. 先建立整体认知:完整 MCP 里有哪些角色 * 5. 完整 MCP 的时序图:一句“飞到上海”是怎么穿过整个系统的 * 6.