chore: release v0.2.0
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
# Container Deployment
|
||||
|
||||
This document describes how to deploy MotrixLab using Docker containers to simplify environment configuration and enable rapid deployment.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- **Docker** and **Docker Compose**: [Installation Docs](https://docs.docker.com/engine/install/)
|
||||
- **NVIDIA Container Toolkit** (for GPU support): [Installation Docs](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installation)
|
||||
- **NVIDIA GPU**: Graphics card supporting CUDA 12.8
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Motphys/MotrixLab.git
|
||||
|
||||
cd MotrixLab/docker
|
||||
```
|
||||
|
||||
### 2. Start with Docker Compose
|
||||
|
||||
We provide a complete `docker-compose.yml` configuration file that supports one-click startup of training and TensorBoard visualization services.
|
||||
|
||||
```bash
|
||||
# Start training and TensorBoard services
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
This will start the following services:
|
||||
|
||||
- **motrixlab-training**: Training container that executes reinforcement learning training tasks
|
||||
- **motrixlab-tensorboard**: TensorBoard visualization service accessible via browser at http://localhost:6006
|
||||
|
||||
### 3. Configure Training Parameters
|
||||
|
||||
You can customize training configurations through environment variables:
|
||||
|
||||
```bash
|
||||
# Set training backend (jax or torch)
|
||||
export MOTRIX_TRAIN_BACKEND=jax
|
||||
|
||||
# Set number of parallel environments
|
||||
export MOTRIX_NUM_ENVS=2048
|
||||
|
||||
# Set training environment name
|
||||
export MOTRIX_ENV=cartpole
|
||||
|
||||
# Start services
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
| Environment Variable | Default | Description |
|
||||
| :--------------------- | :--------- | :--------------------------------- |
|
||||
| `MOTRIX_TRAIN_BACKEND` | `jax` | Training backend: `jax` or `torch` |
|
||||
| `MOTRIX_NUM_ENVS` | `2048` | Number of parallel environments |
|
||||
| `MOTRIX_ENV` | `cartpole` | Training environment name |
|
||||
|
||||
### 4. Monitor Training Progress
|
||||
|
||||
Training logs are automatically saved to the Docker Volume `motrixlab-data`. You can view them through:
|
||||
|
||||
```bash
|
||||
# View training container logs
|
||||
docker logs -f motrixlab-training
|
||||
|
||||
# Access TensorBoard
|
||||
# Open in browser: http://localhost:6006
|
||||
```
|
||||
|
||||
### 5. Stop Services
|
||||
|
||||
```bash
|
||||
# Stop all services
|
||||
docker compose down
|
||||
|
||||
# Stop services and remove data volumes
|
||||
docker compose down -v
|
||||
```
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Building Docker Images
|
||||
|
||||
If you need to customize the image, you can build from source:
|
||||
|
||||
```bash
|
||||
# Execute from project root directory
|
||||
cd docker
|
||||
docker build -t motphys/motrixlab:latest .
|
||||
```
|
||||
|
||||
### Running Single Container
|
||||
|
||||
If you only want to run the training container without using Docker Compose:
|
||||
|
||||
```bash
|
||||
docker run --gpus all \
|
||||
-v $(pwd)/runs:/root/motrixlab/runs \
|
||||
motphys/motrixlab:latest \
|
||||
scripts/train.py --train-backend jax --num-envs 2048 --env cartpole
|
||||
```
|
||||
|
||||
### Persisting Training Results
|
||||
|
||||
The default configuration uses the Docker Volume `motrixlab-data` to save training results. You can mount it to a host directory:
|
||||
|
||||
```bash
|
||||
# Modify volumes configuration in docker-compose.yml
|
||||
volumes:
|
||||
- ./runs:/root/motrixlab/runs
|
||||
```
|
||||
|
||||
## Image Details
|
||||
|
||||
Our Docker image is based on {bdg-primary-line}`NVIDIA CUDA 12.8.1` runtime environment and comes pre-installed with the following components:
|
||||
|
||||
- **UV Package Manager**: Fast, reliable dependency management
|
||||
- **MotrixLab**: Complete reinforcement learning training framework
|
||||
- **SKRL**: Reinforcement learning library supporting both JAX and PyTorch backends
|
||||
- **TensorBoard**: Training process visualization tool
|
||||
- **MotrixSim**: High-performance physics simulation engine
|
||||
|
||||
Image layer build process:
|
||||
|
||||
1. **Base Environment**: NVIDIA CUDA 12.8.1 Runtime + Ubuntu 24.04
|
||||
2. **System Dependencies**: Install UV package manager and necessary system tools
|
||||
3. **Python Dependencies**: Use UV cache mechanism for fast Python package installation
|
||||
4. **Project Code**: Copy MotrixLab source code and complete dependency installation
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### GPU Not Available
|
||||
|
||||
If the container cannot access the GPU:
|
||||
|
||||
```bash
|
||||
# Check NVIDIA Docker Runtime
|
||||
docker run --rm --gpus all nvidia/cuda:12.8.1-base-ubuntu24.04 nvidia-smi
|
||||
|
||||
# Verify NVIDIA Container Toolkit is correctly installed
|
||||
which nvidia-container-cli
|
||||
```
|
||||
|
||||
### Insufficient Storage Space
|
||||
|
||||
Clean Docker cache and unused images:
|
||||
|
||||
```bash
|
||||
# Clean build cache
|
||||
docker builder prune
|
||||
|
||||
# Delete unused images
|
||||
docker image prune -a
|
||||
|
||||
# Clean all unused resources
|
||||
docker system prune -a
|
||||
```
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Accelerate Builds with UV Cache
|
||||
|
||||
The Dockerfile uses UV's cache mount feature, which can significantly speed up rebuilds:
|
||||
|
||||
```bash
|
||||
# Rebuild using UV cache
|
||||
docker build --cache-from motphys/motrixlab:latest -t motphys/motrixlab:latest .
|
||||
```
|
||||
|
||||
### GPU Resource Allocation
|
||||
|
||||
You can specify the number of GPUs to use in `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
deploy:
|
||||
resources:
|
||||
reservations:
|
||||
devices:
|
||||
- driver: nvidia
|
||||
device_ids: ["0", "1"] # Use GPU 0 and 1
|
||||
capabilities: [gpu]
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- Check out the [Quick Start Tutorial](hello_motrixlab.md) to learn basic MotrixLab usage
|
||||
- Read [Training Examples](../demo/cartpole.md) for more training tasks
|
||||
- Explore [Basic Framework](../tutorial/basic_frame.md) for in-depth understanding of the framework architecture
|
||||
Reference in New Issue
Block a user