mirror of
https://github.com/hanzoai/papers.git
synced 2026-10-29 07:34:31 +00:00
9-page paper (mechanism/brain split, memory-aware placement, bilinear utility + LinUCB, SLO objective quality - lambda*cost - mu*latency). Itemized cost model beyond API tokens: honest local-compute electricity figure (~$0.0001/1k tok, not free), cloud-GPU-rental-avoided, run-for-pay fleet angle, seat consolidation, overage avoidance, 1% routing fee, and a 20-person-team TCO table. Builds clean via pdflatex+bibtex.
52 lines
2.2 KiB
TeX
52 lines
2.2 KiB
TeX
\begin{figure}[t]
|
|
\centering
|
|
\begin{tikzpicture}[
|
|
font=\scriptsize,
|
|
node distance=3.4mm,
|
|
box/.style={draw, rounded corners=2pt, align=center, minimum height=5.5mm,
|
|
inner xsep=3pt, text width=60mm},
|
|
stage/.style={box, fill=hzslate!8, draw=hzslate!60},
|
|
reuse/.style={box, fill=hzgreen!14, draw=hzgreen!70},
|
|
load/.style={box, fill=hzblue!10, draw=hzblue!70},
|
|
cloud/.style={box, fill=hzslate!12, draw=hzslate!60},
|
|
learn/.style={box, fill=hzred!8, draw=hzred!55},
|
|
arr/.style={-{Latex[length=2mm]}, hzslate!80, line width=0.4pt}
|
|
]
|
|
|
|
\node[stage, fill=hzblue!10, draw=hzblue!70] (req)
|
|
{request \textit{(text, tokens, media, SLO)}};
|
|
\node[stage, below=of req] (cls)
|
|
{\textbf{classify} $\rightarrow$ \texttt{Task}\; (heuristic $\parallel$ encoder)};
|
|
\node[stage, below=of cls] (mem)
|
|
{\textbf{memory check}\; budget $=$ available $\times f$};
|
|
|
|
\node[reuse, below=of mem] (reuse)
|
|
{\textbf{1. Reuse} resident local model \;---\; \$0 marginal};
|
|
\node[load, below=of reuse] (load)
|
|
{\textbf{2. LoadLocal} that fits budget};
|
|
\node[cloud, below=of load] (cloud)
|
|
{\textbf{3. Cloud} \;---\; cheapest usable provider};
|
|
|
|
\node[learn, below=5mm of cloud] (loop)
|
|
{\textbf{enso learning loop}\\[1pt]
|
|
serve $\rightarrow$ \texttt{observe}$(u,x,p,r)$ $\rightarrow$ LinUCB update $\theta_u$};
|
|
|
|
\draw[arr] (req) -- (cls);
|
|
\draw[arr] (cls) -- (mem);
|
|
\draw[arr] (mem) -- (reuse);
|
|
\draw[arr] (reuse) -- (load) node[midway, right=1mm, hzslate!70, font=\tiny] {else};
|
|
\draw[arr] (load) -- (cloud) node[midway, right=1mm, hzslate!70, font=\tiny] {else};
|
|
\draw[arr] (cloud) -- (loop);
|
|
\draw[arr, dashed, hzred!70] (loop.east) -- ++(4mm,0) |- (cls.east)
|
|
node[pos=0.25, right, hzred!70, font=\tiny\itshape, align=left] {reward\\feedback};
|
|
|
|
\end{tikzpicture}
|
|
\caption{The router decision flow. A request is classified to a task, checked
|
|
against the memory budget, and placed by the ordered walk: reuse a resident
|
|
local model (zero marginal cost), else load a local model that fits, else fall
|
|
through to the cheapest usable cloud model. The learned policy (\texttt{enso})
|
|
closes the loop---each served request yields a reward that updates the per-user
|
|
LinUCB weights and, through them, future routing.}
|
|
\label{fig:decision}
|
|
\end{figure}
|