Changelog

All notable changes to PyNAS will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • Comprehensive Sphinx documentation with API reference, tutorials, and examples

  • Edge deployment optimization examples

  • Custom block creation guides

  • Advanced configuration tutorials

Changed

  • Enhanced documentation structure and organization

[0.2.0] - 2024-01-15

Added

  • Multi-objective optimization support

  • Custom fitness function capabilities

  • Edge device optimization features

  • Quantization and pruning utilities

  • Advanced architecture search strategies

  • Performance profiling tools

  • Batch processing capabilities

  • Model export functionality

Changed

  • Improved population evolution algorithms

  • Enhanced architecture builder flexibility

  • Optimized memory usage during evolution

  • Better error handling and logging

Fixed

  • Memory leaks during long evolution runs

  • Convergence issues with small populations

  • Architecture validation edge cases

[0.1.1] - 2023-12-10

Fixed

  • Package installation issues

  • Import path corrections

  • Documentation typos

  • Example code compatibility

[0.1.0] - 2023-12-01

Added

  • Initial release of PyNAS

  • Core population-based neural architecture search

  • Individual architecture representation

  • Architecture builder with U-Net support

  • Basic optimization algorithms (Grey Wolf, Particle Swarm)

  • Training utilities and metrics

  • Comprehensive block library:

    • Standard convolution blocks

    • Separable convolution variants

    • Attention mechanisms

    • Residual connections

    • Various activation functions

    • Pooling operations

    • Classification and segmentation heads

  • Lightning integration for training

  • Configuration management

  • Basic examples and tutorials

Features

  • Genetic algorithm-based architecture search

  • Configurable search spaces

  • Multi-GPU training support

  • Flexible fitness function definition

  • Architecture visualization tools

  • Export capabilities for deployment

Supported Architectures

  • U-Net variants for segmentation

  • Custom CNN architectures

  • Encoder-decoder networks

  • Multi-scale architectures

Optimization Algorithms

  • Grey Wolf Optimizer (GWO)

  • Particle Swarm Optimization (PSO)

  • Custom optimizer interface

Training Features

  • PyTorch Lightning integration

  • Multiple loss functions

  • Comprehensive metrics

  • Early stopping

  • Learning rate scheduling

  • Mixed precision training

Block Library

  • Convolution blocks (2D/3D)

  • Separable convolutions

  • Depthwise separable convolutions

  • Dilated convolutions

  • Attention blocks

  • Squeeze-and-excitation

  • Residual connections

  • Skip connections

  • Activation functions

  • Normalization layers

  • Pooling operations

  • Dropout variants

Development Tools

  • Comprehensive test suite

  • Type hints throughout

  • Documentation with Sphinx

  • CI/CD pipeline

  • Code quality tools

Known Issues

  • Large memory requirements for complex search spaces

  • Limited support for transformer architectures

  • GPU memory optimization needed for very large populations

Migration Guide

From 0.1.x to 0.2.x

Configuration Changes

The configuration format has been updated to support multi-objective optimization:

# Old format (0.1.x)
config = {
    'fitness_function': 'accuracy'
}

# New format (0.2.x)
config = {
    'fitness_functions': ['accuracy', 'model_size'],
    'optimization_strategy': 'pareto'
}

API Changes

Population initialization now requires explicit configuration:

# Old format (0.1.x)
population = Population(size=50)

# New format (0.2.x)
config = PopulationConfig(population_size=50)
population = Population(config)

Import Changes

Some modules have been reorganized:

# Old imports (0.1.x)
from pynas.core import Population
from pynas.utils import metrics

# New imports (0.2.x)
from pynas.core.population import Population
from pynas.train.metrics import accuracy_score

Deprecation Warnings

The following features are deprecated and will be removed in future versions:

v0.3.0 (Planned)

  • pynas.utils.legacy_metrics - Use pynas.train.metrics instead

  • Population.evolve() without config - Use Population.evolve(config)

v0.4.0 (Planned)

  • Direct fitness function strings - Use FitnessFunction objects

  • Old configuration dictionary format - Use configuration classes

Breaking Changes

v0.2.0

  • Configuration format changed from dictionaries to structured classes

  • Population initialization requires explicit configuration

  • Some utility functions moved to different modules

v0.1.1

  • Import paths updated for consistency

  • Some example configurations changed

Upcoming Features

v0.3.0 (Planned)

  • Transformer architecture support

  • Automated hyperparameter optimization

  • Distributed evolution across multiple nodes

  • Advanced visualization tools

  • Model compression techniques

  • ONNX export support

v0.4.0 (Planned)

  • Neural architecture morphing

  • Progressive search strategies

  • Reinforcement learning integration

  • Cloud deployment tools

  • Performance benchmarking suite

Contributing

See Contributing Guide for information on how to contribute to PyNAS.

Support

For support and questions:

License

This project is licensed under the MIT License. See the LICENSE file for details.

Authors and Acknowledgments

PyNAS is developed by:

  • ESA Φ-lab - European Space Agency

  • Little Place Lab - Research and development

Special thanks to contributors and the open-source community for their support and contributions.