/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.