SimAI 有效建模域外的 all_reduce 通信量 fallback 到 sklearn predictor 时,通信时间预测精度问题
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)
当 all_reduce 的通信量不在 SimAI 的有效建模域范围内时,系统会自动 fallback 到 sklearn predictor 来预测通信时间。
想确认以下问题:
sklearn predictor 预测的通信时间是否与 SimAI 原本的通信时间计算方式存在精度差异?
sklearn predictor 的预测误差大概在什么范围?
在通信量超出 SimAI 建模范围时,是否推荐依赖 sklearn predictor 的预测结果?
3 期望行为(Expected behavior)
希望了解:
sklearn predictor 与 SimAI 原始通信模型在预测精度上的差异
sklearn predictor 是否能在通信量超出 SimAI 建模范围时提供可靠的通信时间预测
是否有推荐的使用方式或配置建议
4 实际行为(Actual behavior)
当 all_reduce 通信量超出 SimAI 的有效建模范围时,系统会 fallback 到 sklearn predictor 进行通信时间预测,但不清楚其预测精度是否与 SimAI 计算方式一致。
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的通信量不在simai的有效建模域内时,会fallback到sklearn predictor预测当前通信量的通信时间,请问这个sklearn predictor,这个sklearn predictor预测的通信时间精度和SimAI计算的通信时间精度有差别吗?
感谢帮助!
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with scripts/build.sh and the vidur.main command using random_forrest_execution_time_predictor_config_backend simai_simulation. Trace how the Spectrum-X_128g_8gps_100Gbps_A100 topology and SimAI.conf handle the unsupported 65536-byte all_reduce, then compare the fallback predictor with SimAI's result. Done should document the accuracy difference, error range, and recommended behavior, but the issue does not name tests or implementation files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, scikit-learn
- Domain
- distributed-systems, machine-learning
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100