Estimated completion time: 11m.
This tutorial is relevant only for Kubernetes installation of Hydrosphere. Please refer to How to Install Hydrosphere on Kubernetes cluster.
In this tutorial, you will learn how to configure deployed Applications.
By the end of this tutorial you will know how to:
Train and upload an example model version
Create a Deployment Configuration
Create an Application from the uploaded model version with previously created deployment configuration
Examine settings of a Kubernetes cluster
In this section, we describe the resources required to create and upload an example model used in further sections. If you have no prior experience with uploading models to the Hydrosphere platform we suggest that you visit the Getting Started Tutorial.
Here are the resources used to train sklearn.ensemble.GradientBoostingClassifier
and upload it to the Hydrosphere cluster.
requirements.txt
is a list of Python dependencies used during the process of building model image.
serving.yaml
is a resource definition that describes how model should be built and uploaded to Hydrosphere platform.
train.py
is used to generate a model.joblib
which is loaded from func_main.py
during model serving.
Run python train.py
to generate model.joblib
func_main.py
is a script which serves requests and produces responses.
Our folder structure should look like this:
Do not forget to run python train.py
to generate model.joblib
!
After we have made sure that all files are placed correctly, we can upload the model to the Hydrosphere platform by running hs upload
from the command line.
Next, we are going to create and upload an instance of Deployment Configuration to the Hydrosphere platform.
Deployment Configurations describe with which Kubernetes settings Hydrosphere should deploy servables. You can specify Pod Affinity and Tolerations, the number of desired pods in deployment, ResourceRequirements, and Environment Variables for the model container, and HorizontalPodAutoScaler settings.
Created Deployment Configurations can be attached to Servables and Model Variants inside of Application.
Deployment Configurations are immutable and cannot be changed after they've been uploaded to the Hydrosphere platform.
You can create and upload Deployment Configuration to Hydrosphere via YAML Resource definition or via Python SDK.
For this tutorial, we'll create a deployment configuration with 2 initial pods per deployment, HPA, and FOO
environment variable with value bar
.
Create the deployment configuration resource definition:
To upload it to the Hydrosphere platform, run:
Create the application resource definition:
To upload it to the Hydrosphere platform, run:
You can check whether with_replicas
was successful by calling kubectl get deployment -A -o wide
and checking the READY
column.
To check whether with_hpa
was successful you should get a list of all created Horizontal Pod Autoscaler Resources. You can do so by calling kubectl get hpa -A
The output is similar to:
To list all environment variables run kubectl exec my-model-1-tumbling-star -it /bin/bash
and then execute the printenv
command which prints ann system variables.
The output is similar to: