bridge.py — Megatron-Bridge 集成¶
文件路径¶
verl/models/mcore/bridge.py
文件概述¶
集成 Megatron-Bridge 库,提供 HF 到 mcore 的自动权重转换、LoRA 适配等功能。Megatron-Bridge 是一个更高层的工具库,简化了 mcore 模型的使用。
关键代码讲解¶
导入和依赖¶
from megatron.bridge import AutoBridge
from megatron.bridge.models.conversion.param_mapping import AutoMapping
from megatron.bridge.peft.canonical_lora import CanonicalLoRA
from megatron.bridge.peft.dora import DoRA
from megatron.bridge.peft.lora import LoRA, VLMLoRA
LinearForLastLayer -- Value 模型输出层¶
class LinearForLastLayer(torch.nn.Linear):
"""支持序列并行的最后一层线性层(用于 critic 模型)"""
def __init__(self, input_size, output_size, *, sequence_parallel):
super().__init__(in_features=input_size, out_features=output_size, bias=False)
self.sequence_parallel = sequence_parallel
def forward(self, input_, weight=None, runtime_gather_output=None):
if self.sequence_parallel:
# 先 gather 序列并行的分片
input_ = tensor_parallel.gather_from_sequence_parallel_region(input_)
output = torch.nn.functional.linear(input_, self.weight)
return output, None
导出的功能¶
| 名称 | 作用 |
|---|---|
AutoBridge |
自动的 HF <-> mcore 权重转换 |
LoRA |
标准 LoRA 适配 |
VLMLoRA |
VLM 专用 LoRA |
DoRA |
权重分解 LoRA |
CanonicalLoRA |
标准化 LoRA |
LinearForLastLayer |
Value 模型输出层 |
与其他模块的关系¶
- 被 mcore 训练流程中的 LoRA 和权重转换代码调用
LinearForLastLayer被model_initializer.py使用
小结¶
Bridge 模块封装了 Megatron-Bridge 库的功能,提供了更便捷的权重转换和 LoRA 适配接口。LinearForLastLayer 解决了 critic 模型在序列并行下的输出层问题。