---------------------------------- Understanding Aidge's architecture ---------------------------------- Modular by design, flexible by nature ===================================== Aidge is built on a robust and flexible **modular architecture**, a foundational pillar that sets it apart. This modularity isn't just a technical feature; it's crucial for Aidge's **customization**, **extensibility**, and **adaptability** to the diverse and evolving demands of AI deployment. Core principles driving our design: - **Plugin-driven:** we engineered a lightweight core module designed for seamless expansion with easily integrated plug-ins. - **Dependency minimization:** this approach simplifies integration and management, avoiding conflicts within your current workflows. By breaking down the framework into distinct, interchangeable components, Aidge offers key advantages: - **Pick and choose**: integrate only the functionalities you need. - **Customize freely**: replace existing functionalities with your own implementations. - **Expand easily**: add new capabilities without touching the core system. - **Code engagement:** quickly understand, explore, and contribute to relevant parts of the codebase. - Discover how easy it is to `add an operator to the C++ export `__ by doing our tutorial. .. .. image:: /source/_static/aidge_plugin.png Module ecosystem overview ========================= +---------------------+--------------------------------+-------------------------------------------------------------+ | **Category** | **Modules** | **Description** | +=====================+================================+=============================================================+ | **Core foundation** | ``aidge_core`` | The essential building blocks for manipulating AI models | | | | and data, indispensable for all other modules. | +---------------------+--------------------------------+-------------------------------------------------------------+ | **Execution** | ``aidge_backend_cpu`` | Enable Aidge to run on specific hardware devices like CPUs | | **backends** | ``aidge_backend_cuda`` | and NVIDIA GPUs, providing concrete implementations. | +---------------------+--------------------------------+-------------------------------------------------------------+ | **Export modules** | ``aidge_export_cpp`` | Generate deployable code for various target environments, | | | ``aidge_export_arm_cortexm`` | seamlessly integrating AI models into diverse systems. | | | ``aidge_export_tensorrt`` | | | | ``aidge_export_acetone`` | | | | ``aidge_export_openvx`` | | +---------------------+--------------------------------+-------------------------------------------------------------+ | **Optimization** | ``aidge_quantization`` | Offer advanced techniques to optimize AI models, reducing | | **suite** | ``aidge_compression`` | size, improving speed, and minimizing resource consumption. | | | ``aidge_pruning`` | | +---------------------+--------------------------------+-------------------------------------------------------------+ | **Interoperability**| ``aidge_onnx`` | Facilitate smooth interaction between Aidge and other | | **layer** | ``aidge_interop_torch`` | popular AI frameworks (ONNX, PyTorch) for broad | | | | compatibility. | +---------------------+--------------------------------+-------------------------------------------------------------+ | **Development** | ``aidge_model_explorer`` | Visualize and explore AI model architectures and data flow | | **tools** | | within Aidge for easier understanding and debugging. | +---------------------+--------------------------------+-------------------------------------------------------------+