TensorCraft is a server for Keras models
Project description
TensorCraft
The TensorCraft is a HTTP server that serves Keras models using TensorFlow runtime.
This server solves such problems as:
- Versioning of models.
- Warehousing of models.
- Enabling CI/CD for machine-learning models.
Installation
Install latest version from pypi repository.
pip install tensorcraft
Using tensorcraft
Keras Requirements
Currently, tensorcraft
supports only models in the TensorFlow Saved Model, therefore
in order to publish Keras model, it must be saved as Saved Model at first.
Considering the following Keras model:
from tensorflow import keras
from tensorflow.keras import layers
inputs = keras.Input(shape=(8,), name='digits')
x = layers.Dense(4, activation='relu', name='dense_1')(inputs)
x = layers.Dense(4, activation='relu', name='dense_2')(x)
outputs = layers.Dense(2, activation='softmax', name='predictions')(x)
model = keras.Model(inputs=inputs, outputs=outputs, name='3_layer_mlp')
Save it using the export_saved_model
function from the 2.0 TensorFlow API:
keras.experimental.export_saved_model(model, "3_layer_mlp")
Starting Server
To start server run server
command:
sudo tensorcraft server
By default it starts listening unsecured port on localhost at http://localhost:5678
.
Default configuration saves models to /var/lib/tensorcraft
directory. Apart of
that server requires access to /var/run
directory in order to save pid file
there.
Pushing New Model
Once model saved in directory, pack it using tar
utility. For instance, this
is how it will look like for 3_layer_mlp
model from the previous example:
tar -cf 3_layer_mlp.tar 3_layer_mlp
Now the model packed into the archive can be pushed to the server under the arbitrary tag:
tensorcraft push --name 3_layer_mlp --tag 0.0.1 3_layer_mlp.tar
Listing Available Models
You can list all available models on the server using the following command:
tensorcraft list
After the execution of list
command you'll see to available models:
3_layer_mlp:0.0.1
3_layer_mlp:latest
This is the features of tensorcraft
server, each published model name results in
creation of model group. Each model group has it's latest
tag, that references
the latest pushed model.
Removing Model
Remove of the unused model can be performed in using remove
command:
tensorcraft remove --name 3_layer_mlp --tag 0.0.1
Execution of remove
commands results in the remove of the model itself, and
the model group, when is is the last model in the group.
Using Model
In order to use the pushed model, tensorcraft
exposes REST API. An example query
to the server looks like this:
curl -X POST https://localhost:5678/models/3_layer_mlp/0.0.1/predict -d \
'{"x": [[1.0, 2.1, 1.43, 4.43, 12.1, 3.2, 1.44, 2.3]]}'
License
The code and docs are released under the Apache 2.0 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for tensorcraft-0.0.1b1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28fb2ae031f3aa3ea61d2bea19885e3a9d8f22e94bea1d24ae3d71f0b8248a05 |
|
MD5 | dba7fdf914b4974754d5ae26434318ff |
|
BLAKE2b-256 | 27f15d64cecbbd71f04765daa45cac9a2630df48789d93790edcbc35b37084f3 |