Перейти к содержанию

Кэш Меркла активаций

Content-addressed пул промежуточных feature map. Если два генома разделяют префикс DAG и байты весов на этом префиксе, активация узла переиспользуется без повторного Conv2d.

Корректность hit

Если \(h_{\mathrm{merge}}(v,G,\mathbf{X}) = h_{\mathrm{merge}}(v',G',\mathbf{X}')\) при том же data_id, то тензоры активаций совпадают: хэш включает payload весов, геометрию, режим merge и упорядоченные входы.

Формулы хэшей

Идентичность батча:

\[ \mathrm{data\_id}(\mathbf{X}) = \mathrm{SHA256}(\texttt{data-v2},\; \mathrm{shape},\; \mathrm{dtype},\; k,\; \mathrm{seed},\; \mathrm{indices},\; \mathrm{bytes}(\mathbf{X})) \]

Ребро:

\[ h_e = \mathrm{SHA256}(\texttt{edge},\; k_h,k_w,\; s,\; p,\; \mathrm{bytes}(W),\; \mathrm{bias},\; w_{\mathrm{edge}}) \]

Узел слияния (Merkle):

\[ h_{\mathrm{merge}} = \mathrm{SHA256}\bigl(\texttt{merge},\; \sigma,\; \mathrm{mode},\; C,H,W,\; \mathrm{sort}\{(h_e,h_{\mathrm{src}})\}\bigr) \]

Входной вид: input_node_hash(view, data_id, C, H, W).

Запланированный уникальный промах

Пусть \(\mathcal{M}\) — множество miss-hash по всей оставшейся популяции. GPU считает каждый \(h\in\mathcal{M}\) один раз (plan_population_misses → execute_planned_population). После оценки генома \(i\) в пуле остаются:

\[ \mathrm{keep} = \mathrm{elite}^{(i)} \cup \mathrm{needed}(\{G_{i+1},\ldots,G_P\}) \]

Streaming elite (defer_commit): активации коммитятся только если геном вошёл в running top-\(\rho P\). Reconciliation после breed — metadata-only, без второго forward.

Park перед GD: граф на host; после GD — selective invalidate Merkle-map геномов, у которых веса реально изменились (L1-гейт).

Merkle unique-miss

Цепочка data_id → edge_hash → merge_node_hash → hit в пуле.

Cache overlay

Union overlay популяции: общие префиксы DAG делят активации.

API: forward-cache.