aliyun / aliyun/SimAI

SimAI returns -1 for unsupported all_reduce_bytes (e.g., 65536) when simulating TP communication with Llama-3-8B

Open
#239 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.2k
Forks
184
Avg merge
13h 4m
Merged PRs (30d)
1

Description

1.1 运行命令行
cd SimAI

Compile SimAI-Simulation (ns3)
./scripts/build.sh -c ns3

Create network topo (Spectrum-X_128g_8gps_100Gbps_A100)
python3 ./astra-sim-alibabacloud/inputs/topo/gen_Topo_Template.py -topo Spectrum-X -g 128 -gt A100 -bw 100Gbps -nvbw 2400Gbps

cd SimAI/vidur-alibabacloud

python -m vidur.main
--replica_config_pd_p2p_comm_bandwidth 800
--replica_config_nvlink_bandwidth 1600
--replica_config_rdma_bandwidth 800
--replica_config_pd_p2p_comm_dtype float32
--poisson_request_interval_generator_config_qps 100
--synthetic_request_generator_config_num_requests 10
--length_generator_config_type trace
--trace_request_length_generator_config_max_tokens 2048
--trace_request_length_generator_config_trace_file ./data/processed_traces/splitwise_conv.csv
--interval_generator_config_type poisson
--cluster_config_num_replicas 4
--replica_config_pd_node_ratio 0.5
--global_scheduler_config_type split_wise
--replica_scheduler_config_type split_wise
--replica_config_model_name meta-llama/Meta-Llama-3-8B
--replica_config_tensor_parallel_size 4
--replica_config_num_pipeline_stages 1
--replica_config_expert_model_parallel_size 1
--random_forrest_execution_time_predictor_config_backend simai_simulation
--random_forrest_execution_time_predictor_config_simai_dir ../
--random_forrest_execution_time_predictor_config_simai_simulation_topo ../Spectrum-X_128g_8gps_100Gbps_A100
--random_forrest_execution_time_predictor_config_simai_simulation_config ../astra-sim-alibabacloud/inputs/config/SimAI.conf

1.2 执行上述命令启动仿真

1.3 运行后出现错误

仿真运行过程中出现如下报错:
Error: all_reduce_bytes: 65536 not allowed by simai
此时 SimAI 返回:
-1
作为通信时间。

2 问题描述(Bug description)

在模拟 LLM 推理任务(例如 Llama-3-8B)时,TP 通信产生的 all_reduce_bytes 可能为:
65536 (64KB)
但该通信规模不在 SimAI 支持的通信规模列表中,因此 SimAI:
打印错误日志
返回 -1 作为通信时间
这会导致调用方(例如 Vidur)必须额外处理 fallback 逻辑,否则通信时间无法正确计算。
同时,该错误日志会在仿真过程中反复出现。

3 期望行为(Expected behavior)

希望 SimAI 能够更优雅地处理不支持的通信规模,例如:
自动映射到最近的支持通信规模
使用插值计算 latency
仅打印 warning 而不是 error
或者扩大SimAI能够支持的通信规模。
避免仿真日志中大量错误信息,并减少外部 fallback 逻辑的复杂度。

4 实际行为(Actual behavior)

当通信规模为:
all_reduce_bytes = 65536
SimAI 会输出:
Error: all_reduce_bytes: 65536 not allowed by simai
并返回:
-1
调用方必须手动检测该返回值并使用其他方法计算通信时间。

5 运行环境(Environment)

示例环境如下:

Ubuntu:20.04,python:3.10, g++:9.4.0

Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
aiohappyeyeballs 2.6.1 pypi_0 pypi
aiohttp 3.13.3 pypi_0 pypi
aiohttp-cors 0.8.1 pypi_0 pypi
aiosignal 1.4.0 pypi_0 pypi
altair 6.0.0 pypi_0 pypi
annotated-types 0.7.0 pypi_0 pypi
antlr4-python3-runtime 4.9.3 pypi_0 pypi
anyio 4.12.1 pypi_0 pypi
argon2-cffi 25.1.0 pypi_0 pypi
argon2-cffi-bindings 25.1.0 pypi_0 pypi
arrow 1.4.0 pypi_0 pypi
asttokens 3.0.1 pypi_0 pypi
async-lru 2.2.0 pypi_0 pypi
async-timeout 5.0.1 pypi_0 pypi
attrs 25.4.0 pypi_0 pypi
autopep8 2.3.2 pypi_0 pypi
babel 2.18.0 pypi_0 pypi
beautifulsoup4 4.14.3 pypi_0 pypi
black 26.1.0 pypi_0 pypi
bleach 6.3.0 pypi_0 pypi
blinker 1.9.0 pypi_0 pypi
boto3 1.42.59 pypi_0 pypi
botocore 1.42.59 pypi_0 pypi
bzip2 1.0.8 h5eee18b_6
ca-certificates 2026.2.25 hbd8a1cb_0 conda-forge
cachetools 6.2.6 pypi_0 pypi
certifi 2026.2.25 pypi_0 pypi
cffi 2.0.0 pypi_0 pypi
charset-normalizer 3.4.4 pypi_0 pypi
choreographer 1.2.1 pyhcf101f3_0 conda-forge
click 8.3.1 pypi_0 pypi
cloudpickle 2.2.1 pypi_0 pypi
colorama 0.4.6 pyhd8ed1ab_1 conda-forge
colorful 0.5.8 pypi_0 pypi
comm 0.2.3 pypi_0 pypi
contourpy 1.3.2 pypi_0 pypi
cryptography 46.0.5 pypi_0 pypi
cuda-bindings 12.9.4 pypi_0 pypi
cuda-pathfinder 1.4.0 pypi_0 pypi
cycler 0.12.1 pypi_0 pypi
ddsketch 3.0.1 pypi_0 pypi
debugpy 1.8.20 pypi_0 pypi
decorator 5.2.1 pypi_0 pypi
defusedxml 0.7.1 pypi_0 pypi
distlib 0.4.0 pypi_0 pypi
exceptiongroup 1.3.1 pyhd8ed1ab_0 conda-forge
executing 2.2.1 pypi_0 pypi
expat 2.7.4 h7354ed3_0
fasteners 0.20 pypi_0 pypi
fastjsonschema 2.21.2 pypi_0 pypi
filelock 3.25.0 pypi_0 pypi
fire 0.7.1 pypi_0 pypi
flake8 7.3.0 pypi_0 pypi
fonttools 4.61.1 pypi_0 pypi
fqdn 1.5.1 pypi_0 pypi
frozenlist 1.8.0 pypi_0 pypi
fsspec 2026.2.0 pypi_0 pypi
gitdb 4.0.12 pypi_0 pypi
gitpython 3.1.46 pypi_0 pypi
google-api-core 2.30.0 pypi_0 pypi
google-auth 2.48.0 pypi_0 pypi
googleapis-common-protos 1.72.0 pypi_0 pypi
grpcio 1.78.0 pypi_0 pypi
h11 0.16.0 pypi_0 pypi
httpcore 1.0.9 pypi_0 pypi
httpx 0.28.1 pypi_0 pypi
hydra-core 1.3.2 pypi_0 pypi
hydra-joblib-launcher 1.2.0 pypi_0 pypi
hydra-ray-launcher 1.2.1 pypi_0 pypi
idna 3.11 pypi_0 pypi
importlib-metadata 8.7.1 pypi_0 pypi
iniconfig 2.3.0 pyhd8ed1ab_0 conda-forge
ipykernel 7.2.0 pypi_0 pypi
ipython 8.38.0 pypi_0 pypi
isoduration 20.11.0 pypi_0 pypi
isort 8.0.1 pypi_0 pypi
jedi 0.19.2 pypi_0 pypi
jinja2 3.1.6 pypi_0 pypi
jmespath 1.1.0 pypi_0 pypi
joblib 1.5.3 pypi_0 pypi
json5 0.13.0 pypi_0 pypi
jsonpointer 3.0.0 pypi_0 pypi
jsonschema 4.26.0 pypi_0 pypi
jsonschema-specifications 2025.9.1 pypi_0 pypi
jupyter-client 8.8.0 pypi_0 pypi
jupyter-core 5.9.1 pypi_0 pypi
jupyter-events 0.12.0 pypi_0 pypi
jupyter-lsp 2.3.0 pypi_0 pypi
jupyter-server 2.17.0 pypi_0 pypi
jupyter-server-terminals 0.5.4 pypi_0 pypi
jupyterlab 4.5.5 pypi_0 pypi
jupyterlab-pygments 0.3.0 pypi_0 pypi
jupyterlab-server 2.28.0 pypi_0 pypi
kiwisolver 1.4.9 pypi_0 pypi
lark 1.3.1 pypi_0 pypi
ld_impl_linux-64 2.44 h153f514_2
libexpat 2.7.4 h7354ed3_0
libffi 3.4.4 h6a678d5_1
libgcc 15.2.0 h69a1729_7
libgcc-ng 15.2.0 h166f726_7
libgomp 15.2.0 h4751f2c_7
libnsl 2.0.0 h5eee18b_0
libstdcxx 15.2.0 h39759b7_7
libstdcxx-ng 15.2.0 hc03a8fd_7
libuuid 1.41.5 h5eee18b_0
libxcb 1.17.0 h9b100fa_0
libzlib 1.3.1 hb25bd0a_0
llvmlite 0.46.0 pypi_0 pypi
logistro 2.0.1 pyhcf101f3_0 conda-forge
markupsafe 3.0.3 pypi_0 pypi
matplotlib 3.10.8 pypi_0 pypi
matplotlib-inline 0.2.1 pypi_0 pypi
mccabe 0.7.0 pypi_0 pypi
mistune 3.2.0 pypi_0 pypi
mpmath 1.3.0 pypi_0 pypi
msgpack 1.1.2 pypi_0 pypi
multidict 6.7.1 pypi_0 pypi
mypy-extensions 1.1.0 pypi_0 pypi
narwhals 2.17.0 pypi_0 pypi
nbclient 0.10.4 pypi_0 pypi
nbconvert 7.17.0 pypi_0 pypi
nbformat 5.10.4 pypi_0 pypi
ncurses 6.5 h7934f7d_0
nest-asyncio 1.6.0 pypi_0 pypi
networkx 3.4.2 pypi_0 pypi
notebook-shim 0.2.4 pypi_0 pypi
numba 0.64.0 pypi_0 pypi
numpy 2.2.6 pypi_0 pypi
nvidia-cublas-cu12 12.8.4.1 pypi_0 pypi
nvidia-cuda-cupti-cu12 12.8.90 pypi_0 pypi
nvidia-cuda-nvrtc-cu12 12.8.93 pypi_0 pypi
nvidia-cuda-runtime-cu12 12.8.90 pypi_0 pypi
nvidia-cudnn-cu12 9.10.2.21 pypi_0 pypi
nvidia-cufft-cu12 11.3.3.83 pypi_0 pypi
nvidia-cufile-cu12 1.13.1.3 pypi_0 pypi
nvidia-curand-cu12 10.3.9.90 pypi_0 pypi
nvidia-cusolver-cu12 11.7.3.90 pypi_0 pypi
nvidia-cusparse-cu12 12.5.8.93 pypi_0 pypi
nvidia-cusparselt-cu12 0.7.1 pypi_0 pypi
nvidia-nccl-cu12 2.27.5 pypi_0 pypi
nvidia-nvjitlink-cu12 12.8.93 pypi_0 pypi
nvidia-nvshmem-cu12 3.4.5 pypi_0 pypi
nvidia-nvtx-cu12 12.8.90 pypi_0 pypi
omegaconf 2.3.0 pypi_0 pypi
opencensus 0.11.4 pypi_0 pypi
opencensus-context 0.1.3 pypi_0 pypi
openssl 3.6.1 h35e630c_1 conda-forge
opentelemetry-api 1.39.1 pypi_0 pypi
opentelemetry-exporter-prometheus 0.60b1 pypi_0 pypi
opentelemetry-proto 1.39.1 pypi_0 pypi
opentelemetry-sdk 1.39.1 pypi_0 pypi
opentelemetry-semantic-conventions 0.60b1 pypi_0 pypi
orjson 3.11.7 py310hfe99b16_0 conda-forge
overrides 7.7.0 pypi_0 pypi
packaging 25.0 py310h06a4308_1
pandas 2.3.3 pypi_0 pypi
pandocfilters 1.5.1 pypi_0 pypi
paretoset 1.2.5 pypi_0 pypi
parso 0.8.6 pypi_0 pypi
pathspec 1.0.4 pypi_0 pypi
patsy 1.0.2 pypi_0 pypi
pexpect 4.9.0 pypi_0 pypi
pillow 12.1.1 pypi_0 pypi
pip 26.0.1 pyhc872135_0
platformdirs 4.9.2 pypi_0 pypi
plotly 6.6.0 pypi_0 pypi
plotly-express 0.4.1 pypi_0 pypi
pluggy 1.6.0 pyhf9edf01_1 conda-forge
prometheus-client 0.24.1 pypi_0 pypi
prompt-toolkit 3.0.52 pypi_0 pypi
propcache 0.4.1 pypi_0 pypi
proto-plus 1.27.1 pypi_0 pypi
protobuf 6.33.5 pypi_0 pypi
psutil 7.2.2 pypi_0 pypi
pthread-stubs 0.3 h0ce48e5_1
ptyprocess 0.7.0 pypi_0 pypi
pure-eval 0.2.3 pypi_0 pypi
py-spy 0.4.1 pypi_0 pypi
pyarrow 23.0.1 pypi_0 pypi
pyasn1 0.6.2 pypi_0 pypi
pyasn1-modules 0.4.2 pypi_0 pypi
pycodestyle 2.14.0 pypi_0 pypi
pycparser 3.0 pypi_0 pypi
pydantic 2.12.5 pypi_0 pypi
pydantic-core 2.41.5 pypi_0 pypi
pydeck 0.9.1 pypi_0 pypi
pyflakes 3.4.0 pypi_0 pypi
pygments 2.19.2 pyhd8ed1ab_0 conda-forge
pyparsing 3.3.2 pypi_0 pypi
pytest 9.0.2 pyhcf101f3_0 conda-forge
pytest-timeout 2.4.0 pyhd8ed1ab_0 conda-forge
python 3.10.19 h6fa692b_0
python-dateutil 2.9.0.post0 pypi_0 pypi
python-discovery 1.1.0 pypi_0 pypi
python-json-logger 4.0.0 pypi_0 pypi
python-kaleido 1.2.0 pyhcf101f3_0 conda-forge
python_abi 3.10 2_cp310 conda-forge
pytokens 0.4.1 pypi_0 pypi
pytz 2026.1 pypi_0 pypi
pyyaml 6.0.3 pypi_0 pypi
pyzmq 27.1.0 pypi_0 pypi
randomname 0.2.1 pypi_0 pypi
ray 2.54.0 pypi_0 pypi
readline 8.3 hc2a1206_0
referencing 0.37.0 pypi_0 pypi
requests 2.32.5 pypi_0 pypi
rfc3339-validator 0.1.4 pypi_0 pypi
rfc3986-validator 0.1.1 pypi_0 pypi
rfc3987-syntax 1.1.0 pypi_0 pypi
rpds-py 0.30.0 pypi_0 pypi
rsa 4.9.1 pypi_0 pypi
s3transfer 0.16.0 pypi_0 pypi
scikit-learn 1.7.2 pypi_0 pypi
scipy 1.15.3 pypi_0 pypi
seaborn 0.13.2 pypi_0 pypi
send2trash 2.1.0 pypi_0 pypi
sentry-sdk 2.54.0 pypi_0 pypi
setuptools 80.10.2 py310h06a4308_0
simplejson 3.20.2 py310h7c4b9e2_1 conda-forge
six 1.17.0 pypi_0 pypi
smart-open 7.5.1 pypi_0 pypi
smmap 5.0.2 pypi_0 pypi
snakeviz 2.2.2 pypi_0 pypi
soupsieve 2.8.3 pypi_0 pypi
sqlite 3.51.1 he0a8d7e_0
stack-data 0.6.3 pypi_0 pypi
statsmodels 0.14.6 pypi_0 pypi
streamlit 1.54.0 pypi_0 pypi
sympy 1.14.0 pypi_0 pypi
tenacity 9.1.4 pypi_0 pypi
termcolor 3.3.0 pypi_0 pypi
terminado 0.18.1 pypi_0 pypi
threadpoolctl 3.6.0 pypi_0 pypi
tinycss2 1.4.0 pypi_0 pypi
tk 8.6.15 h54e0aa7_0
toml 0.10.2 pypi_0 pypi
tomli 2.4.0 pyhcf101f3_0 conda-forge
torch 2.10.0 pypi_0 pypi
tornado 6.5.4 pypi_0 pypi
traitlets 5.14.3 pypi_0 pypi
triton 3.6.0 pypi_0 pypi
typing-inspection 0.4.2 pypi_0 pypi
typing_extensions 4.15.0 pyhcf101f3_0 conda-forge
tzdata 2025.3 pypi_0 pypi
uri-template 1.3.0 pypi_0 pypi
urllib3 2.6.3 pypi_0 pypi
virtualenv 21.1.0 pypi_0 pypi
wandb 0.25.0 pypi_0 pypi
watchdog 6.0.0 pypi_0 pypi
wcwidth 0.6.0 pypi_0 pypi
webcolors 25.10.0 pypi_0 pypi
webencodings 0.5.1 pypi_0 pypi
websocket-client 1.9.0 pypi_0 pypi
wheel 0.46.3 py310h06a4308_0
wrapt 2.1.1 pypi_0 pypi
xorg-libx11 1.8.12 h9b100fa_1
xorg-libxau 1.0.12 h9b100fa_0
xorg-libxdmcp 1.1.5 h9b100fa_0
xorg-xorgproto 2024.1 h5eee18b_1
xz 5.6.4 h5eee18b_1
yarl 1.23.0 pypi_0 pypi
zipp 3.23.0 pypi_0 pypi
zlib 1.3.1 hb25bd0a_0

使用的拓扑和配置文件:
网络拓扑文件:Spectrum-X_128g_8gps_100Gbps_A100
配置文件:SimAI.conf

使用场景(Usage scenario):
当前使用 SimAI 与 Vidur 结合,对大模型推理(如 Llama-3-8B)的并行执行进行仿真,主要用于分析:
Tensor Parallel 通信开销
不同并行策略下的调度性能
集群配置对推理性能的影响
在该场景下,当模型产生的通信规模不在 SimAI 支持列表中时,就会出现上述问题。

想请教的问题::
all_reduce_bytes =65536 在 SimAI 不支持的通信规模,
能否通过修改命令行参数,避免该错误,或者修改simAI的config,扩大simai能够接受的通信规模。

感谢帮助!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the all_reduce_bytes handling reached by the vidur.main command, then inspect SimAI.conf and the SimAI simulation built by scripts/build.sh -c ns3 for the supported communication sizes. Reproduce the 65536-byte case with the provided Llama-3-8B configuration; done should mean it returns a valid communication time without repeated error messages.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp, python
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.