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: .. code-block:: python # 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: .. code-block:: python # 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: .. code-block:: python # 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: - Check the `documentation `_ - Search `existing issues `_ - Create a `new issue `_ 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.