Skip to content
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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove skip building graph check for quantization use case #2430

Merged

Conversation

VijayanB
Copy link
Member

@VijayanB VijayanB commented Jan 23, 2025

Description

For on-disk quantization indices, we don't have to apply building graph check since it is already faster, and we found is causing latency spike during search. Hence, done check for threshold if quantization criteria is met.

Related Issues

part of #2215

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@VijayanB
Copy link
Member Author

I am raising directly to 2.x since i am blocked because of lucene codec issue. Will backport this to main once it is fixed.

@VijayanB
Copy link
Member Author

Currently quantization state is not null only for on-disk mode. We don't support in-memory quantization at this moment. Hence, this check is good enough. However if we want to check for on-disk, we have to pass this as parameter and add it to check.

@jmazanec15 @shatejas @Vikasht34 @navneet1v What do you think?

For quantization indices, we don't have to apply building graph check
since it is already faster, this is now only applied for fp32/16 indices
and where threshold is configured.

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
@VijayanB VijayanB force-pushed the remove-threshold-for-quants branch from ced2035 to db017b6 Compare January 23, 2025 21:25
@jmazanec15
Copy link
Member

In general, the "mode" is meant to select defaults for other parameters, so it should not be directly used to disable and enable certain features. Instead, it may resolve to a parameter that then makes this decision.

Anyway, in the PR, it appears that you actually disable if quantization is used. I think in general something like this is okay, but might be misleading/confusing to users who set the setting anticipating that graph builds will be skipped.

That being said, is this just a concern of performance, or is it a functional bug? If it is performance related only, Id recommend using mode to resolve a per-field value for skipping graph build. Then, users could override if need be. This would be consistent with current approach around mode.

Copy link
Collaborator

@shatejas shatejas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update documentation around this?

@VijayanB
Copy link
Member Author

Do we need to update documentation around this?

Yes, i will update that this parameter will be no-hop for lucene, and on-disk

@VijayanB VijayanB merged commit 8d13c74 into opensearch-project:2.x Jan 24, 2025
102 checks passed
opensearch-trigger-bot bot pushed a commit that referenced this pull request Jan 24, 2025
For quantization indices, we don't have to apply building graph check
since it is already faster, this is now only applied for fp32/16 indices
and where threshold is configured.

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
(cherry picked from commit 8d13c74)
VijayanB added a commit to VijayanB/k-NN-2 that referenced this pull request Feb 11, 2025
…h-project#2430)

For quantization indices, we don't have to apply building graph check
since it is already faster, this is now only applied for fp32/16 indices
and where threshold is configured.

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
@VijayanB VijayanB mentioned this pull request Feb 11, 2025
5 tasks
VijayanB added a commit that referenced this pull request Feb 12, 2025
* Remove skip building graph check for quantization use case (#2430)

For quantization indices, we don't have to apply building graph check
since it is already faster, this is now only applied for fp32/16 indices
and where threshold is configured.

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>

* Update default to 0 to always build graph as default behavior (#2452)

Signed-off-by: Balasubramanian <balasvij@amazon.com>

* Update changelog

Signed-off-by: Balasubramanian <balasvij@amazon.com>

---------

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Balasubramanian <balasvij@amazon.com>
navneet1v pushed a commit that referenced this pull request Feb 17, 2025
…vice (#2532)

* fix broken build flag, move build to one directory (#2442)

* move build to one directory, fix broken flag

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* fix make path

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* changelog update

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* add fix for classpath change and for cmake discovery on macos

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* fix make discovery for gradle

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* fix cmake path for macOS

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

---------

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* Update package name to fix compilation issue (#2513)

* Update package name to fix compilation issue

Core renamed this package in opensearch-project/OpenSearch#17272
This commit renames package accordingly

Signed-off-by: Balasubramanian <balasvij@amazon.com>

* Update build.gradle and build.sh to separate x64 linux nmslib build with different gcc versions (#2506) (#2508)

* Update build gradle to separate nmslib / faiss generation

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Update scripts/build.sh to separate enable gcc switch

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Remove test comments

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Remove test comments

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Remove test comments

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Updating restart and rolling upgrade bwc test bundle.gradle

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Enforce gcc10 for nmslib to compile and avx512_spr have no-op

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

---------

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>
(cherry picked from commit 107c4f1)

Co-authored-by: Peter Zhu <zhujiaxi@amazon.com>

---------

Signed-off-by: Balasubramanian <balasvij@amazon.com>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: Peter Zhu <zhujiaxi@amazon.com>

* Adds debug logs for KNNQuery and KNNWeight (#2466) (#2470)

* Adds debug logs for KNNQuery and KNNWeight

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Adds check to see if log is enabled to start and stop StopWatch

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Addressing comments on the PR

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Adds shard and segment info in the logs

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Removes unnecessary segment name param from exact search

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Fixes the build

Signed-off-by: Tejas Shah <shatejas@amazon.com>

---------

Signed-off-by: Tejas Shah <shatejas@amazon.com>
(cherry picked from commit f322e27)

Co-authored-by: Tejas Shah <shatejas@amazon.com>

* Clean JNI artifacts with ./gradlew clean (#2516)

* clean JNI artifacts with ./gradlew clean

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* nest release under build directory

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* adjust all references to the old release path

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* remove irrelevant paths from gitignore, add jni/build

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* fix logging on linux

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

---------

Signed-off-by: Samuel Herman <sherman8915@gmail.com>

* Backport to main (#2520)

* Remove skip building graph check for quantization use case (#2430)

For quantization indices, we don't have to apply building graph check
since it is already faster, this is now only applied for fp32/16 indices
and where threshold is configured.

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>

* Update default to 0 to always build graph as default behavior (#2452)

Signed-off-by: Balasubramanian <balasvij@amazon.com>

* Update changelog

Signed-off-by: Balasubramanian <balasvij@amazon.com>

---------

Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Balasubramanian <balasvij@amazon.com>

* [Backport main] Add release notes for 2.19.0 (#2503)

* Add release notes for 2.19.0

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>

* Fix links for release notes

Co-authored-by: John Mazanec <jmazane@amazon.com>
Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>

---------

Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>
Co-authored-by: John Mazanec <jmazane@amazon.com>

* Fix main knnlib dir in build script based on #2442 (#2526)

Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>

* Minor performance improvments in KNNQueryBuilder (#2528)

Signed-off-by: Tejas Shah <shatejas@amazon.com>

* Initial implementation of control flow

Signed-off-by: Rohan Chitale <r.chitale7@gmail.com>

---------

Signed-off-by: Samuel Herman <sherman8915@gmail.com>
Signed-off-by: Balasubramanian <balasvij@amazon.com>
Signed-off-by: Vijayan Balasubramanian <balasvij@amazon.com>
Signed-off-by: Kunal Kotwani <kkotwani@amazon.com>
Signed-off-by: Peter Zhu <zhujiaxi@amazon.com>
Signed-off-by: Tejas Shah <shatejas@amazon.com>
Signed-off-by: Rohan Chitale <r.chitale7@gmail.com>
Co-authored-by: sam-herman <97131656+sam-herman@users.noreply.github.com>
Co-authored-by: Vijayan Balasubramanian <balasvij@amazon.com>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: Peter Zhu <zhujiaxi@amazon.com>
Co-authored-by: Tejas Shah <shatejas@amazon.com>
Co-authored-by: Kunal Kotwani <kkotwani@amazon.com>
Co-authored-by: John Mazanec <jmazane@amazon.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants