v0.2.1: model.py finds instructions.json from the Hugging Face cache; link to the LeRobot version
Browse files- README.md +9 -3
- config.json +1 -1
- model.py +1 -1
- model.yaml +1 -1
README.md
CHANGED
|
@@ -93,7 +93,7 @@ so a clause or two may come out differently.
|
|
| 93 |
With the benchmark (`pip install "amp-toy-robotics[packages]"`):
|
| 94 |
|
| 95 |
```bash
|
| 96 |
-
hf download Adaptive-Machine-Patterns/amp-tadpole --revision v0.2.
|
| 97 |
amp-bench eval --policy amp-tadpole
|
| 98 |
```
|
| 99 |
|
|
@@ -112,6 +112,11 @@ model.eval()
|
|
| 112 |
chunk = tadpole.predict(model, images, state, "Pick up the lime star") # (8, 7)
|
| 113 |
```
|
| 114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
With ONNX Runtime (any language, or the browser): `amp-tadpole.onnx` takes
|
| 116 |
`images` uint8 (1, 3, 3, 512, 512), `tokens` int64 (1, 48), `token_mask`
|
| 117 |
bool (1, 48) and `state` float32 (1, 7), and returns `chunk` (1, 8, 7).
|
|
@@ -171,10 +176,11 @@ teacher whose action is a fixed function of the state.
|
|
| 171 |
|
| 172 |
| version | tag | what changed |
|
| 173 |
|---|---|---|
|
|
|
|
| 174 |
| 0.2.0 | `v0.2.0` | step 330,000, the end of the training run: 93.7% (from 88.2%), midpoint 75% (from 63%); checkpoint chosen on separate validation scenes |
|
| 175 |
| 0.1.0 | `v0.1.0` | first preview: step 250,000. Its card said the 300 scenes were not used to choose the checkpoint; the training run's own checks used 100 of them (see Results) |
|
| 176 |
|
| 177 |
-
Pin a version with `revision="v0.2.
|
| 178 |
|
| 179 |
## Licence
|
| 180 |
|
|
@@ -207,7 +213,7 @@ a wrong movement could cause harm or damage.
|
|
| 207 |
author = {Whyte, Andy and {Adaptive Machine Patterns Ltd}},
|
| 208 |
title = {{AMP Tadpole}: a small vision-language-action model},
|
| 209 |
year = {2026},
|
| 210 |
-
version = {0.2.
|
| 211 |
publisher = {Hugging Face},
|
| 212 |
url = {https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole}
|
| 213 |
}
|
|
|
|
| 93 |
With the benchmark (`pip install "amp-toy-robotics[packages]"`):
|
| 94 |
|
| 95 |
```bash
|
| 96 |
+
hf download Adaptive-Machine-Patterns/amp-tadpole --revision v0.2.1 --local-dir amp-tadpole
|
| 97 |
amp-bench eval --policy amp-tadpole
|
| 98 |
```
|
| 99 |
|
|
|
|
| 112 |
chunk = tadpole.predict(model, images, state, "Pick up the lime star") # (8, 7)
|
| 113 |
```
|
| 114 |
|
| 115 |
+
With [LeRobot](https://github.com/huggingface/lerobot): install
|
| 116 |
+
[lerobot-policy-tadpole](https://github.com/Adaptive-Machine-Patterns/lerobot-policy-tadpole)
|
| 117 |
+
and load [amp-tadpole-lerobot](https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole-lerobot),
|
| 118 |
+
the same weights in LeRobot's format (`--policy.path=Adaptive-Machine-Patterns/amp-tadpole-lerobot`).
|
| 119 |
+
|
| 120 |
With ONNX Runtime (any language, or the browser): `amp-tadpole.onnx` takes
|
| 121 |
`images` uint8 (1, 3, 3, 512, 512), `tokens` int64 (1, 48), `token_mask`
|
| 122 |
bool (1, 48) and `state` float32 (1, 7), and returns `chunk` (1, 8, 7).
|
|
|
|
| 176 |
|
| 177 |
| version | tag | what changed |
|
| 178 |
|---|---|---|
|
| 179 |
+
| 0.2.1 | `v0.2.1` | `model.py` now finds `instructions.json` when loaded from the Hugging Face cache; weights unchanged. AMP Tadpole for LeRobot: [amp-tadpole-lerobot](https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole-lerobot) |
|
| 180 |
| 0.2.0 | `v0.2.0` | step 330,000, the end of the training run: 93.7% (from 88.2%), midpoint 75% (from 63%); checkpoint chosen on separate validation scenes |
|
| 181 |
| 0.1.0 | `v0.1.0` | first preview: step 250,000. Its card said the 300 scenes were not used to choose the checkpoint; the training run's own checks used 100 of them (see Results) |
|
| 182 |
|
| 183 |
+
Pin a version with `revision="v0.2.1"` (or `--revision v0.2.1`).
|
| 184 |
|
| 185 |
## Licence
|
| 186 |
|
|
|
|
| 213 |
author = {Whyte, Andy and {Adaptive Machine Patterns Ltd}},
|
| 214 |
title = {{AMP Tadpole}: a small vision-language-action model},
|
| 215 |
year = {2026},
|
| 216 |
+
version = {0.2.1},
|
| 217 |
publisher = {Hugging Face},
|
| 218 |
url = {https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole}
|
| 219 |
}
|
config.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
{
|
| 2 |
"model": "amp-tadpole",
|
| 3 |
-
"version": "0.2.
|
| 4 |
"parameters": 6507335,
|
| 5 |
"inputs": {
|
| 6 |
"images": "uint8 (3, 3, 512, 512): top, side, iso",
|
|
|
|
| 1 |
{
|
| 2 |
"model": "amp-tadpole",
|
| 3 |
+
"version": "0.2.1",
|
| 4 |
"parameters": 6507335,
|
| 5 |
"inputs": {
|
| 6 |
"images": "uint8 (3, 3, 512, 512): top, side, iso",
|
model.py
CHANGED
|
@@ -28,7 +28,7 @@ import numpy as np
|
|
| 28 |
import torch
|
| 29 |
import torch.nn as nn
|
| 30 |
|
| 31 |
-
HERE = Path(__file__).
|
| 32 |
GRID = 16 # tokens per camera side
|
| 33 |
CHUNK = 8 # steps per answer
|
| 34 |
STATE_DIM = 7
|
|
|
|
| 28 |
import torch
|
| 29 |
import torch.nn as nn
|
| 30 |
|
| 31 |
+
HERE = Path(__file__).absolute().parent # not resolve(): in the Hugging Face cache the files are links to blobs
|
| 32 |
GRID = 16 # tokens per camera side
|
| 33 |
CHUNK = 8 # steps per answer
|
| 34 |
STATE_DIM = 7
|
model.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
# AMP Tadpole: a model package for the AMP Toy Robotics Benchmark
|
| 2 |
# (and the AMP Embodied AI Workbench). Format: the benchmark's README.
|
| 3 |
name: AMP Tadpole
|
| 4 |
-
version: 0.2.
|
| 5 |
author: Andy Whyte, Adaptive Machine Patterns Ltd
|
| 6 |
license: CC-BY-NC-4.0 (commercial licences from Adaptive Machine Patterns Ltd)
|
| 7 |
homepage: https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole
|
|
|
|
| 1 |
# AMP Tadpole: a model package for the AMP Toy Robotics Benchmark
|
| 2 |
# (and the AMP Embodied AI Workbench). Format: the benchmark's README.
|
| 3 |
name: AMP Tadpole
|
| 4 |
+
version: 0.2.1
|
| 5 |
author: Andy Whyte, Adaptive Machine Patterns Ltd
|
| 6 |
license: CC-BY-NC-4.0 (commercial licences from Adaptive Machine Patterns Ltd)
|
| 7 |
homepage: https://huggingface.co/Adaptive-Machine-Patterns/amp-tadpole
|