Prhub

#43992 [Feature] Add support for JetBrains' Mellum v2 code generation model

原始 PR 作者 shadeMe 合并时间 2026-06-01 22:11 文件变更 7 提交数 3 评论 3 代码增减 +266 / -0

执行摘要

新增 JetBrains Mellum v2 代码生成模型支持

PR body 说明:Adds support for a new model architecture - Mellum v2 is an update to JetBrains' open-weights code generation model that is built on a Mixture-of-Experts architecture (Mellum v1 was based on Llama2)。

该 PR 结构清晰、改动集中,适合作为新模型支持的标准参考。建议简要浏览实现文件,了解 vLLM 添加新模型时需修改的注册点(registry.py、configs/init.py、config.py)。

讨论亮点

无实质技术讨论,仅有 mergify 自动评论和批准。

实现拆解

  1. 配置层:新增 vllm/transformers_utils/configs/mellum.py,定义 MellumConfig 继承 Qwen3MoeConfig,仅重写 model_type = "mellum"
  2. 模型层:新增 vllm/model_executor/models/mellum.py,核心模型类全部继承自 Qwen3Moe 模块:
    • MellumAttention:继承 Qwen3MoeAttention,扩展支持 per_layer_sliding_windowper-layer RoPE scaling
    • MellumDecoderLayer:继承 Qwen3MoeDecoderLayer,支持 interleaved SWA。
    • MellumModelMellumForCausalLM:继承对应 Qwen3Moe 类,添加 @support_torch_compile 装饰器。
  3. 注册中心:修改 vllm/model_executor/models/registry.py,添加 "MellumForCausalLM": ("mellum", "MellumForCausalLM") 映射。
  4. 配置导入:在 vllm/transformers_utils/configs/__init__.py 中注册 MellumConfig 及其模块路径;在 vllm/transformers_utils/config.py 中添加模型目录别名。
  5. 测试与文档
    • tests/models/registry.py 添加模型示例 JetBrains/Mellum2-12B-A2.5B-Base
    • docs/models/supported_models.md 添加 Mellum 条目。
文件 模块 状态 重要度
vllm/model_executor/models/mellum.py 模型层 added 9.17
vllm/transformers_utils/configs/mellum.py 配置层 added 6.44
vllm/model_executor/models/registry.py 注册中心 modified 4.96
vllm/transformers_utils/configs/__init__.py 配置层 modified 4.49
vllm/transformers_utils/config.py 配置层 modified 4.35
tests/models/registry.py 测试配置 modified 3.49
docs/models/supported_models.md 文档 modified 1.39

关键符号

MellumAttention.__init__ MellumDecoderLayer.__init__ MellumModel MellumForCausalLM

关键源码片段

vllm/model_executor/models/mellum.py new-model

模型架构核心实现,包含 MellumAttention、MellumDecoderLayer、MellumModel、MellumForCausalLM 等类,全部继承自 Qwen3Moe 并扩展滑动窗口和 RoPE 缩放。

# vllm/model_executor/models/mellum.py
# 定义 MellumAttention,继承自 Qwen3MoeAttention,
# 核心差异在于 __init__ 接受 per_layer_sliding_window 参数并透传给 Attention 层。
class MellumAttention(Qwen3MoeAttention):
    """
    Differences from `Qwen3MoeAttention`:
    - Supports `per_layer_sliding_window` for `Attention`.
    """
​
    def __init__(
        self,
        hidden_size: int,
        num_heads: int,
        num_kv_heads: int,
        rope_parameters: dict[str, Any],
        max_position_embeddings: int = 8192,
        head_dim: int | None = None,
        rms_norm_eps: float = 1e-06,
        qkv_bias: bool = False,
        cache_config: Any | None = None,
        quant_config: Any | None = None,
        prefix: str = "",
        dual_chunk_attention_config: dict[str, Any] | None = None,
        per_layer_sliding_window: int | None = None, # 新增的滑动窗口参数
    ) -> None:
        nn.Module.__init__(self)
        # ... 标准初始化代码 ( 与 Qwen3MoeAttention 相同 ) ...
        self.attn = Attention(
            self.num_heads,
            self.head_dim,
            self.scaling,
            num_kv_heads=self.num_kv_heads,
            cache_config=cache_config,
            quant_config=quant_config,
            per_layer_sliding_window=per_layer_sliding_window, # 传递给底层 Attention
            prefix=f"{prefix}.attn",
            ...
        )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低。新模型完全继承自经过验证的 Qwen3Moe 架构,仅添加少量差异化参数(滑动窗口、RoPE 缩放)。主要风险在于:

  • vllm/model_executor/models/mellum.py 中的 MellumAttention 新增了 per_layer_sliding_window 参数,若首次使用该特性的后端尚未充分测试,可能引发注意力层异常。
  • 模型注册链(configs/init.py、config.py、registry.py)是典型新模型添加模式,出错概率小,但需确保与实际 HF 模型配置匹配。

用户侧:可在 vLLM 中直接加载 JetBrains/Mellum2-12B-A2.5B-Base 等 Mellum v2 系列模型进行推理。系统侧:新增约 253 行核心模型代码,但高度复用 Qwen3Moe 模块,维护成本较低。团队侧:需要跟踪 Mellum 后续版本可能带来的架构变化。

新模型集成 依赖 Qwen3Moe 架构

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论