PyNAS: Neural Architecture Search Framework

License: GPL v3 Python Version

PyNAS is a modular neural architecture search (NAS) framework developed by ESA Φ-lab and Little Place Lab, specifically designed for deployment optimization on edge devices. It leverages advanced metaheuristic strategies, primarily Genetic Algorithms (GA), to efficiently identify optimal deep learning architectures for constrained environments.

Key Features

  • Metaheuristic Optimization: Utilizes Genetic Algorithms (GA) for robust architecture optimization

  • Model Architecture Selection: Automates the selection of optimal architectures for specific onboard applications

  • Edge Device Compatibility: Tailored for efficient deployment on various edge devices

  • Performance Metrics: Evaluates architectures based on predefined or custom metrics relevant to edge computing

  • Customization: Allows users to define custom constraints and requirements for model architecture

  • User-Friendly Interface: Easy-to-use API, facilitating integration with existing projects

Use Cases

  • IoT Applications: Optimizing models for IoT devices with limited computing resources

  • Remote Sensing: Enhancing the efficiency of models deployed in remote sensing edge devices

  • Autonomous Vehicles: Streamlining models for real-time processing in autonomous vehicles

Quick Start

import configparser
import torch
import pytorch_lightning as pl

from pynas.core.population import Population
from datasets.RawVessels.loader import RawVesselsDataModule

# Setup data module
root_dir = 'data/TASI/DataSAR_real_refined'
dm = RawVesselsDataModule(root_dir, batch_size=4, num_workers=2)

# Create population for genetic algorithm
pop = Population(n_individuals=50, max_layers=5, dm=dm, max_parameters=400_000)

# Initialize population
pop.initial_poll()

# Train the generation
pop.train_generation(task='classification', epochs=10)

Installation

git clone https://github.com/sirbastiano/pynas.git
cd pynas
pip install -e .

Contents

Indices and tables