ExperimentConfig — полный справочник
Источник: cnn_neat/experiment.py. Менять поля только через dataclasses.replace / replace_experiment_config. Пустые пути заполняются в __post_init__.
JSON-файл (все дефолты — пример): configs/experiment.defaults.json. Загрузка: cnn_neat.experiment_io.load_experiment_config. Отсутствующие ключи оставляют дефолты библиотеки.
python -m cnn_neat write-defaults # перезаписать пример
python -m cnn_neat write-defaults my_run.json # копия для правок
python -m cnn_neat validate my_run.json
python -m cnn_neat run --config my_run.json
Новые группы 2026 года отдельно: API ExperimentConfig.
Воспроизводимость и задача
| Параметр |
Default |
Описание |
seed |
42 |
RNG (индексы, эволюция) |
positive_class |
0 |
Класс CIFAR-10 как label 1 |
task_mode |
binary |
binary | multiclass (multi-tip head) |
fitness_resample_each_generation |
False |
Пересэмплировать val каждое поколение (multiclass) |
Топология
| Параметр |
Default |
Описание |
input_image_size |
(32, 32) |
Вход |
output_image_size |
(1, 1) |
Выходной feature map |
num_input_views |
1 |
Число видов |
max_hidden_layers |
10**9 |
\(L_{\max}\) (sentinel = без капа) |
max_neurons_per_layer |
10**9 |
\(N_{\max}\) (sentinel = без капа) |
minimal_connections |
True |
Стартовый минимальный DAG |
activation |
None |
Стартовая / fallback σ (None / relu / gelu / tanh / leaky_relu) |
evolve_node_activations |
False |
Opt-in: split берёт σ из пула; в рулетку добавляется mutate_activation |
allowed_new_activations |
None |
Пул для split / mutate. None + флаг off → [activation]; флаг on и пустой пул → все 5 σ |
output_readout |
mean_minus_median |
mean | mean_minus_median |
input_channels |
3 |
RGB |
allow_variable_channels |
False |
Hidden \(C \in\) allowed |
allowed_channels |
None → {3,8,16} |
Набор ширин |
edge_weights |
False |
Softmax-merge скаляры |
Эволюция и cone
| Параметр |
Default |
Описание |
population_size |
100 |
\(P\) |
num_generations |
30 |
<=0 = until stagnation |
elite_percent |
0.2 |
\(\rho\) |
offspring_queue_recent_fraction |
0.5 |
Recent vs older |
offspring_queue_breed_mode |
recent_split |
recent_split | top_fitness |
offspring_queue_max_size |
1000 |
Cap очереди |
breeding_cone_enabled |
False |
Спекулятивное дерево |
breeding_cone_ram_fraction |
0.50 |
Доля RAM |
breeding_cone_ram_reserve_bytes |
8 GiB |
Резерв |
breeding_cone_workers |
0 |
Expand workers (0 = авто, все CPU через runtime_cpu) |
breeding_cone_multiprocess |
True |
Process pool (реальные процессы, обход GIL) |
breeding_cone_max_depth |
1 |
Глубина |
breeding_cone_prefetch_generations |
1 |
Горизонт |
breeding_cone_stockpile_factor |
8.0 |
Oversample на last keepers; cover floor на остальных корнях |
breeding_cone_warmup_timeout_sec |
120 |
Timeout warmup |
breeding_cone_fill_timeout_sec |
30 |
Catch-up на host, если eval короче expand |
mutation_propose_parallel |
0 |
ProcessPool-мутации родителей (0 = все CPU) |
mutation_propose_max_children |
8 |
Максимум детей на родителя за предложение |
Уточнение элиты
| Параметр |
Default |
Описание |
elite_refinement_enabled |
False |
val top \(\rho\cdot 2\) → GD → test |
elite_refinement_every |
1 |
Каждые N gen (всегда на последнем) |
elite_refinement_pre_multiplier |
2.0 |
Pre-filter |
elite_refinement_train_epochs |
10 |
Эпохи Adam |
elite_refinement_train_batch_size |
128 |
Batch |
elite_refinement_lr |
1e-3 |
LR |
Периодическое дообучение и два трека
| Параметр |
Default |
Описание |
periodic_gd_enabled |
False |
Вкл. |
periodic_gd_every |
5 |
Каждые N gen |
periodic_gd_epochs |
3 |
Эпох на геном |
periodic_gd_batch_size |
256 |
Batch |
periodic_gd_max_batches_per_epoch |
None |
Cap |
periodic_gd_targets |
offspring_queue |
queue | population | elites |
periodic_gd_lr |
1e-3 |
Adam LR |
periodic_gd_parallel |
1 |
Параллельные геномы |
periodic_gd_cv_enabled |
False |
K-fold |
periodic_gd_cv_folds |
5 |
\(K\) |
periodic_gd_cv_train_one_fold |
True |
Учить на 1/K |
periodic_gd_device |
None |
Device только для GD |
gd_lineage_track_enabled |
False |
Два пула |
gd_lineage_expand_slots |
0 |
\(\Delta\) GD-слотов |
periodic_gd_max_applies |
0 |
Кап принятых GD (0 = безлимит) |
Приспособленность, отсев и кэш хэшей
| Параметр |
Default |
Описание |
fitness_val_size |
25000 |
Val |
fitness_tiered_enabled |
False |
Screen → full |
fitness_screen_size |
2048 |
Screen n |
fitness_screen_survivor_fraction |
0.5 |
Доля на full val |
fitness_screen_cache_enabled |
True |
RAM кэш отсева (screen-cache) |
fitness_screen_cache_max_entries |
1000 |
LRU |
fitness_screen_cache_max_bytes |
50e9 |
Бюджет RAM |
fitness_cache_full_structure_max_copies |
1 |
Full-hash copies |
fitness_cache_effective_structure_max_copies |
0 |
Effective copies (0=off) |
fitness_forward_hash_cache_enabled |
False |
Merkle |
fitness_forward_hash_cache_streaming_elite |
False |
Top-K commit |
fitness_forward_hash_cache_gpu_resident |
False |
Без host spill |
fitness_forward_hash_cache_preserve_protected_parents |
False |
Не evict protected |
fitness_forward_hash_cache_evict_covered_parents |
True |
Covered как жертвы |
fitness_forward_hash_cache_strict_capacity |
False |
Fail on overflow |
fitness_forward_hash_cache_flush_after_periodic_gd |
False |
Invalidate changed |
fitness_forward_hash_cache_planned |
False |
Unique-miss |
fitness_forward_hash_cache_planned_from_generation |
0 |
С какого gen |
fitness_discard_screen_rejects |
False |
Rejects → −∞ |
stagnation_patience |
None |
Early stop |
stagnation_unit |
generations |
generations | genomes |
stagnation_min_delta |
0 |
Мин. Δ для сброса patience |
dynamic_population_enabled |
False |
Pop из occupancy кэша/VRAM |
dynamic_population_target_occupancy |
0.70 |
Цель заполнения |
dynamic_population_cache_min |
10 |
Cache-viable pop не держит N после успешного гена → naive + jump; seed < N оставляем; OOM сначала режет pop |
dynamic_population_naive_size |
100 |
Совместимость; после drop pop не прыгает |
dynamic_population_naive_max |
0 |
Потолок sequential (0 = max(max, naive_size)) |
fitness_metric |
balanced_accuracy |
Целевая метрика |
eval_batch_size |
45000 |
\(B_{\mathrm{cap}}\) |
eval_batch_size_min |
256 |
Floor shrink |
adaptive_eval_batch_size |
True |
Halve при VRAM pressure |
gpu_vram_cap_bytes |
16e9 |
Только лог |
vram_usage_threshold |
0.80 |
Порог shrink |
empty_cuda_cache_each_generation |
True |
empty_cache |
fitness_eval_parallel |
1 |
Параллельный eval |
decision_rule |
score |
score | probability | quantile |
decision_threshold |
0.0 |
Порог |
positive_prior |
None |
Для quantile |
Исполнение на GPU и видеопамять популяции
| Параметр |
Default |
Описание |
gpu_memory_fraction |
0.85 |
Доля устройства |
cuda_graph_memory_reserve_bytes |
600e6 |
Резерв graphs |
forward_runtime |
eager |
eager | compile | cuda_graph |
torch_compile_mode |
reduce-overhead |
compile |
cuda_graph_warmup_iters |
3 |
Warmup |
use_amp |
True |
AMP |
cudnn_benchmark |
False |
cuDNN |
release_intermediate_activations |
True |
Drop slots |
offload_genome_after_eval |
False |
CPU после eval |
keep_population_on_gpu_within_generation |
True |
Держать pop на GPU |
adaptive_population_vram |
True |
Host-stage при >50% |
population_vram_resident_threshold |
0.50 |
Порог staging |
population_gpu_batch_frac_min/max |
0.40 / 0.50 |
Чанк VRAM |
population_gpu_chunk_bytes |
None |
Cap весов чанка |
cuda_memory_release_every_n_genomes |
0 |
empty_cache каждые N |
Данные и spill
| Параметр |
Default |
Описание |
num_workers / pin_memory |
0 / True |
DataLoader |
cifar_root, val_indices_file, … |
"" |
Пути (auto) |
cache_val_on_gpu |
True |
Val на CUDA |
cache_refinement_test_on_gpu |
True |
Test cache |
cache_refinement_train_on_gpu |
True |
Train cache |
periodic_gd_spill_refinement_train |
True |
Train→host между GD |
periodic_gd_fold_only_gpu |
True |
Только активный fold |
periodic_gd_park_forward_hash_cache |
True |
Park Merkle перед GD |
cache_mode |
val_only |
val_only | full_train |
Артефакты
| Параметр |
Default |
Описание |
save_run_path |
"" |
Auto runs/... |
save_format |
archive |
archive | legacy |
archive_weights_policy |
top_k |
full | top_k | none; default champion-only tensors |
archive_weights_top_k |
1 |
Если top_k |
archive_weight_stats_enabled |
False |
JSON агрегатов весов (epoch_*_weight_stats.json) |
runtime_checkpoint_enabled |
False |
evolution_checkpoint.pt (полная популяция; exact resume) |
archive_restore_mode |
strict |
strict | auto |
live_dashboard_* |
5 / 100 / 1 |
HTML refresh |
async_artifact_writes |
True |
Фон I/O |