Ёмкость кэша активаций¶
Жёсткая оценка без sharing (worst case: каждый геном и каждый breeder держат все вершины на всём батче).
Zero-sharing bound
[ n_{\mathrm{img}} = \left\lfloor \frac{B_{\mathrm{cache}}}{(P + \rho P)\, V\, C_{\max}\, H_{\max}\, W_{\max}\, \cdot 4} \right\rfloor ] где \(V = 1 + L_{\max} N_{\max}\) — верхняя оценка числа вершин, 4 — байт float32, \(\rho P\) — inherited breeders.
Функция: strict_full_batch_image_limit. Script 11 использует bound + OOM-лестницу val \(4000\to 3000\to 2000\).
Мягкое и жёсткое вытеснение¶
В ForwardActivationCache:
- soft: resident \(\ge 0.55\, B\) — ranked drip до \(0.50\, B\), остальной unused остаётся;
- hard: \(\ge 0.70\, B\) — drip до \(0.58\, B\), иначе covered parents;
- panic \(\ge 0.75\, B\) — ranked drip ≤10% бюджета, без
empty_cache.
При fitness_forward_hash_cache_strict_capacity=True превышение бюджета после поколения — CacheCapacityViolation (не «тихо пропустить put»).
Общее использование и верхняя граница¶
Реальный hit-rate \(\gg 0\) из-за общих префиксов и elite-наследования, поэтому \(n_{\mathrm{img}}\) — нижняя оценка безопасного full-batch. Wave-simulator (cache_wave_sim) проверяет политики eviction без свёрток.

Результаты: ёмкость кэша.