惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Martin Fowler
Martin Fowler
B
Blog RSS Feed
D
DataBreaches.Net
L
LangChain Blog
月光博客
月光博客
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
美团技术团队
Jina AI
Jina AI
博客园 - 司徒正美
雷峰网
雷峰网
Last Week in AI
Last Week in AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
小众软件
小众软件
罗磊的独立博客
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta

博客园 - 方东信

【far 语言】语言文档目录 【far 语言】注解系统 【far 语言】数组 【far 语言】并发编程(协程) 【far 语言】控制流 【far 语言】异常处理 【far 语言】farcc 构建工具 【far 语言】函数 【far 语言】组合与继承 【far 语言】接口与泛型 【far 语言】List 列表 【far 语言】Map 映射 【far 语言】原生内存与 FFI 【far 语言】字符串 【far 语言】语法总览 【far 语言】类型系统 Java 远程调用类,控制类的办法,老了,记不住了。靠 java opc ua 基于s7 音视频:JavaCV 采集桌面画面并显示的方法 pand3d实现服务端渲染并推流 UI弹窗遮罩屏蔽触发事件的处理 far的数据类型 Windows下Tesseract-OCR的安装与使用 大模型三阶段训练方法(LLaMa Factory) windows系统下anaconda的安装和使用 trl ppo 【手把手从零实现】Qwen2.5-VL:环境配置/功能实验(图片识别理解、目标检测、文字OCR、文档解析、视频理解)/模型微调(MS-Swift 和 LLaMA-Factory) seata 1.8.0 报错大全 Springboot 报错 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking vLLM部署多模态大模型Qwen2.5-VL-3B-Instruct
LoRA配置
方东信 · 2025-09-18 · via 博客园 - 方东信

要修改可训练参数比例,您需要调整LoRA配置。以下是几种方法来增加或减少可训练参数比例:

1. 调整LoRA配置参数

增加可训练参数比例的方法:

from peft import LoraConfig

# 方法1: 增加LoRA秩(rank)
lora_config = LoraConfig(
r=64, # 增加rank (默认16) - 这会显著增加参数数量
lora_alpha=128, # 通常设为r的2倍
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)

# 方法2: 增加目标模块
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=[ # 增加更多目标模块
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
"embed_tokens", "lm_head" # 添加嵌入层和输出层
],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)

# 方法3: 训练偏置参数
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
lora_dropout=0.05,
bias="all", # 训练所有偏置参数 (默认是"none")
task_type="CAUSAL_LM",
)

减少可训练参数比例的方法:

# 方法1: 降低LoRA秩(rank)
lora_config = LoraConfig(
r=8, # 降低rank (默认16)
lora_alpha=16,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)

# 方法2: 减少目标模块
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=[ # 减少目标模块
"q_proj", "v_proj" # 只选择关键的注意力模块
],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)

2. 不同配置的预期效果

配置 可训练参数估计 内存使用 训练时间 预期性能
r=8, 少模块 ~4M (0.8%) 中等
r=16, 标准 ~9M (1.8%) 中低 中等 良好
r=32, 多模块 ~20M (4%) 更好
r=64, 全模块 ~40M (8%) 最佳

3. 实际修改示例

from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

# 加载基础模型
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map={"": "cpu"},
torch_dtype=torch.float32,
low_cpu_mem_usage=True,
trust_remote_code=True
)

# 配置1: 更高的可训练参数比例 (~4-5%)
lora_config_high = LoraConfig(
r=32, # 增加rank
lora_alpha=64,
target_modules=[
"q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",
"embed_tokens", "lm_head"
],
lora_dropout=0.1,
bias="all", # 包含偏置参数
task_type="CAUSAL_LM",
)

# 配置2: 更低的可训练参数比例 (~0.8-1%)
lora_config_low = LoraConfig(
r=8, # 减少rank
lora_alpha=16,
target_modules=["q_proj", "v_proj"], # 减少模块
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)

# 应用配置
model = get_peft_model(model, lora_config_high) # 或 lora_config_low
model.print_trainable_parameters()

4. 选择建议

如果您希望:

  • 更快训练/更低内存: 使用低参数配置 (r=8, 少模块)
  • 更好性能: 使用高参数配置 (r=32-64, 多模块)
  • 平衡选择: 使用标准配置 (r=16, 标准模块)

注意事项:

  1. CPU限制: 在CPU上训练时,建议使用较低的参数配置
  2. 内存监控: 增加参数会增加内存使用,注意监控系统资源
  3. 训练时间: 参数越多,训练时间越长
  4. 过拟合风险: 参数过多可能导致过拟合,需要适当正则化

您可以根据您的硬件条件和性能需求选择合适的配置。

Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。