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.4.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.4.0-py3-none-any.whl (51.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pattern_lens-0.4.0.tar.gz
Algorithm Hash digest
SHA256 86b912803781697df8e341e522395c156ea2acf4d585533b601421b5ab03285e
MD5 93484f611c06186539049db5edc93df9
BLAKE2b-256 dc7651d575bd0c9de866ebe0642b1c9ffc5870aec235a353d4dc9608f4fc00a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pattern_lens-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 51.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for pattern_lens-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ecd506b056d6c5e7582538a65019a750d28a582cf41229a0ca41473b9e70c850
MD5 8afa194435bf2becc4471c55ba848d85
BLAKE2b-256 2bd435179fea6fff2639ac30e8f1ee9886d1461e060b78af623dc656fcb5323c

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