Skip to content

Commit

Permalink
Merge branch 'master' into eric/propagate_flask_exceptions_enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
ericandrewmeadows authored Aug 14, 2020
2 parents fea8b45 + 8c633bf commit 42c2472
Show file tree
Hide file tree
Showing 419 changed files with 77,957 additions and 13,582 deletions.
18 changes: 14 additions & 4 deletions .dependabot/config.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
version: 1

update_configs:
- package_manager: "python"
directory: "/python"
- directory: "/python"
package_manager: "python"
update_schedule: "weekly"
default_reviewers:
- adriangonz
- package_manager: "java:maven"
directory: "/engine"
- directory: "/engine"
package_manager: "java:maven"
update_schedule: "weekly"
default_reviewers:
- adriangonz
- directory: "/executor"
package_manager: "go:modules"
update_schedule: "weekly"
default_reviewers:
- adriangonz
- directory: "/operator"
package_manager: "go:modules"
update_schedule: "weekly"
default_reviewers:
- adriangonz
34 changes: 34 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,38 @@ assignees: ''

---

<!-- Welcome and thank you for helping us make Seldon Core better!
To help us address your issue, please provide us as much of the information requested below as possble. Thanks! -->


## Describe the bug
<!-- A clear and concise description of what the bug is. -->


## To reproduce
<!-- Steps required to reproduce the issue. For example:
1. define model ...
2. build image ... (especially what wrapper version is used)
3. deploy ...
-->

## Expected behaviour
<!-- A clear and concise description of what you expected to happen. -->


## Environment
<!-- Description of environment -->

<!-- You Can fill it manually or paste the output of the command below:
* Cloud Provider: [e.g. GKE, AWS, Bare Metal, Kind, Minikube]
* Kubernetes Cluster Version [Output of `kubectl version`]
* Deployed Seldon System Images: [Output of `kubectl get --namespace seldon-system deploy seldon-controller-manager -o yaml | grep seldonio`]
Alternatively run `echo "#### Kubernetes version:\n $(kubectl version) \n\n#### Seldon Images:\n$(kubectl get --namespace seldon-system deploy seldon-controller-manager -o yaml | grep seldonio)"`
-->

## Model Details <!-- If the issue is with your deployed model you can also provide the following for fulll insights -->
* Images of your model: [Output of: `kubectl get seldondeployment -n <yourmodelnamespace> <seldondepname> -o yaml | grep image:` where `<yourmodelnamespace>`]
* Logs of your model: [You can get the logs of your model by running `kubectl logs -n <yourmodelnamespace> <seldonpodname> <container>`]
27 changes: 27 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<!--
Thanks for sending a pull request!
If this is your first time, please read our contributor guidelines:
https://docs.seldon.io/projects/seldon-core/en/latest/developer/contributing.html
-->

**What this PR does / why we need it**:

**Which issue(s) this PR fixes**:
<!--
Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->
Fixes #

**Special notes for your reviewer**:

**Does this PR introduce a user-facing change?**:
<!--
If no, just write "NONE" in the release-note block below.
Otherwise, enter your extended release note in the block below.
For more information on release notes see:
https://docs.seldon.io/projects/seldon-core/en/latest/developer/contributing.html#release-notes
-->
```release-note
```

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ cluster-manager/.m2/

.ipynb_checkpoints

# osx
.DS_Store

# Tags
.tags

Expand Down
245 changes: 244 additions & 1 deletion CHANGELOG.md

Large diffs are not rendered by default.

64 changes: 64 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,70 @@ state this explicitly, by submitting any copyrighted material via pull request,
other means you agree to license the material under the project's open source license and
warrant that you have the legal authority to do so.

## Release notes

Our process to manage release notes is modelled after how the Kubernetes project handles them.
This process can be separated into 2 separate phases:

- Adding notes on each PR. Happens at **PR creation time**.
- Compiling all PR notes before a release. Happens at **release time**.

### Adding notes on each PR

When a PR is created, a [Prow / Lighthouse
plugin](https://prow.k8s.io/command-help#release_note_none) will check if there
is a populated `release-note` block in the PR body such as:

````
```release-note
Some public-facing release note.
```
````

If there isn't, the PR will be labelled as
`do-not-merge/release-note-label-needed`.
Note that to speed things up, the [default PR
template](https://github.com/SeldonIO/seldon-core/blob/master/.github/PULL_REQUEST_TEMPLATE.md)
will create an empty
`release-notes` block for you.
For PRs that don't need public-facing release notes (e.g. fixes on the
integration tests), you can use the `/release-note-none` Prow command.

#### Conventions

There are a number of conventions that we can use so that the changes are more
semantic.
These are mainly based around keywords which will affect how the release notes
will get displayed.

- Use the words `Added`, `Changed`, `Fixed`, `Removed` or `Deprecated` to
describe the contents of the PR.
For example:

````
```release-note
Added metadata support to Python wrapper
```
````

- Use the expression `Action required` to describe breaking changes.
For example:

````
```release-note
Action required: The helm value `createResources` has been renamed
`managerCreateResources`.
```
````

### Compiling all PR notes before a release

At release time, there is a [release-notes
command](https://github.com/kubernetes/release/blob/master/cmd/release-notes/README.md)
which crawls over all the PRs between 2 particular tags (e.g. `v1.1.0` to
`v1.2.0`), extracting the release-notes blocks.
These blocks can then be used to generate the final release notes.

## Coding conventions

We use [pre-commit](https://pre-commit.com/) to handle a number of Git hooks
Expand Down
59 changes: 32 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ An open source platform to deploy your machine learning models on Kubernetes at

![](https://raw.githubusercontent.com/SeldonIO/seldon-core/master/doc/source/images/core-logo-small.png)


## Overview

Seldon core converts your ML models (Tensorflow, Pytorch, H2o, etc.) or language wrappers (Python, Java, etc.) into production REST/GRPC microservices.
Expand All @@ -13,7 +12,7 @@ Seldon handles scaling to thousands of production machine learning models and pr
* Read the [Seldon Core Documentation](https://docs.seldon.io/projects/seldon-core/en/latest/)
* Join our [community Slack](https://join.slack.com/t/seldondev/shared_invite/enQtMzA2Mzk1Mzg0NjczLTJlNjQ1NTE5Y2MzMWIwMGUzYjNmZGFjZjUxODU5Y2EyMDY0M2U3ZmRiYTBkOTRjMzZhZjA4NjJkNDkxZTA2YmU) to ask any questions
* Get started with [Seldon Core Notebook Examples](https://docs.seldon.io/projects/seldon-core/en/latest/examples/notebooks.html)
* Join our fortnightly [online community calls](https://docs.seldon.io/projects/seldon-core/en/latest/developer/community.html)
* Join our fortnightly [online working group calls](https://docs.seldon.io/projects/seldon-core/en/latest/developer/community.html) : [Google Calendar](https://calendar.google.com/event?action=TEMPLATE&tmeid=MXBtNzI1cjk0dG9kczhsZTRkcWlmcm1kdjVfMjAyMDA3MDlUMTUwMDAwWiBzZWxkb24uaW9fbTRuMnZtcmZubDI3M3FsczVnYjlwNjVpMHNAZw&tmsrc=seldon.io_m4n2vmrfnl273qls5gb9p65i0s%40group.calendar.google.com&scp=ALL)
* Learn how you can [start contributing](https://docs.seldon.io/projects/seldon-core/en/latest/developer/contributing.html)
* Check out [Blogs](https://docs.seldon.io/projects/seldon-core/en/latest/tutorials/blogs.html) that dive into Seldon Core components
* Watch some of the [Videos and Talks](https://docs.seldon.io/projects/seldon-core/en/latest/tutorials/videos.html) using Seldon Core
Expand All @@ -24,14 +23,15 @@ Seldon handles scaling to thousands of production machine learning models and pr

With over 2M installs, Seldon Core is used across organisations to manage large scale deployment of machine learning models, and key benefits include:

* Easy way to containerise ML models using our language wrappers or pre-packaged inference servers.
* Out of the box endpoints which can be tested through Swagger UI, Seldon Python Client or Curl / GRPCurl
* Cloud agnostic and tested on AWS EKS, Azure AKS, Google GKE, Alicloud, Digital Ocean and Openshift.
* Powerful and rich inference graphs made out of predictors, transformers, routers, combiners, and more.
* A standardised serving layer across models from heterogeneous toolkits and languages.
* Advanced and customisable metrics with integration to Prometheus and Grafana.
* Full auditability through model input-output request logging integration with Elasticsearch.
* Microservice tracing through integration to Jaeger for insights on latency across microservice hops.
* Easy way to containerise ML models using our [pre-packaged inference servers](https://docs.seldon.io/projects/seldon-core/en/latest/servers/overview.html), [custom serviers](https://docs.seldon.io/projects/seldon-core/en/latest/servers/custom.html), or [language wrappers](https://docs.seldon.io/projects/seldon-core/en/latest/wrappers/language_wrappers.html).
* Out of the box endpoints which can be tested through [Swagger UI](https://docs.seldon.io/projects/seldon-core/en/latest/reference/apis/openapi.html?highlight=swagger), [Seldon Python Client or Curl / GRPCurl](https://docs.seldon.io/projects/seldon-core/en/latest/python/python_module.html#seldon-core-python-api-client).
* Cloud agnostic and tested on [AWS EKS, Azure AKS, Google GKE, Alicloud, Digital Ocean and Openshift](https://docs.seldon.io/projects/seldon-core/en/latest/examples/notebooks.html#cloud-specific-examples).
* Powerful and rich inference graphs made out of [predictors, transformers, routers, combiners, and more](https://docs.seldon.io/projects/seldon-core/en/latest/examples/graph-metadata.html).
* Metadata provenance to ensure each model can be traced back to its respective[ training system, data and metrics](https://docs.seldon.io/projects/seldon-core/en/latest/reference/apis/metadata.html).
* Advanced and customisable metrics with integration [to Prometheus and Grafana](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/analytics.html).
* Full auditability through model input-output request (logging integration with Elasticsearch)[https://docs.seldon.io/projects/seldon-core/en/latest/analytics/log_level.html].
* Microservice distributed tracing through [integration to Jaeger](https://docs.seldon.io/projects/seldon-core/en/latest/graph/distributed-tracing.html) for insights on latency across microservice hops.
* Secure, reliable and robust system maintained through a consistent [security & updates policy](https://github.com/SeldonIO/seldon-core/blob/master/SECURITY.md).


## Getting Started
Expand Down Expand Up @@ -103,7 +103,7 @@ Or alternatively you can send requests programmatically using our [Seldon Python
```console
$ curl -X POST http://<ingress>/seldon/seldon/iris-model/api/v1.0/predictions \
-H 'Content-Type: application/json' \
-d '{ "data": { "ndarray": [[1,2,3,4]] } }'
-d '{ "data": { "ndarray": [[1,2,3,4]] } }'

{
"meta" : {},
Expand Down Expand Up @@ -279,13 +279,13 @@ Below are some of the core components together with link to the logs that provid

### Getting Started

* [Overview ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/github-readme.html)
* [Quickstart Guide ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/quickstart.html)
* [Quickstart Guide ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/github-readme.html)
* [Overview of Components ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/overview.html)
* [Install Seldon Core on Kubernetes ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html)
* [Join the Community ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/community.html)

### Seldon Core Deep Dive

* [Detailed Installation Parameters ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/helm.html)
* [Pre-packaged Inreference Servers ](https://docs.seldon.io/projects/seldon-core/en/latest/servers/overview.html)
* [Language Wrappers for Custom Models ](https://docs.seldon.io/projects/seldon-core/en/latest/wrappers/language_wrappers.html)
Expand All @@ -298,12 +298,12 @@ Below are some of the core components together with link to the logs that provid
* [Changelog ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/changelog.html)

### Pre-Packaged Inference Servers

* [MLflow Server ](https://docs.seldon.io/projects/seldon-core/en/latest/servers/mlflow.html)
* [SKLearn server ](https://docs.seldon.io/projects/seldon-core/en/latest/servers/sklearn.html)
* [Tensorflow Serving ](https://docs.seldon.io/projects/seldon-core/en/latest/servers/tensorflow.html)
* [XGBoost server ](https://docs.seldon.io/projects/seldon-core/en/latest/servers/xgboost.html)

### Language Wrappers (Production)

* [Python Language Wrapper [Production] ](https://docs.seldon.io/projects/seldon-core/en/latest/python/index.html)
Expand All @@ -319,7 +319,7 @@ Below are some of the core components together with link to the logs that provid

* [Ambassador Ingress ](https://docs.seldon.io/projects/seldon-core/en/latest/ingress/ambassador.html)
* [Istio Ingress ](https://docs.seldon.io/projects/seldon-core/en/latest/ingress/istio.html)

### Production

* [Supported API Protocols ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/protocols.html)
Expand All @@ -329,13 +329,13 @@ Below are some of the core components together with link to the logs that provid
* [Distributed Tracing with Jaeger ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/distributed-tracing.html)
* [Replica Scaling ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/scaling.html)
* [Custom Inference Servers](https://docs.seldon.io/projects/seldon-core/en/latest/servers/custom.html)

### Advanced Inference

* [Model Explanations ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/explainers.html)
* [Outlier Detection ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/outlier_detection.html)
* [Routers (incl. Multi Armed Bandits) ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/routers.html)
* [Routers (incl. Multi Armed Bandits) ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/routers.html)

### Examples

* [Notebooks ](https://docs.seldon.io/projects/seldon-core/en/latest/examples/notebooks.html)
Expand All @@ -344,18 +344,18 @@ Below are some of the core components together with link to the logs that provid

### Reference

* [Annotation-based Configuration ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/annotations.html)
* [Annotation-based Configuration ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/annotations.html)
* [AWS Marketplace Install ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/aws-mp-install.html)
* [Benchmarking ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/benchmarking.html)
* [Benchmarking ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/benchmarking.html)
* [General Availability ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/ga.html)
* [Helm Charts ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/helm_charts.html)
* [Images ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/images.html)
* [Logging & Log Level ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/log_level.html)
* [Private Docker Registry ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/private_registries.html)
* [Prediction APIs ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/apis/index.html)
* [Logging & Log Level ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/log_level.html)
* [Private Docker Registry ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/private_registries.html)
* [Prediction APIs ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/apis/index.html)
* [Python API reference ](https://docs.seldon.io/projects/seldon-core/en/latest/python/api/modules.html)
* [Release Highlights ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/release-highlights.html)
* [Seldon Deployment CRD ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/seldon-deployment.html)
* [Release Highlights ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/release-highlights.html)
* [Seldon Deployment CRD ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/seldon-deployment.html)
* [Service Orchestrator ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/svcorch.html)
* [Kubeflow ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/kubeflow.html)

Expand All @@ -373,3 +373,8 @@ Below are some of the core components together with link to the logs that provid

The name Seldon (ˈSɛldən) Core was inspired from [the Foundation Series (Scifi Novel)](https://en.wikipedia.org/wiki/Foundation_series) where it's premise consists of a mathematician called "Hari Seldon" who spends his life developing a theory of Psychohistory, a new and effective mathematical sociology which allows for the future to be predicted extremely accurate through long periods of time (across hundreds of thousands of years).

## Commercial Support

![](https://raw.githubusercontent.com/SeldonIO/seldon-core/master/doc/source/images/deploy-logo.png)

We offer commercial support via our enterprise product Seldon Deploy. Please visit [https://www.seldon.io/](https://www.seldon.io/) for details and a trial.
22 changes: 22 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Security Policy

This document provides an overview of the security policy of Seldon Core.

Seldon Core aims to follow the two following policies:

* Keep dependencies up to date
* Identify and address common vulnerabilities and exposures

## Supported Versions

The versions that support this Security policies are the following

| Version | Supported |
| ------- | ------------------ |
| >= 1.2.2 | :white_check_mark: |
| < 1.2.2 | :x: |

## Reporting a Vulnerability

If you identify a vulnerability the best way to report it is by opening an issue with the type "bug". The discussion can then take place there on next steps (ie updating library, reaching out to 3rd party projects, etc).

48 changes: 48 additions & 0 deletions ci/create-release
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
#
# add-pr-build-comment
#
set -o nounset
set -o errexit
set -o pipefail
set -o noglob
set -o xtrace

VERSION=$(cat ../version.txt)

# Check if version has trailing -dev otherwise exit
if [ ${VERSION##*-dev} ]; then
echo "Version does not end with -dev"
exit 1
fi

# Remove trailing dev as that will be our release version
VERSION=${VERSION%"-dev"}
BRANCH_NAME="release-$VERSION"

# Check out master branch to use as base
git fetch origin master
git checkout master

# Don't exit on failure so we can test branch exists
set +o errexit
git checkout -b $BRANCH_NAME
RETVAL=$?
if [[ ${RETVAL} -gt 0 ]]; then
echo "Branch already exists"
git checkout $BRANCH_NAME
git rebase master
fi
set -o errexit

# Perform required actions for release
echo "$VERSION" > ../version.txt
(cd ../engine && mvn versions:set -DnewVersion=$(cat ../version.txt))
(cd ../ && python release.py $(cat version.txt))

# Push updated changes for release
git add ..
git commit -m "Updating $BRANCH_NAME"
git push origin $BRANCH_NAME


2 changes: 1 addition & 1 deletion ci_build_and_push_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ exit $((${PYTHON_EXIT_VALUE} \
+ ${LOGGER_EXIT_VALUE} \
+ ${SKLEARN_EXIT_VALUE} \
+ ${MLFLOW_EXIT_VALUE} \
+ ${XGBOOST_EXIT_VALUE} \
+ ${XGBOOST_EXIT_VALUE} \
+ ${TFPROXY_EXIT_VALUE} \
+ ${STORAGE_INITIALIZER_EXIT_VALUE} \
+ ${EXPLAIN_EXIT_VALUE}))
Expand Down
Loading

0 comments on commit 42c2472

Please sign in to comment.