news 2026/8/2 10:50:21

LLaMA Factory模型微调

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LLaMA Factory模型微调

使用的系统

~ lsb_release-aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu26.04LTS Release:26.04Codename: resolute
~ nvidia-smi Sat Aug112:13:512026+-----------------------------------------------------------------------------------------+|NVIDIA-SMI580.173.02 Driver Version:580.173.02 CUDA Version:13.0|+-----------------------------------------+------------------------+----------------------+|GPU Name Persistence-M|Bus-Id Disp.A|Volatile Uncorr. ECC||Fan Temp Perf Pwr:Usage/Cap|Memory-Usage|GPU-Util Compute M.||||MIG M.||=========================================+========================+======================||0NVIDIA GeForce RTX2070Off|00000000:03:00.0 Off|N/A||47% 40C P8 12W / 175W|1MiB / 8192MiB|0% Default||||N/A|+-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+|Processes:||GPU GI CI PID Type Process name GPU Memory||ID ID Usage||=========================================================================================||No running processes found|+-----------------------------------------------------------------------------------------+

创建虚拟环境

conda create-nllamafactorypython=3.12-y

LoRA微调基本原理

LLaMA Factory 是一个专为大型语言模型(LLMs)微调设计的低代码/无代码框架,其核心微调原理主要基于参数高效微调(PEFT,Parameter-Efficient Fine-Tuning)技术。与传统需要更新模型全部参数的全量微调(Full Fine-tuning)不同,LLaMA Factory 通过冻结预训练模型的主干参数,仅对少量新增的可训练参数进行更新,从而大幅降低显存需求和计算成本。

下载LLaMA Factory

mkdirllama_factory_testcdllama_factory_test# 克隆LLaMA-Factorygitclone--depth1https://github.com/hiyouga/LLaMA-Factory.gitcdLLaMA-Factory# 安装依赖conda activate llamafactory pipinstall-e.pipinstall-rrequirements/metrics.txt

准备训练用的数据集

LLaMA Factory 有个data目录,该目录是默认的一些测试数据集

dataset_info.json文件记录了LLaMA Factory可以识别到的数据集。

启动LLaMA Factory

执行llamafactory-cli webui启动webui

(llamafactory)➜ LLaMA-Factory git:(main)llamafactory-cli webui Visit http://ip:portforWeb UI, e.g., http://127.0.0.1:7860 * Running onlocalURL: http://0.0.0.0:7860 * To create a public link,set`share=True`in`launch()`.

访问页面打开如下所示

微调

使用webui微调

微调完成后在目录下生成了对应的文件

使用命令微调

qwen3_lora_sft.yaml修改后的内容如下

### 模型配置 (Model)model_name_or_path:/home/gillbert/Downloads/code/hugging_face_test/modelscope_test/llm/models/Qwen--Qwen3.5-2B/snapshots/master# 预训练模型的名称或本地路径,这里使用的是 Qwen3.5-2B 模型,这里我使用提前从ModelScope下载好的trust_remote_code:true# 是否信任并允许执行从 Hugging Face Hub 下载的远程代码(部分新模型需要开启)### 微调方法 (Method)stage:sft# 训练阶段:sft (Supervised Fine-Tuning, 有监督微调)do_train:true# 是否执行训练操作finetuning_type:lora# 微调类型:lora (参数高效微调,冻结主干网络)lora_rank:8# LoRA 的低秩维度,值越大模型容量越高但显存占用也越大(常见 8, 16, 32, 64)lora_target:all# 应用 LoRA 的目标模块,'all' 表示对模型中所有线性层应用 LoRA### 数据集配置 (Dataset)dataset:identity# 训练数据集名称(需在 LLaMA Factory 的 dataset_info.json 中定义)template:qwen3_5# 对话模板格式,指定 Qwen3 专用的无思考过程模板cutoff_len:2048# 序列截断长度,超过此长度的 token 将被截断(需根据显存大小调整)max_samples:1000# 最大训练样本数,这里限制为 1000 条(常用于快速测试或资源受限场景)preprocessing_num_workers:16# 数据预处理时的并行工作线程数,加快数据加载和 tokenize 速度dataloader_num_workers:4# DataLoader 加载数据时的并行进程数,避免数据加载成为训练瓶颈### 输出与日志 (Output)output_dir:saves/qwen3.5-2b/lora/sft# 模型权重和日志的保存路径logging_steps:10# 每训练 10 步打印一次训练日志(如 loss, learning_rate)save_steps:500# 每训练 500 步保存一次模型检查点 (checkpoint)plot_loss:true# 训练结束后是否自动绘制 Loss 曲线图overwrite_output_dir:true# 如果输出目录已存在,是否直接覆盖(防止误删历史权重可设为 false)save_only_model:false# 保存时是否只保存模型权重(设为 false 会同时保存优化器状态,方便断点续训)report_to:none# 实验追踪工具,可选 none, wandb, tensorboard, swanlab, mlflow### 训练超参数 (Train)per_device_train_batch_size:1# 每张 GPU 上的训练批次大小(显存不足时调小,显存充足时调大)gradient_accumulation_steps:8# 梯度累积步数,等效全局 Batch Size = per_device_batch_size * 累积步数 * GPU数量learning_rate:1.0e-4# 初始学习率(LoRA 微调常用范围通常在 1e-4 到 5e-5 之间)num_train_epochs:3.0# 完整的训练轮数,整个数据集被遍历的次数lr_scheduler_type:cosine# 学习率调度器类型,cosine 表示学习率随训练过程呈余弦曲线平滑下降warmup_ratio:0.1# 学习率预热比例,训练前 10% 的步数内学习率从 0 线性增加到设定值,防止初期梯度爆炸bf16:true# 是否使用 BFloat16 混合精度训练(相比 FP16 数值更稳定,不易溢出,推荐 A100/4090 等显卡使用)ddp_timeout:180000000# 分布式训练 (DDP) 的超时时间(秒),防止在大数据集初始化或保存权重时意外中断resume_from_checkpoint:null# 断点续训的 checkpoint 路径,设为 null 表示从头开始训练### 评估配置 (Eval)# eval_dataset: alpaca_en_demo # 验证集数据集名称(取消注释即可开启验证)# val_size: 0.1 # 如果没有指定 eval_dataset,可从训练集中自动划分 10% 作为验证集# per_device_eval_batch_size: 1 # 每张 GPU 上的评估批次大小# eval_strategy: steps # 评估策略:steps (按步数), epoch (按轮数), no (不评估)# eval_steps: 500 # 每训练 500 步执行一次验证集评估

启动微调

llamafactory-cli train command-fine-tuning/qwen3_lora_sft.yaml


微调完成后可以看到saves目录多了数据

参考文档

  • https://llamafactory.readthedocs.io/en/latest/getting_started/installation.html
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/2 10:49:41

【C】零基础教我学会c语言(十一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、一维字符型数组传参二.指针函数和函数指针1.指针函数1.概念2.函数指针:三.const指针前言 指针难死了。。。 提示:以下是本篇文章正文…

作者头像 李华
网站建设 2026/8/2 10:49:34

DDR内存频率全解析:从核心时钟到XMP超频实战指南

1. 项目概述:为什么我们需要“捋一捋”内存频率? 如果你曾经自己动手装过电脑,或者给老机器升级过内存,大概率会碰到一个让人有点懵的参数:内存频率。商家宣传的“DDR4 3200MHz”、主板BIOS里显示的“DRAM Frequency 1…

作者头像 李华
网站建设 2026/8/2 10:46:11

SQL报错注入实战:原理、函数与绕过技巧详解

1. 项目概述:从“报错”中挖掘数据库的秘密 在安全测试和渗透测试的日常工作中,SQL注入始终是一个绕不开的核心议题。它不像某些复杂的逻辑漏洞那样需要精巧的构思,SQL注入更像是一把简单粗暴却又异常有效的“万能钥匙”,而报错注…

作者头像 李华
网站建设 2026/8/2 10:45:48

树莓派系统重刷进阶指南:从数据迁移到安全擦除的完整工程实践

1. 项目概述:为什么“重新刷写”比“首次安装”更值得深究?“给树莓派刷个系统”,这听起来像是每个树莓派玩家的入门第一课。网上教程铺天盖地,无非是下载镜像、用BalenaEtcher写入TF卡、上电启动。但当你看到“高级:重…

作者头像 李华
网站建设 2026/8/2 10:44:39

Android Studio中文语言包终极指南:3分钟打造你的中文开发环境

Android Studio中文语言包终极指南:3分钟打造你的中文开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为…

作者头像 李华
网站建设 2026/8/2 10:44:03

Grove Arduino套件:新手快速入门物联网与硬件编程的模块化方案

1. 从“玩”到“学”:为什么Grove Arduino套件是新手入门的“作弊器”如果你刚接触电子和编程,面对一堆五颜六色的杜邦线、面包板、电阻电容,还有那些密密麻麻的引脚,是不是感觉头都大了?想做个会亮的小灯,…

作者头像 李华