Skip to content

Commit

Permalink
GitBook: [master] 41 pages and 32 assets modified
Browse files Browse the repository at this point in the history
  • Loading branch information
Yuriy Gavrilin authored and gitbook-bot committed Oct 19, 2020
1 parent 6ce53c2 commit 65ffba0
Show file tree
Hide file tree
Showing 66 changed files with 162 additions and 192 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/application (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/application_creation (1).gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/application_upgrade (1).gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/architecture (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/auto_od_feature (1).gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/figure (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/image (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/image (2) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/image (3).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/.gitbook/assets/serving_screenshot (1).png
Binary file added docs/.gitbook/assets/title_image (1).png
Binary file added docs/.gitbook/assets/ui-service-diagram (1).png
8 changes: 4 additions & 4 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ description: Platform for deploying your Machine Learning to production

[![Apache2](https://img.shields.io/badge/license-Apache2-green.svg?style=for-the-badge)](https://www.apache.org/licenses/LICENSE-2.0)[​​](https://gitter.im/Hydrospheredata/hydro-serving?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)[![Slack Community](https://img.shields.io/badge/slack-@hydrospheredata-blue.svg?logo=slack?label&style=for-the-badge)](https://hydrospheredata.slack.com/)![Hire Provectus Team](https://img.shields.io/badge/-Hydrosphere.io-blue?label&style=for-the-badge)

Hydrosphere is a platform for **deploying, versioning, and monitoring** your machine learning models in production. It is language-agnostic and framework-agnostic, with support for all major programming languages and frameworks - Python, Java, Tensorflow, Pytorch, etc.
Hydrosphere is a platform for **deploying, versioning, and monitoring** your machine learning models in production. It is language-agnostic and framework-agnostic, with support for all major programming languages and frameworks - Python, Java, Tensorflow, Pytorch, etc.

![](.gitbook/assets/title_image.png)
![](.gitbook/assets/title_image%20%281%29.png)

## What to do next?

⭐️ Star [**Hydrosphere repo**](https://github.com/Hydrospheredata/hydro-serving) ****on Github
⭐️ Star [**Hydrosphere repo**](https://github.com/Hydrospheredata/hydro-serving) _\*\*_on Github

💦 Explore our [**Getting Started**](quickstart/getting-started.md) tutorial

🥳 Join [**Hydrosphere Slack Community**](https://join.slack.com/t/hydrospheredata/shared_invite/zt-gg41mrlg-eDz6v6yhkOfoMf~oi2mTug)\*\*\*\*
🥳 Join [**Hydrosphere Slack Community**](https://join.slack.com/t/hydrospheredata/shared_invite/zt-gg41mrlg-eDz6v6yhkOfoMf~oi2mTug)\*\*\*\*

8 changes: 3 additions & 5 deletions docs/about/concepts.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ A **Model** is a machine learning model or a processing function that consumes p

Within the Hydrosphere platform, we break down a model into its versions. Each **Model version** represents a single Docker image containing all the artifacts that you have uploaded to the platform. Consequently, **Model** is a group of **Model versions** with the same name.

![Model vs Model Version Difference](../.gitbook/assets/model-vs-model-version.png)
![Model vs Model Version Difference](../.gitbook/assets/model-vs-model-version%20%281%29.png)

### Runtimes

A **Runtime** is a Docker image with the predefined gRPC interface which loads and serves your model.

![Place of Runtimes in the Architecture](../.gitbook/assets/serving_on_various_runtimes.jpg)
![Place of Runtimes in the Architecture](../.gitbook/assets/serving_on_various_runtimes%20%281%29.jpg)

We have [implemented](../resources/reference/runtimes.md) a few runtimes, which you can use in your own projects.

Expand All @@ -38,7 +38,7 @@ Users should not use Servables as-is, since they are designed to be building blo

An **Application** is a pipeline of one or more stages, each consisting of one or multiple Model Versions. Data sent to an application stage is shadowed to all of its model versions. The output of a stage is picked randomly with respect to weights.

![Example of a multi-staged output with an A/B test on the second stage](../.gitbook/assets/application.png)
![Example of a multi-staged output with an A/B test on the second stage](../.gitbook/assets/application%20%281%29.png)

When a user creates an Application, the Manager service automatically deploys appropriate Servables. The Application handles monitoring of your models and can perform A/B traffic splits.

Expand Down Expand Up @@ -118,5 +118,3 @@ A **check** is a boolean condition associated with a field of a Model Version si
For example, Min/Max checks ensure that a field value is in an acceptable range which is inferred from training data values.
###
2 changes: 0 additions & 2 deletions docs/about/hydrosphere-features/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,3 @@ description: Features that make up Hydrosphere Platform
* [Kubeflow Components](kubeflow-components.md)
* AWS Sagemaker



6 changes: 3 additions & 3 deletions docs/about/hydrosphere-features/a-b-model-deployments.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

Hydrosphere allows you to A/B test your ML models in production.

A/B testing is a great way of measuring how well your models perform or which of your model versions is more effective and taking data-driven decisions upon this knowledge.
A/B testing is a great way of measuring how well your models perform or which of your model versions is more effective and taking data-driven decisions upon this knowledge.

Production ML applications always have specific goals, for example driving as many users as possible to perform some action. To achieve these goals, it’s necessary to run online experiments and compare model versions using metrics in order to measure your progress against them. This approach allows to track whether your development efforts lead to desired outcomes.
Production ML applications always have specific goals, for example driving as many users as possible to perform some action. To achieve these goals, it’s necessary to run online experiments and compare model versions using metrics in order to measure your progress against them. This approach allows to track whether your development efforts lead to desired outcomes.

To perform a basic A/B experiment on an application consisting of 2 variants of a model, you need to train and upload both versions to Hydrosphere, create an application with a single execution stage from them, invoke it by simulating production data flow, then analyze production data using metrics of your choice.
To perform a basic A/B experiment on an application consisting of 2 variants of a model, you need to train and upload both versions to Hydrosphere, create an application with a single execution stage from them, invoke it by simulating production data flow, then analyze production data using metrics of your choice.

Learn how to set up an A/B application:

Expand Down
10 changes: 4 additions & 6 deletions docs/about/hydrosphere-features/alerts.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@
Hydrosphere Alerts about failed data checks and other issues with models are not available in the open-source version. If you are interested in this component please contact us via [Gitter](https://gitter.im/Hydrospheredata/hydro-serving) or our [website](https://hydrosphere.io).
{% endhint %}

### Overview
## Overview

\*\*\*\*[**Sonar**](../services/monitoring.md#sonar) sends data about any failed health checks of live production models and applications to **Prometheus AlertManager**. Once a user deploys a model to production, adds training data and starts sending production requests, these requests start getting checked by Sonar. If Sonar detects an anomaly \(for example, a data check failed, or a metric value exceeded the threshold\), AlertManager sends an appropriate alert.

Users can manage alerts by setting up AlertManager for Prometheus on Kubernetes. This can be helpful when you have models that you get too many alerts from and need to filter, group, or partly silence them. AlertManager can take care of grouping, inhibition, silencing of alerts, and routing them to the receiver integration of your choice. To configure alerts, modify the `prometheus-am-configmap-<release_name>` ConfigMap.

For more information about Prometheus AlertManager please refer to its [official documentation](https://prometheus.io/docs/alerting/latest/alertmanager/).
\*\*\*\*[**Sonar**](../services/monitoring.md#sonar) sends data about any failed health checks of live production models and applications to **Prometheus AlertManager**. Once a user deploys a model to production, adds training data and starts sending production requests, these requests start getting checked by Sonar. If Sonar detects an anomaly \(for example, a data check failed, or a metric value exceeded the threshold\), AlertManager sends an appropriate alert.

Users can manage alerts by setting up AlertManager for Prometheus on Kubernetes. This can be helpful when you have models that you get too many alerts from and need to filter, group, or partly silence them. AlertManager can take care of grouping, inhibition, silencing of alerts, and routing them to the receiver integration of your choice. To configure alerts, modify the `prometheus-am-configmap-<release_name>` ConfigMap.

For more information about Prometheus AlertManager please refer to its [official documentation](https://prometheus.io/docs/alerting/latest/alertmanager/).

Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
# Automatic Outlier Detection

For each model with uploaded training data, Hydrosphere creates an outlier detection \(Auto OD\) metric, which assigns an outlier score to each request. A request is labeled as an outlier if the outlier score is greater than the 97th percentile of training data outlier scores distribution.
For each model with uploaded training data, Hydrosphere creates an outlier detection \(Auto OD\) metric, which assigns an outlier score to each request. A request is labeled as an outlier if the outlier score is greater than the 97th percentile of training data outlier scores distribution.

![](../../.gitbook/assets/auto_od_feature.gif)
![](../../.gitbook/assets/auto_od_feature%20%281%29.gif)

You can observe those models deployed as metrics in your monitoring dashboard. These metrics provide you with information about how novel/anomalous your data is.

If these values of the metric deviate significantly from the average, you can tell that you experience a data drift and need to re-evaluate your ML pipeline to check for errors.

### Supported Models
## Supported Models

Right now Auto OD feature works only for Models with numerical scalar fields and uploaded training data.



4 changes: 2 additions & 2 deletions docs/about/hydrosphere-features/data-drift-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Drift Report service creates a statistical report based on a comparison of training and production data distributions. It compares these two sets of data by a set of statistical tests and finds deviations.

![](../../.gitbook/assets/drift_report_screenshot.png)
![](../../.gitbook/assets/drift_report_screenshot%20%281%29.png)

Drift report uses multiple different tests with p=.95 for different features:

Expand All @@ -18,7 +18,7 @@ Drift report uses multiple different tests with p=.95 for different features:
* Chi-Square test
* Unseen categories

### Supported Models
## Supported Models

Right now Drift Report feature works only for Models with numerical scalar fields.

4 changes: 2 additions & 2 deletions docs/about/hydrosphere-features/data-vizualization.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Data Projection is an important tool, which helps to describe complex things in

Essentially, this data is just numbers that in their original form of vectors and matrices do not have any meaning since it is hard to extract any meaning from thousands of vectors of numbers. In Hydrosphere we want to make monitoring easier and clearer that is why we created a data projection service that can visualize your data in a single plot.

![](../../.gitbook/assets/data_projection_screenshot.png)
![](../../.gitbook/assets/data_projection_screenshot%20%281%29.png)

### Usage
## Usage

To start working with Data Projection you need to create a model that has an output field with an embedding of your data. Embeddings are real-valued vectors that represent the input features in a lower dimensionality.

Expand Down
4 changes: 1 addition & 3 deletions docs/about/hydrosphere-features/inference-pipelines.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,5 @@

A Hydrosphere user can create a linear inference pipeline from multiple model versions. Such pipelines are called [Applications](../concepts.md#applications).

![Inference Pipeline with two stages](../../.gitbook/assets/application.png)


![Inference Pipeline with two stages](../../.gitbook/assets/application%20%281%29.png)

2 changes: 1 addition & 1 deletion docs/about/hydrosphere-features/kubeflow-components.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Hydrosphere Serving Components for Kubeflow Pipelines provide integration between Hydrosphere model serving benefits and [Kubeflow](https://kubeflow.org) orchestration capabilities. This allows launching training jobs as well as serving the same models in Kubernetes in a single pipeline.

![](../../.gitbook/assets/hydrosphere_and_kubeflow.png)
![](../../.gitbook/assets/hydrosphere_and_kubeflow%20%281%29.png)

You can find examples of sample pipelines [here](https://github.com/kubeflow/pipelines/samples/contrib/hydrosphere-samples).

Expand Down
6 changes: 3 additions & 3 deletions docs/about/hydrosphere-features/language-agnostic.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Language-Agnostic

Hydrosphere is a language-agnostic platform. You can use it with models written in any language and trained in any framework. Your ML models can come from any background, without restrictions of your choices regarding ML model development tools.
Hydrosphere is a language-agnostic platform. You can use it with models written in any language and trained in any framework. Your ML models can come from any background, without restrictions of your choices regarding ML model development tools.

In Hydrosphere you operate ML models as [Runtimes](../concepts.md#runtimes), which are Docker containers packed with predefined dependencies and gRPC interfaces for loading and serving them on the platform with a model inside. All models that you upload to Hydrosphere must have the corresponding runtimes.
In Hydrosphere you operate ML models as [Runtimes](../concepts.md#runtimes), which are Docker containers packed with predefined dependencies and gRPC interfaces for loading and serving them on the platform with a model inside. All models that you upload to Hydrosphere must have the corresponding runtimes.

Runtimes are created by building a Docker container with dependencies required for the language that matches your model. You can either [use our pre-made runtimes](../../resources/reference/runtimes.md) or [create your own runtime](../../quickstart/how-to/develop-runtimes.md).
Runtimes are created by building a Docker container with dependencies required for the language that matches your model. You can either [use our pre-made runtimes](../../resources/reference/runtimes.md) or [create your own runtime](../../quickstart/how-to/develop-runtimes.md).

The Hydrosphere component responsible for building Docker images from models for deployment, storing them in the registry, versioning, and more is [Manager](../services/serving.md#manager).

6 changes: 2 additions & 4 deletions docs/about/hydrosphere-features/monitoring-dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

Monitoring Dashboard lets you track your performance [metrics](../concepts.md#metrics) and get a high-level view of your data health.

Monitoring Dashboard plots all requests streaming through a model version which are colored in respect with how "healthy" they are. On the horizontal axis we group our data by batches and on the vertical axis we group data by signature fields. In this plot cells are determined by their batch and field. Cells are colored from green to red, depending on the average request health inside the batch.
Monitoring Dashboard plots all requests streaming through a model version which are colored in respect with how "healthy" they are. On the horizontal axis we group our data by batches and on the vertical axis we group data by signature fields. In this plot cells are determined by their batch and field. Cells are colored from green to red, depending on the average request health inside the batch.



![Monitoring Dashboard UI](../../.gitbook/assets/monitoring_screenshot.png)
![Monitoring Dashboard UI](../../.gitbook/assets/monitoring_screenshot%20%281%29.png)

8 changes: 4 additions & 4 deletions docs/about/hydrosphere-features/root-cause.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Prediction Explanation

Prediction Explanation service is designed to help Hydrosphere users understand the underlying causes of changes in predictions coming from their models.
Prediction Explanation service is designed to help Hydrosphere users understand the underlying causes of changes in predictions coming from their models.

![Tabular Explanation for class 0](../../.gitbook/assets/explanations_screenshot.png)
![Tabular Explanation for class 0](../../.gitbook/assets/explanations_screenshot%20%281%29.png)

Prediction Explanation generates explanations of predictions produced by your models and tells you why a model made a particular prediction. Depending on the type of data your model uses, Prediction Explanation provides an explanation as either a set of logical predicates \(if your data is in a tabular format\) or a saliency map \(if your data is in the image format\). A saliency map is a heat map that highlights parts of a picture that a prediction was based on.
Prediction Explanation generates explanations of predictions produced by your models and tells you why a model made a particular prediction. Depending on the type of data your model uses, Prediction Explanation provides an explanation as either a set of logical predicates \(if your data is in a tabular format\) or a saliency map \(if your data is in the image format\). A saliency map is a heat map that highlights parts of a picture that a prediction was based on.

![Saliency map calculated by RISE.](../../.gitbook/assets/image%20%282%29.png)
![Saliency map calculated by RISE.](../../.gitbook/assets/image%20%282%29%20%281%29.png)

Hydrosphere uses [model-agnostic](https://christophm.github.io/interpretable-ml-book/taxonomy-of-interpretability-methods.html) methods for explaining your model predictions. Such methods can be used on any machine learning model after they've been uploaded to the platform.

Expand Down
6 changes: 3 additions & 3 deletions docs/about/hydrosphere-features/traffic-shadowing.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## A/B Deployment

Hydrosphere users can use multiple [model versions](../concepts.md#models-and-model-versions) inside of the same [Application](../concepts.md#applications) stage. Hydrosphere shadows traffic to all model versions inside of an application stage.
Hydrosphere users can use multiple [model versions](../concepts.md#models-and-model-versions) inside of the same [Application](../concepts.md#applications) stage. Hydrosphere shadows traffic to all model versions inside of an application stage.

Users can specify the likelihood that a model output will be selected as an application stage output by using the `weight` argument.

![Traffic is shadowed to all versions, but only v2 and v3 return output](../../.gitbook/assets/ab-deployment-and-traffic-shadowing-1-.png)
![Traffic is shadowed to all versions, but only v2 and v3 return output](../../.gitbook/assets/ab-deployment-and-traffic-shadowing-1-%20%281%29.png)

## Traffic Shadowing

Hydrosphere shadows traffic to all model versions inside of an application stage.
Hydrosphere shadows traffic to all model versions inside of an application stage.

If you want to shadow your traffic between model versions without producing output from them simply set `weight` parameter to `0`. This way your model version will receive all incoming traffic, but its output will never be chosen as an output of an application stage.

Loading

0 comments on commit 65ffba0

Please sign in to comment.