[benchmark] Simply Inputs more.#1077
Conversation
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Codecov Report❌ Patch coverage is ❌ Your patch status has failed because the patch coverage (77.23%) is below the target coverage (90.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## main #1077 +/- ##
==========================================
- Coverage 89.47% 89.45% -0.02%
==========================================
Files 459 458 -1
Lines 85660 85398 -262
==========================================
- Hits 76646 76395 -251
+ Misses 9014 9003 -11
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR completes the benchmark API streamlining by moving diskann-benchmark-runner::Input to a strongly-typed model (Raw DTO + from_raw validation + serialize) and removing the public Any/CheckDeserialization APIs, then mechanically porting benchmarks and inputs to the new interface.
Changes:
- Replaced the runner’s dynamic
Any+CheckDeserializationflow withInput { type Raw, from_raw(..), serialize(..), example() }and made the type-erasure an internal detail. - Migrated benchmark input validation from
CheckDeserialization::check_deserializationto ad-hoc inherentvalidate(..)methods andInputFile::resolve(..). - Updated examples/docs and ported
diskann-benchmark+diskann-benchmark-simd+ runner tests to the new trait.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| diskann-benchmark/src/inputs/mod.rs | Updates as_input! macro to implement new Input API with Raw = Self, calling validate and serialize. |
| diskann-benchmark/src/inputs/graph_index.rs | Ports graph-index inputs from CheckDeserialization to inherent validate + InputFile::resolve. |
| diskann-benchmark/src/inputs/filters.rs | Ports filter inputs to inherent validate + InputFile::resolve. |
| diskann-benchmark/src/inputs/exhaustive.rs | Ports exhaustive inputs to inherent validate + InputFile::resolve and updates nested validation calls. |
| diskann-benchmark/src/inputs/disk.rs | Ports disk-index inputs to inherent validate and replaces file checks with resolve. |
| diskann-benchmark/src/backend/disk_index/benchmarks.rs | Updates tolerance input to new Input trait (Raw, from_raw, serialize, example). |
| diskann-benchmark/README.md | Updates README examples to the new registration and Input API, plus benchmark description hook. |
| diskann-benchmark-simd/src/lib.rs | Ports SIMD benchmark inputs/tolerances to the new Input trait. |
| diskann-benchmark-runner/src/test/typed.rs | Adjusts typed test inputs to use separate Raw DTOs and from_raw validation behavior. |
| diskann-benchmark-runner/src/test/dim.rs | Ports dim test inputs to new Input trait methods. |
| diskann-benchmark-runner/src/result.rs | Updates tests to reflect updated TypeInput::new signature. |
| diskann-benchmark-runner/src/registry.rs | Switches registry internals to input::internal type-erased layer; hides dispatch methods from public API. |
| diskann-benchmark-runner/src/lib.rs | Removes public re-exports of Any and CheckDeserialization; keeps Checker and Input public. |
| diskann-benchmark-runner/src/jobs.rs | Updates job parsing to produce internal type-erased inputs and drops Checker tag plumbing. |
| diskann-benchmark-runner/src/internal/regression.rs | Migrates regression pipeline to internal Any and updated deserialization path. |
| diskann-benchmark-runner/src/input.rs | Introduces new Input trait shape and moves the type-erasure (Any/DynInput/Wrapper) into input::internal. |
| diskann-benchmark-runner/src/files.rs | Replaces CheckDeserialization with InputFile::resolve for path validation/resolution. |
| diskann-benchmark-runner/src/checker.rs | Removes CheckDeserialization and tag-based Checker::any helper; keeps path/output resolution utilities. |
| diskann-benchmark-runner/src/benchmark.rs | Updates internal benchmark dispatch to use input::internal::Any instead of public Any. |
| diskann-benchmark-runner/src/app.rs | Updates job serialization/checkpoint setup to use new Any::serialize() returning anyhow::Result. |
| diskann-benchmark-runner/src/any.rs | Deleted (public Any removed). |
Comments suppressed due to low confidence (2)
diskann-benchmark/src/inputs/exhaustive.rs:405
- Spelling typo in comment: "Chcck" should be "Check".
// Chcck that provided data type is compatible with `f32`.
f32::check_converting_load(self.data_type)?;
diskann-benchmark/src/inputs/exhaustive.rs:506
- Spelling typo in comment: "Chcck" should be "Check".
// Chcck that provided data type is compatible with `f32`.
f32::check_converting_load(self.data_type)?;
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Move the
Inputtrait indiskann-benchmark-runnerover to a strongly typed representation and removeAnyfrom the public API. This finishes the large work in streamlining the benchmark API. The new interface iswith the big changes being the introduction of the
Rawassociated type, changingtry_deserializeforfrom_raw, addingserialize(for custom serialization) andexamplereturningSelf::Rawinstead of rawserde_json::Value. The idea behindRawis that it is used to replace theCheckDeserializationtrait and allows decoupling of an unvalidated raw deserialized struct from the final validated object.This PR also removes the
CheckDeserializationtrait.Suggested Reviewing Order
diskann-benchmark-runner:src/input.rs: This is where the bulk of the actual changes are. The now removed customAnytype is moved as an internal implementation detail in this module and is no longer user facing.src/files.rs: The file path validation forInputFileis moved fromCheckDeserializationto an inherentresolvemethod.src/test/dim.rs: A mechanical change whereRaw = Selfis used for theInputdefinitions.src/test/typed.rs:TypeInputis tweaked to use a separate type as the raw input to ensure there is some coverage there.src/any.rs: Removed.diskann-benchmark:src/inputs.mod.rs: Update theas_input!macro to the new form. Now that we aren't relying onCheckDeserialization, I switched over benchmarks to using ad-hocvalidateinherent methods. This is somewhat of a stopgap to preserve the existing checks that mutate in-place.README.md: Update some out-of-date examples and descriptions.check_deserializationtovalidate.diskann-benchmark-simd: Simple port to the newInputtrait.