- Trainer key
- groot1.5
- The value the training API expects
- Vendor
- NVIDIA
- Vision-Language-Action foundation model, predecessor of N1.7
- Parameters
- about 3 billion
- GPU tier
- A100 80 GB or H100 80 GB
- 80 GB class, cloud only
- Inference
- 165 ms per action step
- Measured in the training pool, not on your laptop
- Default schedule
- 2,000 steps
- Batch 1, gradient accumulation 16, learning rate 1e-5
- Minimum episodes
- 50 episodes
- Below this, results are usually not worth evaluating
- Dataset format
- LeRobot v2.1
- v3.0 datasets are rejected
GR00T N1.5 is the predecessor of GR00T N1.7, kept selectable so that runs started before N1.7 existed can be reproduced and extended. It takes the same LeRobot v2.1 datasets on the same A100 80 GB tier through the same workflow, but ships far more conservative defaults: batch size 1 with 16 accumulation steps, learning rate 1e-5 and 2000 steps. For anything new, choose N1.7.
Why this page is short
N1.5 and N1.7 are the same family. Same datasets, same form, same class of GPU, same deployment to the arm. Restating all of that would make this look like a decision you should be weighing, and it is not one. What a GR00T fine-tune is and does is explained at /policies/groot-n1-7. This page covers only what differs.
What changed in N1.7
From inside the training form, the differences are the recipe and the measured inference time. The recipe is not cosmetic: it reflects what each checkpoint tolerated when it was integrated into the backend.
| GR00T N1.5 | GR00T N1.7 | |
|---|---|---|
| Trainer key | groot1.5 | groot1.7 |
| Batch size | 1 | 32 |
| Gradient accumulation | 16 | 1 |
| Learning rate | 1e-5 | 1e-4 |
| Default steps | 2000 | 20 000 |
| Inference per action step | about 165 ms | about 152 ms |
| GPU tier | A100 80 GB | A100 80 GB |
| Dataset format | LeRobot v2.1 | LeRobot v2.1 |
| Extra knob in the form | saveSteps | saveSteps |
The first four rows belong together. N1.5 builds an effective batch of 16 by accumulating sixteen single samples, then stops after 2000 optimizer steps at a tenth of the newer learning rate. N1.7 pushes 32 samples through at once with no accumulation and runs ten times as many steps. Per rented hour, the newer recipe puts far more of your dataset through the model.
Why the N1.5 defaults are so conservative
Batch size 1 with 16 accumulation steps is what you configure when you cannot predict how much memory one forward pass needs and would rather be slow than crash twenty minutes into a paid run. It survives any dataset regardless of how many camera streams the episodes carry. The price is throughput, on a tier that bills by the hour either way.
2000 steps at an effective batch of 16 is also a short schedule for a 50 episode dataset, closer to a smoke test than to a finished fine-tune. That is why an old N1.5 result is not a fair ceiling on what GR00T can do with your data. If you ran N1.5 once, were unimpressed and blamed the dataset, the schedule is the first suspect to eliminate.
You can set a longer schedule in the form, and if the point of the run is reproducing an earlier result, you should not. Either way the difference between the two is the pretrained weights and not only the recipe, so no settings on N1.5 produce an N1.7 checkpoint.
The one case where N1.5 is the right choice
You already have a result from an N1.5 run and need a second one comparable to it. That covers more real work than it sounds like: an ablation table in a thesis chapter, a demo trained months ago whose checkpoint needs rebuilding, a regression check against a dataset you have since extended. In each case, swapping the model changes the thing you are measuring.
Everything else is N1.7, including the instinct that the old one worked so why risk it. The risk runs the other way: the same hourly rate buys the weaker checkpoint and a schedule that sees a fraction of your data.
Reproducing an older N1.5 run
- 1Read the original job, do not trust your memory
Open Training and find the finished run in the job list. Its page holds the dataset, the model, the step count and the hyperparameters actually used, usually the only reliable copy of that.
- 2Train on the same dataset, not a newer version of it
If you added episodes since, that is a different experiment with two variables moving. Use the dataset the original run used, or state plainly that both changed.
- 3Copy steps, learning rate and accumulation across
Type the numbers from the old job into the form instead of accepting the defaults, which describe a fresh run rather than the one you are matching.
- 4Match saveSteps as well
Checkpoint spacing decides which intermediate weights exist to compare. If the earlier result came from a mid-training checkpoint, you need one at the same step.
- 5Expect a close match, not an identical one
The GR00T fine-tune entry point takes no seed, on N1.5 exactly as on N1.7, so data order and head initialization differ between runs. Compare success rates from the same evaluation protocol, not weights.
curl -X POST https://www.ay-robots.com/api/mcp \
-H "Authorization: Bearer $AY_ROBOTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_training_job",
"arguments": { "job_id": "job_5c19be" }
}
}'
# The response carries modelType and configJson, which is where the step
# count, learning rate and accumulation of that run are recorded.Moving a project to N1.7
The dataset does not change, the arm does not change, the task string does not change. Picking GR00T N1.7 in the same form is the entire migration, and the recording side never learns anything happened: the client at /download writes LeRobot v2.1 for both, and /live is still a real SO-100 in the browser if you want the teleoperation loop without unpacking hardware. Budget more wall-clock time, because 20 000 steps at batch 32 is a much longer run than 2000 at batch 1.
Then re-measure instead of assuming. Same twenty attempts, same reset procedure, same object positions as the N1.5 evaluation. Skip that and you have a new policy plus no statement about what the switch bought, which was the point. The protocol is in /learn/run-your-first-policy and the general walkthrough at /learn/train-your-first-policy; the arm-specific newer run is at /train/groot-n1-7-on-so-100.
/train/groot-n1-5-on-so-100 has the full walkthrough on an SO-100 with the conservative defaults left in place, so a reproduction run matches the original as closely as a model without a seed allows.
Frequently asked questions
Should I use GR00T N1.5 for a new project?▾
No. N1.7 takes the same dataset through the same form on the same GPU tier with a far better recipe. The only reason to select N1.5 is comparability with a result you already have.
Does N1.5 accept LeRobot v3.0 datasets?▾
No, the rule is identical for both GR00T models: v2.1 only, and a v3.0 dataset is rejected after the GPU has already been rented. The client records v2.1 by default, so this usually only bites with a dataset from elsewhere.
Can I fine-tune N1.5 on a 24 GB card since the batch size is 1?▾
No. It requests the same A100 80 GB tier as N1.7 despite the tiny batch, so it carries the higher hourly cost without the better result. If you need a model that trains on 24 GB, that is SmolVLA or ACT.
Will an existing N1.5 checkpoint still run on my arm?▾
Yes, nothing was retired. Inference works the same way for both, at about 165 ms per action step against about 152 ms for N1.7, which is not a difference you will notice on a tabletop pick and place.
Undecided? The comparison table puts all five side by side.