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.2.tar.gz (40.1 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.2-py3-none-any.whl (45.6 kB view details)

Uploaded Python 3

File details

Details for the file attnspectra-0.1.2.tar.gz.

File metadata

  • Download URL: attnspectra-0.1.2.tar.gz
  • Upload date:
  • Size: 40.1 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.2.tar.gz
Algorithm Hash digest
SHA256 d95c189359b5b0f424d3d4ae6243d490810332552425a530434513f00cabe441
MD5 1772577aa3f0913d7edbc42d363c128c
BLAKE2b-256 7ad71b96f1cec466bde64b0e17eac71e7a7c47f116108c1e7295ab19f4d32abd

See more details on using hashes here.

File details

Details for the file attnspectra-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: attnspectra-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 45.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 69ed1c43881c46e14f7e5f498caf2c09b3292e6038203f8b14bafb019fbf487f
MD5 4ee87ed4e72cb66d39b5ba86b21363a2
BLAKE2b-256 39a717088ea44468775b5ecce2fbfb32023902d2f354d183e39f20ceb0cdfe2d

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