Text Generation
PyTorch
Safetensors
English
recurrent
cnn
vla
no-attention

VLA (recurrent CNN), v485

A language model with no attention and no positional encoding. Its memory is five 2-D registers of 512 Γ— 7 Γ— 7. Every tick, one convolutional network reads the current token together with the registers and writes the registers back. It is the text-trained core of a vision-language-action design aimed at a single chip running at 100 Hz or more with no external components: no off-chip memory, every weight stored on the chip. A CNN makes that possible because it is parameter-efficient: the same small kernels run at every grid position and every tick.

Code, functional spec and figures: github.com/siliconperception/vla

One clock tick

Use

git clone https://github.com/siliconperception/vla && cd vla && pip install -r requirements.txt
for p in "The colors of the rainbow are" \
         "The best way to learn a new language is" \
         "My grandmother's recipe for apple pie starts with" \
         "When you plant a vegetable garden, the first thing to do is" \
         "The history of the bicycle began in"; do
  python vla.py --pretrained --generate --n 120 --prompt "$p" --device cuda
done

# prompt tuning: fit the starting registers (weights frozen) until the model predicts the prompt,
# then continue from them; prints the cold and the tuned continuation
python vla.py --pretrained --generate --prompt_tune 200 --n 120 --prompt "The colors of the rainbow are" --device cuda

--pretrained downloads model.safetensors and vla_args.json (the settings the weights were trained with) and restores both. The weights are not a transformers model; load them through vla.py.

Model

Parameters 70.9 M: 21.6 M trained, 49.3 M frozen (token embedding and output layer from pythia-31m, a ResNet-50)
State 5 registers Γ— 512 Γ— 7 Γ— 7 = 125,440 values
Register windows learned: 530 / 57 / 15 / 3.8 / 1 ticks (21 s, 2.3 s, 0.61 s, 0.15 s and one tick at 25 Hz)
State update 1Γ—1 mix (5,632 β†’ 384), 8 Γ— (3Γ—3 conv, BatchNorm, ReLU) at 384, 3Γ—3 project (384 β†’ 512), cascade write
Readout 3 decoders (text, voice, image), each a tree of three 3Γ—3 convs and the frozen pythia-31m output layer
Tokenizer pythia-31m BPE (50,304) plus a <NUL> token ("say nothing this tick")

Training

  • 10.18 M steps Γ— 250 rows, one token per row per step, plain SGD.
  • Up to step 9.73 M (run v472): learning rate cycling 1e-4 β†’ 1e-2, the gradient stopped at the registers.
  • Since then: learning rate 0.04, truncated backpropagation through time over 16 steps, the register projection widened to 3Γ—3 (from its 1Γ—1 weights, the same function at the switch), and learned register windows (from 512 / 64 / 16 / 4). The windows are trained by Adam from a forward-mode sensitivity of the registers to their rates, so their gradient sees every past step, not only the last 16.
  • Data across its lineage: FineWeb-Edu (SmolLM corpus), FineWeb sample-10BT, and FineVideo and VALOR (speech, captions and frames); text-only FineWeb in its latest phase.

Evaluation (at the published step, 10,180,000)

Score
FineWeb held-out (100 documents, nats/token) 4.527
BabyLM 2026 dev (100 pieces, nats/token) 4.518
BLiMP (1,005 pairs from all 67 paradigms) 70.1 %
ComVE (999 pairs, common-sense) 66.3 %

The BLiMP and ComVE pairs are scored the same way as for these reference models (each sentence read without context; the lower total loss wins):

Model Size BLiMP ComVE
pythia-14m 14 M 69.7 64.7
pythia-31m 31 M 71.1 66.9
babyllama-10m-2024 trained on 10 M words 70.0 63.7
SmolLM2-135M 135 M 80.9 79.3
this model 21.6 M trained 70.1 66.3

Limits

A small model: it writes fluent text that is often not factual or consistent. Not instruction-tuned, not safety filtered beyond its training corpora. The voice and image decoders are present but this checkpoint was last trained on text. Training is continuing; this card describes the step above.

License

MIT, Copyright (c) 2024-2026 Silicon Perception Inc. The license covers the software and these weights and grants no patent rights; see PATENTS. Frozen third-party weights inside: EleutherAI pythia-31m embedding and output layer (Apache-2.0), timm/resnet50.a1_in1k (Apache-2.0).

Downloads last month

-

Downloads are not tracked for this model. How to track
Safetensors
Model size
96.7M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Datasets used to train siliconperception/vla