diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..a39de51b0 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,77 @@ +# Docker + +This directory contains Dockerfiles for running LeRobot in containerized environments. Both images are **built nightly from `main`** and published to Docker Hub with the full environment pre-baked — no dependency setup required. + +## Pre-built Images + +```bash +# CPU-only image (based on Dockerfile.user) +docker pull huggingface/lerobot-cpu:latest + +# GPU image with CUDA support (based on Dockerfile.internal) +docker pull huggingface/lerobot-gpu:latest +``` + +## Quick Start + +The fastest way to start training is to pull the GPU image and run `lerobot-train` directly. This is the same environment used for all of our CI, so it is a well-tested, batteries-included setup. + +```bash +docker run -it --rm --gpus all --shm-size 16gb huggingface/lerobot-gpu:latest + +# inside the container: +lerobot-train --policy.type=act --dataset.repo_id=lerobot/aloha_sim_transfer_cube_human +``` + +## Dockerfiles + +### `Dockerfile.user` (CPU) + +A lightweight image based on `python:3.12-slim`. Includes all Python dependencies and system libraries but does not include CUDA — there is no GPU support. Useful for exploring the codebase, running scripts, or working with robots, but not practical for training. + +### `Dockerfile.internal` (GPU) + +A CUDA-enabled image based on `nvidia/cuda`. This is the image for training — mostly used for internal interactions with the GPU cluster. + +## Usage + +### Running a pre-built image + +```bash +# CPU +docker run -it --rm huggingface/lerobot-cpu:latest + +# GPU +docker run -it --rm --gpus all --shm-size 16gb huggingface/lerobot-gpu:latest +``` + +### Building locally + +From the repo root: + +```bash +# CPU +docker build -f docker/Dockerfile.user -t lerobot-user . +docker run -it --rm lerobot-user + +# GPU +docker build -f docker/Dockerfile.internal -t lerobot-internal . +docker run -it --rm --gpus all --shm-size 16gb lerobot-internal +``` + +### Multi-GPU training + +To select specific GPUs, set `CUDA_VISIBLE_DEVICES` when launching the container: + +```bash +# Use 4 GPUs +docker run -it --rm --gpus all --shm-size 16gb \ + -e CUDA_VISIBLE_DEVICES=0,1,2,3 \ + huggingface/lerobot-gpu:latest +``` + +### USB device access (e.g. robots, cameras) + +```bash +docker run -it --device=/dev/ -v /dev/:/dev/ --rm huggingface/lerobot-cpu:latest +```