All Projects → a2i2 → surround

a2i2 / surround

Licence: BSD-3-Clause license
Surround is a framework for building AI driven microservices in Python, https://surround.readthedocs.io/en/latest/

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to surround

Bentoml
Model Serving Made Easy
Stars: ✭ 3,064 (+16026.32%)
Mutual labels:  model-serving
fdp-modelserver
An umbrella project for multiple implementations of model serving
Stars: ✭ 47 (+147.37%)
Mutual labels:  model-serving
gallery
BentoML Example Projects 🎨
Stars: ✭ 120 (+531.58%)
Mutual labels:  model-serving
pipen
pipen - A pipeline framework for python
Stars: ✭ 82 (+331.58%)
Mutual labels:  pipeline-framework
alphasql
AlphaSQL provides Integrated Type and Schema Check and Parallelization for SQL file set mainly for BigQuery
Stars: ✭ 35 (+84.21%)
Mutual labels:  pipeline-framework
MegFlow
Efficient ML solution for long-tailed demands.
Stars: ✭ 372 (+1857.89%)
Mutual labels:  pipeline-framework
FATE-Serving
A scalable, high-performance serving system for federated learning models
Stars: ✭ 107 (+463.16%)
Mutual labels:  model-serving
MERlin
MERlin is an extensible analysis pipeline applied to decoding MERFISH data
Stars: ✭ 19 (+0%)
Mutual labels:  pipeline-framework
Mediapipe
Cross-platform, customizable ML solutions for live and streaming media.
Stars: ✭ 15,338 (+80626.32%)
Mutual labels:  pipeline-framework
mediapipe plus
The purpose of this project is to apply mediapipe to more AI chips.
Stars: ✭ 38 (+100%)
Mutual labels:  pipeline-framework
lightflow
A lightweight, distributed workflow system
Stars: ✭ 67 (+252.63%)
Mutual labels:  pipeline-framework
richflow
A Node.js and JavaScript synchronous data pipeline processing, data sharing and stream processing library. Actionable & Transformable Pipeline data processing.
Stars: ✭ 17 (-10.53%)
Mutual labels:  pipeline-framework
serving-pytorch-models
Serving PyTorch models with TorchServe 🔥
Stars: ✭ 91 (+378.95%)
Mutual labels:  model-serving
open-solution-googleai-object-detection
Open solution to the Google AI Object Detection Challenge 🍁
Stars: ✭ 46 (+142.11%)
Mutual labels:  pipeline-framework
datajoint-python
Relational data pipelines for the science lab
Stars: ✭ 140 (+636.84%)
Mutual labels:  pipeline-framework
Deep Learning In Production
In this repository, I will share some useful notes and references about deploying deep learning-based models in production.
Stars: ✭ 3,104 (+16236.84%)
Mutual labels:  model-serving
vent
Vent is a light-weight platform built to automate network collection and analysis pipelines using a flexible set of popular open source tools and technologies. Vent is python-based, extensible, leverages docker containers, and provides both an API and CLI.
Stars: ✭ 73 (+284.21%)
Mutual labels:  pipeline-framework
Geoweaver
a web system to allow users to automatically record history and manage complicated scientific workflows in web browsers involving the online spatial data facilities, high-performance computation platforms, and open-source libraries.
Stars: ✭ 32 (+68.42%)
Mutual labels:  pipeline-framework
fasttext-serving
fastText model serving service
Stars: ✭ 54 (+184.21%)
Mutual labels:  model-serving
chitra
A multi-functional library for full-stack Deep Learning. Simplifies Model Building, API development, and Model Deployment.
Stars: ✭ 210 (+1005.26%)
Mutual labels:  model-serving

Surround is a lightweight framework for serving machine learning pipelines in Python. It is designed to be flexible, easy to use and to assist data scientists by focusing them on the problem at hand rather than writing glue code. Surround began as a project at the Applied Artificial Intelligence Institute to address the following problems:

  • The same changes were required again and again to refactor code written by data scientists to make it ready for serving e.g. no standard way to run scripts, no standard way to handle configuration and no standard pipeline architecture.
  • Existing model serving solutions focus on serving the model rather than serving an end-to-end solution. Our machine learning projects require multiple models and glue code to tie these models together.
  • Existing serving approaches do not allow for the evolution of a machine learning pipeline without re-engineering the solution i.e. using a cloud API for the first release before training a custom model much later on.
  • Code was commonly being commented out to run other branches as experimentation was not a first class citizen in the code being written.

Used in projects by:

Simple usage

A short explanation is provided in the hello-world example's README file.

import logging
from surround import State, Stage, Estimator, Assembler, RunMode

class HelloWorld(Estimator):
    def estimate(self, state, config):
        state.text = "Hello world"

    def fit(self, state, config):
        print("No training implemented")

class InputValidator(Stage):
    def operate(self, state, config):
        if state.text:
            raise ValueError("'text' is not None")

class AssemblerState(State):
    text = None

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    data = AssemblerState()
    assembler = Assembler("Hello world example").set_stages([InputValidator(), HelloWorld()])
    assembler.run(data, mode=RunMode.PREDICT)
    print("Text is '%s'" % data.text)

Examples

See the examples directory for useful examples on how Surround can be utilized.

Full Documentation

See our website for an in-depth explanation of Surround (in the About page), a Getting Started Guide, and full documentation of the API.

Contributing

For guidance on setting up a development environment and how to make a contribution to Surround, see the contributing guidelines.

License

Surround is released under a BSD-3 license.

Project Status

Surround is currently under heavy development, please submit any issues that occur or suggestions you may have, it is very much appreciated!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].