Skip to main content

Package to visualize LLM's Neural Networks activation regions

Project description

LLM-MRI: a brain scanner for LLMs

As the everyday use of large language models (LLMs) expands, so does the necessity of understanding how these models achieve their designated outputs. While many approaches focus on the interpretability of LLMs through visualizing different attention mechanisms and methods that explain the model's architecture, LLM-MRI focuses on the activations of the feed-forward layers in a transformer-based LLM.

By adopting this approach, the library examines the neuron activations produced by the model for each distinct label. Through a series of steps, such as dimensionality reduction and representing each layer as a grid, the tool provides various visualization methods for the activation patterns in the feed-forward layers. Accordingly, the objective of this library is to contribute to LLM interpretability research, enabling users to explore visualization methods, such as heatmaps and graph representations of the hidden layers' activations in transformer-based LLMs.

This model allows users to explore questions such as:

  • How do different categories of text in the corpus activate different neural regions?
  • What are the differences between the properties of graphs formed by activations from two distinct categories?
  • Are there regions of activation in the model more related to specific aspects of a category?

We encourage you to not only use this toolkit but also to extend it as you see fit.

Index

Online Example

The link below runs an online example of our library, in the Jupyter platform running over the Binder server:

Binder

Instalation

To see LLM-MRI in action on your own data:

Clone this repository on your machine

git clone https://github.com/luizcelsojr/LLM-MRI

cd LLM-MRI

Install Poetry

pip install poetry

Install Graphviz

sudo apt install graphviz

sudo apt install libgraphviz-dev

Install other dependencies

poetry install --no-root

Execution

Enable poetry's shell:

poetry shell

To run your python file:

python3 file.py

To run your jupyter notebook:

poetry run jupyter notebook

Usage

Firstly, the user needs to import the LLM-MRI and matplotlib,pyplot packages:

import LLM_MRI
import matplotlib.pyplot as plt

The user also needs to specify the Hugging Face Dataset that will be used to process the model's activations. There are two ways to do this:

  • Load the Dataset from Hugging Face Hub:
    dataset_url = "https://huggingface.co/datasets/dataset_link"
    dataset = load_dataset("csv", data_files=dataset_url)
    
  • If you already has the dataset loaded on your machine, you can use the load_from_disk function:
    dataset = load_from_disk(dataset_path) # Specify the Dataset's path
    

Next, the user selects the model to be used as a string:

model_ckpt = "distilbert/distilbert-base-multilingual-cased"

Then, the user instantiates LLM-MRI, to apply the methods defined on Functions:

llm_mri = LLM_MRI(model=model_ckpt, device="cpu", dataset=dataset)

Functions

The library's functionality is divided into the following sections:

Activation Extraction:

As the user inputs the model and corpus to be analyzed, the dimensionality of the model's hidden layers is reduced, enabling visualization as an NxN grid.

llm_mri.process_activation_areas(map_dimension)

Heatmap representation of activations:

This includes the get_layer_image function, which transforms the NxN grid for a selected layer into a heatmap. In this heatmap, each cell represents the number of activations that different regions received for the provided corpus. Additionally, users can visualize activations for a specific label.

fig = llm_mri.get_layer_image(layer, category)

hidden_state_1_true

Graph Representation of Activations:

Using the get_graph function, the module connects regions from neighboring layers based on co-activations to form a graph representing the entire network. The graph's edges can also be colored according to different labels, allowing the user to identify the specific category that activated each neighboring node.

graph = llm_mri.get_graph(category)
graph_image = llm_mri.get_graph_image(graph)

Captura de tela de 2024-07-15 13-24-28

The user is also able to obtain a composed visualization of two different categories using the get_composed_graph function. By setting a category, each edge is colored based on the designated label, so the user is able to see which document label activated each region.

g_composed = llm_mri.get_composed_graph("true", "fake")
g_composed_img = llm_mri.get_graph_image(g_composed)

new_colored_graph(2)

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

llm_mri-0.1.2.tar.gz (9.6 kB view details)

Uploaded Source

Built Distribution

llm_mri-0.1.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: llm_mri-0.1.2.tar.gz
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Linux/6.5.0-41-generic

File hashes

Hashes for llm_mri-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a8db3b9b7fd484c4624ad6c4b03e3785e3736f0ced85142cb803b713bf67d8db
MD5 10d723f4f6e5cbb0be0d7b32b11c9dee
BLAKE2b-256 01ef08cb1d68b29502d04444cfe717a5e3c06522597604347fa06b980f6b095f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: llm_mri-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 10.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.13 Linux/6.5.0-41-generic

File hashes

Hashes for llm_mri-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ad81df85b3a2ee53f26780a86e3c19fe6113e0b3e31939ac272f88aea5fc76b2
MD5 0085db6011abbe780acc22c38194ce18
BLAKE2b-256 bb4aafd664b60405a232b2b011f2cfd6a11b0b0c67279858aca00647cb3698ae

See more details on using hashes here.

Supported by

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