目录

1、基本概念

2、数学公式

3、代码实现


 

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

 

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐