@@ -12,6 +12,7 @@ What it adds
1212- ShareGPT dataset conversion to GuideLLM-compatible JSONL.
1313- A JSON summary output format for benchmark reports.
1414- Custom response handler for accurate TTFT/ITL metrics with reasoning tokens (e.g., DeepSeek-R1).
15+ - Optional backend mode to preserve HTTP error details (` message/type/code ` ) in failed request records.
1516
1617Install
1718-------
@@ -57,6 +58,32 @@ benchmark-runner benchmark \
5758 --progress-auth YOUR_TOKEN
5859```
5960
61+ HTTP Error Details for Failed Requests
62+ --------------------------------------
63+ GuideLLM's default ` openai_http ` backend does not always preserve response-body
64+ error payloads in request-level benchmark errors. Benchmark Runner provides an
65+ opt-in backend type that enriches failed request errors using OpenAI-style error
66+ fields (` error.message ` , ` error.type ` , ` error.code ` ):
67+
68+ ``` bash
69+ benchmark-runner benchmark run \
70+ --target http://localhost:8000/v1 \
71+ --backend openai_http_error_detail \
72+ --profile constant \
73+ --rate 10 \
74+ --max-requests 100 \
75+ --sample-requests 20 \
76+ --data " prompt_tokens=128,output_tokens=256" \
77+ --processor PROCESSOR_PATH
78+ ```
79+
80+ When a request fails, ` requests.errored[*].info.error ` in benchmark outputs will
81+ contain text similar to:
82+ ` HTTP 400: ... (type=BadRequestError, code=400) ` .
83+
84+ Note: if ` --sample-requests 0 ` is used, request-level samples are omitted by design,
85+ including failed request details.
86+
6087ShareGPT dataset support
6188------------------------
6289If a dataset filename contains "sharegpt" and ends with ` .json ` or ` .jsonl ` ,
@@ -123,6 +150,24 @@ Install development dependencies:
123150pip install -e " .[dev]"
124151```
125152
153+ macOS Notes
154+ -----------
155+ Benchmark Runner applies two macOS-only runtime defaults to avoid known
156+ multiprocessing hangs:
157+ - switch GuideLLM multiprocessing context from ` fork ` to ` spawn ` (unless
158+ ` GUIDELLM__MP_CONTEXT_TYPE ` is explicitly set)
159+ - default ` --data-num-workers ` to ` 0 ` unless provided on the CLI
160+
161+ References:
162+ - https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods
163+ - https://bugs.python.org/issue33725
164+
165+ To disable these defaults for debugging/experiments:
166+
167+ ``` bash
168+ BENCHMARK_RUNNER_DISABLE_MACOS_WORKAROUNDS=1 benchmark-runner benchmark run ...
169+ ```
170+
126171License
127172-------
128173See repository license information.
0 commit comments