执行摘要
修复 NemotronH V3 Omni NVFP4 权重加载
解决 Nemotron-3-Nano-Omni NVFP4 检查点在加载时由于 quantized_layers 的键前缀 language_model.backbone. 在 sglang 中未正确映射而失败的问题;以及 to_dict() 后恢复配置时丢失 raw_vision_config 的问题。
建议检查并合并,属于 bugfix,逻辑清晰,影响范围小。
PR 没有公开的 review 讨论。
解决 Nemotron-3-Nano-Omni NVFP4 检查点在加载时由于 quantized_layers 的键前缀 language_model.backbone. 在 sglang 中未正确映射而失败的问题;以及 to_dict() 后恢复配置时丢失 raw_vision_config 的问题。
建议检查并合并,属于 bugfix,逻辑清晰,影响范围小。
PR 没有公开的 review 讨论。
NemotronH_Nano_VL_V2 类上定义 hf_to_sglang_mapper,将 language_model.backbone. 前缀映射为 language_model.model.,修复量化层配置加载。NemotronH_Nano_VL_V2_Config.__init__ 中,当 vision_config 为 None 时,从 kwargs 中弹出 raw_vision_config 赋值给 vision_config,确保 to_dict() / from_dict() 往返不丢失视觉配置。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/srt/models/nano_nemotron_vl.py |
模型定义 | modified | 6.12 |
python/sglang/srt/configs/nano_nemotron_vl.py |
配置 | modified | 5.4 |
python/sglang/srt/models/nano_nemotron_vl.py
data-contract
为主要模型类添加了 WeightsMapper,修复量化层名称映射。
# 导入 WeightsMapper
from sglang.srt.models.utils import WeightsMapper
class NemotronH_Nano_VL_V2(EVS):
# 外层的 mapper 用于将量化配置中的层名从 language_model.backbone.
# 转换为 runtime 使用的 language_model.model. 前缀
hf_to_sglang_mapper = WeightsMapper(
orig_to_new_prefix={
"language_model.backbone.": "language_model.model.",
},
)
python/sglang/srt/configs/nano_nemotron_vl.py
core-logic
在配置类中支持 vision_config 与 raw_vision_config 的别名,修复配置往返。
class NemotronH_Nano_VL_V2_Config(PretrainedConfig):
def __init__(
self,
vision_config=None,
llm_config=None,
sound_config=None,
# ... 其他参数 ...
**kwargs,
):
# 当 vision_config 为 None 时,尝试从 kwargs 中取出 raw_vision_config(V2 存储名称),
# 以支持 V3->V2 配置往返:to_dict() 生成 raw_vision_config,
# 而 from_dict() 通过 vision_config 参数重建。
if vision_config is None:
vision_config = kwargs.pop("raw_vision_config", None)
super().__init__(**kwargs)
if llm_config is not None:
self.llm_config = NemotronHConfig(**llm_config)
assert isinstance(vision_config, dict), "vision_config must be a dictionary"
self.raw_vision_config = vision_config
else:
assert vision_config is None
self.llm_config = NemotronHConfig()
self.raw_vision_config = {}
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
风险较低:变更仅影响 NemotronH V3 Omni 模型加载路径,不影响其他模型;增加了导入依赖 WeightsMapper,但该模块已存在。没有测试覆盖,但改动简单清晰。
直接影响使用 NVFP4 量化格式的 Nemotron-3-Nano-Omni 模型加载;不影响现有其他模型或推理路径。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论