@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 0674d1fee7
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 6, 09:30 UTC

[PluggableLayer][MM] Add PluggableLayer for CustomQwen2Decoder (#37293)

Signed-off-by: Wangbei25 <wangbei41@huawie.com> Signed-off-by: Wangbei25 <wangbei41@huawei.com> Co-authored-by: Wangbei25 <wangbei41@huawie.com>

Wangbei25 committed Mar 20, 2026 at 14:24 UTC 0674d1fee76102e05db6ebb415952e51a6cf81a8
2 files changed +17 -4
docs/design/custom_op.md
+10 -3
@@ -51,11 +51,8 @@ For example:
51 **1. Attention:**
52
53 ```python
54 ---8<-- "vllm/model_executor/layers/attention/mm_encoder_attention.py:mm_encoder_attn"
55 -
54 --8<-- "vllm/model_executor/layers/mla.py:multi_head_latent_attention"
55
58 ---8<-- "vllm/model_executor/models/deepencoder.py:rel_pos_attention"
56 ```
57
58 **2. Activation:**
@@ -170,6 +167,16 @@ For example:
167 --8<-- "vllm/model_executor/layers/rotary_embedding/common.py:apply_rotary_emb"
168 ```
169
170 +**12. Encoder:**
171 +
172 +```python
173 +--8<-- "vllm/model_executor/models/deepencoder2.py:qwen2_decoder"
174 +
175 +--8<-- "vllm/model_executor/layers/attention/mm_encoder_attention.py:mm_encoder_attn"
176 +
177 +--8<-- "vllm/model_executor/models/deepencoder.py:rel_pos_attention"
178 +```
179 +
180 ## Guidelines for Implementing a New CustomOp
181
182 ### Implement a New CustomOp in vLLM
vllm/model_executor/models/deepencoder2.py
+7 -1
@@ -14,14 +14,20 @@ import torch
14 import torch.nn as nn
15 import transformers
16
17 +from vllm.model_executor.custom_op import PluggableLayer
18
18 -class CustomQwen2Decoder(nn.Module):
19 +
20 +# --8<-- [start:qwen2_decoder]
21 +@PluggableLayer.register("qwen2_decoder")
22 +class CustomQwen2Decoder(PluggableLayer):
23 """
24 Qwen2 visual encoder
25 non-causal attention + causal attention
26 token_type_ids :0=non-causal, 1=causal
27 """
28
29 + # --8<-- [end:qwen2_decoder]
30 +
31 def __init__(
32 self,
33 decoder_layer: int = 24,