client.run() method is designed for scientists and ML practitioners who want to submit GPU workloads without needing expertise in Docker or Kubernetes. Point it at your training project and let the SDK handle the rest.
Install with the
run extra to use this feature:Why Use client.run()?
Traditional GPU workload submission requires:
- Writing a Dockerfile optimized for your ML framework
- Choosing the right base image (CUDA version, framework version, etc.)
- Building and pushing the container image
- Authenticating to your container registry
- Writing a Kubernetes manifest
- Submitting via the API
client.run(), all of this happens automatically:
What It Does Automatically
1
Framework Detection
Analyzes your
requirements.txt to identify PyTorch, TensorFlow, JAX, or other frameworks and selects the optimal NVIDIA NGC base image.2
Dockerfile Generation
Creates an optimized Dockerfile with proper CUDA configuration, dependency installation, and entrypoint setup.
3
Container Build & Push
Uses
docker buildx build --push to build and push in a single efficient step. For AWS ECR and Google Artifact Registry, authentication and repository creation are handled automatically. Pulls the :latest tag to seed the layer cache for faster rebuilds.4
Kubernetes Manifest
Generates the appropriate manifest (Job or RayJob) with correct GPU resource requests, environment variables, and volume mounts.
5
Workload Submission
Submits the workload to Chamber with proper workload class, priority, and team assignment.
Supported Container Registries
Chamber automatically handles authentication and repository creation for major cloud registries. Just provide your registry URL and the SDK does the rest.Google Artifact Registry
Full auto-authentication via gcloud CLI. Repositories are created automatically if they don’t exist.
AWS ECR
Full auto-authentication via AWS CLI. Repositories are created automatically if they don’t exist.
Prerequisites
Docker
Docker must be installed and running on your machine. The SDK uses Docker to build and push images.
gcloud CLI
For Google Artifact Registry. Install and run
gcloud auth login.AWS CLI
For AWS ECR. Install and run
aws configure.- Google Artifact Registry
- AWS ECR
Setup:Required IAM Permissions:
artifactregistry.repositories.getartifactregistry.repositories.createartifactregistry.repositories.uploadArtifacts
Basic Usage
Minimal Example
- Google Artifact Registry
- AWS ECR
With Progress Callbacks
Monitor each stage of the pipeline:- Google Artifact Registry Output
- AWS ECR Output
Wait for Completion
Block until the workload finishes:Registry Configuration
Configure your container registries once and reference them by name. This makes it easy to switch between dev/staging/prod environments.Setting Up Named Registries
Add registries to~/.chamber/config.json:
Using Named Registries
Once configured, use registries by name:Configuration File
Create a.chamber.yaml file in your project directory to avoid repeating parameters:
Dry Run (Preview Mode)
Preview exactly what will happen without building or submitting:Save Generated Files
Inspect the generated Dockerfile and manifest:Framework Detection
The SDK automatically detects your ML framework fromrequirements.txt and selects the optimal base image:
Override the base image if needed:
Distributed Training
The SDK auto-detects distributed training frameworks and configures the appropriate launch command:
Force a specific distributed mode:
Using an Existing Dockerfile
Skip Dockerfile generation and use your own:Registry Auto-Authentication
The SDK automatically detects your registry type and handles authentication seamlessly. No manualdocker login required.
- Google Artifact Registry
- AWS ECR
When using Google Artifact Registry, the SDK automatically:Supported regions: All GCP regions (us-central1, us-east1, europe-west1, asia-northeast1, etc.)
- Detects GAR registry URLs (pattern:
{region}-docker.pkg.dev/{project}/{repo}) - Authenticates Docker using your gcloud CLI credentials
- Creates the repository if it doesn’t exist
How It Works
When you callclient.run(), the SDK:
This means you can switch between registries just by changing the URL—no code changes required.
All Parameters
Error Handling
Configuration Priority
Settings are resolved in this order (highest priority first):- Function arguments —
client.run(..., gpus=8)overrides everything - Project
.chamber.yaml— Project-specific settings - Global
~/.chamber/config.json— Default registry and other global settings - Auto-detection — Framework, entrypoint, Python version
Registry Resolution
Theregistry parameter can be a name or URL:
- If it looks like a URL (contains
.or/), it’s used as-is - Otherwise, it’s looked up in
~/.chamber/config.jsonunderregistries - If not specified, the
default_registryfrom config is used
Caching
The SDK computes a content hash of your project and uses it as the image tag. If the image already exists in the registry, the build and push steps are skipped:no_cache=True:

