Text Generation
PyTorch
Safetensors
English
recurrent
cnn
vla
no-attention
rliston commited on
Commit
44cfb54
·
0 Parent(s):

v485 step 10180000 (history squashed: earlier models removed)

Browse files
Files changed (4) hide show
  1. .gitattributes +35 -0
  2. README.md +104 -0
  3. model.safetensors +3 -0
  4. vla_args.json +167 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - en
5
+ library_name: pytorch
6
+ pipeline_tag: text-generation
7
+ tags:
8
+ - recurrent
9
+ - cnn
10
+ - vla
11
+ - no-attention
12
+ datasets:
13
+ - HuggingFaceFW/fineweb
14
+ - HuggingFaceTB/smollm-corpus
15
+ - HuggingFaceFV/finevideo
16
+ ---
17
+
18
+ # VLA (recurrent CNN), v485
19
+
20
+ A language model with no attention and no positional encoding. Its memory is five 2-D registers of
21
+ 512 × 7 × 7. Every tick, one convolutional network reads the current token together with the registers and
22
+ writes the registers back. It is the text-trained core of a vision-language-action design aimed at a single chip
23
+ running at 100 Hz or more with no external components: no off-chip memory, every weight stored on the chip. A CNN
24
+ makes that possible because it is parameter-efficient: the same small kernels run at every grid position and
25
+ every tick.
26
+
27
+ Code, functional spec and figures: [github.com/siliconperception/vla](https://github.com/siliconperception/vla)
28
+
29
+ ![One clock tick](https://raw.githubusercontent.com/siliconperception/vla/main/docs/figures/vla_v485.svg)
30
+
31
+ ## Use
32
+
33
+ ```bash
34
+ git clone https://github.com/siliconperception/vla && cd vla && pip install -r requirements.txt
35
+ for p in "The colors of the rainbow are" \
36
+ "The best way to learn a new language is" \
37
+ "My grandmother's recipe for apple pie starts with" \
38
+ "When you plant a vegetable garden, the first thing to do is" \
39
+ "The history of the bicycle began in"; do
40
+ python vla.py --pretrained --generate --n 120 --prompt "$p" --device cuda
41
+ done
42
+
43
+ # prompt tuning: fit the starting registers (weights frozen) until the model predicts the prompt,
44
+ # then continue from them; prints the cold and the tuned continuation
45
+ python vla.py --pretrained --generate --prompt_tune 200 --n 120 --prompt "The colors of the rainbow are" --device cuda
46
+ ```
47
+
48
+ `--pretrained` downloads `model.safetensors` and `vla_args.json` (the settings the weights were trained with)
49
+ and restores both. The weights are not a `transformers` model; load them through `vla.py`.
50
+
51
+ ## Model
52
+
53
+ | | |
54
+ |---|---|
55
+ | Parameters | 70.9 M: 21.6 M trained, 49.3 M frozen (token embedding and output layer from pythia-31m, a ResNet-50) |
56
+ | State | 5 registers × 512 × 7 × 7 = 125,440 values |
57
+ | 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) |
58
+ | State update | 1×1 mix (5,632 → 384), 8 × (3×3 conv, BatchNorm, ReLU) at 384, 3×3 project (384 → 512), cascade write |
59
+ | Readout | 3 decoders (text, voice, image), each a tree of three 3×3 convs and the frozen pythia-31m output layer |
60
+ | Tokenizer | pythia-31m BPE (50,304) plus a `<NUL>` token ("say nothing this tick") |
61
+
62
+ ## Training
63
+
64
+ - 10.18 M steps × 250 rows, one token per row per step, plain SGD.
65
+ - Up to step 9.73 M (run v472): learning rate cycling 1e-4 → 1e-2, the gradient stopped at the registers.
66
+ - Since then: learning rate 0.04, truncated backpropagation through time over 16 steps, the register projection
67
+ widened to 3×3 (from its 1×1 weights, the same function at the switch), and learned register windows (from
68
+ 512 / 64 / 16 / 4). The windows are trained by Adam from a forward-mode sensitivity of the registers to their
69
+ rates, so their gradient sees every past step, not only the last 16.
70
+ - Data across its lineage: FineWeb-Edu (SmolLM corpus), FineWeb sample-10BT, and FineVideo and VALOR (speech,
71
+ captions and frames); text-only FineWeb in its latest phase.
72
+
73
+ ## Evaluation (at the published step, 10,180,000)
74
+
75
+ | | Score |
76
+ |---|---|
77
+ | FineWeb held-out (100 documents, nats/token) | 4.527 |
78
+ | BabyLM 2026 dev (100 pieces, nats/token) | 4.518 |
79
+ | BLiMP (1,005 pairs from all 67 paradigms) | 70.1 % |
80
+ | ComVE (999 pairs, common-sense) | 66.3 % |
81
+
82
+ The BLiMP and ComVE pairs are scored the same way as for these reference models (each sentence read without
83
+ context; the lower total loss wins):
84
+
85
+ | Model | Size | BLiMP | ComVE |
86
+ |---|---|---|---|
87
+ | pythia-14m | 14 M | 69.7 | 64.7 |
88
+ | pythia-31m | 31 M | 71.1 | 66.9 |
89
+ | babyllama-10m-2024 | trained on 10 M words | 70.0 | 63.7 |
90
+ | SmolLM2-135M | 135 M | 80.9 | 79.3 |
91
+ | **this model** | 21.6 M trained | 70.1 | 66.3 |
92
+
93
+ ## Limits
94
+
95
+ A small model: it writes fluent text that is often not factual or consistent. Not instruction-tuned, not safety
96
+ filtered beyond its training corpora. The voice and image decoders are present but this checkpoint was last
97
+ trained on text. Training is continuing; this card describes the step above.
98
+
99
+ ## License
100
+
101
+ MIT, Copyright (c) 2024-2026 Silicon Perception Inc. The license covers the software and these weights and grants
102
+ no patent rights; see [PATENTS](https://github.com/siliconperception/vla/blob/main/PATENTS). Frozen third-party
103
+ weights inside: EleutherAI [pythia-31m](https://huggingface.co/EleutherAI/pythia-31m) embedding and output
104
+ layer (Apache-2.0), [timm/resnet50.a1_in1k](https://huggingface.co/timm/resnet50.a1_in1k) (Apache-2.0).
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:41c390304a470328e064c9bf3005ed2a2f6926c338b7a88760029b0e4917df1e
3
+ size 386889272
vla_args.json ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "saved_args": {
3
+ "context": 7,
4
+ "n_hidden": 512,
5
+ "c_context": 384,
6
+ "depth": 8,
7
+ "kernel": 3,
8
+ "learn_win": true,
9
+ "win_lr": 0.0003,
10
+ "linout_kernel": 3,
11
+ "tokenizer": "pythia31m",
12
+ "ctx_ema": "512,64,16,4,1",
13
+ "ctx_read_norm": 1.0,
14
+ "dec_tree_kernels": "3,3,3",
15
+ "dec_width": 256,
16
+ "bn_frozen": false,
17
+ "bn_momentum": 0.1,
18
+ "init": "zero",
19
+ "reset_scale": 0.0,
20
+ "continuous": "",
21
+ "image_encoder": "resnet50",
22
+ "audio_encoder": "logmel",
23
+ "fifo3": true,
24
+ "streams": 3,
25
+ "dataset": "smolfwedu",
26
+ "mix": "fineweb:1",
27
+ "full_crops": 0.5,
28
+ "imagine": null,
29
+ "imagine_window": 32,
30
+ "imagine_min": 10,
31
+ "imagine_size": 256,
32
+ "imagine_batch": 16,
33
+ "image": null,
34
+ "shards": 14,
35
+ "shard_offset": 1,
36
+ "streaming": false,
37
+ "shuffle": true,
38
+ "workers": 12,
39
+ "batch": 250,
40
+ "lr_max": 0.04,
41
+ "lr_min": 0.0004,
42
+ "lr_period": 20000,
43
+ "schedule": "coswarm",
44
+ "lr_final": 0.001,
45
+ "decay_steps": 200000,
46
+ "decay_start": null,
47
+ "eval_at_start": true,
48
+ "profile": 0,
49
+ "bptt": 16,
50
+ "lr_restart": false,
51
+ "momentum": 0.0,
52
+ "weight_decay": 0.0,
53
+ "run_steps": 3840000,
54
+ "seed": 2958979956,
55
+ "device": "cuda",
56
+ "load": "checkpoint/v485_v484_learnwin512_fw_bptt16.pt",
57
+ "save": "checkpoint/v485_v484_learnwin512_fw_bptt16.pt",
58
+ "checkpoint": 20000,
59
+ "log": "log/exp.v485_v484_learnwin512_fw_bptt16",
60
+ "monitor": 100,
61
+ "gen_interval": 2000,
62
+ "gen_score": "EleutherAI/pythia-70m",
63
+ "prompt": "",
64
+ "temperature": 1.0,
65
+ "gen_images": 8,
66
+ "gen_vis": false,
67
+ "sample_vis": false,
68
+ "eval_interval": 20000,
69
+ "eval_corpora": "fineweb,qaipt",
70
+ "eval_docs": 100,
71
+ "eval_bands": "1024,8192",
72
+ "eval_info": 100,
73
+ "eval_gen": 50,
74
+ "eval_gen_judge": "Qwen/Qwen2.5-1.5B",
75
+ "eval_gen_prompt": 128,
76
+ "eval_gen_len": 128,
77
+ "eval_cloze": 400,
78
+ "eval_pairs": 1000,
79
+ "eval_hold": 100,
80
+ "doc_log": 100,
81
+ "doc_log_len": 384,
82
+ "doc_keep": 10,
83
+ "doc_log_file": null,
84
+ "eval_recent": 20,
85
+ "weight_ema": "",
86
+ "use_ema": 0,
87
+ "doc_score": null,
88
+ "state_pca": 0,
89
+ "state_pca_stride": 16,
90
+ "doc_ablate": "",
91
+ "step_tokens": 0,
92
+ "doc_tokens": false,
93
+ "eval_wp": 0,
94
+ "eval_wp_len": 256,
95
+ "eval_qa": 100,
96
+ "eval_rare": 10,
97
+ "eval_reach": 100,
98
+ "eval_reach_period": 256,
99
+ "generate": false,
100
+ "n": 200,
101
+ "free_run": 0,
102
+ "eval_free": 10000,
103
+ "free_rows": 8,
104
+ "free_window": 2000,
105
+ "free_chunk": 128,
106
+ "free_save": null,
107
+ "prompt_tune": 0,
108
+ "prompt_tune_lr": 0.01,
109
+ "prompt_tune_cap": "1",
110
+ "prompt_tune_batch": 10,
111
+ "prompt_warm": 256,
112
+ "prompt_tune_save": null,
113
+ "clock_hz": 25.0,
114
+ "ctx_tau": "20.48,2.56,0.64,0.16",
115
+ "vision_hz": 2.0,
116
+ "max_lag": 2.0,
117
+ "nul_weight": 1.0,
118
+ "clip": 0.0,
119
+ "loss_norm": "words",
120
+ "inner_voice": false,
121
+ "min_p": 0.009220976663785505,
122
+ "caption_feed": 0.0,
123
+ "text_feed": 0.0,
124
+ "top_k": 0,
125
+ "audio_hz": 25.0,
126
+ "speech_delay": 0.12,
127
+ "speech_align": true,
128
+ "align_min": 0.5,
129
+ "write_surprise": null,
130
+ "voice_drop": 0.0,
131
+ "fluency_target": 100.0,
132
+ "fluency_gain": 0.5,
133
+ "video": null,
134
+ "video_rate": 4.0,
135
+ "video_sound": "mimi",
136
+ "video_seconds": 0.0,
137
+ "video_save": null,
138
+ "teach": 0,
139
+ "teach_ask": "data",
140
+ "teach_teacher": "Qwen/Qwen2.5-1.5B-Instruct",
141
+ "teach_lr": 0.001,
142
+ "teach_steps": 1,
143
+ "teach_control": 100,
144
+ "teach_skip": 1000,
145
+ "teach_para": true,
146
+ "teach_json": null,
147
+ "eval": false,
148
+ "eval_json": null,
149
+ "vis": false,
150
+ "delay": 0.1,
151
+ "cmap": "viridis",
152
+ "push": false,
153
+ "hub_repo": "siliconperception/vla",
154
+ "private": false,
155
+ "push_dir": null,
156
+ "card": null,
157
+ "hub_tag": null,
158
+ "pretrained": null,
159
+ "revision": null,
160
+ "verbose": false
161
+ },
162
+ "step": 10180000,
163
+ "examples": 2441355,
164
+ "examples_by": {
165
+ "fineweb": 2298981
166
+ }
167
+ }