Skip to main content

Extraction, spectral analysis and visualization of transformer attention matrices

Project description

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

Project details


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

attnspectra-0.1.3-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

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

Hashes for attnspectra-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ba9138489a9f37184dc2bf1799928324456cf20d53bdc9060d37c16cb271a272
MD5 ef7cad7876a194b824bc8949e1c7345a
BLAKE2b-256 fab2dfc0e90cb5cdef1046d0b65cbfc088277e87866e165fe21153992b8ecabd

See more details on using hashes here.

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

Hashes for attnspectra-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1071044cf861f55a4cde4539976128f35f944096cce4bb3d7697aed67f78d195
MD5 6a44beedb41d8112a20403ae18ba3218
BLAKE2b-256 edec7958aa228118cc4062b94aa260257b5a4f198da5cfafa72d731129f93fd7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page