Программный интерфейс: кэш Меркла прямого прохода¶
Пакет cnn_neat.forward_cache (experimental). Экспорт: ForwardActivationCache, хэши, план уникальный промах (unique-miss), eviction.
Хэши (hashes.py)¶
| Функция | Смысл |
|---|---|
data_id_from_tensor |
SHA256 всего тензора + class/seed/indices/namespace |
batch_data_id |
Срез [start:end] того же data-id |
input_node_hash |
Входной вид: view, data_id, \(C,H,W\) |
edge_hash / edge_hash_from_conv |
Геометрия + байты весов + optional edge scalar |
merge_node_hash |
Merkle-узел: активация, merge mode, \(C,H,W\), отсортированные \((h_e, h_{\mathrm{src}})\) |
sort_merge_inputs |
Стабильный порядок входов |
Hit по \(h\) ⇒ тот же активационный тензор (корректность кэша).
Пул и оверлей¶
ActivationPool, PoolEntry, UnionOverlay, OverlayNode, OverlayEdge, GenomeId — resident-активации и граф «кто использует какой hash».
ForwardActivationCache (executor.py): execute(..., store_activations, defer_commit), commit_pending, discard_pending. Константы: soft 55%→50%, hard 70%→58%, drip ≤10% бюджета без empty_cache; unused ниже keep-линии не вычищается.
Запланированный уникальный промах (planned.py)¶
| Тип / функция | Роль |
|---|---|
MissRecipe, GenomePlan, PopulationWorkPlan |
Что ещё не в пуле |
plan_population_misses |
Один compute на уникальный miss-hash |
execute_planned_genome / execute_planned_population |
GPU-проход + сборка выходов |
После каждого генома оставляют elite ∪ remaining-needed. Приоритетнее streaming elite, если оба флага True.
Вытеснение (eviction.py)¶
evict_until, eviction_rank_key, has_heirs, refresh_covered_flags, refresh_heir_flags, drop_doomed_bulk, drop_low_value_bulk, drop_unprotected, evict_unused_without_heirs, is_doomed_entry, is_low_value_entry.
Covered-by-children родители вытесняются раньше; output/frontier — позже.
История¶
append_cache_history_point, load_cache_history, point_from_cache → forward_hash_cache_history.json для Studio.
Математика: merkle-cache, ёмкость. Реализация: software/forward-cache.