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

Modules

2.1 Структура файлов

d:\cifar-10-CNN_NEAT\
├── README.md                            ← данный документ
├── pyproject.toml                       ← зависимости, entrypoints (pip install -e .)
├── cnn_neat\                            ← основная библиотека (32 модуля)
│   ├── __init__.py
│   ├── config.py                        ← глобальные константы и дефолты
│   ├── experiment.py                    ← ExperimentConfig (frozen dataclass)
│   ├── network.py                       ← геном CNN: DAG, forward, мутации геометрии
│   ├── connection_gene.py               ← ConvolutionConnectionGene (ребро DAG)
│   ├── forward_plan.py                  ← ExecutionPlan, компиляция DAG
│   ├── forward_runtime.py               ← eager/compile/cuda_graph runners, AMP
│   ├── mutations.py                     ← ConvolutionalNetworkMutator, crossover
│   ├── evolver.py                       ← CnnNeat (NEAT): популяция, отбор, архив
│   ├── evolution_loop.py                ← run_evolution() — главный тренировочный цикл
│   ├── eval.py                          ← evaluate_population_fitness, метрики, GPUValCache
│   ├── binary_head.py                   ← output_to_score, BCE, decision rules
│   ├── heads.py                         ← LinearClassifierHead (опционально)
│   ├── cifar10_data.py                  ← DataLoader'ы, нормализация, val split
│   ├── finetune.py                      ← Adam fine-tune (топология заморожена)
│   ├── elite_refinement.py              ← двухстадийный отбор: val→finetune→test
│   ├── periodic_gd.py                   ← лёгкий GD по всей популяции
│   ├── run_experiment.py                ← run_single_experiment(), create_evolver()
│   ├── save.py                          ← SaveManager, RunInfo
│   ├── run_archive.py                   ← RunArchive (единый JSON + .pt весов)
│   ├── registry.py                      ← ModelRegistry, HistoricalModel
│   ├── generation_summary.py            ← build_generation_summary(), write_run_meta()
│   ├── dashboard.py                     ← live_dashboard.html (Plotly, авто-обновление)
│   ├── final_report.py                  ← post-run HTML: CM, примеры, архитектура
│   ├── unified_report.py                ← multi-run сравнительный HTML
│   ├── report_viz.py                    ← Matplotlib: CM, TP/TN/FP/FN сетки
│   ├── arch_viz.py                      ← plot_genome_architecture(), формат топологии
│   ├── comparison_metrics.py            ← Phase-1 grid, ranking score, backfill
│   ├── vram_batch.py                    ← VRAMBatchController (адаптивный batch)
│   ├── runtime_gpu.py                   ← set_seed, configure_gpu_for_training
│   ├── paths.py                         ← repo_root()
│   └── logging.py                       ← configure(), add_file_handler()
├── apps\
│   ├── run_viewer\                      ← Dash GUI (read-only, порт 8050)
│   │   ├── main.py                      ← точка входа, layout
│   │   ├── data_loader.py               ← загрузка run_archive.json
│   │   ├── plots.py                     ← Plotly-кривые fitness
│   │   ├── topology.py                  ← граф топологии в Dash
│   │   ├── metrics.py                   ← таблицы метрик
│   │   ├── export.py                    ← экспорт CSV/JSON
│   │   ├── logs.py                      ← просмотр логов
│   │   └── assets\viewer.css
│   └── neat_runner\                     ← FastAPI (запуск run через веб)
│       ├── server.py                    ← uvicorn entrypoint
│       ├── api.py                       ← REST-эндпоинты
│       ├── _launch_worker.py            ← фоновый воркер эволюции
│       └── templates\index.html, run.html
├── scripts\
│   ├── setup_venv.ps1                   ← Windows: создание venv + PyTorch cu124
│   ├── smoke_test.py                    ← санитарная проверка пакета
│   ├── run_cifar10_class_suite.py       ← 10 классов × baseline/refinement
│   ├── benchmark_forward_epoch.py       ← замер throughput vs batch size
│   └── ablation\
│       ├── hyperparameters.py           ← BASELINE_CFG, ABLATION_GRID, Phase-группы
│       ├── 01_hyperparameters.py        ← вывод сетки аблаций
│       ├── 02_arch_ablation.py          ← one-at-a-time аблации
│       ├── 03_final_report.py           ← HTML-отчёт из архивов
│       ├── final_report.py              ← то же, альтернативный путь
│       └── 05_structured_study.py       ← Фазы A→B→C→D, live dashboard
├── tests\                               ← 8 pytest-модулей
│   ├── test_binary_head.py
│   ├── test_vram_batch.py
│   ├── test_periodic_gd.py
│   ├── test_network_channels.py
│   ├── test_phase1_backfill.py
│   └── cifar10_all_classes\
│       ├── README.md
│       └── suite_results.json
├── notebooks\
│   ├── cifar10_cnn_neat_binary.ipynb    ← интерактивный демо-запуск
│   └── cifar10_arch_comparison.ipynb   ← сравнение архитектур
└── data\cifar10\
    ├── fitness_val_indices.json         ← 25 000 индексов val (seed=42)
    ├── fitness_val_indices_45000.json
    ├── fitness_val_indices_1000.json
    └── cifar-10-batches-py\             ← скачанный датасет CIFAR-10

2.2 Граф зависимостей модулей

flowchart TD
    subgraph core [Ядро библиотеки]
        config[config.py]
        experiment[experiment.py]
        network[network.py]
        conn[connection_gene.py]
        fplan[forward_plan.py]
        frt[forward_runtime.py]
        mut[mutations.py]
        evolver[evolver.py]
        eloop[evolution_loop.py]
    end

    subgraph eval_group [Оценка и данные]
        evalpy[eval.py]
        bhead[binary_head.py]
        data[cifar10_data.py]
        finetune[finetune.py]
        eliteref[elite_refinement.py]
        pgd[periodic_gd.py]
    end

    subgraph persist [Сохранение]
        save[save.py]
        archive[run_archive.py]
        registry[registry.py]
        gensumm[generation_summary.py]
    end

    subgraph viz [Визуализация]
        dashboard[dashboard.py]
        finalrep[final_report.py]
        unified[unified_report.py]
        repviz[report_viz.py]
        archviz[arch_viz.py]
    end

    subgraph infra [Инфраструктура]
        vram[vram_batch.py]
        rtgpu[runtime_gpu.py]
        paths[paths.py]
        logging[logging.py]
    end

    experiment --> eloop
    config --> network
    config --> evolver
    conn --> network
    network --> fplan
    fplan --> frt
    network --> mut
    mut --> evolver
    evolver --> eloop
    data --> eloop
    evalpy --> eloop
    bhead --> evalpy
    finetune --> eliteref
    eliteref --> eloop
    pgd --> eloop
    vram --> evalpy
    rtgpu --> eloop
    save --> evolver
    archive --> save
    registry --> evolver
    gensumm --> eloop
    dashboard --> eloop
    finalrep --> eloop
    archviz --> finalrep
    repviz --> finalrep
    unified --> viz