Skip to main content

No project description provided

Project description

PyPI PyPI - Downloads docs Checks

Coverage GitHub commits GitHub commit activity GitHub closed pull requests code size, bytes

pattern-lens

visualization of LLM attention patterns and things computed about them

pattern-lens makes it easy to:

  • Generate visualizations of attention patterns, or figures computed from attention patterns, from models supported by TransformerLens
  • Compare generated figures across models, layers, and heads in an interactive web interface

Installation

pip install pattern-lens

Usage

The pipeline is as follows:

  • Generate attention patterns using pattern_lens.activations.acitvations_main(), saving them in npz files
  • Generate visualizations using pattern_lens.figures.figures_main() -- read the npz files, pass each attention pattern to each visualization function, and save the resulting figures
  • Serve the web interface using pattern_lens.server -- web interface reads metadata in json/jsonl files, then lets the user select figures to show

Basic CLI

Generate attention patterns and default visualizations:

# generate activations
python -m pattern_lens.activations --model gpt2 --prompts data/pile_1k.jsonl --save-path attn_data
# create visualizations
python -m pattern_lens.figures --model gpt2 --save-path attn_data

serve the web UI:

python -m pattern_lens.server --path attn_data

Web UI

View a demo of the web UI at miv.name/pattern-lens/demo.

Custom Figures

Add custom visualization functions by decorating them with @register_attn_figure_func. You should still generate the activations first:

python -m pattern_lens.activations --model gpt2 --prompts data/pile_1k.jsonl --save-path attn_data

and then write+run a script/notebook that looks something like this:

import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import svd

# these functions simplify writing a function which saves a figure
from pattern_lens.figure_util import matplotlib_figure_saver, save_matrix_wrapper
# decorator to register your function, such that it will be run by `figures_main`
from pattern_lens.attn_figure_funcs import register_attn_figure_func
# runs the actual figure generation pipeline
from pattern_lens.figures import figures_main

# define your own functions
# this one uses `matplotlib_figure_saver` -- define a function that takes matrix and `plt.Axes`, modify the axes
@register_attn_figure_func
@matplotlib_figure_saver(fmt="svgz")
def svd_spectra(attn_matrix: np.ndarray, ax: plt.Axes) -> None:
    # Perform SVD
    U, s, Vh = svd(attn_matrix)

    # Plot singular values
    ax.plot(s, "o-")
    ax.set_yscale("log")
    ax.set_xlabel("Singular Value Index")
    ax.set_ylabel("Singular Value")
    ax.set_title("Singular Value Spectrum of Attention Matrix")


# run the figures pipelne
# run the pipeline
figures_main(
	model_name="pythia-14m",
	save_path=Path("docs/demo/"),
	n_samples=5,
	force=False,
)

see demo.ipynb for a full example

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

pattern_lens-0.3.0.tar.gz (58.3 MB view details)

Uploaded Source

Built Distribution

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

pattern_lens-0.3.0-py3-none-any.whl (49.2 kB view details)

Uploaded Python 3

File details

Details for the file pattern_lens-0.3.0.tar.gz.

File metadata

  • Download URL: pattern_lens-0.3.0.tar.gz
  • Upload date:
  • Size: 58.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pattern_lens-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f7a75cdcba97a3e5e1356c79851e11ad836a09589449c5540e9c759ad517346b
MD5 3a254ee115768c7f8f0b357a4d7fe47b
BLAKE2b-256 f63b404bf8124ffc12c6d81751c89df6f458111cd3fc47082bcb2d1d3e8bf5cc

See more details on using hashes here.

File details

Details for the file pattern_lens-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: pattern_lens-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 49.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for pattern_lens-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6166646617008f3b9420b16c76e6ebf2e8155cad626e8a96d27c324f77c5e486
MD5 828e566abda347b7162d3972ec35acb4
BLAKE2b-256 04a5aa4ff0ad51ad36ed0dea7e0dbc1cd177c05c1fcdbdad79d13141c11d0164

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