Experiment config
7.1 ExperimentConfig — параметры эксперимента
Полный список параметров cnn_neat/experiment.py:
Группа: Воспроизводимость и задача
| Параметр |
Default |
Диапазон |
Описание |
seed |
42 |
\(\mathbb{Z}\) |
Seed для RNG (val indices, эволюция) |
positive_class |
0 |
0..9 |
Класс CIFAR-10, считающийся позитивным |
Группа: Топология
| Параметр |
Default |
Диапазон |
Описание |
input_image_size |
(32, 32) |
\((H,W) \ge 1\) |
Пространственный размер входа |
output_image_size |
(1, 1) |
\((H,W) \ge 1\) |
Размер выходной карты признаков |
num_input_views |
1 |
\(\ge 1\) |
Число входных видов (views) |
max_hidden_layers |
5 |
\(\ge 0\) |
\(L_\text{max}\) — макс. глубина |
max_neurons_per_layer |
4 |
\(\ge 1\) |
\(N_\text{max}\) — макс. ширина |
activation |
None |
None, relu, gelu, tanh, leaky_relu |
Активация после каждого Conv2d |
output_readout |
mean_minus_median |
mean, mean_minus_median |
Агрегация выходного feature map |
input_channels |
3 |
\(\ge 1\) |
Число каналов (RGB=3) |
allow_variable_channels |
False |
bool |
Переменные каналы на скрытых узлах |
allowed_channels |
None → [3,8,16] |
список int |
Доступные ширины каналов |
edge_weights |
False |
bool |
Обучаемые скалярные веса рёбер (softmax merge) |
Группа: Эволюция
| Параметр |
Default |
Диапазон |
Описание |
population_size |
100 |
\(\ge 2\) |
\(P\) — размер популяции |
num_generations |
30 |
\(\ge 1\) |
Число поколений |
elite_percent |
0.2 |
\((0, 1)\) |
\(\rho\) — доля элиты |
offspring_queue_recent_fraction |
0.5 |
\((0, 1)\) |
Доля следующей pop из свежих offspring |
offspring_queue_max_size |
1000 |
int или None |
Жёсткий cap очереди offspring |
Группа: Tiered fitness (опционально)
| Параметр |
Default |
Описание |
fitness_tiered_enabled |
False |
Двухступенчатый eval (screen → full val) |
fitness_screen_size |
2048 |
Stratified screen-val |
fitness_screen_survivor_fraction |
0.5 |
Доля pop на full val после screen |
fitness_screen_cache_enabled |
True |
RAM-кеш screen-активаций элит |
fitness_screen_cache_max_entries |
1000 |
Макс. записей LRU |
fitness_screen_cache_max_bytes |
50_000_000_000 |
Бюджет RAM |
fitness_screen_indices_file |
data/cifar10/fitness_screen_indices.json |
Путь к screen-индексам |
Группа: Elite Refinement
| Параметр |
Default |
Описание |
elite_refinement_enabled |
False |
Двухстадийный отбор |
elite_refinement_every |
1 |
Частота (поколений) |
elite_refinement_pre_multiplier |
2.0 |
Pre-filter: \(\rho \cdot \text{mult}\) |
elite_refinement_train_epochs |
10 |
Эпох Adam |
elite_refinement_train_batch_size |
128 |
Batch size Adam |
elite_refinement_lr |
1e-3 |
Learning rate |
Группа: Periodic GD
| Параметр |
Default |
Описание |
periodic_gd_enabled |
False |
Включить |
periodic_gd_every |
5 |
Частота (поколений) |
periodic_gd_epochs |
3 |
Эпох на геном |
periodic_gd_batch_size |
256 |
Batch size |
periodic_gd_lr |
1e-3 |
Learning rate |
Группа: Оценка фитнеса
| Параметр |
Default |
Диапазон |
Описание |
fitness_val_size |
25000 |
\([1, 50000]\) |
Размер val-подмножества |
fitness_metric |
balanced_accuracy |
см. §5.2 |
Целевая метрика |
eval_batch_size |
45000 |
\([256, 50000]\) |
\(B_\text{cap}\) — максимальный batch при оценке |
eval_batch_size_min |
256 |
\([1, \ldots]\) |
Нижний порог VRAM-контроллера |
adaptive_eval_batch_size |
False |
bool |
Адаптивный batch по VRAM |
vram_usage_threshold |
0.80 |
\((0, 1)\) |
Порог деления batch надвое |
fitness_eval_parallel |
1 |
\(\ge 1\) |
Число CUDA streams |
decision_rule |
score |
score, probability, quantile |
Правило классификации |
decision_threshold |
0.0 |
\(\mathbb{R}\) |
Порог решения |
Группа: GPU и форвард
| Параметр |
Default |
Описание |
forward_runtime |
eager |
eager, compile, cuda_graph |
torch_compile_mode |
reduce-overhead |
режим torch.compile |
use_amp |
True |
Automatic Mixed Precision (float16) |
cudnn_benchmark |
False |
cuDNN autotune |
gpu_memory_fraction |
0.85 |
\(\alpha\) для адаптивного batch |
cuda_graph_memory_reserve_bytes |
600_000_000 |
\(M_\text{reserve}\) (600 МБ) |
cache_val_on_gpu |
True |
Предзагрузить val на GPU |
cache_refinement_test_on_gpu |
True |
Test на GPU для refinement |
cache_refinement_train_on_gpu |
True |
Train на GPU для refinement |
offload_genome_after_eval |
False |
Выгружать геном на CPU после eval |
keep_population_on_gpu_within_generation |
True |
Держать pop на GPU внутри поколения (gpu_resident) |
adaptive_population_vram |
True |
PopulationVRAMManager |
population_gpu_chunk_bytes |
None |
Лимит весов на GPU-чанк (байты) |
cuda_memory_release_every_n_genomes |
0 |
empty_cache каждые N genomes при eval |
Группа: Артефакты
| Параметр |
Default |
Описание |
save_run_path |
runs/cifar10_binary_notebook |
Корень run |
save_format |
archive |
archive (единый JSON) или legacy |
live_dashboard_refresh_sec |
5 |
Интервал авто-обновления HTML |
live_dashboard_update_every |
1 |
Обновлять каждые N поколений |