Skip to content

Commit

Permalink
Merge branch 'master' into release-0.3
Browse files Browse the repository at this point in the history
  • Loading branch information
gsunner committed Jun 28, 2019
2 parents b559cf5 + de97b12 commit 8450de8
Show file tree
Hide file tree
Showing 147 changed files with 12,102 additions and 12,903 deletions.
83 changes: 83 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,87 @@
# Change Log

## [v0.3.0](https://github.com/SeldonIO/seldon-core/tree/v0.3.0) (2019-06-05)
[Full Changelog](https://github.com/SeldonIO/seldon-core/compare/v0.2.7...v0.3.0)

**Fixed bugs:**

- Python module syntax error for python 3.5 for variable type annotation [\#614](https://github.com/SeldonIO/seldon-core/issues/614)
- openvino\_imagenet\_ensemble example - prediction1 and prediction2 containers error [\#583](https://github.com/SeldonIO/seldon-core/issues/583)
- Docker image name and version messed up [\#562](https://github.com/SeldonIO/seldon-core/issues/562)
- SendonDeployment with name \> 31 characters [\#556](https://github.com/SeldonIO/seldon-core/issues/556)
- Not able be build python3.6 base image. [\#542](https://github.com/SeldonIO/seldon-core/issues/542)

**Closed issues:**

- Update master to 0.3.0 SNAPSHOT [\#612](https://github.com/SeldonIO/seldon-core/issues/612)
- sdep state doesn't move to available [\#605](https://github.com/SeldonIO/seldon-core/issues/605)
- engine using 1 cpu [\#597](https://github.com/SeldonIO/seldon-core/issues/597)
- forbidden error installing ambassador [\#596](https://github.com/SeldonIO/seldon-core/issues/596)
- GPU support with SERVICE\_TYPE Model [\#590](https://github.com/SeldonIO/seldon-core/issues/590)
- Update example notebooks for docs [\#586](https://github.com/SeldonIO/seldon-core/issues/586)
- kubeflow/example-seldon on local cluster [\#585](https://github.com/SeldonIO/seldon-core/issues/585)
- Unable to inject custom parameter in Python model [\#584](https://github.com/SeldonIO/seldon-core/issues/584)
- Tensorflow MNIST Model example on EKS [\#580](https://github.com/SeldonIO/seldon-core/issues/580)
- OOMKilled when starting an operator [\#579](https://github.com/SeldonIO/seldon-core/issues/579)
- Can we customize the outputs format of Model? [\#565](https://github.com/SeldonIO/seldon-core/issues/565)
- node exporter port conflict [\#563](https://github.com/SeldonIO/seldon-core/issues/563)
- How can i enable debug logging of seldon-engine container [\#560](https://github.com/SeldonIO/seldon-core/issues/560)
- Tensorflow Python 3.7 support and wrapper images [\#550](https://github.com/SeldonIO/seldon-core/issues/550)
- helm-charts upgrade fails on ambassador [\#543](https://github.com/SeldonIO/seldon-core/issues/543)
- Update Seldon Core Analytics Grafana [\#540](https://github.com/SeldonIO/seldon-core/issues/540)
- Defining the model serving class with full name doesn't currently work [\#533](https://github.com/SeldonIO/seldon-core/issues/533)
- Update Seldon Operator to Go [\#529](https://github.com/SeldonIO/seldon-core/issues/529)
- Old Containers & Security Vulnerabilities [\#528](https://github.com/SeldonIO/seldon-core/issues/528)
- option to not set runAsUser for engine [\#527](https://github.com/SeldonIO/seldon-core/issues/527)
- Support istio ingress [\#511](https://github.com/SeldonIO/seldon-core/issues/511)
- Endpoint type is missing for AB-test [\#451](https://github.com/SeldonIO/seldon-core/issues/451)
- Alllow arbitrary JSON as a payload [\#434](https://github.com/SeldonIO/seldon-core/issues/434)
- Update Ambassador to 0.40.2 [\#402](https://github.com/SeldonIO/seldon-core/issues/402)
- Ambassador config for rolling updates [\#294](https://github.com/SeldonIO/seldon-core/issues/294)

**Merged pull requests:**

- node exporter configurable port [\#617](https://github.com/SeldonIO/seldon-core/pull/617) ([csabika7](https://github.com/csabika7))
- Require python 3.6 or above for python module [\#615](https://github.com/SeldonIO/seldon-core/pull/615) ([cliveseldon](https://github.com/cliveseldon))
- Update python wrappers to include 3.7 [\#611](https://github.com/SeldonIO/seldon-core/pull/611) ([cliveseldon](https://github.com/cliveseldon))
- update jackson libs to version 2.9.9 [\#609](https://github.com/SeldonIO/seldon-core/pull/609) ([gsunner](https://github.com/gsunner))
- ambassador v1 api [\#603](https://github.com/SeldonIO/seldon-core/pull/603) ([ryandawsonuk](https://github.com/ryandawsonuk))
- option to not set engine user [\#601](https://github.com/SeldonIO/seldon-core/pull/601) ([ryandawsonuk](https://github.com/ryandawsonuk))
- take latest ambassador image [\#599](https://github.com/SeldonIO/seldon-core/pull/599) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Update SeldonMessage with jsonData [\#595](https://github.com/SeldonIO/seldon-core/pull/595) ([gsunner](https://github.com/gsunner))
- Python release update [\#594](https://github.com/SeldonIO/seldon-core/pull/594) ([jklaise](https://github.com/jklaise))
- Fix Jupyter Notebook Headers [\#592](https://github.com/SeldonIO/seldon-core/pull/592) ([axsauze](https://github.com/axsauze))
- Kubeflow Seldon e2e NLP ML pipeline using re-usable components [\#589](https://github.com/SeldonIO/seldon-core/pull/589) ([axsauze](https://github.com/axsauze))
- WIP: Integrate with Istio Ingress [\#588](https://github.com/SeldonIO/seldon-core/pull/588) ([cliveseldon](https://github.com/cliveseldon))
- Added missing link to Jupyter notebook [\#587](https://github.com/SeldonIO/seldon-core/pull/587) ([axsauze](https://github.com/axsauze))
- Added missed s2i folder to Scikitlearn SpaCy Text Example [\#582](https://github.com/SeldonIO/seldon-core/pull/582) ([axsauze](https://github.com/axsauze))
- AWS Elastic Kubernetes/Container Service Deep Mnist Example [\#581](https://github.com/SeldonIO/seldon-core/pull/581) ([axsauze](https://github.com/axsauze))
- Example using Seldon for text classification with SpaCy tokenizer [\#578](https://github.com/SeldonIO/seldon-core/pull/578) ([axsauze](https://github.com/axsauze))
- Remove request limits from operator [\#577](https://github.com/SeldonIO/seldon-core/pull/577) ([cliveseldon](https://github.com/cliveseldon))
- Fix PredictiveUnitState image name and version \(\#562\) [\#576](https://github.com/SeldonIO/seldon-core/pull/576) ([sasvaritoni](https://github.com/sasvaritoni))
- Update TF version for security [\#575](https://github.com/SeldonIO/seldon-core/pull/575) ([jklaise](https://github.com/jklaise))
- updated openvino mode ensemble to 0.2 version [\#574](https://github.com/SeldonIO/seldon-core/pull/574) ([dtrawins](https://github.com/dtrawins))
- updated openvino version to 2019.1 in python\_openvino model wrapper [\#573](https://github.com/SeldonIO/seldon-core/pull/573) ([dtrawins](https://github.com/dtrawins))
- Fix example deployment yaml [\#571](https://github.com/SeldonIO/seldon-core/pull/571) ([sujaymansingh](https://github.com/sujaymansingh))
- fix typo [\#570](https://github.com/SeldonIO/seldon-core/pull/570) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Update Python builder image [\#568](https://github.com/SeldonIO/seldon-core/pull/568) ([jklaise](https://github.com/jklaise))
- option for R builds with plain docker [\#567](https://github.com/SeldonIO/seldon-core/pull/567) ([ryandawsonuk](https://github.com/ryandawsonuk))
- reword explanation of ambassador [\#561](https://github.com/SeldonIO/seldon-core/pull/561) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Integrate use of Go Seldon Controller [\#559](https://github.com/SeldonIO/seldon-core/pull/559) ([cliveseldon](https://github.com/cliveseldon))
- Update e2e tests s2i python image version [\#558](https://github.com/SeldonIO/seldon-core/pull/558) ([gsunner](https://github.com/gsunner))
- option for docker build without s2i [\#555](https://github.com/SeldonIO/seldon-core/pull/555) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Fix logging bug in Python wrapper [\#549](https://github.com/SeldonIO/seldon-core/pull/549) ([jklaise](https://github.com/jklaise))
- update jackson-databind 2.8.11.2 -\> 2.9.8 for cve [\#547](https://github.com/SeldonIO/seldon-core/pull/547) ([gsunner](https://github.com/gsunner))
- Updating grafana to v6.1.6 in seldon core analytics [\#541](https://github.com/SeldonIO/seldon-core/pull/541) ([SachinVarghese](https://github.com/SachinVarghese))
- redis now a statefulset as using redis helm chart [\#539](https://github.com/SeldonIO/seldon-core/pull/539) ([ryandawsonuk](https://github.com/ryandawsonuk))
- add script to delete completed argo jobs [\#538](https://github.com/SeldonIO/seldon-core/pull/538) ([gsunner](https://github.com/gsunner))
- Allow fully qualified class name to be used for the model serving image. [\#537](https://github.com/SeldonIO/seldon-core/pull/537) ([hmonteiro](https://github.com/hmonteiro))
- option for anonymous access to grafana [\#535](https://github.com/SeldonIO/seldon-core/pull/535) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Anonymous grafana [\#534](https://github.com/SeldonIO/seldon-core/pull/534) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Revert "option to use anonymous auth grafana" [\#532](https://github.com/SeldonIO/seldon-core/pull/532) ([ryandawsonuk](https://github.com/ryandawsonuk))
- Update component code coverage and dependencies docs [\#531](https://github.com/SeldonIO/seldon-core/pull/531) ([cliveseldon](https://github.com/cliveseldon))
- update argocd and jenkins in cd demo and script for minikube [\#517](https://github.com/SeldonIO/seldon-core/pull/517) ([ryandawsonuk](https://github.com/ryandawsonuk))

## [v0.2.7](https://github.com/SeldonIO/seldon-core/tree/v0.2.7) (2019-04-29)
[Full Changelog](https://github.com/SeldonIO/seldon-core/compare/v0.2.6...v0.2.7)

Expand Down Expand Up @@ -42,6 +124,7 @@

**Merged pull requests:**

- option to use anonymous auth grafana [\#530](https://github.com/SeldonIO/seldon-core/pull/530) ([ryandawsonuk](https://github.com/ryandawsonuk))
- permission and timeout changes after trying on an openshift4 cluster [\#524](https://github.com/SeldonIO/seldon-core/pull/524) ([ryandawsonuk](https://github.com/ryandawsonuk))
- use stable redis helm chart [\#521](https://github.com/SeldonIO/seldon-core/pull/521) ([ryandawsonuk](https://github.com/ryandawsonuk))
- seldpon\_grpc\_endpoint -\> seldon\_grpc\_endpoint [\#520](https://github.com/SeldonIO/seldon-core/pull/520) ([mustyoshi](https://github.com/mustyoshi))
Expand Down
19 changes: 0 additions & 19 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ pipeline {
parameters {
booleanParam(name: 'IS_DISABLED_APIFE_BUILD', defaultValue: false, description: '')
booleanParam(name: 'IS_DISABLED_ENGINE_BUILD', defaultValue: false, description: '')
booleanParam(name: 'IS_DISABLED_CLUSTERMANAGER_BUILD', defaultValue: false, description: '')
booleanParam(name: 'IS_IMAGE_BEING_PUBLISHED', defaultValue: false, description: '')
}
agent {
Expand Down Expand Up @@ -52,24 +51,6 @@ pipeline {
}
}
}
stage('build-cluster-manager') {
when {
expression { return params.IS_DISABLED_CLUSTERMANAGER_BUILD == false }
}
steps {
echo "Build Image"
sh 'cd cluster-manager && make -f Makefile.ci build'
script {
if (params.IS_IMAGE_BEING_PUBLISHED == true) {
echo "Publish Image"
sh 'cd cluster-manager && make -f Makefile.ci repo_login'
sh 'cd cluster-manager && make -f Makefile.ci push_image'
} else {
echo "Publish Image [SKIPPED]"
}
}
}
}
}
}

3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ tmp/seldon_deployment.md:

run_python_builder:
docker run --rm -it \
--user=$$(id -u) \
-v $(SELDON_CORE_LOCAL_DIR):/work \
seldonio/python-builder bash
seldonio/python-builder:0.2 bash

2 changes: 1 addition & 1 deletion api-frontend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<groupId>io.seldon.apife</groupId>
<artifactId>seldon-apife</artifactId>
<version>0.3.0</version>
<version>0.3.1</version>
<packaging>jar</packaging>

<name>api-frontend</name>
Expand Down
4 changes: 4 additions & 0 deletions doc/source/developer/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ To be completed.

* [Build using private repository](build-using-private-repo.md)

## Seldon Prow

- [prow status](https://prow.seldon.io)

3 changes: 3 additions & 0 deletions doc/source/examples/azure_aks_deep_mnist.nblink
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"path": "../../../examples/models/azure_aks_deep_mnist/azure_aks_deep_mnist.ipynb"
}
3 changes: 3 additions & 0 deletions doc/source/examples/gpu_tensorflow_deep_mnist.nblink
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"path": "../../../examples/models/gpu_tensorflow_deep_mnist/gpu_tensorflow_deep_mnist.ipynb"
}
2 changes: 2 additions & 0 deletions doc/source/examples/notebooks.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ Notebooks
Ambassador Custom Config <ambassador_custom>
Autoscaling Example <autoscaling_example>
AWS Elastic Kubernetes Service (EKS) Deep MNIST <aws_eks_deep_mnist>
Azure Kubernetes Service (AKS) Deep MNIST <azure_aks_deep_mnist>
Combiner Example <combiner>
Custom Endpoints <custom_endpoints>
Example Helm Deployments <helm_examples>
Go Model <go_example>
GPU Tensorflow Deep MNIST <gpu_tensorflow_deep_mnist>
H2O Java MoJo <h2o_mojo>
Istio Canary <istio_canary>
Istio Examples <istio_examples>
Expand Down
33 changes: 30 additions & 3 deletions doc/source/graph/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,43 @@ You can configure aspects of Seldon Core via annotations in the SeldonDeployment

### Service Orchestrator

* ```seldon.io/engine-java-opts``` : Java Opts for Service Orchestrator
* Locations : SeldonDeployment.spec.predictors.annotations
* [Java Opts example](model_engine_java_opts.md)
* ```seldon.io/engine-separate-pod``` : Use a separate pod for the service orchestrator
* Locations : SeldonDeployment.spec.annotations
* [Separate svc-orc pod example](model_svcorch_sep.md)
* ```seldon.io/headless-svc``` : Run main endpoint as headless kubernetes service. This is required for gRPC load balancing via Ambassador.
* Locations : SeldonDeployment.spec.annotations
* [gRPC headless example](grpc_load_balancing_ambassador.md)

Otherwise any annotations starting with `seldon.io/engine-` will be interpreted as specifying environment variables for the engine container. These include:

* ```seldon.io/engine-java-opts``` : Java Opts for Service Orchestrator
* Locations : SeldonDeployment.spec.predictors.annotations
* [Java Opts example](model_engine_java_opts.md)
* Translates to the environment variable JAVA_OPTS
* ```seldon.io/engine-log-requests``` : Whether to log raw requests from engine
* Locations : SeldonDeployment.spec.predictors.annotations
* Translates to the environment variable LOG_REQUESTS
* ```seldon.io/engine-log-responses``` : Whether to log raw responses from engine
* Locations : SeldonDeployment.spec.predictors.annotations
* Translates to the environment variable LOG_RESPONSES
* ```seldon.io/engine-log-messages-externally``` : Option to turn on logging of requests via a logging service
* Locations : SeldonDeployment.spec.predictors.annotations
* Translates to the environment variable LOG_MESSAGES_EXTERNALLY
* ```seldon.io/engine-log-message-type``` : Option to override type set on messages when sending to logging service
* Locations : SeldonDeployment.spec.predictors.annotations
* Translates to the environment variable LOG_MESSAGE_TYPE
* ```seldon.io/engine-message-logging-service``` : Option to override url to broker that sends to logging service
* Locations : SeldonDeployment.spec.predictors.annotations
* Translates to the environment variable MESSAGE_LOGGING_SERVICE

More details on logging-related variables can be seen in the [request-logging example](https://github.com/SeldonIO/seldon-core/tree/master/examples/centralised-logging/README.md).

Environment variables for the engine can also be set in the `svcOrchSpec` section of the SeldonDeployment, alongside engine resources. For examples see the helm charts or the [distributed tracing example](./distributed-tracing.md).

If both annotations and `svcOrchSpec` environment variables are used to set an environment variable for the engine container then `svcOrchSpec` environment variables take priority.

The above are the key engine env vars. For a full listing of engine env vars see the application.properties file of the engine source code.

## API OAuth Gateway Annotations
The API OAuth Gateway, if used, can also have the following annotations:

Expand Down
2 changes: 1 addition & 1 deletion doc/source/graph/distributed-tracing.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Add an environment variable: TRACING with value 1 to activate tracing.

You can utilize the default configuration by simply providing the name of the Jaeger agent service by providing JAEGER_AGENT_HOST environment variable. Override default Jaeger agent port `5775` by setting JAEGER_AGENT_PORT environment variable.

To provide a custom configuration following the Jarger Python configuration yaml defined [here](https://github.com/jaegertracing/jaeger-client-python) you can provide a configmap and the path to the YAML file in JAEGER_CONFIG_PATH environment variable.
To provide a custom configuration following the Jaeger Python configuration yaml defined [here](https://github.com/jaegertracing/jaeger-client-python) you can provide a configmap and the path to the YAML file in JAEGER_CONFIG_PATH environment variable.

An example is show below:

Expand Down
2 changes: 0 additions & 2 deletions doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,7 @@ Seldon Core is an open source platform for deploying machine learning models on
:caption: Reference

Seldon Microservice API <reference/apis/internal-api.md>
Seldon Operator <reference/cluster-manager>
Seldon Orchestrator <reference/engine>
Seldon API OAuth Gateway <reference/apife>
Benchmarking <reference/benchmarking.md>
Seldon Deployment CRD <reference/seldon-deployment.md>
Prediction APIs <reference/apis/index>
Expand Down
58 changes: 58 additions & 0 deletions doc/source/python/python_component.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,64 @@ If you want more control you can provide a low-level methods that will provide a
def aggregate_raw(self, msgs: prediction_pb2.SeldonMessageList) -> prediction_pb2.SeldonMessage:
```

## User Defined Exceptions
If you want to handle custom exceptions define a field `model_error_handler` as shown below:
```
model_error_handler = flask.Blueprint('error_handlers', __name__)
```
An example is as follow:

```python
"""
Model Template
"""
class MyModel(Object):

"""
The field is used to register custom exceptions
"""
model_error_handler = flask.Blueprint('error_handlers', __name__)

"""
Register the handler for an exception
"""
@model_error_handler.app_errorhandler(UserCustomException)
def handleCustomError(error):
response = jsonify(error.to_dict())
response.status_code = error.status_code
return response

def __init__(self, metrics_ok=True, ret_nparray=False, ret_meta=False):
pass

def predict(self, X, features_names, **kwargs):
raise UserCustomException('Test-Error-Msg',1402,402)
return X
```

```python
"""
User Defined Exception
"""
class UserCustomException(Exception):

status_code = 404

def __init__(self, message, application_error_code,http_status_code):
Exception.__init__(self)
self.message = message
if http_status_code is not None:
self.status_code = http_status_code
self.application_error_code = application_error_code

def to_dict(self):
rv = {"status": {"status": self.status_code, "message": self.message,
"app_code": self.application_error_code}}
return rv

```


## Next Steps

After you have created the Component you need to create a Docker image that can be managed by Seldon Core. Follow the documentation to do this with [s2i](./python_wrapping_s2i.md) or [Docker](./python_wrapping_docker.md).
Expand Down
8 changes: 0 additions & 8 deletions doc/source/reference/cluster-manager-deps.rst

This file was deleted.

8 changes: 0 additions & 8 deletions doc/source/reference/cluster-manager-jacoco.rst

This file was deleted.

10 changes: 0 additions & 10 deletions doc/source/reference/cluster-manager.rst

This file was deleted.

0 comments on commit 8450de8

Please sign in to comment.