4.**Saves** results to an output directory organized by input labels
4.**Saves** results to an output directory organized by benchmark name
The Python plotting module:
The Python plotting module:
1.**Generates** comparison plots using your custom labels in `<OUTPUT_DIR>/plots/`
1.**Generates** comparison plots using your benchmark name in `<OUTPUT_DIR>/plots/`
2.**Creates** summary statistics and visualizations
2.**Creates** summary statistics and visualizations
### Plotting Options
### Plotting Options
...
@@ -224,7 +224,7 @@ The benchmarking framework is built around Python modules that provide direct co
...
@@ -224,7 +224,7 @@ The benchmarking framework is built around Python modules that provide direct co
### Comparison Limitations
### Comparison Limitations
The plotting system supports up to 12 different inputs in a single comparison. If you need to compare more than 12 different deployments/endpoints, consider running separate benchmark sessions or grouping related comparisons together.
The plotting system supports up to 12 different benchmarks in a single comparison.
### Concurrency Configuration
### Concurrency Configuration
...
@@ -233,12 +233,14 @@ You can customize the concurrency levels using the CONCURRENCIES environment var
...
@@ -233,12 +233,14 @@ You can customize the concurrency levels using the CONCURRENCIES environment var
-**`profile_export_genai_perf.json`** - Structured metrics from GenAI-Perf
-**`profile_export_genai_perf.json`** - Structured metrics from GenAI-Perf
-**`profile_export_genai_perf.csv`** - CSV format metrics from GenAI-Perf
-**`profile_export.json`** - Raw GenAI-Perf results
-**`profile_export.json`** - Raw GenAI-Perf results
-**`inputs.json`** - Generated test inputs
-**`inputs.json`** - Generated test inputs
...
@@ -336,6 +336,7 @@ Deploy your DynamoGraphDeployment using the [deployment documentation](../../com
...
@@ -336,6 +336,7 @@ Deploy your DynamoGraphDeployment using the [deployment documentation](../../com
### Step 2: Deploy and Run Benchmark Job
### Step 2: Deploy and Run Benchmark Job
**Note**: The server-side benchmarking job requires a Docker image containing the Dynamo benchmarking tools. Before the 0.5.1 release, you must build your own Docker image using the [container build instructions](../../container/README.md), push it to your container registry, then update the `image` field in `benchmarks/incluster/benchmark_job.yaml` to use your built image tag.
# Generate performance plots from the downloaded results
python3 -m benchmarks.utils.plot \
--data-dir ./benchmarks/results
```
This will create visualization plots. For more details on interpreting these plots, see the [Summary and Plots](#summary-and-plots) section above.
## Cross-Namespace Service Access
## Cross-Namespace Service Access
Server-side benchmarking can benchmark services across multiple namespaces from a single job using Kubernetes DNS. When referencing services in other namespaces, use the full DNS format:
Server-side benchmarking can benchmark services across multiple namespaces from a single job using Kubernetes DNS. When referencing services in other namespaces, use the full DNS format:
...
@@ -397,7 +408,8 @@ The benchmark job is configured directly in the YAML file.
...
@@ -397,7 +408,8 @@ The benchmark job is configured directly in the YAML file.
@@ -405,32 +417,36 @@ The benchmark job is configured directly in the YAML file.
...
@@ -405,32 +417,36 @@ The benchmark job is configured directly in the YAML file.
To customize the benchmark, edit `benchmarks/incluster/benchmark_job.yaml`:
To customize the benchmark, edit `benchmarks/incluster/benchmark_job.yaml`:
1.**Change the model**: Update the `--model` argument
1.**Change the model**: Update the `--model` argument
2.**Change the experiment name and/or service URL**: Update the `--input` argument (use `svc_name.namespace.svc.cluster.local:port` for cross-namespace access)
2.**Change the benchmark name**: Update the `--benchmark-name` argument
3.**Add multiple services**: Uncomment and add more `--input` lines
3.**Change the service URL**: Update the `--endpoint-url` argument (use `<svc_name>.<namespace>.svc.cluster.local:port` for cross-namespace access)
4.**Change Docker image**: Update the image field if needed
4.**Change Docker image**: Update the image field if needed
### Example: Multi-Namespace Benchmarking
### Example: Multi-Namespace Benchmarking
To benchmark services across multiple namespaces, modify the `--input` arguments:
To benchmark services across multiple namespaces, you would need to run separate benchmark jobs for each service since the format supports one benchmark per job. However, the results are stored in the same PVC and may be accessed together.