|
| 1 | +export const metadata = { |
| 2 | + title: "temporal policies (liquid networks) — c0mpute", |
| 3 | + description: |
| 4 | + "Train and serve CfC/LTC liquid neural networks and GRU baselines on c0mpute workers: infernet.temporal.train and infernet.temporal.infer on the existing job and receipt protocol.", |
| 5 | + alternates: { canonical: "https://c0mpute.com/temporal" }, |
| 6 | +}; |
| 7 | + |
| 8 | +const Code = ({ children }: { children: string }) => ( |
| 9 | + <pre className="overflow-x-auto border border-[var(--color-border,#333)] p-4 text-xs leading-6"> |
| 10 | + <code>{children}</code> |
| 11 | + </pre> |
| 12 | +); |
| 13 | + |
| 14 | +export default function TemporalPage() { |
| 15 | + return ( |
| 16 | + <div className="max-w-3xl mx-auto px-6 py-16 space-y-10"> |
| 17 | + <header className="space-y-2"> |
| 18 | + <h1 className="text-2xl font-bold accent">temporal policies</h1> |
| 19 | + <p className="comment">// liquid neural networks (CfC, LTC) and a GRU baseline, trained and served on c0mpute workers</p> |
| 20 | + </header> |
| 21 | + |
| 22 | + <section className="space-y-3 text-sm leading-7"> |
| 23 | + <h2 className="font-semibold text-[var(--color-fg)]">[ what it is ]</h2> |
| 24 | + <p> |
| 25 | + Small temporal policies that learn a desktop task (drafting an email reply, composing a Reddit post, |
| 26 | + reviewing LinkedIn notifications) from consented, redacted demonstrations recorded in{" "} |
| 27 | + <a href="https://w3bs.org/training/liquid-agent">W3BS Training</a>, then propose the next UI action.{" "} |
| 28 | + <a href="https://infernetprotocol.com/docs/liquid-agent">Infernet</a> runs the models; c0mpute finds a |
| 29 | + worker, moves the job and carries the receipt. Same offer, bid, accept and receipt protocol as every other |
| 30 | + workload. |
| 31 | + </p> |
| 32 | + </section> |
| 33 | + |
| 34 | + <section className="space-y-3 text-sm leading-7"> |
| 35 | + <h2 className="font-semibold text-[var(--color-fg)]">[ run a temporal worker ]</h2> |
| 36 | + <Code>{`curl -fsSL https://c0mpute.com/install.sh | sh # c0mpute 0.2.34+ |
| 37 | +npm i -g @infernetprotocol/cli # infernet 0.1.66+ |
| 38 | +infernet model runtime setup --yes # PyTorch + ncps, your choice |
| 39 | +c0mpute infernet temporal serve --train # accept training jobs |
| 40 | +c0mpute infernet temporal serve --model sha256:<hash> # serve a model`}</Code> |
| 41 | + <p> |
| 42 | + A worker advertises only what its Infernet reports: runtime version, CPU / CUDA / Apple GPU, RAM bucket |
| 43 | + and the model hashes it serves. It runs one training job at a time and never bids on a job without the |
| 44 | + user's upload approval. |
| 45 | + </p> |
| 46 | + </section> |
| 47 | + |
| 48 | + <section className="space-y-3 text-sm leading-7"> |
| 49 | + <h2 className="font-semibold text-[var(--color-fg)]">[ train on a trusted worker ]</h2> |
| 50 | + <Code>{`c0mpute infernet temporal train --dataset bundle.json --output ./model \\ |
| 51 | + --family cfc --baseline gru --worker <peer-id> --max-price 0.50 --yes`}</Code> |
| 52 | + <p> |
| 53 | + Without <code>--yes</code> it prints what would be sent and stops. <code>--worker</code> limits bids to |
| 54 | + peers you trust. The model comes back only if its weights hash matches the worker's receipt. A |
| 55 | + liquid family is picked only when it beats the GRU baseline. |
| 56 | + </p> |
| 57 | + </section> |
| 58 | + |
| 59 | + <section className="space-y-3 text-sm leading-7"> |
| 60 | + <h2 className="font-semibold text-[var(--color-fg)]">[ sticky, encrypted inference ]</h2> |
| 61 | + <Code>{`c0mpute infernet temporal predict --session s1 --model sha256:<hash> --input step.json`}</Code> |
| 62 | + <p> |
| 63 | + A session opens on one worker and stays there, because that worker holds its hidden state. Calls are |
| 64 | + end-to-end encrypted (X25519, HKDF, AES-256-GCM) between you and that worker, answered only for the peer |
| 65 | + that opened the session, run exactly once, and rejected if a step is late or repeated. |
| 66 | + </p> |
| 67 | + </section> |
| 68 | + |
| 69 | + <section className="space-y-3 text-sm leading-7"> |
| 70 | + <h2 className="font-semibold text-[var(--color-fg)]">[ honest notes ]</h2> |
| 71 | + <ul className="space-y-1 list-none"> |
| 72 | + <li><span className="accent">privacy</span> — a worker sees the redacted data it trains on. Encryption in transit does not change that. Local training is the default.</li> |
| 73 | + <li><span className="accent">results</span> — on synthetic mock traces GRU beat CfC (0.948 vs 0.869 episode success), so GRU is the default until real data says otherwise.</li> |
| 74 | + <li><span className="accent">not yet</span> — moving a live session to another worker; settlement for these receipts.</li> |
| 75 | + </ul> |
| 76 | + <p> |
| 77 | + Spec: <a href="https://github.com/profullstack/c0mpute/blob/master/dips/0026-infernet-temporal-workloads.md">DIP 0026</a> |
| 78 | + {" · "} |
| 79 | + <a href="https://infernetprotocol.com/docs/liquid-agent">Infernet docs</a> |
| 80 | + {" · "} |
| 81 | + <a href="https://w3bs.org/training/liquid-agent">W3BS: teach an agent</a> |
| 82 | + </p> |
| 83 | + </section> |
| 84 | + </div> |
| 85 | + ); |
| 86 | +} |
0 commit comments