Skip to main content

Quickstart

C3 brings GPU compute to academics. Configure your project with a simple .c3 file, and C3 handles provisioning GPUs from multiple data centers so you get compute when you need it, at competitive prices.

Install the CLI

curl -fsSL https://raw.githubusercontent.com/samleeney/c3/prod/install.sh | sh

Then authenticate:

c3 login

This opens your browser to sign in. Credentials are stored locally in ~/.c3/.

Run your first job

Clone the examples repo and run a GPU benchmark:

git clone https://github.com/samleeney/c3-examples.git
cd c3-examples/jax-matmul
c3 init

This creates a .c3 config. Open it and set it up:

# .c3
project: jax-matmul-example
script: run.sh
gpu: l40
time: "00:10:00"

python:
project: ./ # build env from pyproject.toml + uv.lock

output:
- ./results # collected after the job finishes

The script field points to a bash script with your execution commands:

# run.sh
#!/bin/bash
python3 train.py

All job configuration (GPU, time limit, datasets, etc.) lives in .c3 — the script is just the commands to run. The python.project setting tells C3 to build and cache your Python environment from pyproject.toml + uv.lock, so unchanged dependencies are reused instantly across jobs. See Environment for details.

Now deploy:

c3 deploy

C3 provisions a GPU, installs your Python dependencies, runs your script, and uploads the results. See Project Configuration for how each field works.

Check status and download results

Monitor your job:

c3 squeue
JOB ID                     PROJECT                  STATUS       SUBMITTED            GPU
job_abc123 jax-matmul-example RUNNING 2024-01-15 10:30:00 l40

You can also view your jobs in the web dashboard.

Once complete, pull the results:

c3 pull job_abc123

Your output files are downloaded to ./job_abc123/results/.

Add a dataset

For jobs that need larger data, upload it to C3's storage once and mount it into any job:

c3 data cp ./my-data/ /datasets/my-data/

Then reference it in your .c3:

datasets:
- ref: /datasets/my-data # the remote path you uploaded to
mount: /data/my-data # where it appears on the GPU

Your script reads from /data/my-data as if the files were local. See Data Mounting for details.

Start a new project

Create a .c3 config for your own project:

cd my-project
c3 init

Edit the .c3 file to set your GPU, time limit, and script (a bash script with your execution commands), then deploy with c3 deploy.


Next steps: Learn about project configuration for all .c3 options, data mounting for working with datasets, artifact output for collecting results, environment for Python dependencies, or browse the marketplace to see available GPUs and pricing.