mirror of
https://github.com/hanzoai/papers.git
synced 2026-10-29 07:34:31 +00:00
Both report benchmarks that already live in hanzoai/cloud under bench/, so the numbers have a script behind them rather than a spreadsheet. hanzo-dormant-agents takes apart the estimate that costs an agent as a process. State, execution and isolation are separable and differ by five orders of magnitude: a dormant agent is 477 bytes on disk and resumes in 0.034 ms, a parked loop is 601 bytes of heap, and the isolation boundary — the expensive one — is only owed by an agent actually running. The paper argues the container is worth its price where it is needed and says so; the claim is about which agents are charged for it. hanzo-multi-hop-retrieval is a negative result. On LoCoMo a dense retriever finds every required turn for 78.2% of single-hop questions and 22.7% of multi-hop ones, but finds at least one required turn about 80% of the time in both — so it understands the questions and cannot reach all of the answer. Four retrieval policies over one fixed index move that by at most 0.7 points and two make it worse. A diagnostic says why it was never going to work: 95.4% of multi-hop evidence spans sessions and the median worst-ranked gold turn sits at rank 67, so the missing signal is linkage rather than similarity. Publishing the dead end is the useful part. Each paper carries results-data.tex, generated from the runs, and prints XXX in place of any constant that file does not supply — a number cannot drift from its measurement without the drift showing on the page. Both compile under the CI gate's flags, -Werror included. INDEX.md is regenerated by make index, which also picks up the papers added since it was last written and the header its current generator emits. Co-authored-by: Hanzo Dev <[email protected]>
78 lines
3.5 KiB
TeX
78 lines
3.5 KiB
TeX
\section{Capacity, from the measured constants only}
|
|
\label{sec:capacity}
|
|
|
|
The constants in \S\ref{sec:state}--\S\ref{sec:isolation} determine a capacity
|
|
model. Everything in this section is \modeled{} --- arithmetic over measured
|
|
inputs and stated assumptions --- and nothing in it was observed at the scales
|
|
named. We give it because the arithmetic is the point of the decomposition, and
|
|
we mark it so that no reader mistakes it for a result.
|
|
|
|
\subsection{Storage is set by population, and is negligible}
|
|
|
|
Dormant agents are \rFleetPer{}\,bytes each, so storage is exactly linear in how
|
|
many agents exist:
|
|
|
|
\begin{center}
|
|
\begin{tabular}{lrr}
|
|
\toprule
|
|
\textbf{Registered agents} & \textbf{On disk} & \textbf{At list price/mo} \\
|
|
\midrule
|
|
$10^6$ & 454.6\,MiB & \$\rFleetStorage{} \meas{}/\modeled{} \\
|
|
$10^8$ & 44.4\,GiB & \$0.89 \modeled{} \\
|
|
$10^9$ & 444.2\,GiB & \$8.90 \modeled{} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
A billion registered agents is under half a terabyte and under ten dollars a
|
|
month of object storage. Storage is not the constraint and it will not become
|
|
the constraint; \S\ref{sec:limits} names the thing that does.
|
|
|
|
\subsection{Memory is set by concurrency, and the working set dominates}
|
|
|
|
Live agents cost memory. The measured floor is \rGoPer{}\,bytes, but a working
|
|
agent holds context, so the honest model is parameterized by that working set
|
|
rather than by the floor. On a 128\,GiB node:
|
|
|
|
\begin{center}
|
|
\begin{tabular}{lrrr}
|
|
\toprule
|
|
\textbf{Per-agent working set} & \textbf{Live agents/node} & \textbf{$10^9$ reg.\ @ 1\%} & \textbf{@ 0.1\%} \\
|
|
\midrule
|
|
\rGoPer{}\,B (measured floor) & 228\,M & 1 node & 1 node \\
|
|
10\,KiB & 13.4\,M & 1 node & 1 node \\
|
|
64\,KiB & 2.1\,M & 5 nodes & 1 node \\
|
|
1\,MiB & 131\,k & 77 nodes & 8 nodes \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
\modeled{} throughout. The left column is the one that matters and it is the one
|
|
this paper did not measure: a fleet's cost is set by how much context its agents
|
|
hold while running, not by the residency floor of the primitive holding them.
|
|
What the measurement establishes is that the \emph{floor} contributes nothing ---
|
|
at \rGoPer{}\,bytes it is invisible against any realistic working set --- so the
|
|
platform's overhead is not the thing to optimize.
|
|
|
|
The structural claim survives the parameterization: memory tracks the agents
|
|
that are \emph{awake}. Under any of these rows, a billion registered agents at
|
|
realistic concurrency is a handful of commodity nodes rather than a datacenter,
|
|
and the difference between this and the 128\,TB estimate in \S\ref{sec:intro} is
|
|
entirely that the estimate charged every registered agent for an isolation
|
|
boundary it was not using.
|
|
|
|
\subsection{What the bill looks like}
|
|
|
|
At published rates for the always-on control plane --- \rPlaneCpu{}\,vCPU and
|
|
\rPlaneRam{}\,GB, \$\rPlaneCost{}/month~\cite{railway} \cited{} --- the fixed
|
|
cost of the platform exceeds the storage cost of a billion dormant agents by two
|
|
orders of magnitude. In other words, at any population, \emph{the agents are not
|
|
the bill}. The bill is the compute for the agents that are awake, plus the item
|
|
in \S\ref{sec:limits} that grows without bound.
|
|
|
|
We state one exclusion emphatically, because omitting it would make every figure
|
|
here misleading: \textbf{model tokens are not in this model and they dominate
|
|
it.} A single frontier-model call costs cents; the infrastructure under an agent
|
|
turn costs microdollars. Any per-call price derived from this paper sits
|
|
\emph{beside} token billing and must never be presented as including it.
|