Skip to main content

ArchIt: A framework for base-and-head language models, and toolkit for converting in-place modifications of PyTorch objects into class code.

Project description

ArchIt: Automatic PyTorch architectures

ArchIt helps you rewrite PyTorch code for base models augmented at runtime, and lets you put heads on top of models without having to write dedicated task classes again and again.

archit.declaration: Convert a PyTorch instance into PyTorch architecture classes.

Recursively rewrite a class hierarchy (i.e. generate Python code of PyTorch architectures) so that in-place modifications are now defined explicitly.

As an example of this: I'm involved in two projects where I replace the embedding matrix of a RobertaForMaskedLM by a new class. If I want to load a checkpoint of that model, I need to write a new class definition for the RobertaEmbeddings that uses my replacement of the Embedding, a new RobertaModel using the new embeddings, and a new RobertaForMaskedLM using that new model. ArchIt writes that code for you.

archit.instantiation: Add heads to a base model, without needing to write YourModelForThatTask classes

Why in the heavens do we need separate classes for RobertaForTokenClassification and DebertaForTokenclassification? The base model encodes tokens into embeddings, and the head, which only cares about the resulting embeddings, converts them to logits. Separation of concerns. There is no need to rewrite "model-with-head" classes over and over again for each model augmentation.

Installation

pip install "archit @ git+https://github.com/bauwenst/ArchIt"

Usage

Minimal working example to show what ArchIt does:

from transformers import RobertaForMaskedLM
import torch

class CoolNewEmbeddingMatrix(torch.nn.Module):
    def forward(self, input_ids):
        pass

model_with_head = RobertaForMaskedLM.from_pretrained("roberta-base")
model_with_head.roberta.embeddings.word_embeddings = CoolNewEmbeddingMatrix()
# ^--- This works, but there is no class definition declaring word_embeddings as a CoolNewEmbeddingMatrix.


from archit import printDifference
printDifference(model_with_head, RobertaForMaskedLM)  # Outputs Python code for 3 new classes.

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

archit-2026.1.1.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

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

archit-2026.1.1-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file archit-2026.1.1.tar.gz.

File metadata

  • Download URL: archit-2026.1.1.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1

File hashes

Hashes for archit-2026.1.1.tar.gz
Algorithm Hash digest
SHA256 7fb5e239836b0c9e3a7fa67c554971812ddb88505227fc832353c239d22fd5b4
MD5 68d2093816c6a05d9227ece0de961988
BLAKE2b-256 beb3bcfa5700af7d164360aa2c34e47fc263bb68be356540dbe7e27738f007c1

See more details on using hashes here.

File details

Details for the file archit-2026.1.1-py3-none-any.whl.

File metadata

  • Download URL: archit-2026.1.1-py3-none-any.whl
  • Upload date:
  • Size: 40.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.16.5 cpython/3.13.12 HTTPX/0.28.1

File hashes

Hashes for archit-2026.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f7a9153d5a82f3d0d32f159a588fbbc6cd871d367a054a5d844336948762782b
MD5 97d8e27e47c8740d3b97e67e728a8b26
BLAKE2b-256 60d0d3e3b0736e58b84f58abf582859d056d6983136c59dab382a3b32e77b9d1

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