• Members 9 posts
    2026年4月16日 19:40

    一、软硬件信息

    1. 服务器厂家: 算丰
    2. 沐曦GPU型号: MetaX C500 (64GB), 4 节点 x 8 卡, 共 32 卡
    3. 操作系统内核版本: 5.15.0-119-generic (Ubuntu 22.04.5 LTS)
    4. 是否开启CPU虚拟化: 是 (Intel VT-x, CPU: Intel Xeon Platinum 8460Y+)
    5. mx-smi回显:
    mx-smi  version: 2.2.9
    MX-SMI 2.2.9    Kernel Mode Driver Version: 3.4.4
    MACA Version: 3.3.0.15    BIOS Version: 1.30.0.0
    
    Board       Name | GPU   Persist-M | Bus-id         | GPU-Util  sGPU-M
    Pwr:Usage/Cap    | Temp       Perf | Memory-Usage   | GPU-State
    0     MetaX C500 | 0           Off | 0000:08:00.0   | 0%      Disabled
    69W / 350W       | 36C          P9 | 56938/65536 MiB| Available
    1     MetaX C500 | 1           Off | 0000:09:00.0   | 0%      Disabled
    69W / 350W       | 37C          P9 | 57578/65536 MiB| Available
    ... (8 卡, 每卡 65536 MiB, 状态 Available)
    
    1. docker info回显:
    Server Version: 20.10.19
    Storage Driver: overlay2
    Cgroup Driver: systemd
    Kernel Version: 5.15.0-119-generic
    Operating System: Ubuntu 22.04.5 LTS
    CPUs: 160
    Total Memory: 1.968TiB
    
    1. 镜像版本: pub-registry1.metax-tech.com/ai-opentest/dev/vllm-metax:0.14.0-maca.ai3.5.3.102-torch2.8-py310-ubuntu22.04-amd64_glm_w4a8_full
    2. 启动容器命令:

    Head 节点 (节点0, 10.66.3.10):

    sudo docker run -d --name ray-head --privileged --network host --shm-size 64g \
      -v /data/models/GLM-5-W8A8:/model \
      -v /dev/mxcd:/dev/mxcd \
      -e RAY_EXPERIMENTAL_NOSET_CUDA_VISIBLE_DEVICES=1 \
      pub-registry1.metax-tech.com/ai-opentest/dev/vllm-metax:0.14.0-maca.ai3.5.3.102-torch2.8-py310-ubuntu22.04-amd64_glm_w4a8_full \
      bash -c '/opt/conda/bin/ray start --head --port=6379 && sleep infinity'
    

    Worker 节点 (节点1/2/3):

    sudo docker run -d --name ray-worker --privileged --network host --shm-size 64g \
      -v /data/models/GLM-5-W8A8:/model \
      -v /dev/mxcd:/dev/mxcd \
      -e RAY_EXPERIMENTAL_NOSET_CUDA_VISIBLE_DEVICES=1 \
    
    9. 容器内执行命令:
    ```bash
    python -m vllm.entrypoints.openai.api_server \
      --model /model \
      --tensor-parallel-size 8 \
      --pipeline-parallel-size 3 \
      --distributed-executor-backend ray \
      --enforce-eager \
      --max-model-len 65536 \
      --gpu-memory-utilization 0.90
    

    二、问题现象

    问题1: PP=3 推理卡死

    使用上述命令部署 GLM-5-W8A8 (PP=3 TP=8, 3 节点 24 卡), 部署启动完全正常 (模型加载、KV cache 分配、API server 启动全部成功)。但发送推理请求后:

    1. 前约 10 秒有少量输出 (prompt throughput ~1.1 tok/s, generation throughput ~0.1 tok/s)
    2. 之后 throughput 降为 0, 请求卡死不返回
    3. 300 秒后超时报错 RayChannelTimeoutError

    已用 --enforce-eager 禁用 CUDA graph, 仍然卡死, 排除 CUDA graph 问题。

    关键对比: PP=2 全部正常

    我们测试了所有可用节点对的 PP=2 推理 (PP=2 TP=8, 2 节点 16 卡), 全部正常:

    | 节点对 | IP | PP=2 推理结果 |
    |--------|-----|--------------|
    | 节点0 + 节点1 | 10.66.3.10 + 10.66.3.11 | 正常 |
    | 节点0 + 节点3 | 10.66.3.10 + 10.66.3.13 | 正常 |
    | 节点1 + 节点3 | 10.66.3.11 + 10.66.3.13 | 正常 |
    | 节点2 + 节点3 | 10.66.3.12 + 10.66.3.13 | 正常 |
    | PP=3 任意 3 节点 | | 卡死 |

    所有节点两两 PP=2 跨节点通信正常, 只有 PP=3 (3 节点) 时卡死。怀疑 MCCL 在 3 节点通信组场景下存在问题。

    请求

    1. 排查 PP=3 推理卡死问题, 怀疑 MCCL 3 节点通信组场景
  • Members 384 posts
    2026年4月16日 19:42

    尊敬的开发者您好,请使用偶数节点

  • arrow_forward

    Thread has been moved from 公共.

  • Members 9 posts
    2026年4月16日 20:01

    您好,我们按照建议测试了偶数节点 PP=4(4节点32卡,TP=8 PP=4),部署启动正常,但推理请求仍然卡死,现象和 PP=3 完全一样:

    • 前10秒有少量输出(prompt throughput 1.3 tok/s,generation 0.1 tok/s)
    • 之后 throughput 降为 0,请求卡死不返回

    补充测试汇总:
    - PP=2(任意2节点):推理正常
    - PP=3(任意3节点):推理卡死
    - PP=4(4节点):推理卡死

    所以不是奇偶节点的问题,而是 PP>2 跨节点通信都会卡死。PP=2 两两节点对我们都测过,全部正常,说明单跳 P2P 没问题,多跳 pipeline 通信有问题。

    目前 PP=2 最大只能支持约 62k 上下文(KV cache 内存不够),无法满足 128k 需求。请帮忙排查 MCCL 在 PP>2 场景下的通信问题,谢谢。

  • Members 384 posts
    2026年4月16日 20:02

    尊敬的开发者您好,请给出四机MCCL测试日志

  • Members 9 posts
    2026年4月16日 20:13

    MCCL 四机测试日志
    测试时间: 2026-04-16 20:10
    环境: 4节点 x 8卡 MetaX C500, MACA 3.5.3, 镜像 vllm-metax:0.14.0-maca.ai3.5.3.102-torch2.8-py310-ubuntu22.04-amd64_glm_w4a8_full

    测试命令:
    export MACA_PATH=/opt/maca
    export LD_LIBRARY_PATH=${MACA_PATH}/lib:${MACA_PATH}/ompi/lib:${MACA_PATH}/ucx/lib
    ${MACA_PATH}/ompi/bin/mpirun -np 32 --allow-run-as-root \
    -mca btl_tcp_if_include 10.66.3.0/24 -mca oob_tcp_if_include 10.66.3.0/24 \
    -mca pml ^ucx -mca osc ^ucx -mca btl ^openib \
    -host 10.66.3.10:8,10.66.3.11:8,10.66.3.12:8,10.66.3.13:8 \
    -x MACA_PATH -x LD_LIBRARY_PATH -x MCCL_CROSS_NIC=1 -x FORCE_ACTIVE_WAIT=2 \
    <test_binary> -b 1K -e 1G -d float -f 2 -g 1 -n 10

    ====================================================================
    测试1: all_reduce_perf (32 GPUs across 4 nodes)
    ====================================================================

    nThread 1 nGpus 1 minBytes 1024 maxBytes 1073741824 step: 2(factor) warmup iters: 5 iters: 10 agg iters: 1 validation: 1 graph: 0

    Using devices

    Rank 0 Pid 207588 on suanfeng-mxc500-0001 device 0 [0x08] MetaX C500

    Rank 1 Pid 207589 on suanfeng-mxc500-0001 device 1 [0x09] MetaX C500

    Rank 2 Pid 207590 on suanfeng-mxc500-0001 device 2 [0x0e] MetaX C500

    Rank 3 Pid 207591 on suanfeng-mxc500-0001 device 3 [0x11] MetaX C500

    Rank 4 Pid 207592 on suanfeng-mxc500-0001 device 4 [0x32] MetaX C500

    Rank 5 Pid 207593 on suanfeng-mxc500-0001 device 5 [0x38] MetaX C500

    Rank 6 Pid 207594 on suanfeng-mxc500-0001 device 6 [0x3b] MetaX C500

    Rank 7 Pid 207595 on suanfeng-mxc500-0001 device 7 [0x3c] MetaX C500

    Rank 8 Pid 121115 on suanfeng-mxc500-0002 device 0 [0x08] MetaX C500

    Rank 9 Pid 121116 on suanfeng-mxc500-0002 device 1 [0x09] MetaX C500

    Rank 10 Pid 121117 on suanfeng-mxc500-0002 device 2 [0x0e] MetaX C500

    Rank 11 Pid 121118 on suanfeng-mxc500-0002 device 3 [0x11] MetaX C500

    Rank 12 Pid 121119 on suanfeng-mxc500-0002 device 4 [0x32] MetaX C500

    Rank 13 Pid 121120 on suanfeng-mxc500-0002 device 5 [0x38] MetaX C500

    Rank 14 Pid 121121 on suanfeng-mxc500-0002 device 6 [0x3b] MetaX C500

    Rank 15 Pid 121122 on suanfeng-mxc500-0002 device 7 [0x3c] MetaX C500

    Rank 16 Pid 30847 on suanfeng-mxc500-0003 device 0 [0x08] MetaX C500

    Rank 17 Pid 30848 on suanfeng-mxc500-0003 device 1 [0x09] MetaX C500

    Rank 18 Pid 30849 on suanfeng-mxc500-0003 device 2 [0x0e] MetaX C500

    Rank 19 Pid 30850 on suanfeng-mxc500-0003 device 3 [0x11] MetaX C500

    Rank 20 Pid 30851 on suanfeng-mxc500-0003 device 4 [0x32] MetaX C500

    Rank 21 Pid 30852 on suanfeng-mxc500-0003 device 5 [0x38] MetaX C500

    Rank 22 Pid 30853 on suanfeng-mxc500-0003 device 6 [0x3b] MetaX C500

    Rank 23 Pid 30854 on suanfeng-mxc500-0003 device 7 [0x3c] MetaX C500

    Rank 24 Pid 30001 on suanfeng-mxc500-0004 device 0 [0x08] MetaX C500

    Rank 25 Pid 30002 on suanfeng-mxc500-0004 device 1 [0x09] MetaX C500

    Rank 26 Pid 30003 on suanfeng-mxc500-0004 device 2 [0x0e] MetaX C500

    Rank 27 Pid 30004 on suanfeng-mxc500-0004 device 3 [0x11] MetaX C500

    Rank 28 Pid 30005 on suanfeng-mxc500-0004 device 4 [0x32] MetaX C500

    Rank 29 Pid 30006 on suanfeng-mxc500-0004 device 5 [0x38] MetaX C500

    Rank 30 Pid 30007 on suanfeng-mxc500-0004 device 6 [0x3b] MetaX C500

    Rank 31 Pid 30008 on suanfeng-mxc500-0004 device 7 [0x3c] MetaX C500

    out-of-place in-place

    size count type redop root time algbw busbw #wrong time algbw busbw #wrong

    (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s)

        1024           256     float     sum      -1      65.95    0.02    0.03      0      70.78    0.01    0.03      0
        2048           512     float     sum      -1      68.10    0.03    0.06      0      73.63    0.03    0.05      0
        4096          1024     float     sum      -1      71.80    0.06    0.11      0      70.05    0.06    0.11      0
        8192          2048     float     sum      -1      75.38    0.11    0.21      0      78.53    0.10    0.20      0
       16384          4096     float     sum      -1      81.17    0.20    0.39      0      78.59    0.21    0.40      0
       32768          8192     float     sum      -1      90.55    0.36    0.70      0      88.60    0.37    0.72      0
       65536         16384     float     sum      -1     160.38    0.41    0.79      0     170.30    0.38    0.75      0
      131072         32768     float     sum      -1     184.35    0.71    1.38      0     179.75    0.73    1.41      0
      262144         65536     float     sum      -1     196.76    1.33    2.58      0     200.38    1.31    2.53      0
      524288        131072     float     sum      -1     222.27    2.36    4.57      0     219.08    2.39    4.64      0
     1048576        262144     float     sum      -1     286.65    3.66    7.09      0     268.51    3.91    7.57      0
     2097152        524288     float     sum      -1     306.80    6.84   13.24      0     307.21    6.83   13.23      0
     4194304       1048576     float     sum      -1     418.79   10.02   19.40      0     393.13   10.67   20.67      0
     8388608       2097152     float     sum      -1     599.86   13.98   27.09      0     598.73   14.01   27.15      0
    16777216       4194304     float     sum      -1    1018.58   16.47   31.91      0    1010.60   16.60   32.16      0
    33554432       8388608     float     sum      -1    1597.54   21.00   40.69      0    1595.35   21.03   40.75      0
    67108864      16777216     float     sum      -1    2951.84   22.73   44.05      0    2979.91   22.52   43.63      0
    

    134217728 33554432 float sum -1 6046.98 22.20 43.00 0 6052.52 22.18 42.97 0
    268435456 67108864 float sum -1 10429.17 25.74 49.87 0 10402.60 25.80 50.00 0
    536870912 134217728 float sum -1 16236.85 33.06 64.06 0 15635.12 34.34 66.53 0
    1073741824 268435456 float sum -1 29299.23 36.65 71.00 0 29201.44 36.77 71.24 0

    Out of bounds values : 0 OK

    Avg bus bandwidth : 20.214

    ====================================================================
    测试2: sendrecv_perf (32 GPUs across 4 nodes)
    ====================================================================

    nThread 1 nGpus 1 minBytes 1024 maxBytes 1073741824 step: 2(factor) warmup iters: 5 iters: 10 agg iters: 1 validation: 1 graph: 0

    Using devices

    Rank 0 Pid 207778 on suanfeng-mxc500-0001 device 0 [0x08] MetaX C500

    Rank 1 Pid 207779 on suanfeng-mxc500-0001 device 1 [0x09] MetaX C500

    Rank 2 Pid 207780 on suanfeng-mxc500-0001 device 2 [0x0e] MetaX C500

    Rank 3 Pid 207781 on suanfeng-mxc500-0001 device 3 [0x11] MetaX C500

    Rank 4 Pid 207782 on suanfeng-mxc500-0001 device 4 [0x32] MetaX C500

    Rank 5 Pid 207783 on suanfeng-mxc500-0001 device 5 [0x38] MetaX C500

    Rank 6 Pid 207784 on suanfeng-mxc500-0001 device 6 [0x3b] MetaX C500

    Rank 7 Pid 207785 on suanfeng-mxc500-0001 device 7 [0x3c] MetaX C500

    Rank 8 Pid 121305 on suanfeng-mxc500-0002 device 0 [0x08] MetaX C500

    Rank 9 Pid 121306 on suanfeng-mxc500-0002 device 1 [0x09] MetaX C500

    Rank 10 Pid 121307 on suanfeng-mxc500-0002 device 2 [0x0e] MetaX C500

    Rank 11 Pid 121308 on suanfeng-mxc500-0002 device 3 [0x11] MetaX C500

    Rank 12 Pid 121309 on suanfeng-mxc500-0002 device 4 [0x32] MetaX C500

    Rank 16 Pid 31037 on suanfeng-mxc500-0003 device 0 [0x08] MetaX C500

    Rank 17 Pid 31038 on suanfeng-mxc500-0003 device 1 [0x09] MetaX C500

    Rank 18 Pid 31039 on suanfeng-mxc500-0003 device 2 [0x0e] MetaX C500

    Rank 19 Pid 31040 on suanfeng-mxc500-0003 device 3 [0x11] MetaX C500

    Rank 20 Pid 31041 on suanfeng-mxc500-0003 device 4 [0x32] MetaX C500

    Rank 21 Pid 31042 on suanfeng-mxc500-0003 device 5 [0x38] MetaX C500

    Rank 22 Pid 31043 on suanfeng-mxc500-0003 device 6 [0x3b] MetaX C500

    Rank 23 Pid 31044 on suanfeng-mxc500-0003 device 7 [0x3c] MetaX C500

    Rank 24 Pid 30191 on suanfeng-mxc500-0004 device 0 [0x08] MetaX C500

    Rank 25 Pid 30192 on suanfeng-mxc500-0004 device 1 [0x09] MetaX C500

    Rank 26 Pid 30193 on suanfeng-mxc500-0004 device 2 [0x0e] MetaX C500

    Rank 27 Pid 30194 on suanfeng-mxc500-0004 device 3 [0x11] MetaX C500

    Rank 28 Pid 30195 on suanfeng-mxc500-0004 device 4 [0x32] MetaX C500

    Rank 29 Pid 30196 on suanfeng-mxc500-0004 device 5 [0x38] MetaX C500

    Rank 30 Pid 30197 on suanfeng-mxc500-0004 device 6 [0x3b] MetaX C500

    Rank 31 Pid 30198 on suanfeng-mxc500-0004 device 7 [0x3c] MetaX C500

    out-of-place in-place

    size count type redop root time algbw busbw #wrong time algbw busbw #wrong

    (B) (elements) (us) (GB/s) (GB/s) (us) (GB/s) (GB/s)

        1024           256     float     sum      -1      22.69    0.05    0.05      0   23.21    0.04    0.04    N/A
        2048           512     float     sum      -1      22.53    0.09    0.09      0   21.32    0.10    0.10    N/A
        4096          1024     float     sum      -1      22.56    0.18    0.18      0   23.10    0.18    0.18    N/A
        8192          2048     float     sum      -1      27.75    0.30    0.30      0   23.47    0.35    0.35    N/A
       16384          4096     float     sum      -1      27.30    0.60    0.60      0   31.13    0.53    0.53    N/A
       32768          8192     float     sum      -1      27.32    1.20    1.20      0   29.38    1.12    1.12    N/A
       65536         16384     float     sum      -1      33.79    1.94    1.94      0   35.12    1.87    1.87    N/A
      131072         32768     float     sum      -1      41.38    3.17    3.17      0   39.67    3.30    3.30    N/A
      262144         65536     float     sum      -1      41.94    6.25    6.25      0   42.77    6.13    6.13    N/A
      524288        131072     float     sum      -1      48.69   10.77   10.77      0   49.06   10.69   10.69    N/A
     1048576        262144     float     sum      -1      75.20   13.94   13.94      0   72.41   14.48   14.48    N/A
     2097152        524288     float     sum      -1     121.01   17.33   17.33      0   121.96   17.20   17.20    N/A
     4194304       1048576     float     sum      -1     215.95   19.42   19.42      0   213.89   19.61   19.61    N/A
     8388608       2097152     float     sum      -1     407.83   20.57   20.57      0   406.84   20.62   20.62    N/A
    16777216       4194304     float     sum      -1     790.86   21.21   21.21      0   789.07   21.26   21.26    N/A
    33554432       8388608     float     sum      -1    1558.21   21.53   21.53      0  1556.81   21.55   21.55    N/A
    67108864      16777216     float     sum      -1    3092.90   21.70   21.70      0  3088.81   21.73   21.73    N/A
    

    134217728 33554432 float sum -1 6170.58 21.75 21.75 0 6166.62 21.77 21.77 N/A
    268435456 67108864 float sum -1 12331.14 21.77 21.77 0 12331.46 21.77 21.77 N/A
    536870912 134217728 float sum -1 24670.56 21.76 21.76 0 24650.90 21.78 21.78 N/A
    1073741824 268435456 float sum -1 49320.18 21.77 21.77 0 49299.55 21.78 21.78 N/A

    Out of bounds values : 0 OK

    Avg bus bandwidth : 11.789

    ====================================================================
    结论: MCCL 四机通信测试全部通过, 0 错误。
    all_reduce 峰值 bus bandwidth: 71.24 GB/s
    sendrecv 峰值 bus bandwidth: 21.78 GB/s

    但 vLLM PP>2 推理仍然卡死 (PP=3 和 PP=4 均复现)。
    PP=2 推理正常。问题不在 MCCL 底层通信, 而在 vLLM PP pipeline 调度与 MCCL 的交互。

  • Members 384 posts
    2026年4月16日 21:53

    尊敬的开发者您好,请使用mp后端测试

  • Members 9 posts
    2026年4月16日 22:32

    PP=4 TP=8(4节点32卡):
    torchrun --nnodes=4 --nproc-per-node=8 --node-rank=<rank> --master-addr=10.66.3.10 --master-port=29500 \
    -m vllm.entrypoints.openai.api_server --model /model --tp 8 --pp 4 \
    --distributed-executor-backend external_launcher --enforce-eager --max-model-len 131072 --gpu-memory-utilization 0.88
    部署启动正常(KV cache 分配成功,API server startup complete),但推理请求卡死,60秒超时无响应。

    PP=2 TP=8(2节点16卡):同样方式启动,同样卡死。

    作为对比,PP=2 TP=8 使用 Ray 后端(--distributed-executor-backend ray)推理正常。

    另外我们也跑了 MCCL 四机通信测试(all_reduce_perf、sendrecv_perf,32卡),全部通过,0错误。详细日志见附件。

    insert_drive_file
    vllm_pp4_external_launcher.log

    Text, 209.5 KB, uploaded by jiaqian on 2026年4月16日.

    insert_drive_file
    vllm_pp2_external_launcher.log

    Text, 166.1 KB, uploaded by jiaqian on 2026年4月16日.

    insert_drive_file
    mp_backend_test_results.txt

    Text, 1.8 KB, uploaded by jiaqian on 2026年4月16日.

  • Members 384 posts
    2026年4月17日 14:42

    尊敬的开发者您好,请提供每个节点上的日志信息

  • Members 384 posts
    2026年4月17日 14:46

    尊敬的开发者您好,请给出容器内ray配置的详细步骤,确保ray能识别到机器数量对应的GPU数量

  • Members 9 posts
    2026年4月17日 16:00

    您好,感谢跟进。

    关于您要的两项信息,先简要回应,但更重要的是——我们已经把问题定位到 MCCL 层,Ray/日志层面看不到根因。直接给线索能帮您团队少走弯路:

    一、Ray 配置与节点识别:已验证无问题

    • 4 节点 × 8 卡 Ray 集群 ray status 显示 32/32 GPU ready
    • PP=2 TP=8(2 节点 16 卡)可以稳定推理 65k 上下文 → 证明 Ray、MCCL 通信器初始化、GPU 识别全部正常
    • 问题只在 PP≥3 时出现,所以不是 Ray 配置问题,而是多 stage P2P 传递时的 MCCL 行为问题

    各节点完整 vLLM 日志已附在 evidence/vllm_pp3_v5.log(带 CudaCommunicator trace)和 evidence/vllm_pp2_external_launcher.log。

    二、根因(请重点关注)

    MCCL 的 mcclSend 在 Ray Compiled Graph + PP≥3 场景下 kernel 未投递到 GPU。

    关键证据(gdb attach rank 1,hang 发生后约 90s)

    Thread 234(mcclProxyProgress) 在空转:
    #0 sched_yield()
    #1 mcclProxyProgress(void*) from /opt/maca/lib/libmccl.so

    MetaX driver AsyncEventsLoop 卡在等永不到来的 event:
    [<0>] mxos_schedule_timeout
    [<0>] mxcd_evt_wait_many + 0x543/0x660 [metax]
    [<0>] mxcd_ioctl_wait_events [metax]

    因果链:
    1. stage0 → stage1 调 mcclSend,request 入 MCCL 内部队列,立即返回
    2. mcclProxyProgress 线程在 sched_yield 空转,没把 request 推到 GPU 执行
    3. GPU 不产生 completion event → driver AsyncEventsLoop 无限等
    4. Ray CGRAPH 的 channel 等不到完成信号 → rank 1 execute_model 从未被调度
    5. 表现为 "第一步少量 throughput 后归零 → RayChannelTimeoutError"

    排除项(已验证)

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────┬────────────────────────────────────────┐
    │ 验证 │ 结果 │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────┤
    │ mccl_perf sendrecv 4 节点 │ ✅ 通过,22 GB/s │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────┤
    │ mccl_perf all_reduce 4 节点 │ ✅ 通过,71 GB/s │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────┤
    │ 最小 repro pp_chain_test.py(3 节点 blocking send/recv chain,torch.distributed + nccl backend) │ ✅ 通过,0.5ms │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────┤
    │ vLLM patch A:绕过 PyNccl 走 torch.distributed.send │ ❌ 仍 hang,但 Ray CGRAPH 追不到 event │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────┼────────────────────────────────────────┤
    │ vLLM patch B:保留 ncclSend + ncclGroupStart/End + stream.synchronize() │ ❌ 仍 hang,sync 没 event 可等 │
    └──────────────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────┘

    → vLLM Python 层无法绕开,必须在 MCCL 内修。

    三、建议排查方向

    1. mcclProxyProgress 线程 sched_yield 空转条件是什么?为什么 2-rank P2P 能投递、3-rank 多对并发就不投递?
    2. mcclSend 入队后到 GPU stream enqueue 之间是否存在竞态?PP≥3 时 rank 1 同时作为 recv target(来自 rank 0)和 send source(发往 rank 2),是否触发了未覆盖的分支?
    3. 请在沐曦侧复现:vllm-metax + PP=3 + TP=8 + Ray 后端 + enforce-eager
    4. 开启 NCCL_DEBUG=INFO 时需要通过 Ray runtime_env 传递,否则收不到 worker 子进程日志

    四、完整材料

    已整理附件中

    insert_drive_file
    GLM5-PP-Debug-for-MetaX.md

    Text, 18.2 KB, uploaded by jiaqian on 2026年4月17日.