fix: optimise softmax calculation in CustomLID#9
Open
kshkrvea wants to merge 3 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR refactors top‑k selection in LID inference to avoid full sorting and to compute probabilities for only the requested top‑k outputs.
Changes:
- Uses
np.argpartition+ partial sort to compute top‑k indices more efficiently. - Refactors softmax math in
predict_limit_before_softmaxto compute top‑k probabilities without materializing the full softmax vector. - Applies the same top‑k selection approach in
predict_limit_after_softmax.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Optimized prediction inference to boost overall throughput.
This refactor gets a slight speedup while keeping the outputs exactly the same as the original method.
What I did:
Numerical outputs of the functions are same, while computation time (averaged over 10 runs) dropped down by 10-ish %. You can see it in the first commit c14a610 of this PR in report.txt or bellow:
[before vs optimized_before]
Max Absolute Difference: 0.00e+00
Speed Original: 2508.8 samples/sec, 0.000399 sec/sample
Speed Optimized: 2879.5 samples/sec, 0.000347 sec/sample
Total Speedup: 12.9%
[after vs optimized_after]
Max Absolute Difference: 0.00e+00
Speed Original: 3627.7 samples/sec, 0.000276 sec/sample
Speed Optimized: 4463.0 samples/sec, 0.000224 sec/sample
Total Speedup: 18.7%