Skip to main content

LLM batch inference latency predictor and profiler CLI tool

Project description

LLM Execution Time Predictor

A small utility to help train a regression model given to predict prefill/decode times. By using the batch size and input, the prefill/decode execution times are very predictable.

This can be plugged into a simulator for faster experiments.

A more complicated version is done by https://github.com/microsoft/vidur but it trains every component of the model forwarding. This utility instead just profiles the full model forwarding as a unit to simplify research.

The tool https://modal.com/llm-almanac/advisor is nice visualizer but it doesn't let you train a local version and specify an exact bs/input

Installation

Option 1: Install from PyPI (Recommended)

pip install llm_execution_time_predictor

Option 2: Install from Source

pip install -r requirements.txt

Using Prefill/Decode execution time for predictors

A very small set of features are used to train the predictor. Num new tokens: total tokens processed/generated:

  • for decode, it's the batch size. for prefill, it's the full input chunk Product ext cost: Represents the cost of attention
  • For prefill, it's O(seq_len^2) so we do bs * input^2
  • For decode, it's just O(seq_len) Total context tokens:
  • Total tokens processed across batch * input representing the cache usage Time of kernel

Tested on both prefill/decode the decode time

Usage

Using the PyPI Package

# Profile a model and generate benchmark data
llm-execution-time-predictor profile <model_name> --tp_size <tp_size>

# Train models from benchmark data
llm-execution-time-predictor train_models <config_name> <benchmark_file> [--predictor-file <output_file>]

# Make predictions using trained models
llm-execution-time-predictor predict <predictor_file> <config_name> --mode <prefill/decode> --bs <batch_size> --input-len <input_length>

# View trained models and make interactive predictions (CLI)
llm-execution-time-predictor view [--predictor-file <predictor_file>]

# Launch web-based viewer with interactive plots
llm-execution-time-predictor webview [--predictor-file <predictor_file>] [--host <host>] [--port <port>]

Using from Source

# Profile a model and generate benchmark data
python llm_execution_time_predictor/llm_forward_predictor_cli.py profile <model_name> --tp_size <tp_size>

# Train models from benchmark data
python llm_execution_time_predictor/llm_forward_predictor_cli.py train_models <config_name> <benchmark_file> [--predictor-file <output_file>]

# Make predictions using trained models
python llm_execution_time_predictor/llm_forward_predictor_cli.py predict <predictor_file> <config_name> --mode <prefill/decode> --bs <batch_size> --input-len <input_length>

# View trained models and make interactive predictions (CLI)
python llm_execution_time_predictor/llm_forward_predictor_cli.py view [--predictor-file <predictor_file>]

# Launch web-based viewer with interactive plots
python llm_execution_time_predictor/llm_forward_predictor_cli.py webview [--predictor-file <predictor_file>] [--host <host>] [--port <port>]

The trained predictor file format:

{
    "config_name": {
        "prefill": {
            "weights": [0.1234, 0.5678, 0.9012, 0.3456],
            "bias": 0.0123,
            "model_type": "linear"
        },
        "decode": {
            "weights": [0.2345, 0.6789, 0.0123, 0.4567],
            "bias": 0.0456,
            "model_type": "linear"
        }
    }
}

Feature order: [num_new_tokens, prod_ext_ctx, num_context_tokens, batch_size]

Webviewer

Web Viewer

Quickstart workflow

Using PyPI Package

llm-execution-time-predictor profile Qwen/Qwen3-4B --tp_size 1
llm-execution-time-predictor train_models tp1_config benchmark_data_Qwen_Qwen3-4B_TP_1_PP_1.json --predictor-file trained_predictors.json
llm-execution-time-predictor predict trained_predictors.json tp1_config --mode decode --bs 8 --input-len 1024
llm-execution-time-predictor webview --predictor-file trained_predictors.json

Using from Source

python llm_execution_time_predictor/llm_forward_predictor_cli.py profile Qwen/Qwen3-4B --tp_size 1
python llm_execution_time_predictor/llm_forward_predictor_cli.py train_models tp1_config benchmark_data_Qwen_Qwen3-4B_TP_1_PP_1.json --predictor-file trained_predictors.json
python llm_execution_time_predictor/llm_forward_predictor_cli.py predict trained_predictors.json tp1_config --mode decode --bs 8 --input-len 1024
python llm_execution_time_predictor/llm_forward_predictor_cli.py webview --predictor-file trained_predictors.json

TODO

  1. Fix vLLM force one batch with vllm backend, currently vLLM might run more than 1 batch making some of the profiling innacurate skewing the model. Currently no good solution for this.

Ack

Co-contributors: Dongming Li and Zijian He

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_execution_time_predictor-0.1.1.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llm_execution_time_predictor-0.1.1-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file llm_execution_time_predictor-0.1.1.tar.gz.

File metadata

File hashes

Hashes for llm_execution_time_predictor-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e3a25e1dcb6b604a002452d2acc278f6d48a5847f23797997c00bde5bb737ab1
MD5 1687e2ccb2241490c07a1d40b910b95e
BLAKE2b-256 a1e1fb21d65e651eff3d889d8b85a7c08abf1b69e39fa87e1a54d7caa00f6dc1

See more details on using hashes here.

File details

Details for the file llm_execution_time_predictor-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for llm_execution_time_predictor-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47a3ed31af68788fb1abb196374009654813e66aae4618dda074b5e844c6e9a0
MD5 b7a13e97cd39a8766f99cc40855132df
BLAKE2b-256 8a9755ea1dd05c403b6f758d94e15235251e623d5db30ddcd1eea75435e833bf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page