All Projects β†’ katanaml β†’ katana-skipper

katanaml / katana-skipper

Licence: Apache-2.0 license
Simple and flexible ML workflow engine

Programming Languages

python
139335 projects - #7 most used programming language
PureBasic
71 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to katana-skipper

Kubernetes Ingress Controller
🦍 Kong for Kubernetes: the official Ingress Controller for Kubernetes.
Stars: ✭ 1,347 (+475.64%)
Mutual labels:  ingress, k8s
Apisix Ingress Controller
ingress controller for K8s
Stars: ✭ 139 (-40.6%)
Mutual labels:  ingress, k8s
Kubernetes Pfsense Controller
Integrate Kubernetes and pfSense
Stars: ✭ 100 (-57.26%)
Mutual labels:  ingress, k8s
Citrix K8s Ingress Controller
Citrix ADC (NetScaler) Ingress Controller for Kubernetes:
Stars: ✭ 256 (+9.4%)
Mutual labels:  ingress, k8s
trafficserver-ingress-controller
Apache Traffic Server Ingress Controller for Kubernetes
Stars: ✭ 29 (-87.61%)
Mutual labels:  ingress, k8s
Ingressmonitorcontroller
A Kubernetes controller to watch ingresses and create liveness alerts for your apps/microservices in UptimeRobot, StatusCake, Pingdom, etc. – [✩Star] if you're using it!
Stars: ✭ 306 (+30.77%)
Mutual labels:  ingress, k8s
Ingress Merge
Merge Ingress Controller for Kubernetes
Stars: ✭ 124 (-47.01%)
Mutual labels:  ingress, k8s
atlassian-kubernetes
All things Atlassian and Kubernetes
Stars: ✭ 30 (-87.18%)
Mutual labels:  orchestration, k8s
Lastbackend
System for containerized apps management. From build to scaling.
Stars: ✭ 1,536 (+556.41%)
Mutual labels:  pipeline, orchestration
re-mote
Re-mote operations using SSH and Re-gent
Stars: ✭ 61 (-73.93%)
Mutual labels:  pipeline, orchestration
Kubernetes Ingress
NGINX and NGINX Plus Ingress Controllers for Kubernetes
Stars: ✭ 3,528 (+1407.69%)
Mutual labels:  ingress, k8s
bilrost
Kubernetes controller/operator to set up OAUTH2/OIDC security on any ingress based service
Stars: ✭ 17 (-92.74%)
Mutual labels:  ingress, k8s
Ansible Role Kubernetes
Ansible Role - Kubernetes
Stars: ✭ 247 (+5.56%)
Mutual labels:  orchestration, k8s
Ingress Gce
Ingress controller for Google Cloud
Stars: ✭ 1,024 (+337.61%)
Mutual labels:  ingress, k8s
Clearml Agent
ClearML Agent - ML-Ops made easy. ML-Ops scheduler & orchestration solution
Stars: ✭ 117 (-50%)
Mutual labels:  orchestration, k8s
Nghttpx Ingress Lb
nghttpx ingress controller for Kubernetes
Stars: ✭ 115 (-50.85%)
Mutual labels:  ingress, k8s
K8s Bigip Ctlr
Repository for F5 Container Ingress Services for Kubernetes & OpenShift.
Stars: ✭ 204 (-12.82%)
Mutual labels:  ingress, orchestration
kubernetes the easy way
Automating Kubernetes the hard way with Vagrant and scripts
Stars: ✭ 22 (-90.6%)
Mutual labels:  orchestration, k8s
Kubernetes-and-Cloud-Native-Associate-KCNA
Useful notes for the KCNA - Kubernetes and Cloud Native Associate
Stars: ✭ 162 (-30.77%)
Mutual labels:  orchestration, k8s
tondra
Continuous Development on Kubernetes environments with Skaffold
Stars: ✭ 105 (-55.13%)
Mutual labels:  k8s

Katana ML Skipper

PyPI - Python GitHub Stars GitHub Issues Current Version

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!

Skipper

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.

One of the services, mobilenetservice, shows how to use JavaScript based microservice with Skipper. This allows to use containers with various programming languages - Python, JavaScript, Java, etc. You can run ML services with Python frameworks, Node.js or any other choice.

Author

Katana ML, Andrej Baranovskij

Instructions

Start/Stop

Docker Compose

Start:

docker-compose up --build -d

This will start Skipper services and RabbitMQ.

Stop:

docker-compose down

Web API FastAPI endpoint:

http://127.0.0.1:8080/api/v1/skipper/tasks/docs

Kubernetes

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:

./kubectl-setup.sh

Skipper API endpoint published through NGINX Ingress (you can setup your own host in /etc/hosts):

http://kubernetes.docker.internal/api/v1/skipper/tasks/docs

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:

./kubectl-remove.sh

Components

  • 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
  • skipper-lib-js - reusable Node.js library to streamline event communication through RabbitMQ
  • logger - logger service

API URLs

  • Web API:
http://127.0.0.1:8080/api/v1/skipper/tasks/docs

If running on local Kubernetes with Docker Desktop:

http://kubernetes.docker.internal/api/v1/skipper/tasks/docs
  • RabbitMQ:
http://localhost:15672/ (skipper/welcome1)

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

Skipper Library on NPM

  • NPM - skipper-lib-js is on NPM

Cloud Deployment Guides

  • OKE - deployment guide for Oracle Container Engine for Kubernetes

  • GKE - deployment guide for Google Kubernetes Engine

Usage

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.

IMAGE ALT TEXT

IMAGE ALT TEXT

License

Licensed under the Apache License, Version 2.0. Copyright 2020-2021 Katana ML, Andrej Baranovskij. Copy of the license.

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].