One command to train your robot on cloud GPUs.
Project description
gcp-robo-cloud
One command to train your robot on cloud GPUs.
gcp-robo-cloud makes it dead simple for robotics developers to run training jobs on GCP GPU instances. No Kubernetes, no Terraform, no infrastructure expertise needed.
pip install gcp-robo-cloud
gcp-robo-cloud launch train.py --gpu a100
That's it. Your training script runs on a cloud A100, and results are downloaded when it finishes.
Why?
Training robotics policies (RL, imitation learning, sim-to-real) requires GPU compute that most developers don't have locally. Getting cloud GPUs currently means wrestling with VM provisioning, Docker, networking, and cost management. gcp-robo-cloud handles all of that.
Features
- One-command launch -
gcp-robo-cloud launch train.py --gpu a100 - Auto-containerization - Detects your dependencies, builds and pushes a Docker image automatically
- Framework agnostic - Works with PyTorch, Isaac Lab, MuJoCo, PyBullet, ROS 2, or any Python project
- Cost-conscious - Spot instances by default (60-91% cheaper), auto-shutdown after training, cost estimates
- File sync - Uploads your code, downloads results automatically via GCS
- Simple auth - Uses your existing
gcloudcredentials - Python API - Use programmatically:
gcp_robo_cloud.launch(script="train.py", gpu="a100")
Quick Start
1. Install
pip install gcp-robo-cloud
2. Authenticate (if you haven't already)
gcloud auth application-default login
gcloud config set project YOUR_PROJECT_ID
3. First-time setup
gcp-robo-cloud config --init
This enables the required GCP APIs (Compute Engine, Cloud Storage, Artifact Registry).
4. Launch training
cd my-robotics-project/
gcp-robo-cloud launch train.py --gpu a100
Available GPUs
| GPU | VRAM | Spot $/hr | On-demand $/hr | Best for |
|---|---|---|---|---|
t4 |
16 GB | $0.11 | $0.35 | Prototyping, small models |
l4 |
24 GB | $0.22 | $0.72 | Inference, medium training |
v100 |
16 GB | $0.74 | $2.48 | General training |
a100 |
40 GB | $1.10 | $3.67 | Large-scale training |
a100-80gb |
80 GB | $1.47 | $4.90 | Very large models |
h100 |
80 GB | $3.54 | $11.81 | Maximum performance |
CLI Reference
# Launch training
gcp-robo-cloud launch train.py --gpu a100
gcp-robo-cloud launch train.py --gpu t4 --no-spot # On-demand instance
gcp-robo-cloud launch train.py --gpu a100 --args "--epochs 100 --lr 0.001"
gcp-robo-cloud launch train.py --gpu l4 --max-duration 2h # Auto-stop after 2 hours
gcp-robo-cloud launch train.py --gpu a100 --async # Don't wait for completion
# Job management
gcp-robo-cloud status # List all jobs
gcp-robo-cloud status <job_id> # Job details
gcp-robo-cloud stop <job_id> # Stop and delete VM
# Cost estimation
gcp-robo-cloud estimate --gpu a100 --duration 2h
gcp-robo-cloud estimate --all --duration 4h # Compare all GPUs
# Configuration
gcp-robo-cloud config --init # First-time setup
gcp-robo-cloud config --show # Show current config
gcp-robo-cloud config --set gpu=a100 # Set defaults
Python API
import gcp_robo_cloud
# Blocking - waits for training to complete
result = gcp_robo_cloud.launch(
script="train.py",
gpu="a100",
args="--epochs 100",
spot=True,
max_duration="2h",
)
print(result.output_dir) # Path to downloaded results
print(result.cost_usd) # Estimated cost
# Non-blocking - returns immediately
job = gcp_robo_cloud.launch(script="train.py", gpu="a100", wait=False)
print(job.id) # Job ID for tracking
# Check status later
status = gcp_robo_cloud.status(job.id)
print(status.state)
# Stop a running job
gcp_robo_cloud.stop(job.id)
Configuration
Create a gcp-robo-cloud.yaml in your project root for persistent settings:
project: my-gcp-project
region: us-central1
gpu: a100
spot: true
max_duration: 4h
docker:
base_image: nvidia/cuda:12.4.1-runtime-ubuntu22.04
python_version: "3.11"
system_packages: [libgl1-mesa-glx, libegl1]
sync:
exclude: [data/raw/, "*.pth", __pycache__/]
output_patterns: ["outputs/**", "checkpoints/*.pth"]
script: train.py
args: "--num-envs 4096 --headless"
How It Works
- Detects dependencies - Finds
requirements.txtorpyproject.toml - Builds Docker image - Generates a Dockerfile, builds locally, pushes to Artifact Registry
- Uploads code - Syncs project files to GCS (training code is not baked into the image for fast iteration)
- Provisions VM - Creates a spot GPU instance with Container-Optimized OS
- Runs training - Pulls the image, downloads code, executes your script
- Streams logs - Shows training output in your terminal
- Downloads results - Copies artifacts (models, logs) to your local machine
- Cleans up - VM self-terminates after training to stop billing
Custom Dockerfiles
If you need more control, place a Dockerfile in your project root. gcp-robo-cloud will use it directly instead of auto-generating one.
Or specify a base image in your config:
docker:
base_image: nvcr.io/nvidia/isaac-lab:4.5.0
File Sync
By default, gcp-robo-cloud uploads your project files (excluding .git, __pycache__, .venv, etc.) and downloads everything from outputs/ after training.
Create a .gcp-robo-cloud-ignore file (gitignore syntax) to customize:
# Don't upload large data files
data/raw/
*.hdf5
datasets/
# Don't upload pre-trained models
*.pth
*.onnx
Requirements
- Python 3.10+
- Docker (for building images locally)
gcloudCLI (for authentication)- A GCP project with billing enabled
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gcp_robo_cloud-0.1.0.tar.gz.
File metadata
- Download URL: gcp_robo_cloud-0.1.0.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb2d034fccbff1f1fa6adbc413d61513bf9f7df6ef1de5a8405c562f66462205
|
|
| MD5 |
561d8be4f2c3b1b1b940c93b2b70f21c
|
|
| BLAKE2b-256 |
097add7e798df05631241a948d0ba69273411678d6118523872ac3dfacf0dd5a
|
Provenance
The following attestation bundles were made for gcp_robo_cloud-0.1.0.tar.gz:
Publisher:
publish.yml on kite-ml/gcp-robo-cloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gcp_robo_cloud-0.1.0.tar.gz -
Subject digest:
cb2d034fccbff1f1fa6adbc413d61513bf9f7df6ef1de5a8405c562f66462205 - Sigstore transparency entry: 1034834442
- Sigstore integration time:
-
Permalink:
kite-ml/gcp-robo-cloud@d6a3d7bee5e2b1a6337a18f99f45a988ffd0e655 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kite-ml
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d6a3d7bee5e2b1a6337a18f99f45a988ffd0e655 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gcp_robo_cloud-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gcp_robo_cloud-0.1.0-py3-none-any.whl
- Upload date:
- Size: 40.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fbe48a278dbd63bf21f276b235da4f5c5848723e05b186129dfa4314165a153
|
|
| MD5 |
f6bcb4670bc33fc6d0943f6b95b6d5d2
|
|
| BLAKE2b-256 |
57ff0c2874630db23f92419ccb5424bfb38a5279d1c902d114337ab000d4f97f
|
Provenance
The following attestation bundles were made for gcp_robo_cloud-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on kite-ml/gcp-robo-cloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gcp_robo_cloud-0.1.0-py3-none-any.whl -
Subject digest:
9fbe48a278dbd63bf21f276b235da4f5c5848723e05b186129dfa4314165a153 - Sigstore transparency entry: 1034834498
- Sigstore integration time:
-
Permalink:
kite-ml/gcp-robo-cloud@d6a3d7bee5e2b1a6337a18f99f45a988ffd0e655 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kite-ml
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d6a3d7bee5e2b1a6337a18f99f45a988ffd0e655 -
Trigger Event:
release
-
Statement type: