Concepts¶
What SysSim models¶
SysSim traces an LLM training step into an operator graph, attributes a time and memory cost to each operator, and runs a discrete-event simulation over the cluster topology — no real computation or weights are needed.
Tracing still requires a PyTorch GPU backend exposed through torch.cuda. SysSim uses PyTorch
fake tensors marked with device="cuda" so PyTorch builds the same operator graph shape it would
use for GPU tensors, without running the real kernels. This is a PyTorch interface requirement; the
hardware model itself is provided separately through the hardware YAML.
Parallelism¶
Strategy |
Status |
Notes |
|---|---|---|
Tensor parallel (TP) |
✅ |
Splits matmuls across GPUs. |
Sequence parallel (SP) |
✅ |
Shards the sequence dim of norm/dropout regions. |
Data parallel (DP) |
✅ |
Replicates the model; all-reduces gradients. |
Context parallel (CP) |
✅ |
Shards the sequence for attention. |
Pipeline parallel (PP) |
✅ |
1F1B schedule; per-stage memory reported. |
Expert parallel (EP) |
🚧 |
Work in progress. |
These combine (e.g. TP × DP × PP).
Cost model¶
The default estimator is the roofline bound (compute vs. memory-bandwidth limit per operator). For higher accuracy you can attach a calibrated estimator that multiplies the roofline by a learned per-operator residual — see Calibrated Estimator.
Reading the report¶
simulate() returns a SimulationReport; the syssim run CLI prints the same core
fields. A typical report looks like:
SimulationReport(
step_time_ms = 644.6507
forward_ms = 184.5179
backward_ms = 383.1765
optimizer_ms = 39.4327
collective_total_ms = 53.9978
collective_exposed = 37.5235
achieved_tflops = 184.55
mfu = 9.33%
hfu = 12.43%
peak_memory_gb = 26.133
Bottlenecks(
dominant_op_type = math
top_ops_by_time = [('optimizer_step_4289', 39.43271286447761), ('op_1181_aten.mm', 4.286653309549106), ('op_1182_aten.mm', 4.21173467212024)]
peak_module = Float16Module
)
)
Field |
Meaning |
|---|---|
|
Estimated wall-clock step time. |
|
Time attributed per training phase. |
|
Total vs. non-overlapped collective time. |
|
Throughput, Model FLOPs Utilization (MFU), and Hardware FLOPs Utilization (HFU). |
|
Peak per-GPU memory (heaviest pipeline stage). |
|
Per-pipeline-stage peak memory (one entry per stage). |
|
Top ops by time, dominant op type, longest collective, binding PP stage, and OOM info. |
Memory is broken down into parameters, gradients, optimizer state, and activations. When
gpu_memory_GB is set in the hardware YAML, the report flags OOM (capacity / required / excess).