Repository navigation
feat(harness): run a single epoch of a run #132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -56,6 +56,7 @@ export interface RunBenchmarkInput { | |
| readonly baseUrl?: string; | ||
| readonly benchmarkConfig: BenchmarkRunConfig; | ||
| readonly epochs: number; | ||
| readonly epoch?: number; | ||
| readonly maxConcurrency: number; | ||
| readonly range?: { | ||
| readonly start?: number; | ||
|
|
@@ -96,6 +97,7 @@ export function runBenchmarkById( | |
| const model = modelFromConfig(input.benchmarkConfig); | ||
| const runConfig: RunConfig = definedValues({ | ||
| epochs: input.epochs, | ||
| epoch: input.epoch, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 馃敶 Single-epoch result files overwrite each other When separate Learn moreThe local result store names files by benchmark, model, and session ID, not epoch. The new single-epoch mode permits distinct calls with the same session ID and different epoch indices. Both calls write valid results but target one file, so the last write replaces the first. This affects callers that use Example: Run epoch 0 and then epoch 1 with Recommended fix: Pass the selected epoch through the result-store write options and include it in the filename when present. Keep the existing filename for runs without a selected epoch, and test two writes sharing a session ID. Was this helpful? React with 馃憤 or 馃憥 to provide feedback. |
||
| maxConcurrency: input.maxConcurrency, | ||
| range: input.range, | ||
| degradeSolverErrors: benchmark.degradeSolverErrors, | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
馃煛 Out-of-range epoch produces invalid scores
When
epochis negative or at leastepochs,runBenchmarkstill evaluates that nonexistent epoch. Its scores and request IDs carry the invalid index.Learn more
epochsdefines the number of valid zero-based epoch indices. The selected epoch bypasses that count, so an invalid index still flows through scoring, logging, request session IDs, and cache salts. The public input accepts numbers without checking their range.Example:
runBenchmark({ epochs: 3, epoch: 3, maxConcurrency: 1 })evaluates every sample as epoch 3 instead of rejecting the request; the valid indices are 0, 1, and 2.Recommended fix: Validate the selected index as a safe integer in
[0, config.epochs)before streaming. Surface an explicit input error torunBenchmarkByIdcallers and add tests for negative, fractional, and out-of-range indices.Was this helpful? React with 馃憤 or 馃憥 to provide feedback.