The objective of this project is to develop a foundational machine learning engine natively in Ada.
![](https://sites.psu.edu/behrendseniordesign/files/formidable/6/2024-04-22/2024_AdaCore_Sponsor-Logo-7c39fd-b348934383e71932.png)
Sponsored By: AdaCore
Team Members
Owen Wienczkowski | Samuel Leonetti | Garrett Glowacki | Stefan Milinkovic |
Project Poster
Click on any image to enlarge.
Project Summary
Overview
Ada is a software language used for mission-critical systems. The industries where Ada is most prevalent are trending towards using machine learning techniques; currently, there is no implementation of machine learning in Ada. As a result, these industries must decide to either remain without machine learning or transition into using a different language for this project.
Objectives
This project aims to develop a foundational machine learning engine natively in Ada, allowing users to seamlessly run it on both CPU and GPU. Developers can utilize its features for implementing and training neural networks.
Approach
- Began by meeting with our industry mentor from AdaCore, Olivier Henley, to gather requirements.
- Dedicated time individually to learn the Ada programming language and neural network fundamentals.
- Reviewed existing Python neural networks/engines as a basis for our Ada engine/model.
- Selected a relevant and foundational Python engine to attempt and replicate within Ada.
- Began abstracting individual components (Linear Layers, ReLU Activation Function, SoftLossMax Loss Function, Stochastic Gradient Descent Optimizer, Random Spiral Data Generation) to successfully manifest an engine and allow it to be used by developers as a library.
- Consistently updated with and attended code reviews with our industry mentor to successfully create our version of a machine learning engine that operated fully leveraged with Ada code.
- Developed individual components by utilizing test driven development in which tests were written first and then code was developed to conform and pass the tests.
- Consistently developed components, unit tested by AUnit, an Ada automated testing library, and structured integration tests to function as the entirety of a library and a demonstration of our engine.
- Included accuracy calculation as a performance metric to ensure the engine and its components were successfully operating.
Outcomes
- Successfully fit decision boundaries around random spiral shaped data and therefore successfully produce the first known instance of machine learning within the Ada.
- Enabled the engine to be formatted to run on either a CPU or GPU.
- The project is structured such that additional functionality can be implemented in the future.
Recent Comments