当前位置: 首页 > news >正文

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
http://www.cnnetsun.cn/news/3796768.html

相关文章:

  • 【C】零基础教我学会c语言(十一)
  • DDR内存频率全解析:从核心时钟到XMP超频实战指南
  • SQL报错注入实战:原理、函数与绕过技巧详解
  • 树莓派系统重刷进阶指南:从数据迁移到安全擦除的完整工程实践
  • Android Studio中文语言包终极指南:3分钟打造你的中文开发环境
  • Grove Arduino套件:新手快速入门物联网与硬件编程的模块化方案
  • AI视频自动化生成与发布:构建短视频内容生产流水线的完整技术方案
  • AI Agent时代的基础设施革命:从智算集群到记忆存储
  • LRCGET 终极指南:批量歌词下载与音乐歌词同步完整解决方案
  • AI产品商业化转型:从免费到付费订阅的商业模式与用户策略分析
  • 硬件工程师深度拆解:J101载板设计核心要点与实战经验
  • yolo混凝土裂缝检测数据集 水泥裂缝数据集 裂缝识别数据集的训练及应用 混凝土结构健康监测 裂缝检测 基础设施巡检
  • FGO-py终极指南:告别重复劳动,实现全自动刷本的智能FGO助手
  • Unity WebSocket安全通信:WSS协议实现与SSL证书处理全解析
  • 2026年流量测量装置该怎么选?流量计生产厂家综合测评选型指南
  • 树莓派CM4嵌入式开发全解析:从核心板选型到载板设计与实战应用
  • 汽车金融Voice Agent:AI语音智能体如何重塑业务流程与用户体验
  • 图解Transformer:从自注意力机制到编码器-解码器架构的完整拆解
  • DDR电路设计实战:从原理图到PCB布局布线的完整指南
  • 3个强力优化技巧:让魔兽争霸3在现代电脑上重获新生
  • 当GPU利用率突降40%却无告警:AI实时监控的“静默失效”正在吞噬你的MTTR——立即执行这6项健康度扫描
  • 基于STM32MP157C SOM的工业边缘计算网关:双核架构与软硬件开发实战
  • 三月七小助手:星穹铁道自动化助手终极指南,每天节省2小时游戏时间!
  • 揭秘企业级AI文档处理流水线:如何用Python+LLM 72小时内重构10万份非结构化文档?
  • Hive 3.1.3生产级部署实战:从零搭建集成Spark的离线数仓
  • PCA9685 PWM驱动器:16通道舵机/LED控制解决方案与Arduino实战
  • 工业蒸汽量预测实战:从数据清洗到XGBoost模型部署
  • QQ空间历史说说数据导出工具GetQzonehistory:技术实现与隐私保护完整指南
  • 树莓派7寸DSI LCD屏驱动配置与优化全攻略
  • PASCAL VOC数据集深度解析:从标注结构到mAP评估的完整指南