attnspectra
attnspectra es una librería para analizar el comportamiento de la atención en modelos transformer mediante métricas espectrales, entropía y visualizaciones.
Instalación
pip install attnspectra
Extras opcionales:
# Soporte para modelos Hugging Face
pip install attnspectra[hf]
# Visualización interactiva (Plotly + widgets)
pip install attnspectra[viz]
# Todo incluido
pip install attnspectra[all]
# Dependencias de desarrollo
pip install attnspectra[dev]
Uso rápido
import attnspectra as aspec
# Suponiendo que ya tienes un modelo y tokenizer
model = ...
tokenizer = ...
# Crear adapter
adapter = aspec.CustomGPTAdapter(
model=model,
tokenizer=tokenizer,
n_layers=8,
n_heads=8,
d_model=512,
)
# Capturar atención y calcular métricas
run, metrics = aspec.capture_and_compute(adapter, input_ids)
# Acceder a métricas (shape: n_layers × n_heads)
print(metrics.A_attn_entropy)
print(metrics.A_effective_rank)
print(metrics.A_attn_distance)
# Visualizar atención
A, tokens = aspec.get_content_attention(run, layer=0, head=0)
fig = aspec.plot_attention_matrix(A, tokens)
Ejemplo con Hugging Face
import attnspectra as aspec
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
attn_implementation="eager",
)
adapter = aspec.HFTransformerAdapter(
model=model,
tokenizer=tokenizer,
architecture="decoder",
)
text = "The quick brown fox jumps over the lazy dog."
inputs = tokenizer(text, return_tensors="pt")
run, metrics = aspec.capture_and_compute(
adapter,
inputs["input_ids"],
)
print(metrics.A_attn_entropy.shape)
A, tokens = aspec.get_content_attention(run, layer=0, head=0)
fig = aspec.plot_attention_matrix(A, tokens)
Qué puedes hacer con attnspectra
- Analizar patrones de atención en modelos transformer
- Estudiar estructura espectral de matrices de atención
- Comparar comportamiento entre diferentes inputs o estilos
- Visualizar matrices de atención y métricas por capa y cabeza
Funcionalidades principales
- Captura de atención mediante adapters flexibles
- 14 métricas (entropía, rango efectivo, espectro, anisotropía, etc.)
- Análisis por capa y cabeza
- Visualizaciones con matplotlib y modo interactivo con Plotly (opcional)
- Experimentos automatizados (degradación, comparación de estilos)
Documentación completa
Consulta el repositorio para ejemplos, teoría y documentación detallada:
https://github.com/caro370/INSO_TFG
Requisitos
- Python ≥ 3.10
- PyTorch ≥ 2.1
- NumPy ≥ 1.24
- Matplotlib ≥ 3.7
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
attnspectra-0.1.3.tar.gz
(39.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file attnspectra-0.1.3.tar.gz.
File metadata
- Download URL: attnspectra-0.1.3.tar.gz
- Upload date:
- Size: 39.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba9138489a9f37184dc2bf1799928324456cf20d53bdc9060d37c16cb271a272
|
|
| MD5 |
ef7cad7876a194b824bc8949e1c7345a
|
|
| BLAKE2b-256 |
fab2dfc0e90cb5cdef1046d0b65cbfc088277e87866e165fe21153992b8ecabd
|
File details
Details for the file attnspectra-0.1.3-py3-none-any.whl.
File metadata
- Download URL: attnspectra-0.1.3-py3-none-any.whl
- Upload date:
- Size: 45.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1071044cf861f55a4cde4539976128f35f944096cce4bb3d7697aed67f78d195
|
|
| MD5 |
6a44beedb41d8112a20403ae18ba3218
|
|
| BLAKE2b-256 |
edec7958aa228118cc4062b94aa260257b5a4f198da5cfafa72d731129f93fd7
|