LLama Factory使用LoRA微调Qwen

文章目录

1. LoRA简介

1.1 核心思想

LoRA是通过引入低秩矩阵来减少微调时的参数量。在预训练模型中,LoRA通过添加两个小矩阵B和A来近似原始的大矩阵W,从而减少需要更新的参数量。
eg:W:m×n, 则B:m×r,A:r×n (通常r=8~64)
训练时,输入分别与原始权重和两个低秩矩阵进行运算,共同得到最终结果,优化则仅优化A和B,W不变
训练完成后,可以将两个低秩矩阵与原始模型中的权重进行合并,合并后的模型与原始模型无异

在这里插入图片描述

1.2 为什么高效?

参数效率:仅训练0.1%~1%的参数量
内存友好:梯度只计算小矩阵,显存占用降低3~5倍
即插即用:训练后的LoRA权重可独立保存,动态加载到原模型

2. LLama Factory介绍

官方文档:https://llamafactory.readthedocs.io/zh-cn/latest/index.html

2.1 环境配置

# 创建环境 conda create -n llama_factory python=3.10 conda activate llama_factory # 安装依赖 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e 

2.2 指令微调监督数据集格式

[{"instruction":"人类指令(必填)","input":"人类输入(选填)","output":"模型回答(必填)","system":"系统提示词(选填)","history":[["第一轮指令(选填)","第一轮回答(选填)"],["第二轮指令(选填)","第二轮回答(选填)"]]}]

eg:

在这里插入图片描述


dataset_info.json 中的 数据集描述应为:

"数据集名称":{"file_name":"data.json","columns":{"prompt":"instruction","query":"input","response":"output","system":"system","history":"history"}}

即为:fintech.json以及identity格式<放在LLaMA-Factory/data下面>

在这里插入图片描述


在这里插入图片描述

在dataset_info.json中添加

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

2.3 通过Web UI配置

  1. 启动web服务
cd LLaMA-Factory llamafactory-cli webui 

点击开始直接训练,训练完成
微调前:不选择检查点路径,加载的是从Huggingface上直接加载的模型。
微调后:选择检查点路径,并加载模型,此时加载的就是训练结束保存检查点,测试完卸载模型。

在这里插入图片描述


微调之前:

在这里插入图片描述

界面配置关键参数
模型路径:输入模型路径<本地>
数据集:选择数据集<需提前按照格式注册到dataset_info.json中>
微调方法:LoRA
学习率、训练轮次、批次大小

在这里插入图片描述

微调之后:

在这里插入图片描述

2.4 使用YAML配置文件

  1. 在example/train_lora下新建文件qwen1.5_1.8b_chat_lora.yaml:
    其中修改模型路径,数据集,模板,输出目录
### model model_name_or_path:/root/autodl-tmp/Qwen/Qwen1.5-1.8B-Chat # 修改路径 trust_remote_code: true ### method stage: sft do_train: true finetuning_type: lora lora_rank:8 lora_target:all### dataset dataset: identity, fintech # 修改数据集 template: qwen # 修改模型为qwen cutoff_len:2048 max_samples:1000 overwrite_cache: true preprocessing_num_workers:16 dataloader_num_workers:4### output output_dir: saves/qwen1.5_1.8b_chat/lora/sft # 修改目录 logging_steps:10 save_steps:500 plot_loss: true overwrite_output_dir: true save_only_model: false report_to: none # choices: [none, wandb, tensorboard, swanlab, mlflow]### train per_device_train_batch_size:1 gradient_accumulation_steps:8 learning_rate:1.0e-4 num_train_epochs:3.0 lr_scheduler_type: cosine warmup_ratio:0.1 bf16: true ddp_timeout:180000000 resume_from_checkpoint: null ### eval# eval_dataset: alpaca_en_demo# val_size: 0.1# per_device_eval_batch_size: 1# eval_strategy: steps# eval_steps: 500

与web ui训练结束生成的training_args.yaml是一样的:

bf16: true cutoff_len:1024 dataset: fintech,identity dataset_dir: data ddp_timeout:180000000 do_train: true enable_thinking: true eval_steps:100 eval_strategy: steps finetuning_type: lora flash_attn: auto gradient_accumulation_steps:8 include_num_input_tokens_seen: true learning_rate:5.0e-05 logging_steps:5 lora_alpha:16 lora_dropout:0 lora_rank:8 lora_target:all lr_scheduler_type: cosine max_grad_norm:1.0 max_samples:100000 model_name_or_path:/root/autodl-tmp/Qwen/Qwen1.5-1.8B-Chat num_train_epochs:10.0 optim: adamw_torch output_dir: saves/Qwen1.5-1.8B-Chat/lora/train_2025-10-31-13-35-18 packing: false per_device_eval_batch_size:8 per_device_train_batch_size:8 plot_loss: true preprocessing_num_workers:16 report_to: none save_steps:100 stage: sft template: qwen trust_remote_code: true val_size:0.1 warmup_steps:0
  1. 启动训练
    先进入LLaMA-Factory文件夹中,否则会找不到dataset_info.json文件
cd /root/autodl-tmp/LLaMA-Factory 

启动训练

llamafactory-cli train /root/autodl-tmp/LLaMA-Factory/examples/train_lora/qwen1.5_1.8b_chat_lora.yaml 

Read more

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

我的个人主页我的专栏:人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!!点赞👍收藏❤ 引言:AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代,人工智能生成内容(AIGC)已成为推动各行业变革的关键力量。从创意内容的快速产出到复杂场景的智能模拟,AIGC 正以前所未有的速度改变着我们的生活和工作方式。通义万相 2.1 作为多模态 AI 生成领域的佼佼者,与蓝耘智算平台这一强大的算力支撑平台深度协同,犹如一颗耀眼的新星,在 AIGC 的浩瀚星空中熠熠生辉,为挖掘 AIGC的无限潜力和释放巨大未来价值提供了坚实的基础和广阔的空间。 一:通义万相 2.1:多模态 AI 生成的卓越典范 ***通义万相 2.1 是阿里巴巴达摩院精心打造的多模态 AI 生成模型,在图像、视频等内容生成方面展现出了令人瞩目的实力。*** 1.1 创新架构引领技术突破 1.

GitHub Copilot转变为兼容API

解锁GitHub Copilot全场景使用!copilot-api让Copilot兼容OpenAI/Anthropic生态 作为开发者,你是否曾因GitHub Copilot仅能在指定IDE中使用而感到受限?是否想让Copilot对接Raycast、Claude Code等工具,却苦于接口不兼容?由ericc-ch开发的copilot-api项目给出了完美答案——这是一个反向工程实现的GitHub Copilot API代理,能将Copilot封装为兼容OpenAI和Anthropic规范的API服务,让你在任意支持该规范的工具中轻松调用Copilot能力,彻底解锁Copilot的全场景使用潜力。 项目核心价值:打破生态壁垒,复用Copilot订阅 GitHub Copilot凭借优秀的代码补全、推理能力成为开发者必备工具,但原生仅支持VS Code、JetBrains等少数IDE,且无公开的标准API接口。而copilot-api的核心作用,就是架起Copilot与OpenAI/Anthropic生态的桥梁: * 对于拥有Copilot订阅(个人/企业/商业版)的开发者,

我用Openclaw + Claude搭了一套自动写作系统,每天省3小时

这是我目前最重要的一套AI工作流。从信息获取到发布,几乎不用手动完成。 一、为什么我要搭建这套系统? 信息过载的困境 如果你也在持续关注AI,应该会有同样的感受: 信息太多了。 每天打开 X、公众号、GitHub、技术社区,都会冒出大量新内容。 AI模型更新、工具更新、Agent框架、自动化方案…… 想跟上这些信息,本身就已经是一项工作。 手动写作的低效循环 更别说: * 整理信息 * 找选题 * 写文章 * 配图 * 发布到各个平台 如果全部手动完成,写作就会变成一件非常消耗精力的事。 我一度也在这种状态里: 想持续输出,但写作本身占用了太多时间。 一个关键问题 后来我开始思考一个问题: 如果写作这件事可以被"系统化",会发生什么? 于是,我不再把AI当成写作工具。 而是开始搭一套完整的 AI写作工作流。 二、思路转变:从优化写作到优化流程 大多数人的AI写作方式 大多数人使用AI写作,是这样:

VsCode远程Copilot无法使用Claude Agent问题

最近我突然发现vscode Copilot中Claude模型突然没了,我刚充的钱啊!没有Claude我还用啥Copilot 很多小伙伴知道要开代理,开完代理后确实Claude会出来,本地使用是没有任何问题的,但是如果使用远程ssh的话,会出现访问异常,连接不上的情况。这时候很多小伙伴就在网上寻找方法,在vscode setting中添加这么一段代码。可以看看这篇博客 "http.proxy": "http://127.0.0.1:1082", "remote.extensionKind": { "GitHub.copilot": [ "ui" ], "GitHub.copilot-chat": [ "ui" ], "pub.name": [ "ui&