
Real GPU rates, real trainer defaults, and the five places a robot training budget leaks: oversized models, demo step counts, dead datasets, forgotten instances, and reruns.
A fine-tuning run is one of the few line items in robot learning with an honest price tag. You can look the rate up before you spend it: on 2026-08-24, RunPod's public pricing page lists an A100 80 GB PCIe at 1.19 USD per hour on the community tier and 1.39 USD on secure cloud, an RTX 4090 at 0.34 USD community, and an H100 PCIe at 1.99 USD community. Hugging Face Jobs bills its a100-large flavour at 2.50 USD per hour. Those rates are set by a market you do not control.
The hours are different. The hours come out of decisions you make in a form: which policy you picked, how many training steps you asked for, whether the dataset was ever capable of training anything, and whether you remembered to destroy the pod. This article is about those decisions, because that is where the money is. The published rates per tier are on the pricing page, and what the platform bills against is described in the billing documentation.
What you need to know
- •Run cost is wall-clock hours times GPU rate. You control the hours far more than the rate.
- •Model choice is the single biggest multiplier: about 4 to 12 USD per run on the A100 80 GB / H100 tier against about 1 to 3 USD on a 24 GB card.
- •Upstream step counts are ceilings someone chose for a demo. Isaac-GR00T ships max_steps=10000, lerobot ships steps=100000. Neither number knows how many episodes you recorded.
- •The most expensive run is the one that was already dead at step 0 because the dataset format, the camera keys or the episode metadata were wrong.
- •Storage keeps billing after the GPU stops. On RunPod a stopped pod's volume disk costs 0.20 USD per GB per month, twice the running rate. On Vast.ai storage is billed for as long as the instance exists at all.
- •Cheaper training does not fix control-loop latency, thin data, or a badly built arm. Those bills are paid elsewhere.
A run is two numbers multiplied, and only one is yours
The arithmetic is not complicated, which is exactly why it is worth writing down. Every optimisation below is an attack on one of these three terms.
run_cost = wall_clock_hours * gpu_rate_per_hour
wall_clock_hours = setup + (steps * seconds_per_step) / 3600
# Anchor: lerobot's own SmolVLA doc states that 20k steps
# takes "roughly ~4 hrs on a single A100 GPU" at batch_size=64.
seconds_per_step = 14400 / 20000 = 0.72 # includes data loading
# That run on RunPod's community A100 80 GB (1.19 USD/h, listed 2026-08-24):
4.0 h * 1.19 USD/h = 4.76 USD # plus setup, plus the dataset downloadTwo things fall out of that. First, setup is not free: pulling a 3 B base checkpoint and a few gigabytes of video onto a fresh pod happens on a clock that is already running. Second, steps is the only term you set directly, and it is the one people copy from a README without thinking.
On AY-Robots the whole run lands in one of two bands, because the backend rents the card by required VRAM. The GR00T N1.7, GR00T N1.5 and Pi0.5 tier runs 3 to 6 hours at 1.20 to 2.00 USD per hour, about 4 to 12 USD per run. The SmolVLA and ACT tier runs 2 to 5 hours at 0.30 to 0.60 USD per hour, about 1 to 3 USD per run. Both are small numbers. Cost only becomes a problem because almost nobody gets a working policy on run one.
| Policy | GPU tier | Typical run | Cost band | Min episodes | Inference latency |
|---|---|---|---|---|---|
| GR00T N1.7 | A100 80 GB or H100 | 3 to 6 h | 4 to 12 USD | 50 | 152 ms |
| GR00T N1.5 | A100 80 GB or H100 | 3 to 6 h | 4 to 12 USD | 50 | 165 ms |
| Pi0.5 | A100 80 GB or H100 | 3 to 6 h | 4 to 12 USD | 50 | 485 ms |
| SmolVLA | RTX 4090 or any 24 GB | 2 to 5 h | 1 to 3 USD | 30 | 245 ms |
| ACT | RTX 4090 or any 24 GB | 2 to 5 h | 1 to 3 USD | 50 | 20 ms |

Lever 1: stop paying foundation-model prices for a fixed-camera task
The gap between the two tiers is roughly four times the money, and a longer wait for every attempt. It exists because a vision-language-action model with 3 B parameters cannot be fine-tuned on a 24 GB card. NVIDIA's own hardware guide for Isaac-GR00T puts the fine-tuning minimum at 1 GPU with 40 GB+ VRAM and notes that the default configuration, which tunes only the projector and the diffusion action head, keeps peak VRAM under about 35 GB per GPU.
So the first question is not "which model is best" but "does my task need what the big model brings". What it brings is web-scale semantics: language conditioning that survives rephrasing, and some tolerance for objects it has not seen. If your task is one bin, one camera rig, one object type and one instruction, you are paying for generalisation you will never exercise. ACT's original paper reports 80 to 90 percent success on 6 real-world fine manipulation tasks from "only 10 minutes worth of demonstrations", with no pretraining at all. The SmolVLA paper makes the same argument from the other side: the model is "designed to be trained on a single GPU and deployed on consumer-grade GPUs or even CPUs", with performance its authors report as "comparable to VLAs that are 10x larger". Whether that holds for your task is an empirical question, and it is a cheap one to ask.
- About 4 to 12 USD per run becomes about 1 to 3 USD per run.
- 3 to 6 hours becomes 2 to 5 hours, so you get more attempts per evening.
- SmolVLA and ACT also run locally, so a smoke test costs nothing at all.
- ACT infers in 20 ms against GR00T N1.7's 152 ms, which matters more than the training bill if the task is fast.
- ACT has no base model. It only exists after training on your task, so it starts from scratch every time and cannot transfer.
- Language conditioning gets weak or disappears. One policy per task, not one policy per instruction.
- Generalisation to a new object, a new background or a moved camera drops sharply.
- SmolVLA needs 30 episodes minimum and ACT 50, so you do not save on the data-collection side.
The order that wastes the least money is: run ACT or SmolVLA on the data you already have, see whether the task is learnable at all, and only move to GR00T N1.7 or Pi0.5 when you have evidence that the failure is a capability gap rather than a data gap. A failed 2 USD run tells you almost as much as a failed 10 USD run. The ACT against SmolVLA comparison and the arena leaderboard, which holds 332 benchmark results across 85 models, are the places to check that assumption before you commit.

Lever 2: max_steps is a ceiling somebody picked, not a target
Upstream defaults are chosen so that a demo dataset produces a demo video. They are not sized for your 50 episodes. Read against the source on 2026-08-24: Isaac-GR00T's FinetuneConfig ships max_steps: int = 10000 with global_batch_size: int = 64 and save_steps: int = 1000. lerobot's TrainPipelineConfig ships steps: int = 100_000 with batch_size: int = 8 and save_freq: int = 20_000.
| Setting | Isaac-GR00T upstream | lerobot upstream | AY-Robots sends | Cost effect |
|---|---|---|---|---|
| Steps | 10000 | 100000 | GR00T N1.7: 20000, ACT: 100000 | Linear. Halving the steps halves the GPU hours. |
| Batch size | 64 (global, pre-accumulation) | 8 | GR00T N1.7: 32, ACT: 8, SmolVLA: 2 | Bigger batch is fewer steps for the same data, until VRAM stops you. |
| Checkpoint interval | save_steps 1000 | save_freq 20000 | saveSteps on GR00T runs | Free to change, and it decides whether a dead run is salvageable. |
| Checkpoints kept | save_total_limit 5 | no cap in the train config | not exposed | Silently deletes early checkpoints. Can force a full re-run. |
| Held-out eval | not in FinetuneConfig | eval_steps 0, eval_split 0.0 (both off) | not exposed | Off by default, so nothing tells you the run stopped improving. |
Notice that the platform's GR00T N1.7 default of 20000 steps at batch 32 pushes the same number of samples through the model as NVIDIA's 10000 steps at batch 64. It is the same amount of work, split differently. The ACT default of 100000 steps at batch 8 is lerobot's own default, unchanged. Neither is a claim that your dataset needs that many steps.
The practical move is to shorten the checkpoint interval rather than the run. A run that writes a checkpoint every 1000 steps can be killed the moment the loss curve flattens, and you keep everything up to that point. A run that writes one every 20000 steps has to be watched to the end or thrown away.
# lerobot: save often, log often, and hold out a slice so you can see the plateau
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/mydataset \
--dataset.eval_split=0.1 \
--eval_steps=2000 \
--batch_size=64 \
--steps=20000 \
--save_freq=2000 \
--log_freq=200 \
--output_dir=outputs/train/my_smolvla \
--job_name=my_smolvla_training \
--policy.device=cuda \
--wandb.enable=trueIsaac-GR00T's FinetuneConfig defaults to save_total_limit: int = 5, described in the source as "Maximum number of checkpoints to keep before older ones are deleted". With the default save_steps=1000 and a 10000-step run, steps 1000 through 5000 are gone by the time the run finishes. If your policy peaked early, which happens on small datasets, you cannot go back and get it. Raise the limit or accept that you may pay for the run twice. The related failure of a loss that falls while the policy does nothing is exactly the case where you want those early checkpoints.

Lever 3: the run that was already dead at step 0
This is the expensive one, and it is expensive twice: you pay for the GPU hours and you pay for the evening. A run on a dataset that could never have trained anything still bills at full rate, and unless you set up a held-out split, the loss curve will look plausible while it does it.
There are four common ways a dataset kills a run. The format is wrong: a LeRobot dataset in v3.0 crashes the GR00T loader, which wants v2.0 or v2.1. The metadata is wrong: a partial Hugging Face snapshot leaves episode entries in meta/episodes.jsonl that point at files which were never downloaded. The camera keys do not match the modality config the trainer expects. Or the episodes themselves are unusable, which no schema check will catch: the recording-side quality rules decide that long before the trainer ever sees the data.
- 1Convert the dataset before you rent anything
Isaac-GR00T ships a converter for exactly this. It lives in its own directory with its own pyproject.toml, and the README is explicit that you must install from that directory rather than the repo root.
bashcd scripts/lerobot_conversion uv venv && source .venv/bin/activate uv pip install -e . --verbose python convert_v3_to_v2.py --repo-id <hf_user>/<dataset> - 2Repair broken episode metadata
The repair script drops broken episode entries from meta/episodes.jsonl, updates the summary fields in meta/info.json and regenerates stats. The dataset path is positional and --dry-run reports the damage without writing. Running it on a laptop costs nothing. Discovering the problem on a rented A100 costs an hour.
bashpython scripts/repair_lerobot_metadata.py /path/to/dataset --dry-run python scripts/repair_lerobot_metadata.py /path/to/dataset - 3Do a 50-step smoke run on the cheap tier
Before a 20000-step run on an 80 GB card, run 50 steps of ACT or SmolVLA locally or on a 24 GB card. It exercises the loader, the camera keys, the normalisation statistics and the checkpoint writer. Everything that fails at step 0 fails here for free.
bashlerobot-train \ --policy.type=act \ --dataset.repo_id=${HF_USER}/mydataset \ --steps=50 \ --save_freq=25 \ --batch_size=2 \ --output_dir=outputs/smoke \ --job_name=smoke - 4Watch the first checkpoint, not the last
If the first checkpoint at step 1000 or 2000 produces nothing but a mean action, kill the run. The remaining 18000 steps will not repair a dataset. Send the money to a second recording session instead.
If you dispatch training to Hugging Face Jobs, note the documented behaviour: "Jobs have a default timeout (30 minutes), after which they will automatically stop." A lerobot run at the default save_freq=20000 will not have written a single checkpoint by then. You get billed for half an hour of an a100-large at 2.50 USD per hour and receive nothing. Set timeout="6h" and lower save_freq before you dispatch. The same class of problem on this platform shows up as a job stuck in the queue or a dataset rejected for being v3.0.
Lever 4: the card you stopped and the disk you forgot
Stopping is not destroying, and every marketplace documents this in a place people do not read until the invoice arrives. Vast.ai's billing FAQ states it plainly: "You are charged the storage cost (which depends on the size of your storage allocation) for every second your instance exists and is online, regardless of what state it is in: active, inactive, loading, etc." Their pricing guide adds: "Storage charges continue even when instances are stopped. Delete instances completely to cease storage billing."
RunPod goes one step further and charges more for the idle case. Their pricing documentation lists volume disk at 0.10 USD per GB per month while the pod runs and 0.20 USD per GB per month while it is stopped. Container disk is not charged on a stopped pod; the volume is. And if the balance runs out, pods without a network volume are terminated and their data cannot be recovered, which is how people lose checkpoints they were paying to keep.
| What is left behind | Vast.ai | RunPod | Monthly cost of a 200 GB checkpoint dir |
|---|---|---|---|
| Instance running | GPU per second plus storage | GPU per hour plus 0.10 USD/GB/mo | 20 USD storage plus the GPU |
| Instance stopped | storage still billed for as long as it exists | volume disk 0.20 USD/GB/mo | 40 USD on RunPod, storage rate on Vast |
| Instance destroyed | nothing | nothing | 0 USD, and the data is gone |
| Network volume, no pod | n/a | 0.07 USD/GB/mo under 1 TB | 14 USD |
Cloud inference pods provisioned through /api/inference/pod carry an idle watchdog and destroy themselves after an idle period, so a policy you forgot to stop does not keep billing silently. That covers the inference side. Training checkpoints are written to object storage, so there is no rented disk sitting there attached to a stopped card. See the billing documentation for how the platform accounts for a run.
If you do rent the card yourself, the discipline is short: write checkpoints to object storage during the run rather than to the pod's volume, verify the objects landed, then destroy the instance rather than stopping it. "I will look at it tomorrow" is how a 200 GB volume ends up costing 40 USD for the month nobody looked at it.
Lever 5: do not buy the same answer twice
Two upstream defaults quietly make repeat runs likely. Isaac-GR00T's resume_from_checkpoint defaults to False, documented in the source as "Default False so a rerun against an existing output_dir starts fresh instead of silently merging with a previous experiment". That is the right default for correctness and the wrong one for your wallet if you assumed a rerun would continue. And save_only_model, which looks like a tidy way to save disk, carries the note "Cannot resume training from these checkpoints".
# GR00T: resume rather than restart, and keep the optimizer state so you can
uv run python gr00t/experiment/launch_finetune.py \
--base-model-path nvidia/GR00T-N1.7-3B \
--dataset-path /data/my_so100_dataset \
--embodiment-tag NEW_EMBODIMENT \
--modality-config-path examples/SO100/so100_config.py \
--output-dir ./outputs/run_a \
--max-steps 20000 \
--save-steps 1000 \
--save-total-limit 20 \
--resume-from-checkpoint # tyro turns the bool field into this flagRead the whole of FinetuneConfig and there is no seed field. lerobot exposes seed: int | None = 1000 and an optional cudnn_deterministic flag, so a lerobot run can be repeated. A GR00T run cannot be repeated bit for bit, which means "let me just run it again to check" is not a check, it is a second experiment at full price. Decide what you are testing before you spend the hours. The GR00T N1.7 on SO-100 guide lists the exact defaults a run starts from.
The same logic applies to hyperparameter sweeps. On a 4 to 12 USD run, a five-point learning-rate sweep is 20 to 60 USD, and on a 50-episode dataset it will mostly tell you about noise. Change one thing at a time, and change the thing with the largest effect first: more episodes beats a better learning rate almost every time.
Doing it yourself against doing it here
You rent the card, you own every second of it. This is the cheapest path per GPU-hour and the most expensive path per mistake.
- 1Pick an offer and bid
Interruptible capacity on Vast.ai is documented as often 50 percent or more cheaper than on-demand, at the cost of being pre-empted. Worth it only if your run checkpoints often enough to survive a pause. gpu_ram is per-GPU VRAM in GB, so 40 is the Isaac-GR00T fine-tuning minimum.
bashvastai search offers 'gpu_ram>=40 num_gpus=1 disk_space>200 verified=true rentable=true' -o 'dlperf_usd-' - 2Install the trainer and pull the base model
This is billable time before step 0. A 3 B checkpoint plus a video dataset is not a small download.
bashgit clone https://github.com/NVIDIA/Isaac-GR00T cd Isaac-GR00T uv sync --python 3.12 - 3Launch with a short save interval
Frequent checkpoints are what make a cheap interruptible instance usable and what let you stop the run the moment it flattens.
bashuv run python gr00t/experiment/launch_finetune.py \ --base-model-path nvidia/GR00T-N1.7-3B \ --dataset-path /data/my_so100_dataset \ --embodiment-tag NEW_EMBODIMENT \ --modality-config-path examples/SO100/so100_config.py \ --global-batch-size 32 \ --max-steps 20000 \ --save-steps 1000 \ --num-gpus 1 - 4Copy the checkpoints off, then destroy
Verify the objects are readable at their destination before the instance goes away. Vast.ai's own documentation is explicit: destroying an instance stops all billing, while stopping it only halts compute billing and lets disk storage charges continue.
bashaws s3 sync ./outputs s3://my-bucket/run_a/ && vastai destroy instance <id>
- Cheapest per hour, especially on interruptible capacity.
- You can run anything: custom modality configs, LoRA through lerobot's PeftConfig, multi-GPU torchrun.
- You carry the CUDA and driver debugging, on the clock.
- You carry the idle-disk risk and the forgotten-instance risk personally.
The training form takes a model, a dataset and the hyperparameters, and the backend rents a GPU on the spot market by required VRAM. You do not choose the offer and you do not touch the instance.
- The GPU tier is chosen from the model's VRAM requirement, so you cannot start a 3 B model on a card that was never going to hold it.
- Checkpoints are written to object storage during the run, so there is no rented disk left attached to a stopped pod.
- Datasets come from the public directory, a Hugging Face repo id, or your own machine through the desktop client.
- Inference pods carry an idle watchdog and destroy themselves, so a forgotten endpoint is not an open-ended bill.
- GR00T N1.7 and Pi0.5 are cloud-only here. SmolVLA and ACT also run locally, which is the free smoke test.
- The same operations are available from the CLI and the MCP server, so a sweep can be scripted rather than clicked.
It does not decide for you that 20000 steps is too many for 50 episodes, and it does not tell you your dataset is unlearnable. The gradientAccumulation field is honest about its own limits: it applies on the GR00T runs and does nothing on Pi0.5, SmolVLA and ACT, because lerobot 0.5.1 has no such flag. A knob that does nothing is better labelled than hidden, but it is still a knob that does nothing.
Where a cheaper run does not help at all
Three bills are unaffected by anything in this article, and it is worth naming them so the optimisation stops at the right place.
| Cost | Rough size | Why training savings do not touch it |
|---|---|---|
| The arm | 110 to 150 EUR for an SO-100 in parts, 400 to 500 EUR for a LeKiwi | One-time hardware. A 2 USD run and a 12 USD run both need a working arm. |
| Recording hours | the largest line item, and it is human time | 30 to 50 episodes of teleoperation cannot be rented on a spot market. |
| Control-loop latency | 20 ms for ACT up to 485 ms for Pi0.5, per action step | Adding public-internet round trips to that budget turns a working policy hesitant. Cheap remote inference is viable for slow pick-and-place, not for fast reactive motion. |
That last row is the honest limit of the whole cloud-training story. Training happily lives in a data centre. Inference latency does not: for fast tasks the policy has to sit next to the servos. This is the same trade-off examined in the general VLA overview, and the practical consequences are in the training documentation. The recording hours in the row above are the same problem seen from the other end: teleoperation time is the one input to a policy that no amount of GPU discount reduces.
SO-100, SO-101 and LeKiwi arms use Feetech STS3215 bus servos on a 7.4 V rail. Feeding them 12 V destroys them. Koch v1.1 uses Dynamixel servos on 5 V and 12 V rails, which is why a power supply cannot be swapped between builds. One wrong brick costs more than a hundred training runs. The SO-100 hardware page lists the correct supply, and the full SO-100 guide covers the build.
A worked budget for a first working policy
Assume an SO-100, one task, and the ordinary case where the first attempt does not work. This is the sequence that gets there for the least money, with the platform's own cost bands.
| Stage | What you do | Cost | What it buys |
|---|---|---|---|
| 1. Record | 30 to 50 episodes with the desktop client | 0 USD, several hours of your time | The thing that actually decides success. |
| 2. Validate | Convert format, repair metadata, 50-step smoke run locally | 0 USD | Kills the dead-at-step-0 run before it costs anything. |
| 3. Cheap baseline | ACT on the 24 GB tier, checkpoint every 2000 steps | 1 to 3 USD | Is the task learnable from this data at all. |
| 4. Read the checkpoints | Run the earliest usable checkpoint on the arm | GPU time only | Tells you whether to record more data or change model. |
| 5. Escalate if needed | GR00T N1.7 or Pi0.5 on the 80 GB tier | 4 to 12 USD | Language conditioning and generalisation, if the task needs them. |
| Total to a first honest answer | 1 to 3 USD if the cheap tier answers it, 5 to 15 USD if you escalate | Two runs, not five. |
The reason this ordering is cheap is not that any single run is cheap. It is that steps 2 and 3 remove most of the reasons a 12 USD run fails, before you buy it. If you want the guided version of the same sequence, the first-policy walkthrough runs through it, and the per-model guides such as SmolVLA on the SO-100 and ACT on the SO-100 carry the exact defaults for each combination.
What is the cheapest way to train a policy for an SO-100?▾
Record 30 or more episodes, validate the dataset locally, then train ACT or SmolVLA on the 24 GB tier, which costs about 1 to 3 USD per run on AY-Robots. Both also run locally, so if you already own a 24 GB card the marginal cost of a run is electricity. Only move to GR00T N1.7 or Pi0.5, at about 4 to 12 USD per run on the 80 GB tier, once you have evidence that the cheap model's failure is a capability gap rather than a data problem.
How many training steps do I actually need?▾
Nobody can tell you a number in advance, which is why the answer is to checkpoint often and stop when the curve flattens rather than to guess a step count. lerobot documents 20000 SmolVLA steps as roughly 4 hours on a single A100, and a few hours for 100000 ACT steps on a single GPU. Isaac-GR00T defaults to 10000. Those are starting points sized for demo datasets, and on 50 episodes you will often see the useful checkpoint well before the end.
Is an interruptible or spot instance worth the risk?▾
Vast.ai documents interruptible capacity as often 50 percent or more cheaper than on-demand, in exchange for being pre-empted. That trade only works if your run writes checkpoints frequently and can resume from them. With Isaac-GR00T that means leaving save_only_model at False, because those checkpoints explicitly cannot be resumed from, and passing resume_from_checkpoint on the restart since it defaults to False.
Why did my GPU bill keep growing after the run finished?▾
Almost certainly storage on a stopped instance. Vast.ai charges storage for every second the instance exists regardless of state, and RunPod charges 0.20 USD per GB per month for a stopped pod's volume disk, which is twice the running rate. Destroy the instance rather than stopping it, after verifying that the checkpoints were copied somewhere else.
Does a bigger batch size make a run cheaper?▾
Up to the point where VRAM stops you, yes, because you push the same amount of data through in fewer steps. NVIDIA's hardware guide notes that the default GR00T fine-tune, which tunes only the projector and diffusion head, keeps peak VRAM under about 35 GB per GPU, while enabling tune_llm or tune_visual pushes the recommendation to 80 GB or more. Turning those flags on is therefore also a decision to rent a larger card.
Can I use LoRA to make fine-tuning cheaper?▾
lerobot ships a PeftConfig with a LoRA rank default of r=16, so the option exists for the policies it trains. It reduces memory and checkpoint size rather than wall-clock hours per step, so the saving shows up mainly as being able to use a smaller card. It is not exposed on the AY-Robots training form, so on this platform it is a do-it-yourself route.
See what a run costs before you start one
The pricing page lists the GPU tier each of the five policies needs, the typical run time and the price band, with no signup required to look.
See pricingSources
- Isaac-GR00T FinetuneConfig: every fine-tuning default (max_steps, global_batch_size, save_steps, save_total_limit, resume_from_checkpoint)
- Isaac-GR00T hardware recommendations: fine-tuning VRAM minimums and the cost of --tune-llm
- Isaac-GR00T: converting a LeRobot v3.0 dataset down to v2.x
- Isaac-GR00T repair_lerobot_metadata.py: dropping broken episodes from a partial dataset snapshot
- lerobot training configs: TrainPipelineConfig (steps, batch_size, save_freq, seed, eval_steps) and DatasetConfig eval_split / PeftConfig LoRA defaults
- lerobot SmolVLA docs: the fine-tune command and the 20k steps in ~4 hours on one A100 figure
- vastai search offers reference: query fields (gpu_ram, disk_space, verified, rentable) and the dlperf_usd sort key
- RunPod GPU and storage pricing (A100 80 GB, H100, RTX 4090, volume disk running vs idle)
- RunPod pod pricing documentation: storage charges on stopped pods and zero-balance behaviour
- Vast.ai billing FAQ: storage is charged for every second the instance exists
- Vast.ai pricing guide: compute, storage and interruptible instances
- lerobot ACT docs: ~80 M parameters, batch size 8, a few hours for 100k steps on a single GPU
- Hugging Face Jobs: hardware flavours, hourly rates and the 30-minute default timeout
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT / ALOHA)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started