Getting started
Walk through composing your first transformer architecture in Otter — from canvas to exported PyTorch code.
Open the canvas
Navigate to the Canvas. You'll see a component library on the left and an empty canvas in the center.
→ First-time visitors see a short onboarding tour covering the canvas and validation.
Add components
Drag components from the library onto the canvas. The essential blocks are:
- ›Embedding — Converts token IDs to dense vectors.
- ›RMSNorm — Normalizes activations (Llama-style).
- ›GroupedQueryAttention — Multi-head attention with KV sharing.
- ›SwiGLU FFN — Feed-forward network with gated activations.
- ›Output Head — Projects hidden states to vocabulary logits.
Connect components
Click on a component's output handle (bottom) and drag to another's input handle (top). Otter validates the connection as soon as it's drawn — amber means attention needed, paper means valid.
→ Dimensions propagate through the graph topologically. A mismatch at any edge lights up the offending path.
Configure parameters
Click any component to open its configuration panel. Adjust dimensions, head counts, intermediate sizes.
hidden_dim = 4096 num_heads = 32 intermediate_dim = 14336
Export the model
When the architecture validates (no error count in the canvas footer), click Export. You get a ZIP with:
- ›model.py — Complete PyTorch model definition.
- ›config.json — HuggingFace-compatible configuration.
- ›train.py — Example training script.
- ›requirements.txt — Python dependencies.
- ›README.md — Usage instructions.