Repository navigation
Conversation
Update system_prompt.md Update system_prompt.md Update system_prompt.md Update system_prompt.md Update system_prompt.md
Update system_prompt.md
| one `output_tok_per_s` value for each concurrency. Before comparing trials, | ||
| decide on a method to compare their `output_tok_per_s` values across | ||
| concurrencies, and keep that method for the whole session. Report the chosen |
There was a problem hiding this comment.
What exactly we want to say with "Before comparing trials,
decide on a method to compare their output_tok_per_s values across
concurrencies, and keep that method for the whole session."? I have a feeling I understand what you mean but 1) could be more clear; 2) again, not sure if Constraints is the right place for this - see my other comment below.
There was a problem hiding this comment.
To be more clear maybe we provide example scenario.
For example Trial 1 might have [400, 800, 850] output_tok_per_s for concurrencies [16, 32, 64] and Trail 2 might have [800, 1200, null] output_tok_per_s for concurrencies [16, 32, 64].
Agent has to decide whether
method1
it will choose Trial 1 because benchmark was successful at all concurrencies.
OR
method2
it will choose Trial 2 because benchmark at concurrency gave highest output_tok_per_s.
Agent has to decide method1 or method2 and why it choose before comparing trials.
| Each trial is benchmarked at every value of `concurrency`, so a trial can have | ||
| one `output_tok_per_s` value for each concurrency. Before comparing trials, | ||
| decide on a method to compare their `output_tok_per_s` values across | ||
| concurrencies, and keep that method for the whole session. Report the chosen | ||
| method via `progress` (see `# Progress`).<!--?if prompt--> If `## Additional instructions` | ||
| says how to compare trials, use that method.<!--?end--> |
There was a problem hiding this comment.
Also why "Each trial is benchmarked at every value of concurrency, so a trial can have
one output_tok_per_s value for each concurrency. Before comparing trials,
decide on a method to compare their output_tok_per_s values across
concurrencies, and keep that method for the whole session. Report the chosen
method via progress (see # Progress). If ## Additional instructions
says how to compare trials, use that method."
is in Constraints? It talks about trials / how to select a trial.
There was a problem hiding this comment.
For example, we have "The end goal is to find a model serving configuration that matches the constraints and delivers the best performance." as well as "A trial is also failed when its benchmark at all concurrency values fails to meet the constraints (see # Constraints)." where talking on how constraints are applied to trials and that seems to be better places - not in Constraints.
There was a problem hiding this comment.
The idea is to minimize the contract of each section to make explicit the role and responsibility of each section as clear and explicit as possible.
There was a problem hiding this comment.
I choose # Constraints for 2 reason.
- I want it to be just before we talk about "best performance".
It is kept before the paragraph
During the trials and experimentation aimed at the best performance, you may
pick the hardware (the best available within the allowed dstack fleets)...
- We define fields: trials and concurrency required to explain about the comparison in constraints section.
| `final_report.json.benchmark` (values are illustrative): | ||
| Record every benchmark using the following structure and field names (values | ||
| are illustrative): for a trial, in `trials/<n>/trial.json` as | ||
| `results[concurrency == <c>].benchmark`; for the final service, as |
There was a problem hiding this comment.
(Minor) I assumed we define the format in the other place - trials/<n>/trial.json is a JSON object. Here we just say where to save it. Perhaps we could just make explicit again that benchmark result is per concurrency value.
|
|
||
| ``` | ||
| {"resources": {...}, "context_length": ..., "benchmark": {...}, "learned": ..., "failed": ...} | ||
| {"resources": {...}, "results": [{"concurrency": ..., "benchmark": {...}, "context_length": ..., "learned": ..., "failed": ...}, ...]} |
There was a problem hiding this comment.
BTW why "results" and not "result". IMO its one result.
| `final_report.json.benchmark.command`. | ||
| Do not put secret values in `final_report.json`, or print them. Use env | ||
| references in `final_report.json.service_yaml`; use environment variable | ||
| names or redacted values in `final_report.json.results[].benchmark.command`. |
There was a problem hiding this comment.
| names or redacted values in `final_report.json.results[].benchmark.command`. | |
| names or redacted values in `final_report.json.results[concurrency == <c>].benchmark.command`. |
| from `constraints.json`. Each entry contains: | ||
| - `concurrency`: the concurrency value for this result | ||
| - `context_length`: the largest context verified for the final service at | ||
| this concurrency, as described in `## Benchmark` | ||
| - `benchmark`: the final service benchmark at this concurrency, as | ||
| described in `## Benchmark` |
There was a problem hiding this comment.
"Each entry contains" is vauge format definition, no??
There was a problem hiding this comment.
Do you mean instead we say
Each entry is an object with fields no other than mentioned below.
- concurrency:
- context_length:
Add concurrency sweeps to presets
Preset creation can now benchmark a service at multiple concurrency levels in each trial.
Configuration
The concurrency field accepts a single value, a list, comma-separated values, or a doubling range:
Values are normalized into a sorted list of unique positive integers.
CLI outputdstack preset list -a shows the requested sweep and benchmark ranges. The c= value in the BENCHMARK column identifies the selected point:
The sparkline continues to show one throughput value per trial. For each trial, the displayed value comes from the selected sweep point.
Selection Rule
For each trial, the CLI selects the benchmark point as follows:
For a completed preset,
dstack preset get --json <preset-id>includes all final benchmarks and the selected benchmark:Compatibility