concept-collection / turing-surface-cache
Stop counting the model as a knob
Somebody who came for Allen-Cahn starts at its defaults, not at Schnakenberg's, so the three models are three origins rather than one origin and two deviations from it. Each model's own defaults are now at distance zero, and the walk surrounds all three before exploring any of them far. The set of targets is unchanged; only the order is. While in the paragraph: the count was quoted as 8,400 from 228 x 37 geometries, but one of those 37 is the ellipsoid with all axes 1, which the walk skips because it *is* the unit sphere. 228 x 36 = 8,208, which is what the command reports.
Jeremy Magland <jmagland@flatironinstitute.org> committed commit 377e83e2f351 parent d71391e Browse files
2 changed files+17−9
README.mdmodified+9−5View file
@@ -88,16 +88,20 @@ idle machine into a contributor: it works through the parameter space,
8888 skipping whatever is already cached and computing and uploading the rest, and
8989 runs until stopped.
9090
91-Two decisions make that practical. The first is the order. About 8,400
92-combinations exist (228 model-parameter sets × 37 geometries, with the seed
91+Two decisions make that practical. The first is the order. About 8,200
92+combinations exist (228 model-parameter sets × 36 geometries, with the seed
9393 and dt pinned), which is roughly three GPU-weeks at this repo's ~180 steps/s —
9494 exhaustible in principle, but only if the useful part comes first. Since a
9595 visitor starts at the defaults and changes one dropdown at a time, the chance
9696 that a combination is ever requested falls off steeply with the number of
9797 knobs that differ from the defaults, so the walk proceeds by that distance:
98-every one-knob deviation before any two-knob one. One machine overnight covers
99-every one- and two-knob deviation from every model's defaults, which is most
100-of what anyone will ever click; the long tail can take as long as it likes.
98+every one-knob deviation before any two-knob one. The model is not counted
99+among those knobs: somebody who came for Allen–Cahn starts at its defaults
100+rather than at Schnakenberg's, so the three models are three origins rather
101+than one origin and two deviations from it, and each is surrounded before any
102+of them is explored far. One machine overnight covers every one- and two-knob
103+deviation from every model's defaults, which is most of what anyone will ever
104+click; the long tail can take as long as it likes.
101105
102106 The second is that within a distance the order is **random**, and that is the
103107 entire coordination mechanism. Several idle browsers walking the same tiers in
src/cache/autoWalk.tsmodified+8−4View file
@@ -12,6 +12,11 @@
1212 * ask for within a day rather than a month, and still covers everything in
1313 * the limit.
1414 *
15+ * The model is not one of those knobs. Someone who came for Allen–Cahn starts
16+ * at its defaults, not at Schnakenberg's, so the three models are three
17+ * origins rather than one origin and two deviations from it, and each is
18+ * surrounded before any of them is explored far.
19+ *
1520 * Within a distance the order is random, and that is the whole coordination
1621 * mechanism between machines: several idle browsers walking the same tiers in
1722 * different orders, each skipping what it finds already cached, rarely
@@ -23,7 +28,6 @@
2328 import type { Params } from '../mgpu/registry.ts';
2429 import {
2530 MODEL_CHOICES,
26- DEFAULT_MODEL_KEY,
2731 GEOMETRY_CHOICES,
2832 AUTO_DT,
2933 AUTO_SEED,
@@ -41,7 +45,8 @@ export interface AutoTarget {
4145 params: Params;
4246 geometry: string;
4347 geometryParams: Params;
44- /** How many knobs differ from the app's defaults. */
48+ /** How many knobs differ from this model's defaults — the model itself
49+ * not being one of them. */
4550 distance: number;
4651 }
4752
@@ -98,7 +103,6 @@ export function enumerateTargets(): AutoTarget[] {
98103 const geometries = geometryOptions();
99104 const out: AutoTarget[] = [];
100105 for (const [modelKey, choices] of Object.entries(MODEL_CHOICES)) {
101- const modelDistance = modelKey === DEFAULT_MODEL_KEY ? 0 : 1;
102106 for (const p of combos(choices, { dt: AUTO_DT })) {
103107 for (const g of geometries) {
104108 out.push({
@@ -106,7 +110,7 @@ export function enumerateTargets(): AutoTarget[] {
106110 params: p.values,
107111 geometry: g.geometry,
108112 geometryParams: g.params,
109- distance: modelDistance + p.distance + g.distance,
113+ distance: p.distance + g.distance,
110114 });
111115 }
112116 }