Skip to content

bring keras-models to production with tensorflow-serving and nodejs + docker 🍕

License

Notifications You must be signed in to change notification settings

krystianity/keras-serving

Repository files navigation

keras-serving

keras->tensorflow+grpc+docker=>nodejs 🐳🔥

  • example of bringing a keras model to production using tensorflow serving
  • using custom XOR model with tensor.proto dimensions example
  • building & training of the model works with python2.7 on the workstation
  • exported model is served via grpc in a C++ server using a Docker-Container
  • a nodejs server wraps the grpc api for a simple http POST endpoint
  • also ships an advanced multi-model face (emotion, gender) detection example /face-recog
  • and and advanced google bigquery (as dataaset) example /bigquery

Overview

Workflow (Unix - testen on Ubuntu 16.04 64bit)

You will need

python
pip
docker (docker-compose)

1. Install Requirements

./prepare.sh
# installs python dependencies via pip
# builds the docker image for tensorflow_serving (takes a while ~ 30 minutes)
# image size ~ 3.5 GB

checkout build troubleshoot if you are having trouble

2. Build, Train and Serialise Keras Model

python train.py
# results will be in (/result)

3. Load and export Model as Tensorflow Graph

python export.py
# results will be in (/export)

4. Build & Run Containers via docker-compose

./start-servers.sh
# ./stop-servers.sh

5. Test API via curl

curl -X POST \
  http://localhost:8080/predict-xor \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{"inputs": [0,1]}'