[GH-ISSUE #254] When running the two-machine test_low_latency.py (EP16), there is a significant difference in the test results between two machine #191

Open
opened 2026-10-26 09:56:15 +00:00 by bsakaguchi · 17 comments
Owner

Originally created by @nannaer on GitHub (Jun 24, 2025).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/254

When running the two-machine test_low_latency.py (EP16), there is a significant difference in the test results of dispatch and combine on the two machines. My version number is 9fe9021, and I haven't modified any code. As follows. I'm not sure if it's my machine's network that's malfunctioning. @sphish

Machine 1 8 GPU

Image

Machine 2 8 GPU

Image

Version

Image

Originally created by @nannaer on GitHub (Jun 24, 2025). Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/254 When running the two-machine test_low_latency.py (EP16), there is a significant difference in the test results of dispatch and combine on the two machines. My version number is 9fe9021, and I haven't modified any code. As follows. I'm not sure if it's my machine's network that's malfunctioning. @sphish **_Machine 1 8 GPU_** ![Image](https://github.com/user-attachments/assets/c5618999-a2d7-47b0-9130-d773b142c8e2) **_Machine 2 8 GPU_** ![Image](https://github.com/user-attachments/assets/84ff596e-cc19-45b4-8fc5-28fdc21a9a2d) **_Version_** ![Image](https://github.com/user-attachments/assets/68fb7be4-56d8-4e26-a636-ed1b8587983a)
Author
Owner

@sphish commented on GitHub (Jun 25, 2025):

This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.

<!-- gh-comment-id:3002342057 --> @sphish commented on GitHub (Jun 25, 2025): This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.
Author
Owner

@liuhe-spec commented on GitHub (Jun 25, 2025):

We have also encountered this performance issue and identified that it seems from behavioral differences between IB and RoCE.
After applying the following configurations, performance normalized.

mlxreg -d mlx5_0 --reg_name ROCE_ACCL --set "adaptive_routing_forced_en=0x1" -y
<!-- gh-comment-id:3002645510 --> @liuhe-spec commented on GitHub (Jun 25, 2025): We have also encountered this performance issue and identified that it seems from behavioral differences between IB and RoCE. After applying the following configurations, performance normalized. ``` mlxreg -d mlx5_0 --reg_name ROCE_ACCL --set "adaptive_routing_forced_en=0x1" -y ```
Author
Owner

@sphish commented on GitHub (Jun 25, 2025):

I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control.

If possible, you can ask your cluster's network administrators to try the following actions:

  1. Enable adaptive routing
  2. Adjust the DCQCN parameters
  3. Disable congestion control
<!-- gh-comment-id:3003355902 --> @sphish commented on GitHub (Jun 25, 2025): I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control. If possible, you can ask your cluster's network administrators to try the following actions: 1. Enable adaptive routing 2. Adjust the DCQCN parameters 3. Disable congestion control
Author
Owner

@nannaer commented on GitHub (Jun 25, 2025):

I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control.

If possible, you can ask your cluster's network administrators to try the following actions:

  1. Enable adaptive routing
  2. Adjust the DCQCN parameters
  3. Disable congestion control

Thanks! I will try it!

<!-- gh-comment-id:3003367854 --> @nannaer commented on GitHub (Jun 25, 2025): > I discussed this issue with [@liuhe-spec](https://github.com/liuhe-spec) on WeChat, and we strongly suspect it is likely related to RoCE network congestion control. > > If possible, you can ask your cluster's network administrators to try the following actions: > > 1. Enable adaptive routing > 2. Adjust the DCQCN parameters > 3. Disable congestion control Thanks! I will try it!
Author
Owner

@polarstormx commented on GitHub (Jul 2, 2025):

@nannaer I'm also experiencing this issue. Are there any updates ? Thanks!

<!-- gh-comment-id:3026834415 --> @polarstormx commented on GitHub (Jul 2, 2025): @nannaer I'm also experiencing this issue. Are there any updates ? Thanks!
Author
Owner

@sunmac commented on GitHub (Jul 3, 2025):

We encountered the same issue, but in the opposite direction: the dispatch bandwidth on the master node is low, while the combine bandwidth is high. The problem persists even after swapping the master and worker roles.
The issue was resolved after adding dist.barrier().
Image
Can you determine whether the issue stems from network problems or the inference code itself?

<!-- gh-comment-id:3031021101 --> @sunmac commented on GitHub (Jul 3, 2025): We encountered the same issue, but in the opposite direction: the dispatch bandwidth on the master node is low, while the combine bandwidth is high. The problem persists even after swapping the master and worker roles. The issue was resolved after adding dist.barrier(). ![Image](https://github.com/user-attachments/assets/1f7aa562-69fd-4ca9-b0c4-5411e0c12c87) Can you determine whether the issue stems from network problems or the inference code itself?
Author
Owner

@rubbberrabbit commented on GitHub (Jul 3, 2025):

I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control.

If possible, you can ask your cluster's network administrators to try the following actions:

  1. Enable adaptive routing
  2. Adjust the DCQCN parameters
  3. Disable congestion control

We encounter the same issue, but in our Roce network their is no ecn which means DCQCN does not work. We disable the adaptive routing in enviroment. Can you explain more details about the reason about the AR actions ? Thanks !

<!-- gh-comment-id:3031119281 --> @rubbberrabbit commented on GitHub (Jul 3, 2025): > I discussed this issue with [@liuhe-spec](https://github.com/liuhe-spec) on WeChat, and we strongly suspect it is likely related to RoCE network congestion control. > > If possible, you can ask your cluster's network administrators to try the following actions: > > 1. Enable adaptive routing > 2. Adjust the DCQCN parameters > 3. Disable congestion control We encounter the same issue, but in our Roce network their is no ecn which means DCQCN does not work. We disable the adaptive routing in enviroment. Can you explain more details about the reason about the AR actions ? Thanks !
Author
Owner

@Enjia commented on GitHub (Jul 3, 2025):

We have also encountered this performance issue and identified that it seems from behavioral differences between IB and RoCE. After applying the following configurations, performance normalized.

mlxreg -d mlx5_0 --reg_name ROCE_ACCL --set "adaptive_routing_forced_en=0x1" -y

Does that mean you indeed encounter congestion while running dispatch and combine than get that situation resolved through enabling AR?

<!-- gh-comment-id:3031192217 --> @Enjia commented on GitHub (Jul 3, 2025): > We have also encountered this performance issue and identified that it seems from behavioral differences between IB and RoCE. After applying the following configurations, performance normalized. > > ``` > mlxreg -d mlx5_0 --reg_name ROCE_ACCL --set "adaptive_routing_forced_en=0x1" -y > ``` Does that mean you indeed encounter congestion while running dispatch and combine than get that situation resolved through enabling AR?
Author
Owner

@elevenxiang commented on GitHub (Jul 3, 2025):

This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.

I have profiled and found below truth:

  1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously
  2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait
  3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host
  4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait
  5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast

finally, dispatch and combine will have huge performance gap !

<!-- gh-comment-id:3031527007 --> @elevenxiang commented on GitHub (Jul 3, 2025): > This seems very similar to [#183](https://github.com/deepseek-ai/DeepEP/issues/183). We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look. I have profiled and found below truth: 1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously 2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait 3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host 4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait 5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast finally, dispatch and combine will have huge performance gap !
Author
Owner

@elevenxiang commented on GitHub (Jul 3, 2025):

I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control.
If possible, you can ask your cluster's network administrators to try the following actions:

  1. Enable adaptive routing
  2. Adjust the DCQCN parameters
  3. Disable congestion control

Thanks! I will try it!

Hi Manner,

Did you get any progress ?
Thanks

<!-- gh-comment-id:3031983463 --> @elevenxiang commented on GitHub (Jul 3, 2025): > > I discussed this issue with [@liuhe-spec](https://github.com/liuhe-spec) on WeChat, and we strongly suspect it is likely related to RoCE network congestion control. > > If possible, you can ask your cluster's network administrators to try the following actions: > > > > 1. Enable adaptive routing > > 2. Adjust the DCQCN parameters > > 3. Disable congestion control > > Thanks! I will try it! Hi Manner, Did you get any progress ? Thanks
Author
Owner

@sphish commented on GitHub (Jul 3, 2025):

This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.

I have profiled and found below truth:

  1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously
  2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait
  3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host
  4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait
  5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast

finally, dispatch and combine will have huge performance gap !

You can try adding a dist.barrier before each alltoall operation

<!-- gh-comment-id:3032206972 --> @sphish commented on GitHub (Jul 3, 2025): > > This seems very similar to [#183](https://github.com/deepseek-ai/DeepEP/issues/183). We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look. > > I have profiled and found below truth: > > 1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously > 2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait > 3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host > 4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait > 5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast > > finally, dispatch and combine will have huge performance gap ! You can try adding a dist.barrier before each alltoall operation
Author
Owner

@Enjia commented on GitHub (Jul 3, 2025):

This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.

I have profiled and found below truth:

  1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously
  2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait
  3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host
  4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait
  5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast

finally, dispatch and combine will have huge performance gap !

You can try adding a dist.barrier before each alltoall operation

Thanks! That works in pure deepEP dispatch+combine test, and I find the same send/recv time mismatching phenomenon in SGLang when it executing cross node inference because SGLang guarantees no barrier when calling dispatch or combine

<!-- gh-comment-id:3032533326 --> @Enjia commented on GitHub (Jul 3, 2025): > > > This seems very similar to [#183](https://github.com/deepseek-ai/DeepEP/issues/183). We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look. > > > > > > I have profiled and found below truth: > > > > 1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously > > 2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait > > 3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host > > 4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait > > 5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast > > > > finally, dispatch and combine will have huge performance gap ! > > You can try adding a dist.barrier before each alltoall operation Thanks! That works in pure deepEP dispatch+combine test, and I find the same send/recv time mismatching phenomenon in SGLang when it executing cross node inference because SGLang guarantees no barrier when calling dispatch or combine
Author
Owner

@Kevin-XiongC commented on GitHub (Jul 30, 2025):

I discussed this issue with @liuhe-spec on WeChat, and we strongly suspect it is likely related to RoCE network congestion control.

If possible, you can ask your cluster's network administrators to try the following actions:

  1. Enable adaptive routing
  2. Adjust the DCQCN parameters
  3. Disable congestion control

@sphish Hi, I am facing the same issue (master node has low combine bw but high dispatch bw and vice versa for the other node) on an IB-based cluster. Do these actions apply to IB as well (IMO, IB does not have DCQCN and congestion control)?

Image

I've added group.barrier(), but it doesn't help. It is still far behind.

Image
<!-- gh-comment-id:3134735306 --> @Kevin-XiongC commented on GitHub (Jul 30, 2025): > I discussed this issue with [@liuhe-spec](https://github.com/liuhe-spec) on WeChat, and we strongly suspect it is likely related to RoCE network congestion control. > > If possible, you can ask your cluster's network administrators to try the following actions: > > 1. Enable adaptive routing > 2. Adjust the DCQCN parameters > 3. Disable congestion control @sphish Hi, I am facing the same issue (master node has low combine bw but high dispatch bw and vice versa for the other node) on an IB-based cluster. Do these actions apply to IB as well (IMO, IB does not have DCQCN and congestion control)? <img width="994" height="402" alt="Image" src="https://github.com/user-attachments/assets/73bbf2ff-7985-4174-afd1-2d4ff8ccccc0" /> I've added `group.barrier()`, but it doesn't help. It is still far behind. <img width="1818" height="156" alt="Image" src="https://github.com/user-attachments/assets/0e8d2d2d-95e9-40c6-b151-74acaa6b16ee" />
Author
Owner

@viralbhadeshiya commented on GitHub (Oct 1, 2025):

This seems very similar to #183. We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look.

I have profiled and found below truth:

  1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously
  2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait
  3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host
  4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait
  5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast

finally, dispatch and combine will have huge performance gap !

You can try adding a dist.barrier before each alltoall operation

This works. I just tried it with my DeepEP setup and it stabilize bandwidth number in each rank. For anyone who is still having this problem :)

<!-- gh-comment-id:3357746886 --> @viralbhadeshiya commented on GitHub (Oct 1, 2025): > > > This seems very similar to [#183](https://github.com/deepseek-ai/DeepEP/issues/183). We haven’t encountered this problem, but my guess is that it might be caused by misaligned kernel launch times. You can try generating a timeline using the torch profiler to take a closer look. > > > > > > I have profiled and found below truth: > > > > 1. nsys report or chrome json report showed that dispatch and combine kernel took time mismatch seriously > > 2. it is easy to sync inside intranode, so if all GPUs on one host launch dispatch earlier than another host, it will send all tokens and then wait > > 3. the host launch dispatch slowly doesn't need to wait during recv stage, so it will both send and recv process faster than earlier host > > 4. then the next combine kernel changed the role, slowly dispatch will wait in next combine kernel recv stage, but earlier dispatch will launch combine slowly then it will run fast due to no need wait > > 5. after repeated several times, one host always dispatch fast and combine slowly, and another host dispatch slowly and combine fast > > > > finally, dispatch and combine will have huge performance gap ! > > You can try adding a dist.barrier before each alltoall operation This works. I just tried it with my DeepEP setup and it stabilize bandwidth number in each rank. For anyone who is still having this problem :)
Author
Owner

@kzlxd commented on GitHub (Nov 2, 2025):

@viralbhadeshiya
def bench_kineto(fn, kernel_names: Union[str, tuple], num_tests: int = 30, suppress_kineto_output: bool = False,
trace_path: Optional[str] = None, barrier_comm_profiling: bool = False,
num_kernels_per_period: int = 1):
# Profile
suppress = suppress_stdout_stderr if suppress_kineto_output else empty_suppress
with suppress():
schedule = torch.profiler.schedule(wait=1, warmup=0, active=1, repeat=1)
with torch.profiler.profile(activities=[torch.profiler.ProfilerActivity.CUDA], schedule=schedule) as prof:
for i in range(2):
# NOTES: use a large kernel and a barrier to eliminate the unbalanced CPU launch overhead
if barrier_comm_profiling:
lhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda')
rhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda')
lhs @ rhs
dist.all_reduce(torch.ones(1, dtype=torch.float, device='cuda'))
for _ in range(num_tests):
fn()
torch.cuda.synchronize()
prof.step()
I'm encountering the same situation here, but upon reviewing the code, I see that synchronisation has already been implemented prior to executing this function. Why then is synchronisation being added again before test_func?

<!-- gh-comment-id:3477363288 --> @kzlxd commented on GitHub (Nov 2, 2025): @viralbhadeshiya def bench_kineto(fn, kernel_names: Union[str, tuple], num_tests: int = 30, suppress_kineto_output: bool = False, trace_path: Optional[str] = None, barrier_comm_profiling: bool = False, num_kernels_per_period: int = 1): # Profile suppress = suppress_stdout_stderr if suppress_kineto_output else empty_suppress with suppress(): schedule = torch.profiler.schedule(wait=1, warmup=0, active=1, repeat=1) with torch.profiler.profile(activities=[torch.profiler.ProfilerActivity.CUDA], schedule=schedule) as prof: for i in range(2): # NOTES: use a large kernel and a barrier to eliminate the unbalanced CPU launch overhead if barrier_comm_profiling: lhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') rhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') lhs @ rhs dist.all_reduce(torch.ones(1, dtype=torch.float, device='cuda')) for _ in range(num_tests): fn() torch.cuda.synchronize() prof.step() I'm encountering the same situation here, but upon reviewing the code, I see that synchronisation has already been implemented prior to executing this function. Why then is synchronisation being added again before `test_func`?
Author
Owner

@viralbhadeshiya commented on GitHub (Nov 4, 2025):

@viralbhadeshiya def bench_kineto(fn, kernel_names: Union[str, tuple], num_tests: int = 30, suppress_kineto_output: bool = False, trace_path: Optional[str] = None, barrier_comm_profiling: bool = False, num_kernels_per_period: int = 1): # Profile suppress = suppress_stdout_stderr if suppress_kineto_output else empty_suppress with suppress(): schedule = torch.profiler.schedule(wait=1, warmup=0, active=1, repeat=1) with torch.profiler.profile(activities=[torch.profiler.ProfilerActivity.CUDA], schedule=schedule) as prof: for i in range(2): # NOTES: use a large kernel and a barrier to eliminate the unbalanced CPU launch overhead if barrier_comm_profiling: lhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') rhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') lhs @ rhs dist.all_reduce(torch.ones(1, dtype=torch.float, device='cuda')) for _ in range(num_tests): fn() torch.cuda.synchronize() prof.step() I'm encountering the same situation here, but upon reviewing the code, I see that synchronisation has already been implemented prior to executing this function. Why then is synchronisation being added again before test_func?

@kzlxd The synchronization inside bench_kineto() ensures that GPU work launched within the profiled window has completed before advancing the profiler step it only aligns CUDA kernel completion with the profiler timeline.
However, it does not guarantee inter-rank phase alignment. In test_low_latency.py, each rank can enter the dispatch or combine phase at slightly different times due to async collectives and kernel scheduling. This causes one rank’s dispatch window to overlap with the other’s combine phase, leading to asymmetric per-phase bandwidths even though total throughput is correct.

<!-- gh-comment-id:3488309904 --> @viralbhadeshiya commented on GitHub (Nov 4, 2025): > [@viralbhadeshiya](https://github.com/viralbhadeshiya) def bench_kineto(fn, kernel_names: Union[str, tuple], num_tests: int = 30, suppress_kineto_output: bool = False, trace_path: Optional[str] = None, barrier_comm_profiling: bool = False, num_kernels_per_period: int = 1): # Profile suppress = suppress_stdout_stderr if suppress_kineto_output else empty_suppress with suppress(): schedule = torch.profiler.schedule(wait=1, warmup=0, active=1, repeat=1) with torch.profiler.profile(activities=[torch.profiler.ProfilerActivity.CUDA], schedule=schedule) as prof: for i in range(2): # NOTES: use a large kernel and a barrier to eliminate the unbalanced CPU launch overhead if barrier_comm_profiling: lhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') rhs = torch.randn((8192, 8192), dtype=torch.float, device='cuda') lhs @ rhs dist.all_reduce(torch.ones(1, dtype=torch.float, device='cuda')) for _ in range(num_tests): fn() torch.cuda.synchronize() prof.step() I'm encountering the same situation here, but upon reviewing the code, I see that synchronisation has already been implemented prior to executing this function. Why then is synchronisation being added again before `test_func`? @kzlxd The synchronization inside bench_kineto() ensures that GPU work launched within the profiled window has completed before advancing the profiler step it only aligns CUDA kernel completion with the profiler timeline. However, it does not guarantee inter-rank phase alignment. In test_low_latency.py, each rank can enter the dispatch or combine phase at slightly different times due to async collectives and kernel scheduling. This causes one rank’s dispatch window to overlap with the other’s combine phase, leading to asymmetric per-phase bandwidths even though total throughput is correct.
Author
Owner

@kzlxd commented on GitHub (Nov 11, 2025):

@viralbhadeshiya thanks for your explaining

<!-- gh-comment-id:3517083902 --> @kzlxd commented on GitHub (Nov 11, 2025): @viralbhadeshiya thanks for your explaining
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/DeepEP#191
No description provided.