Daily Plan
更新: 3/27/2026 字数: 0 字 时长: 0 分钟
#todo
- [ ]
- [ ]
Daily Study
更新: 3/27/2026 字数: 0 字 时长: 0 分钟
Transformer学习
主要介绍结构:Transformer模型详解(图解最完整版) - 知乎 待看:Transformer 架构全解析:从 Attention 机制到编码器 - 解码器,一文吃透核心原理 - 知乎
每一层的功能
自注意力机制:它的核心功能是让模型在处理序列中的某个元素时,能够动态计算该元素与序列中其他元素的关联程度(即 “注意力权重”),从而聚焦于对当前元素最相关的信息,忽略无关信息。
问题
每一层的功能是什么 mask矩阵怎么算出来的 Q、K、V矩阵怎么算出来的 lora微调具体参数设置 学习率 批次大小 优化器 超参数
Lora
一句话概括:LoRA (Low-Rank Adaptation) 是一种参数高效微调技术 (PEFT)。 它的核心思想是:冻结预训练好的大模型权重,只在每一层旁边增加一个旁路(Bypass),这个旁路通过两个低秩矩阵(Low-Rank Matrices)相乘来模拟参数的更新量。
核心原理
- 假设前提:低秩假设 (Low Intrinsic Rank)研究发现,大模型虽然参数很多(几十亿),但在适应特定任务(比如你的安全告警分析)时,参数的改变量($\Delta W$)并不需要满秩。也就是说,真正起作用的参数变化,存在于一个极低的维度空间里。
- 矩阵分解。假设模型原本的一个全连接层权重是 $W_0$(维度 $d \times k$)。全量微调就是求 $W = W_0 + \Delta W$。LoRA 将这个巨大的 $\Delta W$ 分解为两个小矩阵 $A$ and $B$ 的乘积:$$\Delta W = B \times A$$其中:$B$ 的维度是 $d \times r$,$A$ 的维度是 $r \times k$,$r$ 是秩 (Rank),这是一个超参数,通常很小(比如 8, 16, 64),远小于 $d$ 和 $k$(通常是 4096)。
- 前向传播公式$$h = W_0 x + \Delta W x = W_0 x + B A x$$训练时:$W_0$ 被冻结(不更新梯度),只训练 $A$ 和 $B$。初始化:$A$ 使用高斯分布初始化,$B$ 初始化为 0。这样训练刚开始时,$BA=0$,模型输出等于原始模型,保证训练稳定性。
为什么用Lora
- 显存占用极低 (Training Efficiency)全量微调:需要存储 $W_0$ 的梯度、优化器状态(Adam 需要存 2 倍参数量)。7B 模型全量微调可能需要 100GB+ 显存。LoRA:只更新 $A$ 和 $B$。参数量通常只有原模型的 0.1% 到 1%。显存需求大幅下降,单张消费级显卡(如 RTX 4090)就能跑。
- 无推理延迟 (Zero Inference Latency)Adapter 等其他微调方法:通常在层之间插入额外的网络层,会增加推理的计算链路,导致推理变慢。LoRA:在生产部署时,我们可以把训练好的 $BA$ 矩阵直接加回 $W_0$ 中:$$W_{final} = W_0 + (B \times A)$$这样模型结构没有发生任何变化,推理速度和原模型完全一致。
- 多租户/多任务切换 (Storage Efficient)你可以在同一个基础模型(Base Model)上,挂载不同的 LoRA 模块。
- LoRA_1:专门分析 SQL 注入。
- LoRA_2:专门分析 DDoS 攻击。切换任务时,只需要替换几百 MB 的 LoRA 权重,而不需要重新加载几十 GB 的大模型,非常适合 SaaS 平台。
关键超参数
Rank ($r$):
- 秩的大小。一般设为 8 或 16 就足够了。对于非常复杂的任务,可以尝试 64,但再大收益就不明显了。
Alpha ($\alpha$):
- 缩放系数。LoRA 的更新量会乘以 $\frac{\alpha}{r}$。通常设置 $\alpha$ 为 $r$ 的倍数(如 1倍或 2倍)。它类似于学习率的放大器。
Target Modules:
- 应用 LoRA 的层。通常对 Attention 层的
q_proj,v_proj做 LoRA 效果最好。如果显存够,对k_proj,o_proj,gate_proj等全做,效果会更好。
- 应用 LoRA 的层。通常对 Attention 层的
