Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import numpy as np | |
| import pytest | |
| torch = pytest.importorskip("torch") | |
| from app.analysis.hooks import get_stored_attentions | |
| from app.analysis.suppression import compute_attribution_matrix | |
| def test_attribution_matrix_shape_and_cleanup() -> None: | |
| from tests.conftest import FakeCausalLM | |
| model = FakeCausalLM() | |
| input_ids = torch.tensor([[1, 2, 3, 4, 5]], dtype=torch.long) | |
| token_ranges = [(0, 2), (2, 4), (4, 5)] | |
| result = compute_attribution_matrix( | |
| input_ids=input_ids, | |
| token_ranges=token_ranges, | |
| model=model, | |
| take_log=False, | |
| ) | |
| assert result.matrix.shape == (3, 3) | |
| assert np.allclose(np.diag(result.raw_matrix), 0.0) | |
| assert np.allclose(np.triu(result.raw_matrix), 0.0) | |
| assert np.isfinite(result.matrix).all() | |
| assert get_stored_attentions() == {} | |