什么是 LoRA 秩(LoRA Rank)?
LoRA 秩(LoRA Rank)是表示 LoRA 权重更新的两个可训练矩阵所使用的内部维度 r。它限制更新矩阵的秩并控制参数容量,但不能直接预测任务质量,也不存在适用于所有任务的默认值。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
对于输入维度为 d_in、输出维度为 d_out 的目标权重,LoRA 使用形状为 r × d_in 的 A 和 d_out × r 的 B。忽略偏置和额外保存模块时,该目标增加 r ×(d_in + d_out)个可训练参数;Adapter 总大小是所有目标权重和层的总和。提高 rank 会扩大表示预算,并可能增加优化器、梯度、存储、缓存与计算成本,但不一定提升留出集质量。rank 还会与目标模块、初始化、学习率、数据和缩放策略相互作用:原始 LoRA 使用 alpha/r,部分变体采用其他规则。有效的 Rank Sweep 必须固定这些因素或声明变化方式,再按切片测量质量与资源结果。
主要特点
- 定义每个选定权重的 A、B 更新矩阵所共享的内部维度
- 每个目标权重增加 r ×(输入维度 + 输出维度)个参数
- 会改变容量与资源使用,但不会单调决定留出集质量
- 与目标模块、alpha 缩放、初始化、优化器、数据和训练预算相互作用
- 影响 Adapter 制品大小,以及部分服务运行时的 Rank 上限或缓存容量
- 必须在不可变 Train、Validation 和 Test Revision 上通过受控试验选择
常见用途
- 为版本化的指令遵循或分类任务比较 Adapter 容量
- 规划可训练参数、优化器状态、制品存储与服务缓存
- 比较扩大目标模块覆盖与提高 rank 哪一种更有价值
- 为受治理的多 Adapter 服务定义最大支持 rank
- 先排除 Label、Loss Mask、数据泄漏与质量问题,再诊断容量限制
示例
Loading code...常见问题
LoRA 应该使用多大的 rank?
不存在通用 rank。选择符合资源包络的有界候选集,固定基座、目标模块、数据、缩放策略、优化器和评测,再在留出的任务与回归切片上比较多次运行。应选择满足发布门槛的最小 rank,而不是复制流行数值。
rank 越高质量一定越好吗?
不一定。更高 rank 会扩大更新参数化,但优化过程、数据质量、目标模块和评测决定新增容量是否有用。它可能没有可测收益,也可能增加方差、过拟合、显存、存储和服务缓存消耗。
LoRA rank 会增加多少参数?
对输入维度为 d_in、输出维度为 d_out 的单个目标权重,rank r 为 A 和 B 增加 r ×(d_in + d_out)个参数。应对所有选定权重和层求和,再加入训练的 Bias、Embedding、Head 或 modules_to_save 参数。
LoRA rank 如何影响部署?
rank 会改变 Adapter 字节数,还可能改变运行时计算、缓存分配、最大并发 Adapter 数和引擎兼容性。服务系统可能限制最大 rank,或按最大值预留缓存,因此训练配置必须与服务容量共同规划。
LoRA 质量不好时应该先增加 rank 吗?
不应该。先检查 Label、Completion 或 Assistant Loss Mask、截断、Chat Template、重复数据泄漏、目标模块名称和未修改基座表现。只有排除这些问题后,才把增加 rank 作为受控实验;真正问题也可能是数据或训练目标不合适。