lora 理解
控制训练稳定性:由于 LoRA 主要是对已有的大模型进行微调,如果引入的调整过大,可能会导致训练不稳定。lora_alpha 的存在让这种调整可以被精细控制,从而保持训练的稳定性。避免过拟合:适当地设置 lora_alpha,可以防止对数据进行过拟合。一过大可能会导致过拟合,而过则可能让微调效果不明显。调节微调幅度:alpha 确保低秩矩阵对原始权重的影响不会过大。:A(m*r)B(r*n)实现微
目录
1、基本概念
不改变原有模型的情况下,对模型参数引入低秩矩阵,实现微调
2、数学公式
原始参数矩阵:W0, (大小 m*n)
微调后矩阵:Wnew (大小 m*n)
A B 是低秩矩阵:A (m*r) B (r*n) 实现微调作用

r:A B 的秩
alpha:缩放因子
调节微调幅度:alpha 确保低秩矩阵对原始权重的影响不会过大。在保持模型原有性能的前提下,引入新特性或适应新任务。
避免过拟合:适当地设置 lora_alpha,可以防止对数据进行过拟合。一过大可能会导致过拟合,而过则可能让微调效果不明显。
控制训练稳定性:由于 LoRA 主要是对已有的大模型进行微调,如果引入的调整过大,可能会导致训练不稳定。lora_alpha 的存在让这种调整可以被精细控制,从而保持训练的稳定性。
3、代码实现
from peft import LoraConfig, inject_adapter_in_model
创建 LoRA 配置:
lora_config = LoraConfig(
r=4,
lora_alpha=4,
lora_dropout=0.05,
init_lora_weights="gaussian",
target_modules=["to_q", "to_k", "to_v", "to_out"],
)
注入适配器:
model = inject_adapter_in_model(lora_config, model)
注入适配器函数内部,分两部分来实现:
替换模型 和 初始化lora权重
def _create_and_replace(module, lora_config):
new_module = create_new_module_with_lora(module, lora_config)
replace_module(module, new_module)
def create_new_module_with_lora(module, lora_config):
# 创建新的包含 LoRA 适配器的模块
new_module = ...
# 初始化 LoRA 权重
new_module.lora_weights = initialize_lora_weights(lora_config)
return new_module
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)