NIXL KVBench#

This workload (test_template_name is NIXLKVBench) runs NIXL KV-cache benchmarking for key-value store performance testing.

Usage Examples#

Test TOML example:

name = "my_nixl_kvbench_test"
description = "Example NIXL KVBench test"
test_template_name = "NIXLKVBench"

[cmd_args]
docker_image_url = "<docker container url here>"
model = "./examples/model_deepseek_r1.yaml"
model_config = "./examples/block-tp1-pp16.yaml"
backend = "POSIX"
num_requests = 1
source = "file"
num_iter = 16
page_size = 256
filepath = "/data"

Test Scenario example:

name = "nixl-kvbench-test"

[[Tests]]
id = "kvbench.1"
num_nodes = 1
time_limit = "00:10:00"

test_name = "my_nixl_kvbench_test"

Test-in-Scenario example:

name = "nixl-kvbench-test"

[[Tests]]
id = "kvbench.1"
num_nodes = 1
time_limit = "00:10:00"

name = "my_nixl_kvbench_test"
description = "Example NIXL KVBench test"
test_template_name = "NIXLKVBench"

  [Tests.cmd_args]
  docker_image_url = "<docker container url here>"
  backend = "UCX"
  source = "memory"
  op_type = "READ"

API Documentation#

Command Arguments#

pydantic model cloudai.workloads.nixl_kvbench.nixl_kvbench.NIXLKVBenchCmdArgs[source]#

Command line arguments for NIXL KVBench.

field command: Literal['profile'] = 'profile'#
field kvbench_script: str = '/workspace/nixl/benchmark/kvbench/main.py'#
field python_executable: str = 'python'#
field backend: str | list[str] | None = None#
field docker_image_url: str [Required]#

URL of the Docker image to use for the benchmark.

field etcd_path: str = 'etcd'#

Path to the etcd executable.

field wait_etcd_for: int = 60#

Number of seconds to wait for etcd to become healthy.

field etcd_image_url: str | None = None#

Optional URL of the Docker image to use for etcd, by default etcd will be run from the same image as the benchmark.

field filepath: str | None = None#

Directory path (in container) for storage operations. Example: /data

field total_buffer_size: str | list[str] | None = None#

Total buffer size in bytes. Examples: 1024, 1kb, 1mb, 1gb. Use with device_list. The size will be passed into NIXL as integer (bytes)

field device_list: str | list[str] | None = None#

Device specs in format ‘id:type:path’ (e.g., ‘11:F:/store0.bin,27:K:/dev/nvme0n1’)

Test Definition#

class cloudai.workloads.nixl_kvbench.nixl_kvbench.NIXLKVBenchTestDefinition(
*,
name: str,
description: str,
test_template_name: str,
cmd_args: NIXLKVBenchCmdArgs,
extra_env_vars: dict[str, str | List[str]] = {},
extra_cmd_args: dict[str, str] = {},
extra_container_mounts: list[str] = [],
git_repos: list[GitRepo] = [],
nsys: NsysConfiguration | None = None,
predictor: PredictorConfig | None = None,
agent: str = 'grid_search',
agent_steps: int = 1,
agent_metrics: list[str] = ['default'],
agent_reward_function: str = 'inverse',
agent_config: dict[str, Any] | None = None,
)[source]#

Bases: NIXLBaseTestDefinition[NIXLKVBenchCmdArgs]

Test definition for NIXL KVBench.