The 8 GB Lab Book · Chapter 27

The Nano-legal VLA menu

Board
Jetson Orin Nano Super
Mode
15W
Summary
Two tests, a named board and a GB that fits, left two names on the menu, NanoVLA and a planner. SmolVLA stays on it because I ran it, not because anyone named this board: 1,602 to 1,744 MiB as a process and 1,265 ms per 50-action chunk at 15W, 7.6x the SwiftVLA authors' Orin time. Beside the full brain it did not fit: the stacked run stopped at 326 MiB available, and two reruns on 2026-10-04 stopped at 422 and 363. SmolVLA plus the house SLM is the pair that fits, 6,853 of 7,620.

What I expected

My prior for the menu was that it would be long, because each paper says 'edge' somewhere. I expected to use the day to select from five or six runnable models. I expected to select by Hz.

For SmolVLA I had one number, 450 M x 2 bytes = 0.9 GB of weights. I had no number for time here. The SwiftVLA authors measured 0.166 s per chunk on a Jetson Orin. I assumed that this time would increase by a factor of two or three on a smaller GPU at 15W.

The theory

Fit is an inequality, and a chunk is not a decode

The fit rule (arithmetic)

alone with the floor: 7,620 - 1,498 = 6,122
beside the Day 25 pile: 7,620 - 5,178 = 2,442
SmolVLA on paper: 2,442 - 1,124 = 1,318 MiB left
SmolVLA as a process: 1,602 to 1,744 MiB; brain first, the load stopped at 326 available; 422 and 363 in the two reruns of 2026-10-04
GR00T 6,000 + a runtime > 6,122: out alone
= OpenVLA 7B x 2 bytes = 14 GB (arith.), pi0 16.2 GB: out twice over

Smolvla here (measured + arithmetic)

prior: 450 M x 2 bytes = 0.9 GB
1,124 MiB read after the libraries loaded; 1,602 and 1,744 from before the process existed
1,265 ms per chunk of 50 alone, 1,264 beside the SLM: 25 ms of compute per action (not latency)
SwiftVLA authors' Orin, same model: 166 ms per chunk, 7.6x faster
= 0.8 Hz per chunk at 15W

The floor for one forward over 0.9 GB of weights is 0.9 / 68 = 13 ms. It is 32 ms at the 28 GB/s that a really uses (Chapter 2). 1,265 ms is 40x that floor, so this chunk is not a bandwidth-bound decode. My guess is several passes of the action head for each chunk, with a Python runtime and no below it.

The two tests, applied (arithmetic on paper numbers, one measured)

named this board by its authors or NVIDIA
2 of 7
measured here
1 of 7
fits beside the full brain
0 of 1 tried
NanoVLA names Orin Nano and NVIDIA names Qwen2.5-VL-3B for it. SwiftVLA's Orin is unnamed, so by my rule it fails, and SmolVLA's paper says 'consumer-grade hardware': its row comes from my run, not from its authors. On paper SmolVLA fit beside 5,178 with 1,318 MiB to spare. As a process it took the board to 326 MiB available and the guard stopped the run.

The setup

Run the one you picked (board, ~15 min first time: lerobot install + weights)
python3 ~/day27_smolvla.py
cat ~/day27/results.json
The rule, as a grep
# a row needs: the paper or NVIDIA naming 'Orin Nano' or 'Jetson Orin' + a stated GB or a measured GB on that device
# no device name -> no row. No exceptions for famous models.
From results.json, the file the run wrote
"model": "lerobot/smolvla_base"
"params_claimed": "~450M (SmolVLA paper)"
"steps": [ ... ]
"load_s": 54.689
"ram_delta_mb": 1124
"torch_alloc_mb": 926.234
"chunk_infer_ms_median": 1265.32
"chunk_infer_ms_p99": 1287.661
"hz_per_chunk": 0.79
"n_action_steps": 50

The measurement

WhatExpectedMeasuredNote
SmolVLA (HF, 450M)0.9 GB fp16 weights1,602 / 1,744 MiB as a process (1,124 read after libraries), 1,265 ms per chunk (0.8 Hz), chunk 50'consumer-grade hardware' (SmolVLA paper); the Orin chunk time is from the SwiftVLA authors
VLM-as-planner: Qwen2.5-VL-3B (NVIDIA blog)weights about 1.5 GB (estimate)board peak 5,255 MiB alone (Day 19)NVIDIA names it for Orin Nano 8GB; not a VLA; a planner for the intent layer; not fit-tested beside the pile
Measured on the board unless the row says estimate or predicted. RAM is tegrastats, MiB.
Predicted or measured GB on the board per candidate, against the 7.62 GB usable line
Fig 27.1Predicted or measured GB on the board per candidate, against the 7.62 GB usable line.

The menu in GB, one dashed line at 7,620

pi0 3.3B
16.2 GB
OpenVLA-7B
14 GB (7B x 2 bytes, arith.)
GR00T N1.5
6 GB
SwiftVLA
1.4 GB (paper, on 'Orin')
SmolVLA
1,602 to 1,744 MiB (measured here, as a process)

Line at usable 7,620

pi0 is 16.2 GB as run by the SwiftVLA authors; OpenVLA is 7B parameters x 2 bytes = 14 GB of fp16, by arithmetic. Two bars cross the line and are out. GR00T stops under it and is still out: 6 GB plus a runtime against 6,122 MiB with the floor alone, and its own vendor names Thor. The two short bars are the whole Nano-legal space on paper, and only the shortest has a number from this GPU: 1.9 to 2.0x its model-card arithmetic of 858 MiB.
candidateGBtime per chunksource
SmolVLA 450M1,602 to 1,744 MiB1,265 ms, chunk 50, 0.8 Hzthis GPU, 15W
SmolVLA + house SLM, stacked6,853 MiB, 767 leftchunk 1,264 ms; SLM tool call 1,285 ms beside the waiting VLAstacked run 2026-09-27, pair log
brain first, then SmolVLA, rerun 2026-10-04, n=2pile 5,174 / 5,017 MiB before the VLAguard fired at 422 / 363 MiB availabledid not fit either time
SwiftVLA ~450M1.4 GB0.167 s on an unnamed Orinpaper; the Orin variant is unnamed, so it fails the naming test
NanoVLAnot statednot stated, '52x faster'abstract
pi0 3.3B16.2 GB as run2.966 s on OrinSwiftVLA paper
OpenVLA-7B14 GB fp16 (7B x 2 B, arith.)about 2 Hz on AGX Orinreports; GB is arithmetic
GR00T N1.5 ~3B6 GB + runtime-NVIDIA: Thor
Qwen2.5-VL-3Bpeak 5,255 MiB alone; weights ~1.5 GB (est.)planner, not a VLADay 19 / 26
Measured: one row is mine, and the source column labels the rest. 0.166 s is the SwiftVLA authors' measurement of SmolVLA on their Orin; 0.167 s is their own model. SwiftVLA and NanoVLA go on this board next, with the same harness: tegrastats delta and ms per chunk.

Where it broke

The menu became empty when I wrote the rule as two tests. Did the authors or NVIDIA write the name of this class of board? Does the GB fit beside what is already resident? 'edge' failed the first test. 14 and 16 GB failed the second test without one run.

The fit rule failed on the board. 2,442 - 1,124 = 1,318 left was arithmetic on a number read after the Python and CUDA libraries were already in. Counted from before the process exists, SmolVLA is 1,602 and 1,744 MiB in two runs. With the brain resident first, 5,191 MiB, the load took MemAvailable to 326 MiB and my guard killed every resident. VLA first, the brain's STT took it to 393. The pair SmolVLA + house fits: 6,853 of 7,620 MiB, 767 left, chunk 1,264 ms beside the SLM and 1,265 alone. Two reruns on 2026-10-04 did the same: the brain at 5,174 and 5,017 MiB, then the VLA load took MemAvailable to 422 and 363 and the guard fired.

The time increase was 7.6x, not two or three. It is hardware and runtime together. The SwiftVLA Orin is unnamed. If it is an AGX, it has more SMs and a higher clock than a Nano capped at 612 MHz in its 15W mode (Chapter 4). The rest is runtime, and I have not split the two. The guess and the measurement sit on this page under different labels for that reason.

For most of an afternoon, I read 'edge' as 'Nano'. The rule that corrected this is two lines long. The correct time to write it was before I opened the first paper.

Summary

  • "Runs on Jetson" without the model name of the Jetson fails the first test. AGX Orin has 64 GB. This board has 7.6 GB.
  • The 450M class is the full Nano-legal VLA space that I found. The SwiftVLA authors report both entries at approximately 6 Hz per chunk on an Orin. SmolVLA ran here at 0.8 Hz per chunk, at 15W.
  • SmolVLA fits beside the house SLM alone, 6,853 of 7,620 MiB, and not beside the full brain: the stacked run stopped at 326 and 393 MiB available in the two load orders. Two reruns on 2026-10-04 stopped at 422 and 363 MiB with the brain first.

Sources

These sources are not mine. Measured numbers came off my own board; specs, estimates and paper figures are labeled as such.

  • NanoVLA paper (Orin Nano 8GB + LeRobot)
  • SmolVLA paper
  • NVIDIA Gemma 4 VLA demo on Nano Super
  • Jetson AI Lab VLA page (Thor targets)
  • LiteVLA-Edge / related Orin writeups
  • day27/rerun-2026-10-04/summary.json: day27_stacked.sh residents_first twice on 2026-10-04 (pile txt, ram csv, tegrastats)