Skip to main content
Are you a large language model? This page is available as raw markdown at /artifacts.md. The full docset is at /llms-full.md and the index is at /llms.md.

Artifacts

Artifacts are the files a job keeps: plots, metrics, checkpoints, trained weights. Everything else on the machine is discarded when the job ends.

What is collected​

Two places, both collected into the job's results:

  • $C3_ARTIFACTS_DIR, a directory that exists in every job.
  • Any directory listed under output: in .c3, relative to your workspace.
import os, json
with open(os.path.join(os.environ["C3_ARTIFACTS_DIR"], "metrics.json"), "w") as f:
json.dump(results, f)
output:
- ./results
- ./checkpoints

Collection happens after your script exits. If the script succeeds but the upload fails, the job is marked FAILED with reason UPLOAD_ERROR; contact support with the report code, since the compute already ran. If the script fails, times out or is cancelled, C3 still tries to upload whatever was written.

Download​

c3 pull job_abc123             # into ./job_abc123/
c3 pull job_abc123 results # only the results/ folder
c3 pull # previously undownloaded jobs among the latest 100 succeeded jobs
c3 pull job_abc123 --json # machine-readable report instead of progress

Results are also browsable with the data commands, at two equivalent paths:

c3 data ls /jobs/job_abc123/
c3 data ls /projects/my-project/jobs/job_abc123/
c3 data cp /jobs/job_abc123/ ./output/

Reuse results in another job​

Mount a finished job's artifacts directly, without downloading:

datasets:
- ref: /jobs/job_abc123
mount: /data/previous

This is how to build pipelines. Preprocess in one job, train in the next with ref: /jobs/<preprocess-job>, evaluate in a third with ref: /jobs/<train-job>. The data never leaves C3 storage.

Storage usage​

Artifact bytes count towards your storage usage, shown by c3 balance. There is no storage quota on any plan. See Pricing and plans.