Repository navigation
fix: IntruderScorer(type="internal") crashes when picking the intruder quantile - #183
Open
flyingdoubleG wants to merge 1 commit into
Open
flyingdoubleG wants to merge 1 commit into
flyingdoubleG wants to merge 1 commit into
Conversation
…r quantile The internal intruder type removed the source quantile from the list of quantiles with list.remove, which compares the quantile lists for equality. Lists of the same length are compared element by element, and ActivatingExample's dataclass __eq__ compares its tensors, which raises 'Boolean value of Tensor with more than one value is ambiguous'. With the default sampler every quantile holds the same number of examples, so every batch whose quantile is not the first one crashed. Select the other quantiles by their key instead.
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.
Summary
IntruderScorer(type="internal")crashes while building its batches:list.removecompares each quantile's list withall_active_examples. Lists of the same length are compared element by element, andActivatingExampleuses the default dataclass__eq__, which compares itstokens/activationstensors and raisesWith the default sampler every quantile holds
n_examples_test // n_quantilesexamples, so this happens for every batch whose source quantile is not the first one. A record with 10 quantiles × 5 test examples fails on the second batch.Change
Select the other quantiles by their key (
quantile != active_quantile) instead of removing by equality.Tests
Added
test_intruder_internal_takes_intruder_from_another_quantiletotests/test_scorers/test_intruder_example_embedding.py: 3 quantiles × 2 examples. It checks that_prepare_and_batchreturns one batch per non-activating example and that each intruder comes from a different quantile than its batch. It raises the error above on main and passes with this change.ruff checkandblack --checkpass.