已关闭
[Bug]: 社区CANN8.5alpha002+torch-npu2.8.0 以图模式运行sglang报错,提示graph不能以不同stream运行 #1497
fa1c0n0创建于  1月8日关闭于  3月18日
fa1c0n0
fa1c0n0
1月8日 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

环境信息:

Python: 3.11.13 (main, Nov 2 2025, 10:27:27) [GCC 11.4.0]
NPU available: True
NPU 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15: Ascend910_****
CANN_HOME: /usr/local/Ascend/ascend-toolkit/latest
CANN: 8.5.T8.0.B060:8.5.0.alpha002
BiSheng: 2025-10-24T18:53:37+08:00 clang version 15.0.5 (clang-5c68a1cb1231 flang-5c68a1cb1231)
Ascend Driver Version: 25.2.2.2
PyTorch: 2.8.0+cpu
sglang: 0.5.7
sgl_kernel: Module Not Found
flashinfer_python: Module Not Found
flashinfer_cubin: Module Not Found
flashinfer_jit_cache: Module Not Found
triton: Module Not Found
transformers: 5.0.0rc0
torchao: 0.9.0
numpy: 1.26.4
aiohttp: 3.13.2
fastapi: 0.122.0
hf_transfer: 0.1.9
huggingface_hub: 1.2.1
interegular: 0.3.3
modelscope: 1.32.0
orjson: 3.11.4
outlines: 0.1.11
packaging: 25.0
psutil: 6.0.0
pydantic: 2.12.4
python-multipart: 0.0.20
pyzmq: 27.1.0
uvicorn: 0.38.0
uvloop: 0.21.0
vllm: Module Not Found
xgrammar: 0.1.27
openai: 1.99.1
tiktoken: 0.12.0
anthropic: 0.75.0
litellm: Module Not Found
decord2: 2.0.0
torch_npu: 2.8.0.post2.dev20251210
sgl-kernel-npu: 0.1.0
deep_ep: 1.0.0+a8e003ca

🐛 问题描述

报错显示如下

Traceback (most recent call last):
  File "/home/prof/sglang-master/python/sglang/srt/managers/scheduler.py", line 2905, in run_scheduler_process
    scheduler = Scheduler(
                ^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/managers/scheduler.py", line 333, in __init__
    self.init_model_worker()
  File "/home/prof/sglang-master/python/sglang/srt/managers/scheduler.py", line 536, in init_model_worker
    self.draft_worker = self.spec_algorithm.create_draft_worker(
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/speculative/spec_info.py", line 179, in create_draft_worker
    return self._draft_worker_factory(self, **factory_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/speculative/spec_info.py", line 197, in _factory
    return worker_cls(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/speculative/spec_info.py", line 269, in _create_eagle_worker
    return EAGLEWorkerV2(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/speculative/eagle_worker_v2.py", line 580, in __init__
    self._draft_worker = EagleDraftWorker(
                         ^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/speculative/eagle_worker_v2.py", line 148, in __init__
    self.init_cuda_graphs()
  File "/home/prof/sglang-master/python/sglang/srt/speculative/eagle_worker_v2.py", line 241, in init_cuda_graphs
    self.cuda_graph_runner = Device2DraftCudaGraphRunner[
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/prof/sglang-master/python/sglang/srt/hardware_backend/npu/graph_runner/eagle_draft_npu_graph_runner.py", line 50, in __init__
    super().__init__(eagle_worker)
  File "/home/prof/sglang-master/python/sglang/srt/speculative/eagle_draft_cuda_graph_runner.py", line 132, in __init__
    raise Exception(
Exception: Capture cuda graph failed: Unsupport run graph with different stream.
Traceback (most recent call last):
  File "/usr/local/python3.11.13/lib/python3.11/site-packages/torch_npu/dynamo/torchair/_utils/error_code.py", line 43, in wapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/python3.11.13/lib/python3.11/site-packages/torch_npu/dynamo/torchair/core/_backend.py", line 137, in run
    return super(TorchNpuGraph, self).run((inputs, assigned_outputs, stream))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Unsupport run graph with different stream.

2.8.0post1版本接CANN 8.3RC1版本没有这个报错,但是有其他计算结果NAN/graph.replay()等报错,8.5尝试torch-npu 2.8.0post3也有相同报错

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
fa1c0n0fa1c0n0
1月8日 修改标题为 “[Bug]: 社区CANN8.5alpha002+2.8.0post2/2.8.0post3 以图模式运行sglang报错,提示graph不能以不同stream运行”,原标题为“[Bug]: 社区CANN8.5alpha002+2.8.0post2/2.8.0post3 图模式运行sglang报错,提示graph不能以不同stream运行”
fa1c0n0fa1c0n0
1月8日 修改标题为 “[Bug]: 社区CANN8.5alpha002+2.8.0 以图模式运行sglang报错,提示graph不能以不同stream运行”,原标题为“[Bug]: 社区CANN8.5alpha002+2.8.0post2/2.8.0post3 以图模式运行sglang报错,提示graph不能以不同stream运行”
fa1c0n0fa1c0n0
1月8日 修改标题为 “[Bug]: 社区CANN8.5alpha002+torch-npu2.8.0 以图模式运行sglang报错,提示graph不能以不同stream运行”,原标题为“[Bug]: 社区CANN8.5alpha002+2.8.0 以图模式运行sglang报错,提示graph不能以不同stream运行”
huangyunlong成员
1月8日 评论:

报错显示在不同的流上运行了,建议排查下sglang使用中是否切流了,如果sglang使用没问题,还有这个问题,可以在torchair仓提issue,
https://gitcode.com/Ascend/torchair/issues

likedislike
fa1c0n0
fa1c0n0
1月8日 评论:

报错显示在不同的流上运行了,建议排查下sglang使用中是否切流了,如果sglang使用没问题,还有这个问题,可以在torchair仓提issue,
https://gitcode.com/Ascend/torchair/issues

@huangyunlong2022
多请教一下新的版本下这块有什么已知的新的约束限制吗?
sglang上层是在初始化的时候capture graph的时候出错的,相同代码是在旧版本CANN+2.8.0post1没报错的

likedislike
haiyan8
haiyan8
1月8日 评论:

先定位下流变化的大概位置,然后缩小范围看是和torchair有关还是和pta有关。

likedislike
fa1c0n0
fa1c0n0
1月9日 评论:

@yuhaiyan @huangyunlong2022
补充一些信息
在capture batch的时候有torch dynamo一些告警:
[rank0]:W0109 01:58:05.384000 3593511 site-packages/torch/_dynamo/convert_frame.py:1016] [0/8] torch._dynamo hit config.recompile_limit (8)
[rank0]:W0109 01:58:05.384000 3593511 site-packages/torch/_dynamo/convert_frame.py:1016] [0/8] function: 'get_masked_input_and_mask' (/home/prof/sglang-master/python/sglang/srt/layers/vocab_parallel_embedding.py:129)

因为怀疑报错是和这个告警相关:
在上层sglang将get_masked_input_and_mask函数的compile装饰器注释掉就能跑通了,函数内部只是在算mask,只有很基础的计算的代码

#@torch.compile(dynamic=True, backend=get_compiler_backend())
def get_masked_input_and_mask(
likedislike
haiyan8
haiyan8
1月12日 评论:

@yuhaiyan @huangyunlong2022
补充一些信息
在capture batch的时候有torch dynamo一些告警:
[rank0]:W0109 01:58:05.384000 3593511 site-packages/torch/_dynamo/convert_frame.py:1016] [0/8] torch._dynamo hit config.recompile_limit (8)
[rank0]:W0109 01:58:05.384000 3593511 site-packages/torch/_dynamo/convert_frame.py:1016] [0/8] function: 'get_masked_input_and_mask' (/home/prof/sglang-master/python/sglang/srt/layers/vocab_parallel_embedding.py:129)

因为怀疑报错是和这个告警相关:
在上层sglang将get_masked_input_and_mask函数的compile装饰器注释掉就能跑通了,函数内部只是在算mask,只有很基础的计算的代码

#@torch.compile(dynamic=True, backend=get_compiler_backend())
def get_masked_input_and_mask(

@qq_26765989

那看起来是和torchair有关,建议在torchair仓提个issue。

likedislike
ascend-robotascend-robot成员
1月22日 添加了label:bug
Hhuangyunlong成员
3月18日 issue状态由 TODO 改变为 DONE
Hhuangyunlong成员
3月18日 关闭了 issue