# seungyeopkang/eem-nas architecture

> Architecture diagram of the GitHub repository seungyeopkang/eem-nas, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/seungyeopkang/eem-nas
- Repository: https://github.com/seungyeopkang/eem-nas

## Overview

EEM-NAS is a research implementation for budgeted, fixed-proxy zero-shot neural architecture search over NAS-Bench-201. A researcher runs either the proposed memetic search or a comparison baseline; search candidates are scored under a fitness-function-call budget, and the returned architecture can optionally be checked against trained test accuracy. The online scoring path builds a network and computes a zero-cost proxy on cached data; precomputed scores are an alternative. The graph reflects documented capabilities, while some links for unsampled modules are supported by the README rather than inspected source.

Main entry points: [`eem_nas/evaluator.py`](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/evaluator.py) (FFC evaluator), [`eem_nas/eem_nas.py`](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/eem_nas.py) (EEM-NAS), [`eem_nas/proxy/backends.py`](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/backends.py) (Online backend), [`eem_nas/baselines.py`](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/baselines.py) (Search baselines)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_search["Search methods"]
  node_eem["EEM-NAS<br/>[eem_nas.py]"]
  node_baselines["Search baselines<br/>[baselines.py]"]
  node_operators["GA operators<br/>[operators.py]"]
  node_primitives["Search primitives<br/>[primitives.py]"]
  node_local_search["Local search<br/>[local_search.py]"]
end

subgraph group_evaluation["Fitness evaluation"]
  node_encoding["Architecture encoding<br/>[encoding.py]"]
  node_evaluator["FFC evaluator<br/>[evaluator.py]"]
  node_precomputed_backend["Precomputed backend<br/>[backends.py]"]
end

subgraph group_online["Online proxy compute"]
  node_online_backend["Online backend<br/>[backends.py]"]
  node_data["Batch sources<br/>[data.py]"]
  node_network["NAS-Bench-201 network<br/>[nb201.py]"]
  node_proxies["Zero-cost proxies<br/>[proxies.py]"]
end

subgraph group_reference["Accuracy reference"]
  node_nb201_api["Accuracy lookup<br/>[nb201_api.py]"]
end

node_researcher(("Researcher"))
node_dataset_source["Dataset providers"]
node_benchmark_archive[("NAS-Bench-201 archive")]

node_researcher -->|"runs"| node_eem
node_researcher -->|"runs"| node_baselines
node_eem -->|"evaluates candidates"| node_evaluator
node_eem -->|"selects and varies"| node_operators
node_eem -->|"selects targets; replaces"| node_primitives
node_eem -->|"refines targets"| node_local_search
node_local_search -->|"scores neighbors"| node_evaluator
node_baselines -->|"evaluates candidates"| node_evaluator
node_baselines -->|"uses operators"| node_operators
node_evaluator -->|"indexes candidates"| node_encoding
node_evaluator -->|"delegates scoring"| node_online_backend
node_evaluator -.->|"can delegate scoring"| node_precomputed_backend
node_online_backend -->|"gets batches"| node_data
node_online_backend -->|"builds candidate network"| node_network
node_online_backend -->|"computes score"| node_proxies
node_online_backend -.->|"requests accuracy"| node_nb201_api
node_data -->|"loads batches"| node_dataset_source
node_nb201_api -.->|"looks up accuracy"| node_benchmark_archive

click node_eem "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/eem_nas.py"
click node_baselines "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/baselines.py"
click node_operators "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/operators.py"
click node_primitives "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/primitives.py"
click node_local_search "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/local_search.py"
click node_encoding "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/encoding.py"
click node_evaluator "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/evaluator.py"
click node_online_backend "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/backends.py"
click node_precomputed_backend "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/backends.py"
click node_data "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/data.py"
click node_network "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/nb201.py"
click node_proxies "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/proxies.py"
click node_nb201_api "https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/nb201_api.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_eem,node_baselines,node_operators,node_primitives,node_local_search toneBlue
class node_encoding,node_evaluator,node_precomputed_backend,node_benchmark_archive toneAmber
class node_online_backend,node_data,node_network,node_proxies toneMint
class node_nb201_api toneRose
class node_researcher,node_dataset_source toneIndigo
```

## Components

### Search methods

- [EEM-NAS](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/eem_nas.py): `eem_nas/eem_nas.py`
- [Search baselines](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/baselines.py): `eem_nas/baselines.py`
- [GA operators](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/operators.py): `eem_nas/operators.py`
- [Search primitives](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/primitives.py): `eem_nas/primitives.py`
- [Local search](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/local_search.py): `eem_nas/local_search.py`

### Fitness evaluation

- [Architecture encoding](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/encoding.py): `eem_nas/encoding.py`
- [FFC evaluator](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/evaluator.py): `eem_nas/evaluator.py`
- [Precomputed backend](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/backends.py): `eem_nas/proxy/backends.py`

### Online proxy compute

- [Online backend](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/backends.py): `eem_nas/proxy/backends.py`
- [Batch sources](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/data.py): `eem_nas/proxy/data.py`
- [NAS-Bench-201 network](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/nb201.py): `eem_nas/proxy/nb201.py`
- [Zero-cost proxies](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/proxies.py): `eem_nas/proxy/proxies.py`

### Accuracy reference

- [Accuracy lookup](https://github.com/seungyeopkang/eem-nas/blob/master/eem_nas/proxy/nb201_api.py): `eem_nas/proxy/nb201_api.py`

### Other components

- **Researcher**
- **Dataset providers**
- **NAS-Bench-201 archive**

## Connections

- Researcher → EEM-NAS: runs
- Researcher → Search baselines: runs
- EEM-NAS → FFC evaluator: evaluates candidates
- EEM-NAS → GA operators: selects and varies
- EEM-NAS → Search primitives: selects targets; replaces
- EEM-NAS → Local search: refines targets
- Local search → FFC evaluator: scores neighbors
- Search baselines → FFC evaluator: evaluates candidates
- Search baselines → GA operators: uses operators
- FFC evaluator → Architecture encoding: indexes candidates
- FFC evaluator → Online backend: delegates scoring
- FFC evaluator → Precomputed backend: can delegate scoring
- Online backend → Batch sources: gets batches
- Online backend → NAS-Bench-201 network: builds candidate network
- Online backend → Zero-cost proxies: computes score
- Online backend → Accuracy lookup: requests accuracy
- Batch sources → Dataset providers: loads batches
- Accuracy lookup → NAS-Bench-201 archive: looks up accuracy
