Commit ·
44cfb54
0
Parent(s):
v485 step 10180000 (history squashed: earlier models removed)
Browse files- .gitattributes +35 -0
- README.md +104 -0
- model.safetensors +3 -0
- 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 |
+

|
| 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 |
+
}
|