PyNAS: Neural Architecture Search Framework
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
User Guide:
API Reference:
Development: