Downloads · 30 days
47
16% of all-time downloads
Elana/InterPLM-esm2-650m
InterPLM-esm2-650m is a machine learning model from Elana. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Interpret protein language model representations using sparse autoencoders trained on ESM-2-650m layers. These models decompose complex neural representations into interpretable features, enabling deeper understanding…
Downloads · 30 days
47
16% of all-time downloads
All-time downloads
297
Public
Repo size
1.3 GB
Likes
1
Public
Click a slice to open those files.
.pt1.3 GB · 100%
From the Hugging Face model README
Interpret protein language model representations using sparse autoencoders trained on ESM-2-650m layers. These models decompose complex neural representations into interpretable features, enabling deeper understanding of how protein language models process sequence information.
We provide SAE models trained on different layers of ESM-2-650M:
| Model name | ESM2 model | ESM2 layer |
|---|---|---|
| InterPLM-esm2-650m-l1 | esm2_t33_650m_UR50D | 1 |
| InterPLM-esm2-650m-l9 | esm2_t33_650m_UR50D | 9 |
| InterPLM-esm2-650m-l18 | esm2_t33_650m_UR50D | 18 |
| InterPLM-esm2-650m-l24 | esm2_t33_650m_UR50D | 24 |
| InterPLM-esm2-650m-l30 | esm2_t33_650m_UR50D | 30 |
| InterPLM-esm2-650m-l33 | esm2_t33_650m_UR50D | 33 |
All models share the same architecture and dictionary size (10,240). You can find SAEs trained on ESM-2 8M here. The 650M SAEs capture more known biological concepts than the 8M but require additional compute for both ESM embedding and SAE feature extraction.
from interplm.sae.inference import load_sae_from_hf
from interplm.esm.embed import embed_single_sequence
# Get ESM embeddings for protein sequence
embeddings = embed_single_sequence(
sequence="MRWQEMGYIFYPRKLR",
model_name="esm2_t33_650M_UR50D",
layer=18 # Choose ESM layer (1,9,18,24,30,33)
)
# Load SAE model and extract features
sae = load_sae_from_hf(plm_model="esm2-650m", plm_layer=18)
features = sae.encode(embeddings)
For details on training and analyzing SAEs on PLMs, see the GitHub README.
The SAEs we've trained have arbitrary scales between features since encoder/decoder weights could be linearly scaled without changing reconstructions. To make features comparable, we normalize them to activate between 0-1 based on max activation values from Swiss-Prot (since this is our primary analysis dataset). By default, use our pre-normalized SAEs (ae_normalized.pt). As this might not perfectly scale features not present in Swiss-Prot proteins, for custom normalization use ae_unnormalized.pt with this code.