[Fix]: BCG support for RadixLinearAttention (Qwen3.5 / linear-attn hybrid models) (#25110)

This commit is contained in:
Minglei Zhu
2026-05-22 13:30:35 -07:00
committed by GitHub
parent 763174fa6c
commit b73278e4e0
@@ -22,6 +22,12 @@ from torch import nn
from sglang.srt.compilation.compilation_config import register_split_op
from sglang.srt.compilation.piecewise_context_manager import get_forward_context
from sglang.srt.model_executor.breakable_cuda_graph.breakable_cuda_graph import (
eager_on_graph,
)
from sglang.srt.model_executor.breakable_cuda_graph.context import (
is_in_breakable_cuda_graph,
)
from sglang.srt.model_executor.forward_context import get_attn_backend
from sglang.srt.utils.custom_op import register_custom_op
@@ -84,13 +90,22 @@ class RadixLinearAttention(nn.Module):
dtype=mixed_qkv.dtype,
device=mixed_qkv.device,
)
unified_linear_attention_with_output(
mixed_qkv,
a,
b,
output,
self.layer_id,
)
if is_in_breakable_cuda_graph():
bcg_unified_linear_attention_with_output(
mixed_qkv,
a,
b,
output,
self.layer_id,
)
else:
unified_linear_attention_with_output(
mixed_qkv,
a,
b,
output,
self.layer_id,
)
return output
else:
return get_attn_backend().forward(
@@ -136,3 +151,8 @@ def unified_linear_attention_with_output(
output[:, :real_num_tokens].copy_(ret)
return
bcg_unified_linear_attention_with_output = eager_on_graph(True)(
unified_linear_attention_with_output
)