The Aegis Project (or just "Aegis") is an exploration of combining reinforcement learning, transfer learning, microservices, and automation concepts. At its core, it provides standard methods for communicating between different "nodes". The protocol builds on top of HTTP POST requests - usually via ProtoPost (and its Python variant). Aegis nodes should also leverage Docker to avoid dependency issues and encourage portability.
Each node represents a different type of microservice such as reinforcement learning agents, TensorBoard loggers, and Gaussian linear interpolation samplers. As all nodes rely on POST requests, they can be easily linked together, even across hosts. This also makes building clients a breeze, as Aegis is compatible with anything that supports POST requests.
See Aegis Experiments for experiments.
-
RL
- Environments
- Vanilla Env - Run Gym environments as Aegis nodes
- Mario - Super Mario Bros. environments thanks to gym-super-mario-bros
- Agents
- PPO - Run Stable Baselines PPO2 agents as Aegis nodes
- Environments
-
Vision (CV)
- Keras Application - Run inference on pretrained Keras Applications as Aegis nodes
- Image Stylization - Stylize images thanks to arbitrary-image-stylization-tfjs
- Face Detector - Detect faces
- Age/Gender Predictor - Predict age and gender of faces
- YOLO - Object detection inference
-
Language (NLP)
-
Other NN/compute
- ESN - Echo state networks with sparse input/output mapping support
- Projection - Projects one shape into another with a fully connected and optionally squashed neural network layer
- Autoencoder - Autoencoders with support for encoding/decoding inputs/latents as well as calculating reconstruction losses for inputs
-
Logging & visualization
- Tensorboard - Log scalars and histograms via Aegis function calls
- Visualizer - View ND-arrays and base64-encoded images in your browser
-
Generators
- Gaussian Lerp - Generates interpolations between Gaussian samples
-
Utilities/FP
- Distribute - When called, forwards the provided data to multiple other nodes
- Pipe - Call nodes in order, with data passed from one to the next. Operates sort-of like FP "pipe" functions
- Web Crawler - Recursively visit links and return page texts
- Image Annotator - Draw boxes and labels on images
- Image Slicer - Split a single image into multiple using bounding boxes
- Discord - Listen for and send messages on Discord
- Mailer - Send emails via Aegis function calls
- Sheets - Read from Google Sheets
- Chonky - Sparse mappings between arrays of varying ranks