Policy training

AY-Robots trains manipulation policies on managed GPUs, so you can go from recorded episodes to a policy running on your arm without owning training hardware. This page covers the supported policy types, the training run page, checkpoints, and what results to realistically expect from your episode count.

Last updated 2026-08-09

Training without your own GPU

Training a manipulation policy is a GPU workload, and modern vision-language-action models need more VRAM than a typical workstation has. On AY-Robots the training runs on cloud GPUs managed by the platform: you pick a dataset and a policy type, start the run, and watch its progress from the browser. There is no CUDA setup, no driver matching, and no environment to maintain.

The input is always a cloud dataset from Dashboard > Datasets. Anything you recorded through teleoperation sessions or uploaded in the LeRobot format is eligible, including merged datasets. Curate before you train: episodes labeled Failure usually belong out of the training set, and ten minutes of review in the episode browser saves hours of GPU time spent learning from bad demonstrations.

Supported policies

Four policy families are supported. They differ in size, training cost, and how much they can absorb from your data, so the right choice depends on your task and dataset more than on any general ranking.

PolicyKindCharacteristics
ACTTransformer, action chunkingPredicts short chunks of future actions instead of single steps. Compact, trains comparatively quickly, and is a solid first choice for a single well-defined task.
Diffusion PolicyDiffusion over action sequencesModels the full distribution of demonstrated actions, which helps when your demonstrations solve the task in more than one valid way. Heavier to train and slower at inference than ACT.
SmolVLASmall vision-language-action modelLanguage-conditioned: the task string from your episodes becomes part of the input. A good middle ground when you want language conditioning without a large foundation model.
GR00T fine-tuneFoundation model fine-tuneFine-tunes a large pretrained robotics foundation model on your episodes. The highest ceiling of the four, at the highest training cost, and with a strict dataset format requirement.
GR00T requires LeRobot v2.1 datasets

GR00T fine-tuning only accepts datasets in LeRobot format version 2.1. A v3.0 dataset will fail during data loading, not at submission, so check the format version before you start the run. Datasets recorded on the platform can be used as they are; for external uploads, verify the version in meta/info.json first.

Starting a run

  1. 1
    Pick the dataset

    Open Dashboard > Training and select the dataset to train on. The episode count and robot type are shown so you can confirm you picked the right one.

  2. 2
    Choose the policy

    Select one of the supported policy types. If you are unsure, start with ACT: it is the cheapest way to find out whether your dataset is good enough to train anything at all.

  3. 3
    Launch

    Start the run. It gets a job id and its own run page, and you can close the browser: training continues server-side and the page shows the live state whenever you come back.

The training run page

Every run has a dedicated page that answers the two questions you actually have during training: is it learning, and is the machine healthy. Learning progress is shown as charts of the loss, the learning rate schedule, and the gradient norm. A loss that plateaus immediately or a gradient norm that explodes tells you early that the run is not worth waiting for.

Machine health is shown alongside: GPU utilization and memory, plus the host metrics of the training machine. A phase timeline shows where the run currently is, from environment preparation through data loading, the training loop itself, and checkpoint upload. When something looks off, the built-in log viewer gives you the raw training logs without any SSH access, which is usually enough to see whether a failure is your dataset or the run itself.

Checkpoints and resuming

Checkpoints are stored per run, not in a shared pool, so the checkpoints listed on a run page always belong to exactly that run and its configuration. This matters more than it sounds: mixing checkpoints across runs with different settings is a classic source of silently broken policies.

If a run is interrupted, you can resume from its latest checkpoint instead of starting over. Intermediate checkpoints are also useful on their own: when a long run starts overfitting near the end, an earlier checkpoint often runs better on the real arm than the final one.

Running the trained policy on your arm

A finished policy can be deployed straight back to your robot. In the cockpit, select the trained policy for your connected arm and start inference: the policy now produces the joint commands that you previously produced by teleoperation. The arm must be the same robot type the dataset was recorded on, and the scene should resemble the training scenes, including camera placement.

Treat the first inference runs like experiments, not demos. Keep the emergency stop within reach, start from a starting state close to what you demonstrated, and expect the policy to be sensitive to things you would not notice: a moved camera, different lighting, or an object the dataset never contained.

How many episodes you need

The most common training mistake on the platform is not a wrong hyperparameter, it is training on too little data and concluding the policy type does not work. As a rule of thumb for a single tabletop task: around 50 episodes gives you a policy with narrow generalization that succeeds from starting states close to the ones you demonstrated. Around 100 to 200 episodes gives usable robustness across the workspace for that one task, provided you varied object placement between episodes.

More capable policy types do not repeal this. A GR00T fine-tune on 20 episodes will still generalize poorly; what the larger models buy you is a better ceiling once the data is there. If your budget is limited, spend it on more varied episodes before spending it on a bigger model.

Frequently asked questions

How long does a training run take?

It depends on the policy type and dataset size, so there is no honest single number. ACT is typically the fastest of the four, GR00T fine-tunes the slowest. The phase timeline and loss charts on the run page show early whether a run is progressing.

Can I train on a merged dataset?

Yes. Merged datasets are ordinary datasets; the merge validation already guaranteed consistent fps, features, and robot type. Merging recordings of the same task is one of the most effective ways to reach the 100 to 200 episode range.

My GR00T run fails during data loading. What should I check first?

The dataset format version. GR00T fine-tuning requires LeRobot v2.1, and a v3.0 dataset fails exactly there. Check the version in meta/info.json of your dataset.

Should I remove failed episodes before training?

Usually yes. Episodes labeled Failure teach the policy the failing behavior. Recovery episodes are different: they show how to correct a mistake and are often worth keeping.

Do I need to keep the browser open during training?

No. Runs execute server-side. The run page shows the current state, charts, and logs whenever you return, and checkpoints are saved regardless of whether anyone is watching.