-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrucible.yaml.example
More file actions
143 lines (129 loc) · 7.39 KB
/
Copy pathcrucible.yaml.example
File metadata and controls
143 lines (129 loc) · 7.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# ─────────────────────────────────────────────────────────────────────────────
# Crucible project configuration — example template
#
# Copy this file to `crucible.yaml` and edit it for your project, or run
# `crucible init` to generate one automatically. This template is
# modality-agnostic — works for LM, vision, diffusion, world models, etc.
#
# To create a project spec for fleet runs, use:
# crucible project new my-project --template <lm|vision|diffusion|world_model|generic>
#
# For local-only development you don't need a project spec; this
# `crucible.yaml` file is enough.
# ─────────────────────────────────────────────────────────────────────────────
name: my-project
version: "0.1.0"
# ─── Compute provider ───────────────────────────────────────────────────────
provider:
type: runpod # "runpod" | "ssh"
ssh_key: ~/.ssh/id_ed25519_runpod
# image: runpod/pytorch:2.6.0-py3.11-cuda12.4.1-devel-ubuntu22.04
# gpu_types: ["NVIDIA GeForce RTX 4090"]
# gpu_count: 1
# interruptible: true # false = secure/on-demand pods
defaults:
container_disk: 30
volume_disk: 0
workspace_path: /workspace/project
python_bin: python3
env_source: .env.runpod.local # env file synced to pods
# ─── Data pipeline ──────────────────────────────────────────────────────────
# Configure for your dataset. Leave `repo_id` empty if you ship data via
# local_files on project specs instead.
data:
source: huggingface # "huggingface" | "local_files" | "wandb_artifact"
repo_id: "" # e.g. "HuggingFaceFW/fineweb-edu"
local_root: ./data
manifest: manifest.json
# Remote data readiness probe. If `probe.paths` is empty (default),
# fleet bootstrap skips the data step entirely. Populate it for
# projects that ship their own dataset.
probe:
paths: [] # e.g. ["data/train.h5", "data/val.h5"]
# script: "" # custom readiness script (optional)
download_command: "" # run when probe reports missing data
# ─── Fleet / SSH reliability ────────────────────────────────────────────────
# Per-step timeouts and initial-connect backoff. Defaults work for
# typical RunPod pods; tune step_timeouts["pip_install"] up if you
# have a big requirements.txt, or initial_connect.max_wait up for
# slow cloud types.
fleet:
ssh:
initial_connect:
max_attempts: 6
backoff_base: 5 # seconds; doubles per attempt
max_wait: 180 # total budget
step_timeouts:
default: 300
sync_repo: 600
pip_install: 900
data_download: 1800
data_probe: 30
# ─── Training backends ──────────────────────────────────────────────────────
# Use `torch` for LM-style training, `generic` for diffusion / world models /
# custom trainers. Multiple backends can coexist.
training:
- backend: torch
script: train.py
# ─── Metrics ────────────────────────────────────────────────────────────────
metrics:
primary: val_loss # metric the leaderboard ranks by
direction: minimize # "minimize" | "maximize"
# secondary: val_acc # optional display metric
# size: model_bytes # for Pareto frontier analysis
# ─── Experiment presets ─────────────────────────────────────────────────────
# Presets are keyed by env var name — Crucible exports them before launching
# your training script. Add / rename to suit your workflow.
presets:
smoke: # 60s sanity check
MAX_WALLCLOCK_SECONDS: "60"
ITERATIONS: "400"
screen: # 1h directional signal
MAX_WALLCLOCK_SECONDS: "3600"
ITERATIONS: "2000"
proxy: # 30min medium confidence
MAX_WALLCLOCK_SECONDS: "1800"
ITERATIONS: "6000"
# ─── Autonomous researcher ──────────────────────────────────────────────────
researcher:
model: claude-sonnet-4-6-20250514
budget_hours: 10.0
max_iterations: 20
program_file: program.md
# ─── Weights & Biases ───────────────────────────────────────────────────────
wandb:
required: false # set true if every run must log to W&B
project: "" # or set WANDB_PROJECT in env
entity: "" # optional team/entity
mode: online # "online" | "offline" | "disabled"
# ─── Execution policy ───────────────────────────────────────────────────────
execution_policy:
require_remote: false # true = refuse to run on local machine
required_provider: "" # e.g. "runpod"
allow_local_dev: true
# ─── Version store ──────────────────────────────────────────────────────────
store_dir: .crucible
# ─── Hub integration ────────────────────────────────────────────────────────
# hub_dir: ~/.crucible-hub # cross-project knowledge store
# active_track: "" # current research track
# ─── Sync exclusions ────────────────────────────────────────────────────────
# Paths excluded when rsyncing code to fleet pods. Keep this list tight —
# anything not listed here gets shipped with every sync.
sync_excludes:
- .git
- .venv
- __pycache__
- .crucible/designs
- .crucible/context
- .crucible/notes
- .crucible/store.jsonl
- .crucible/notes.jsonl
- logs
- data/datasets
- fleet_runs
- .DS_Store
# ─── Output paths ───────────────────────────────────────────────────────────
results_file: experiments.jsonl
fleet_results_file: experiments_fleet.jsonl
logs_dir: logs
nodes_file: nodes.json