ServingCast Simulation Guide

1 Introduction

ServingCast simulation evaluates end-to-end model serving performance based on instance configuration and global configuration. It uses YAML files to describe instance groups, model structure, request workloads, and serving limits, and outputs performance metrics such as TTFT, TPOT, throughput, and request count. This helps users analyze serving capacity and configuration bottlenecks before actual deployment.

2 Environment Requirements

Before running ServingCast simulation, complete environment setup first. Python 3.10+ is recommended. For details, see Quick Start: Environment Setup and First Simulation.

3 Input Configuration

Service simulation depends on two YAML configuration files:

Configuration File Purpose
instance_config_path Describes one or more instance groups, such as role, instance count, and TP/DP parallelism.
common_config_path Describes global settings, such as model structure, request workload, serving limits, and simulation parameters.

4 Run Simulation

Its general usage is shown below:

usage: python -m serving_cast.main [-h] --instance_config_path INSTANCE_CONFIG_PATH [INSTANCE_CONFIG_PATH ...] --common_config_path COMMON_CONFIG_PATH

Run a service inference simulation driven by YAML configuration files.

required arguments:
  --instance_config_path INSTANCE_CONFIG_PATH [INSTANCE_CONFIG_PATH ...]
                        Path to a YAML file that declares one or more instance groups.
                        Each group defines a homogeneous pool of nodes (role, count, TP/DP parallelism)
                        and can be mixed-and-matched in a single benchmark run.
  --common_config_path COMMON_CONFIG_PATH
                        Path to a YAML file with global settings: model architecture,
                        request-generation workload, and serving limits.

optional arguments:
  -h, --help            show this help message and exit
  --enable_profiling    Enable profiling during simulation (default: False)
  --profiling_output_path PROFILING_OUTPUT_PATH
                        Path to directory where profiling results will be saved (default: ./profiling_results)

Parameter descriptions:

Parameter Required/Optional Description
--instance_config_path Required Path to one or more instance configuration files. Format: YAML file path list. Each file declares one or more instance groups, such as role, instance count, and TP/DP parallelism. Default: none.
--common_config_path Required Path to the global configuration file. Format: YAML file path. It describes model structure, request workload, serving limits, and simulation parameters. Default: none.
--enable_profiling Optional Enables profiling and outputs more fine-grained system performance information. Valid range: flag option. Default: False.
--profiling_output_path Optional Specifies profiling result directory. Format: directory path. Default: ./profiling_results.

Example:

  • Basic usage
python -m serving_cast.main --instance_config_path=./serving_cast/example/instances.yaml --common_config_path=./serving_cast/example/common.yaml

4.1 Result

After the simulation finishes, the console prints a performance summary similar to:

         E2E_TIME(s)  TTFT(s)  TPOT(s)  INPUT_TOKENS  OUTPUT_TOKENS  OUTPUT_TOKEN_THROUGHPUT(tok/s)
AVERAGE     1052.591    0.378    0.301        1500.0         3500.0                           3.327
MIN         1050.000    0.300    0.300        1500.0         3500.0                           2.978
MAX         1175.500    0.600    0.336        1500.0         3500.0                           3.334
MEDIAN      1050.100    0.400    0.300        1500.0         3500.0                           3.334
P75         1050.125    0.400    0.300        1500.0         3500.0                           3.334
P90         1050.200    0.500    0.300        1500.0         3500.0                           3.334
P99         1175.500    0.600    0.336        1500.0         3500.0                           3.334
======== Overall Summary ========
benchmark_duration(s)          1225.500
total_requests                 100.000
request_throughput(req/s)      0.082
total_input_tokens             150000.000
input_token_throughput(tok/s)  122.399
total_output_tokens            350000.000
output_token_throughput(tok/s) 285.598

Metric descriptions:

  • E2E_TIME: End-to-end latency for a single request (request issued → last token)
  • TTFT: Time-to-first-token
  • TPOT: Time-per-output-token after the first token
  • OUTPUT_TOKEN_THROUGHPUT: Per-request output-token rate
  • request_throughput: System-level request rate
  • input_token_throughput / output_token_throughput: Aggregate token throughput