ALTA: Compiler-Based Analysis of Transformers

Peter Shaw, James Cohan, Jacob Eisenstein, Kenton Lee, Jonathan Berant +1 more
10/23/2024
cs.LGcs.AIcs.CL

No official code found. Best implementation: google-deepmind/alta (32 stars, Apache-2.0, last commit 2025-09-22).

Abstract

We propose a new programming language called ALTA and a compiler that can map ALTA programs to Transformer weights. ALTA is inspired by RASP, a language proposed by Weiss et al. (2021), and Tracr (Lindner et al., 2023), a compiler from RASP programs to Transformer weights. ALTA complements and extends this prior work, offering the ability to express loops and to compile programs to Universal Transformers, among other advantages. ALTA allows us to constructively show how Transformers can represent length-invariant algorithms for computing parity and addition, as well as a solution to the SCAN benchmark of compositional generalization tasks, without requiring intermediate scratchpad decoding steps. We also propose tools to analyze cases where the expressibility of an algorithm is established, but end-to-end training on a given training set fails to induce behavior consistent with the desired algorithm. To this end, we explore training from ALTA execution traces as a more fine-grained supervision signal. This enables additional experiments and theoretical analyses relating the learnability of various algorithms to data availability and modeling decisions, such as positional encodings. We make the ALTA framework -- language specification, symbolic interpreter, and weight compiler -- available to the community to enable further applications and insights.

View on arXivView PDF

Code Implementations(1)

Apache-2.0
326PythonOct 10, 20241 years agoApache-2.0

Similar Papers

Cite this paper

@article{shaw2024alta,
  title  = {ALTA: Compiler-Based Analysis of Transformers},
  author = {Peter Shaw and James Cohan and Jacob Eisenstein and Kenton Lee and Jonathan Berant and Kristina Toutanova},
  year   = {2024},
  eprint = {2410.18077},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2410.18077v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2410.18077.svg)](https://codeofpaper.com/paper/2410.18077)

Discussion