Katana ML Sparrow
Sparrow is our open-source ML product. It runs on Skipper MLOps infrastructure.
- Computer Vision
Sparrow containers are located in folder – services
Sparrow is in early development stage.
Katana ML, Andrej Baranovskij
Update Sparrow from base Skipper MLOps infra GitHub
git remote add template https://github.com/katanaml/katana-skipper.git
git fetch template
git checkout master
git merge template/master
Katana ML Skipper
This is a simple and flexible ML workflow engine. It helps to orchestrate events across a set of microservices and create executable flow to handle requests. Engine is designed to be configurable with any microservices. Enjoy!
Engine and Communication parts are generic and can be reused. A group of ML services is provided for sample purposes. You should replace a group of services with your own. The current group of ML services works with Boston Housing data. Data service is fetching Boston Housing data and converts it to the format suitable for TensorFlow model training. Training service builds TensorFlow model. Serving service is scaled to 2 instances and it serves prediction requests.
Katana ML, Andrej Baranovskij
docker-compose up --build -d
This will start Skipper services and RabbitMQ.
Web API FastAPI endpoint:
NGINX Ingress Controller:
If you are using local Kubernetes setup, install NGINX Ingress Controller
Build Docker images:
docker-compose -f docker-compose-kubernetes.yml build
Setup Kubernetes services:
Skipper API endpoint published through NGINX Ingress (you can setup your own host in /etc/hosts):
Check NGINX Ingress Controller pod name:
kubectl get pods -n ingress-nginx
Sample response, copy the name of ‘Running’ pod:
NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-dhtcm 0/1 Completed 0 14m ingress-nginx-admission-patch-x8zvw 0/1 Completed 0 14m ingress-nginx-controller-fd7bb8d66-tnb9t 1/1 Running 0 14m
NGINX Ingress Controller logs:
kubectl logs -n ingress-nginx -f <POD NAME>
Skipper API logs:
kubectl logs -n katana-skipper -f -l app=skipper-api
Remove Kubernetes services:
- api – Web API implementation
- workflow – workflow logic
- services – a set of sample microservices, you should replace this with your own services. Update references in docker-compose.yml
- rabbitmq – service for RabbitMQ broker
- skipper-lib – reusable Python library to streamline event communication through RabbitMQ
- logger – logger service
- Web API:
If running on local Kubernetes with Docker Desktop:
If running on local Kubernets, make sure port forwarding is enabled:
kubectl -n rabbits port-forward rabbitmq-0 15672:15672
Skipper Library on PyPI
- PyPI – skipper-lib is on PyPI
Cloud Deployment Guides
OKE – deployment guide for Oracle Container Engine for Kubernetes
GKE – deployment guide for Google Kubernetes Engine
You can use Skipper engine to run Web API, workflow and communicate with a group of ML microservices implemented under services package.
Skipper can be deployed to any Cloud vendor with Kubernetes or Docker support. You can scale Skipper runtime on Cloud using Kubernetes commands.
Licensed under the Apache License, Version 2.0. Copyright 2020-2021 Katana ML, Andrej Baranovskij. Copy of the license.