Spaces:
Sleeping
Sleeping
File size: 16,483 Bytes
3cc2706 e96076c 3cc2706 | 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 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | {% extends "base.html" %}
{% block title %}embodied-efficiency: run the VLA on the robot, not just in the demo{% endblock %}
{% block content %}
<!-- ============================ HERO ============================ -->
<section class="grid items-center gap-10 lg:grid-cols-[1.05fr_0.95fr]">
<div>
<span class="inline-flex items-center gap-2 rounded-full bg-signal-50 px-3 py-1 text-xs font-semibold text-signal-700 ring-1 ring-inset ring-signal-200/70 dark:bg-signal-500/10 dark:text-signal-300 dark:ring-signal-400/20">
<span class="ee-breathe h-1.5 w-1.5 rounded-full bg-signal-500"></span>
Kernels 路 quantization 路 a runtime trust layer 路 no API key
</span>
<h1 class="mt-4 text-4xl font-semibold leading-[1.08] tracking-tight text-slate-900 dark:text-slate-50 sm:text-5xl">
Run the VLA on the robot,<br class="hidden sm:block" />
<span class="ee-gradient-text">not just in the demo.</span>
</h1>
<p class="mt-4 max-w-xl text-lg leading-relaxed text-slate-600 dark:text-slate-300">
A vision-language-action model folds laundry in the lab. Put it on the actual
robot and it stalls, and not because it can't do the task. It can't do it fast
enough. The capability is there. What's left is engineering: get it inside a
latency budget, then keep it safe once it's running.
</p>
<div class="mt-7 flex flex-wrap items-center gap-3">
<a href="#compiler"
class="ee-focus inline-flex items-center gap-2 rounded-xl bg-signal-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-signal-700/25 transition hover:bg-signal-700">
<svg class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 17l4-8 4 5 3-6 4 9"/></svg>
Set a deploy budget
</a>
<a href="{{ thesis_url }}" target="_blank" rel="noopener"
class="ee-focus inline-flex items-center gap-2 rounded-xl border border-slate-300 bg-white/70 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:border-signal-300 hover:bg-white dark:border-white/15 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10">
Read the thesis
</a>
</div>
</div>
<!-- Hero proof card: the deploy gap, drawn to scale. -->
<div class="ee-card p-6 sm:p-7">
<div class="flex items-center justify-between">
<span class="ee-chip bg-signal-50 text-signal-700 ring-1 ring-inset ring-signal-200/70 dark:bg-signal-500/10 dark:text-signal-300 dark:ring-signal-400/20">
<svg class="h-3 w-3" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 17l4-8 4 5 3-6 4 9"/></svg>
The deploy gap
</span>
<span class="ee-mono text-xs font-medium text-slate-400">control rate, Hz</span>
</div>
<div class="mt-6 space-y-5">
<div>
<div class="flex items-baseline justify-between text-sm">
<span class="font-medium text-slate-600 dark:text-slate-300">End-to-end VLA today</span>
<span class="ee-mono font-semibold text-slate-700 dark:text-slate-200">3–5 Hz</span>
</div>
<div class="ee-meter ee-meter--hold mt-1.5"><span style="width: 6%"></span></div>
</div>
<div>
<div class="flex items-baseline justify-between text-sm">
<span class="font-medium text-slate-600 dark:text-slate-300">A robot arm, to move smoothly</span>
<span class="ee-mono font-semibold text-slate-700 dark:text-slate-200">50–100 Hz</span>
</div>
<div class="ee-meter ee-meter--go mt-1.5"><span style="width: 100%"></span></div>
</div>
</div>
<p class="mt-6 rounded-xl ee-panel px-4 py-3 text-sm leading-relaxed text-slate-600 dark:text-slate-300">
<span class="font-semibold text-slate-800 dark:text-slate-100">A 10–30× gap.</span>
This repo closes it with the levers that actually pay off at batch 1, then
adds a supervisor so the fast policy is also one you can leave running.
</p>
</div>
</section>
<!-- ============================ STATS ============================ -->
<section class="mt-12 grid grid-cols-2 gap-4 sm:grid-cols-4">
{% set stats = [
("5.9×", "CUDA-graph speedup", "measured on a T4, beats torch.compile"),
("0.089", "ms / action, best case", "bf16 + graph + action-chunking"),
("4", "experiments on low-bit", "the win and the negative, same rigor"),
("0", "API keys, 0 GPU needed", "the console runs the real code, free")
] %}
{% for big, label, sub in stats %}
<div class="ee-card p-5">
<div class="ee-mono text-2xl font-bold tracking-tight text-slate-800 dark:text-slate-100 sm:text-3xl">{{ big|safe }}</div>
<div class="mt-1 text-sm font-semibold text-slate-600 dark:text-slate-300">{{ label }}</div>
<div class="mt-1 text-xs text-slate-400 dark:text-slate-500">{{ sub }}</div>
</div>
{% endfor %}
</section>
<!-- ========================= DEPLOY COMPILER ========================= -->
<section id="compiler" class="mt-16 scroll-mt-24">
<div class="flex items-center gap-3">
<span class="grid h-10 w-10 place-items-center rounded-xl bg-gradient-to-br from-signal-600 to-cyan2-400 text-white shadow-md shadow-signal-700/25">
<svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><path d="m7 14 3-4 3 3 4-6"/></svg>
</span>
<div>
<h2 class="text-2xl font-semibold tracking-tight sm:text-3xl">Deploy-compiler</h2>
<p class="text-sm text-slate-500 dark:text-slate-400">Set a budget. It picks the best config off the real-L4 frontier, live.</p>
</div>
</div>
<div class="mt-6 grid gap-5 lg:grid-cols-[0.85fr_1.15fr]">
<!-- Budget knobs -->
<div class="ee-card p-6">
<div class="flex items-center justify-between">
<h3 class="font-semibold text-slate-800 dark:text-slate-100">Deployment budget</h3>
<button type="button" id="reset-budget" class="ee-focus rounded-lg px-2 py-1 text-xs font-medium text-slate-500 transition hover:bg-slate-200/60 dark:text-slate-400 dark:hover:bg-white/5">Reset</button>
</div>
<div class="mt-5">
<label class="text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400">Minimize</label>
<div class="mt-2 grid grid-cols-2 gap-2" id="objective">
<button type="button" data-obj="latency" class="ee-obj ee-focus rounded-xl border px-3 py-2.5 text-sm font-semibold transition">
Latency
<span class="block text-[11px] font-normal text-slate-400">fastest action</span>
</button>
<button type="button" data-obj="footprint" class="ee-obj ee-focus rounded-xl border px-3 py-2.5 text-sm font-semibold transition">
Footprint
<span class="block text-[11px] font-normal text-slate-400">smallest model</span>
</button>
</div>
</div>
<div class="mt-6 space-y-5">
<div>
<div class="flex items-center justify-between text-sm">
<label for="max_lat" class="font-medium text-slate-600 dark:text-slate-300">Max latency</label>
<span class="ee-mono text-xs font-semibold text-signal-700 dark:text-signal-300"><span id="v_lat">12.4</span> ms/action</span>
</div>
<input id="max_lat" type="range" min="0" max="1000" value="1000" class="ee-range mt-2" />
</div>
<div>
<div class="flex items-center justify-between text-sm">
<label for="max_mb" class="font-medium text-slate-600 dark:text-slate-300">Max footprint</label>
<span class="ee-mono text-xs font-semibold text-signal-700 dark:text-signal-300"><span id="v_mb">51</span> MB</span>
</div>
<input id="max_mb" type="range" min="13" max="51" step="0.1" value="51" class="ee-range mt-2" />
</div>
<div>
<div class="flex items-center justify-between text-sm">
<label for="max_rmse" class="font-medium text-slate-600 dark:text-slate-300">Max action error (fidelity)</label>
<span class="ee-mono text-xs font-semibold text-signal-700 dark:text-signal-300">rMSE ≤ <span id="v_rmse">0.05</span></span>
</div>
<input id="max_rmse" type="range" min="0" max="0.30" step="0.005" value="0.05" class="ee-range mt-2" />
</div>
<div>
<div class="flex items-center justify-between text-sm">
<label for="max_stale" class="font-medium text-slate-600 dark:text-slate-300">Max staleness</label>
<span class="ee-mono text-xs font-semibold text-signal-700 dark:text-signal-300"><span id="v_stale">49</span> steps</span>
</div>
<input id="max_stale" type="range" min="0" max="49" value="49" class="ee-range mt-2" />
<p class="mt-1.5 text-[11px] leading-snug text-slate-400 dark:text-slate-500">Action-chunking runs many actions per sampler call: cheaper per action, but the last one is more stale. This knob sets how stale you'll allow.</p>
</div>
</div>
</div>
<!-- Pick + frontier -->
<div class="ee-card p-6">
<div id="pick-result"><!-- filled by app.js --></div>
<div class="mt-5">
<div class="flex items-center justify-between text-xs text-slate-400 dark:text-slate-500">
<span>Real-L4 frontier 路 27 configs</span>
<span class="inline-flex items-center gap-3">
<span class="inline-flex items-center gap-1"><span class="h-2 w-2 rounded-full" style="background:rgb(16 185 129)"></span>low error</span>
<span class="inline-flex items-center gap-1"><span class="h-2 w-2 rounded-full" style="background:rgb(244 100 110)"></span>high error</span>
</span>
</div>
<div id="pareto" class="mt-2 w-full"><!-- SVG injected by app.js --></div>
</div>
</div>
</div>
</section>
<!-- ========================= SAFETY SUPERVISOR ========================= -->
<section id="supervisor" class="mt-16 scroll-mt-24">
<div class="flex items-center gap-3">
<span class="grid h-10 w-10 place-items-center rounded-xl bg-gradient-to-br from-signal-600 to-cyan2-400 text-white shadow-md shadow-signal-700/25">
<svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
</span>
<div>
<h2 class="text-2xl font-semibold tracking-tight sm:text-3xl">Safety supervisor</h2>
<p class="text-sm text-slate-500 dark:text-slate-400">The runtime trust layer. It vets every action before it reaches a motor, live, on this server.</p>
</div>
</div>
<div class="mt-4 flex flex-wrap items-center gap-2 text-xs">
<span class="ee-chip bg-emerald-50 text-emerald-700 ring-1 ring-inset ring-emerald-200/70 dark:bg-emerald-500/10 dark:text-emerald-300 dark:ring-emerald-400/20">
<span class="ee-light ee-light--go"></span> measured, not asserted
</span>
<span class="text-slate-500 dark:text-slate-400">
On <strong>real DROID robot actions</strong> + labelled faults: the drift detector scores
<span class="ee-mono font-semibold text-slate-700 dark:text-slate-200">AUC 0.99</span>, and tuned to a 1% false-alarm budget it catches
<span class="ee-mono font-semibold text-slate-700 dark:text-slate-200">91%</span> of faults. Eval in the repo.
</span>
</div>
<div class="mt-6 grid gap-5 lg:grid-cols-[0.85fr_1.15fr]">
<!-- Scenario picker -->
<div class="ee-card p-6">
<h3 class="font-semibold text-slate-800 dark:text-slate-100">Send it an action to vet</h3>
<p class="mt-1 text-sm text-slate-500 dark:text-slate-400">The policy is calibrated on a normal posture. Pick what to throw at it.</p>
<form hx-post="/vet" hx-target="#verdict" hx-swap="innerHTML" class="mt-5 space-y-3">
<div class="space-y-2">
{% for key, label in scenarios %}
<label class="ee-scen flex cursor-pointer items-center gap-3 rounded-xl border border-slate-200 px-4 py-3 text-sm transition hover:border-signal-300 hover:bg-signal-50/40 dark:border-white/10 dark:hover:border-signal-400/40 dark:hover:bg-signal-500/5">
<input type="radio" name="scenario" value="{{ key }}" {% if loop.first %}checked{% endif %}
class="h-4 w-4 accent-signal-600" />
<span class="font-medium text-slate-700 dark:text-slate-200">{{ label }}</span>
</label>
{% endfor %}
</div>
<button type="submit"
class="ee-focus mt-2 inline-flex w-full items-center justify-center gap-2 rounded-xl bg-signal-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-signal-700/25 transition hover:bg-signal-700">
<span class="htmx-indicator inline-block h-4 w-4 animate-spin rounded-full border-2 border-white/40 border-t-white"></span>
Vet this action
</button>
</form>
</div>
<!-- Verdict + governance trail -->
<div class="ee-card p-6">
<div id="verdict">
<div class="flex h-full min-h-[18rem] flex-col items-center justify-center text-center">
<span class="grid h-14 w-14 place-items-center rounded-2xl bg-slate-100 text-slate-400 dark:bg-white/5 dark:text-slate-500">
<svg class="h-7 w-7" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
</span>
<p class="mt-4 text-sm font-medium text-slate-500 dark:text-slate-400">Pick an action and hit <span class="font-semibold text-slate-700 dark:text-slate-200">Vet this action</span>.</p>
<p class="mt-1 text-xs text-slate-400 dark:text-slate-500">The verdict, the action actually sent, and the running governance log show up here.</p>
</div>
</div>
</div>
</div>
</section>
<!-- ========================= CLOSING ========================= -->
<section class="mt-16">
<div class="ee-card relative overflow-hidden p-8 text-center sm:p-10">
<div class="pointer-events-none absolute inset-x-0 -top-24 mx-auto h-48 w-48 rounded-full bg-signal-400/20 blur-3xl"></div>
<div class="relative">
<h2 class="text-2xl font-semibold tracking-tight sm:text-3xl">Efficiency gets it onto the robot. The supervisor lets it stay.</h2>
<p class="mx-auto mt-2 max-w-2xl text-slate-600 dark:text-slate-300">
Everything here is measured and reproducible, on the hardware robots actually
carry. The code, the four-experiment low-bit study, and the full write-up are
public.
</p>
<div class="mt-6 flex flex-wrap justify-center gap-3">
<a href="{{ github_url }}" target="_blank" rel="noopener" class="ee-focus inline-flex items-center gap-2 rounded-xl bg-signal-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-signal-700/25 transition hover:bg-signal-700">
<svg class="h-4 w-4" viewBox="0 0 24 24" fill="currentColor"><path d="M12 .5C5.73.5.5 5.73.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.56v-2c-3.2.7-3.88-1.54-3.88-1.54-.52-1.33-1.28-1.69-1.28-1.69-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.03 1.77 2.7 1.26 3.36.96.1-.75.4-1.26.73-1.55-2.55-.29-5.24-1.28-5.24-5.69 0-1.26.45-2.29 1.19-3.1-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.18 1.18a11 11 0 0 1 5.8 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.11 3.05.74.81 1.19 1.84 1.19 3.1 0 4.42-2.69 5.39-5.25 5.68.41.36.78 1.06.78 2.14v3.17c0 .31.21.68.8.56A10.52 10.52 0 0 0 23.5 12C23.5 5.73 18.27.5 12 .5Z"/></svg>
View the repo
</a>
<a href="{{ thesis_url }}" target="_blank" rel="noopener" class="ee-focus inline-flex items-center gap-2 rounded-xl border border-slate-300 bg-white/70 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:border-signal-300 hover:bg-white dark:border-white/15 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10">
Read the thesis
</a>
</div>
</div>
</div>
</section>
<!-- Real-L4 Pareto frontier, serialised for the client-side compiler. -->
<script id="configs-data" type="application/json"></script>
{% endblock %}
|