Releases: casys-kaist/LLMServingSim
Releases · casys-kaist/LLMServingSim
Release list
Release v1.1.0
Highlights
- vLLM-based layerwise profiler — replaces the old PyTorch Profiler + scikit-learn pipeline with direct
layerwise_profile()via a worker extension class, capturing per-layer CUDA kernel timings from real vLLM execution paths - End-to-end bench validation suite (
python -m bench) — replays workloads through a real vLLMAsyncLLMengine and compares against simulator output with throughput, latency-CDF, and running/waiting plots - DP+EP MoE support — Data Parallel + Expert Parallel with ASTRA-Sim ALLTOALL synchronization via
involved_dimdimension scoping on a 2D[tp_size, dp_group_size]topology - Agentic session support — closed-loop workloads (SWE-bench, tool-calling agents) with dependency chains via
sub_requests[]andtool_duration_ns - Skew profiling + 5-axis alpha fit — bimodal decode batches measure FlashAttention tile-padding / SM-imbalance costs; the 5-axis weighted-LS fit recovers the penalty the uniform attention grid can't see (test p50/p90 ≈ 2.7% / 14.8%)
- Unified 4D attention profiling — single
attention.csvoverprefill_chunk × kv_prefill × n_decode × kv_decodematching vLLM's chunked-prefill scheduler - FP8 KV cache support in both profiler and simulator
- Chunked prefill enabled by default (matching vLLM v1), with prefix caching compatibility
- Workload generators (
python -m workloads.generators) — multi-turn ShareGPT parser with tokenizer-only or vLLM-batched modes - Rich-backed logger shared across simulator, profiler, and bench
What's Changed
Added
- New vLLM-based layerwise profiler (
profiler/) replacing the oldllm_profile/module - Unified 4D attention profiling (
attention.csv) - Skew profiling + 5-axis alpha fit for heterogeneous-decode attention
- Data-derived bucket axes for the skew fit
- Per-axis skew density knobs:
SKEW_N_FACTOR/SKEW_PC_FACTOR/SKEW_KP_FACTOR/SKEW_KVS_FACTOR - Per-TP
skew_fit.csvfile spills the full per-bucket alpha table out ofmeta.yaml - RTXPRO6000 (NVIDIA RTX PRO 6000 Blackwell) hardware support
- DP+EP support with ASTRA-Sim ALLTOALL synchronization via
involved_dimdimension scoping - Wave synchronization for DP groups
- Agentic session support for closed-loop workloads (SWE-bench, tool-calling agents)
--num-reqsCLI argument (replaces--num-req), default changed to 0 (load all)- Qwen3-32B and Qwen3-30B-A3B-Instruct-2507 model configs with explicit
head_dimsupport - FP8 KV cache simulation and profiling support (
--kv-cache-dtype fp8) - Chunked prefill support (enabled by default, matching vLLM v1)
- Prefix cache lock tracking for multi-chunk prefill
- End-to-end vLLM benchmark + simulator validation suite (
bench/) - Workload generators (
workloads/generators/) - Rich-backed logger shared between simulator, profiler, and bench
- Non-Docker vLLM installer (
scripts/install-vllm.sh)
Fixed
- Skew sweep feasibility filter relaxed from
>=to>forn = MSQcases - Missing
prefix_matchcall on non-chunked prefill path - Prompt throughput now includes prefix cache hit tokens
- Prefix cache
is_init/lock_prefixfixes for full prefix hits - MoE expert latency: per-EP-rank instead of aggregated (was 2x overestimate)
- MoE weight sharding uses
ep_size(nottp_size) system.jsoncollective implementations match topology dimensions- DP group termination: instances wait for all members
argparseallow_abbrev=False- Missing
return parser.parse_args()in legacy profiler
Changed
--fp→--dtype,--gen→--skip-prefill--request-routing-policydefault:RR→LOAD--expert-routing-policy FAST→COPY- Cluster config:
npu_num/npu_group→tp_size/pp_size/ep_size/dp_group - MoE modeling: per-EP-rank latency lookup with even expert-to-rank partitioning
- Trace
comm_typesupports dimension scoping (ALLREDUCE:1,0,ALLTOALL:0,1) - Latency lookup extrapolates beyond profiled range instead of clamping
- Profiler rewritten to direct vLLM
layerwise_profile()approach - Layer names unified between profiler and simulator
memory_model.pyuses explicithead_dimandq_dim/kv_dimtrace_generator.pyrewritten with composable helpers- Directory restructuring:
cluster_config/→configs/cluster/,model_config/→configs/model/,dataset/→workloads/,inference_serving/→serving/, etc.
Removed
internal/,evaluation/directories--enable-attn-predictionflag and scikit-learn predictor--fp,--gen,--num-reqflags- Analytical ALLTOALL workaround functions
Full Changelog: CHANGELOG.md