diff --git a/.gitignore b/.gitignore index e00b6093f4..c43d05f76d 100644 --- a/.gitignore +++ b/.gitignore @@ -93,6 +93,19 @@ examples/models/h2o_mojo/src/main/resources/model.zip examples/models/deep_mnist/MNIST_data/ examples/models/deep_mnist/model/ examples/models/sklearn_iris/IrisClassifier.sav +examples/istio/canary_update/MNIST_data/ +examples/istio/canary_update/tmp/ +examples/models/keras_mnist/MnistClassifier.h5 +examples/models/keras_mnist/data/ +examples/models/keras_mnist/tensorboardlogs_test/ +examples/models/r_iris/model.Rds +examples/models/r_mnist/model.Rds +examples/models/r_mnist/t10k-images-idx3-ubyte +examples/models/r_mnist/t10k-labels-idx1-ubyte +examples/models/r_mnist/train-images-idx3-ubyte +examples/models/r_mnist/train-labels-idx1-ubyte +examples/models/sk_mnist/MNIST_data/ +examples/models/sk_mnist/sk.pkl # api tester created proto folder -util/api_tester/proto/ \ No newline at end of file +util/api_tester/proto/ diff --git a/docs/wrappers/java.md b/docs/wrappers/java.md index dc466096a7..6ec2197298 100644 --- a/docs/wrappers/java.md +++ b/docs/wrappers/java.md @@ -17,7 +17,7 @@ If you are not familar with s2i you can read [general instructions on using s2i] To check everything is working you can run ```bash -s2i usage seldonio/seldon-core-s2i-java-build +s2i usage seldonio/seldon-core-s2i-java-build:0.1 ``` # Step 2 - Create your source code @@ -149,14 +149,14 @@ Use ```s2i build``` to create your Docker image from source code. You will need Using s2i you can build directly from a git repo or from a local source folder. See the [s2i docs](https://github.com/openshift/source-to-image/blob/master/docs/cli.md#s2i-build) for further details. The general format is: ```bash -s2i build seldonio/seldon-core-s2i-java-build --runtime-image seldonio/seldon-core-s2i-java-runtime -s2i build seldonio/seldon-core-s2i-java-build --runtime-image seldonio/seldon-core-s2i-java-runtime +s2i build seldonio/seldon-core-s2i-java-build:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1 +s2i build seldonio/seldon-core-s2i-java-build:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1 ``` An example invocation using the test template model inside seldon-core: ```bash -s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-java-build h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime +s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-java-build:0.1 h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1 ``` The above s2i build invocation: @@ -172,13 +172,13 @@ For building from a local source folder, an example where we clone the seldon-co ```bash git clone https://github.com/seldonio/seldon-core.git cd seldon-core -s2i build wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-java-build h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime +s2i build wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-java-build:0.1 h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1 ``` For more help see: ``` -s2i usage seldonio/seldon-core-s2i-java-build +s2i usage seldonio/seldon-core-s2i-java-build:0.1 s2i build --help ``` diff --git a/docs/wrappers/python-docker.md b/docs/wrappers/python-docker.md index c16cc6f6f8..647f4c1ece 100644 --- a/docs/wrappers/python-docker.md +++ b/docs/wrappers/python-docker.md @@ -1,5 +1,9 @@ # Packaging a python model for Seldon Core using Seldon Wrapper -In this guide, we illustrate the steps needed to wrap your own python model in a docker image ready for deployment with Seldon Core, using the Seldon wrapper script. This script is designed to take your python model and turn it into a dockerised microservice that conforms to Seldon's internal API, thus avoiding the hassle to write your own dockerised microservice. +In this guide, we illustrate the steps needed to wrap your own python model in a docker image ready for deployment with Seldon Core, using the Seldon wrapper script. + +We suggest you look at using the [S2I tool for python models](python.md) before choosing this method. + +This script is designed to take your python model and turn it into a dockerised microservice that conforms to Seldon's internal API, thus avoiding the hassle to write your own dockerised microservice. You can use these wrappers with any model that offers a python API. Some examples are: diff --git a/docs/wrappers/python.md b/docs/wrappers/python.md index 7744622103..4fb95114aa 100644 --- a/docs/wrappers/python.md +++ b/docs/wrappers/python.md @@ -17,7 +17,7 @@ If you are not familar with s2i you can read [general instructions on using s2i] To check everything is working you can run ```bash -s2i usage seldonio/seldon-core-s2i-python3 +s2i usage seldonio/seldon-core-s2i-python3:0.1 ``` @@ -83,14 +83,14 @@ These values can also be provided or overriden on the command line when building # Step 3 - Build your image Use ```s2i build``` to create your Docker image from source code. You will need Docker installed on the machine and optionally git if your source code is in a public git repo. You can choose from two python builder images - * Python 2 : seldonio/seldon-core-s2i-python2 - * Python 3 : seldonio/seldon-core-s2i-python3 + * Python 2 : seldonio/seldon-core-s2i-python2:0.1 + * Python 3 : seldonio/seldon-core-s2i-python3:0.1 Using s2i you can build directly from a git repo or from a local source folder. See the [s2i docs](https://github.com/openshift/source-to-image/blob/master/docs/cli.md#s2i-build) for further details. The general format is: ```bash -s2i build seldonio/seldon-core-s2i-python2 -s2i build seldonio/seldon-core-s2i-python2 +s2i build seldonio/seldon-core-s2i-python2:0.1 +s2i build seldonio/seldon-core-s2i-python2:0.1 ``` Change to seldonio/seldon-core-s2i-python3 if using python 3. @@ -98,7 +98,7 @@ Change to seldonio/seldon-core-s2i-python3 if using python 3. An example invocation using the test template model inside seldon-core: ```bash -s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-python2 seldon-core-template-model +s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-python2:0.1 seldon-core-template-model ``` The above s2i build invocation: @@ -113,14 +113,14 @@ For building from a local source folder, an example where we clone the seldon-co ```bash git clone https://github.com/seldonio/seldon-core.git cd seldon-core -s2i build wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-python2 seldon-core-template-model +s2i build wrappers/s2i/python/test/model-template-app seldonio/seldon-core-s2i-python2:0.1 seldon-core-template-model ``` For more help see: ``` -s2i usage seldonio/seldon-core-s2i-python2 -s2i usage seldonio/seldon-core-s2i-python3 +s2i usage seldonio/seldon-core-s2i-python2:0.1 +s2i usage seldonio/seldon-core-s2i-python3:0.1 s2i build --help ``` diff --git a/docs/wrappers/r.md b/docs/wrappers/r.md index c4db0f4c4a..357e5cae9c 100644 --- a/docs/wrappers/r.md +++ b/docs/wrappers/r.md @@ -17,7 +17,7 @@ If you are not familar with s2i you can read [general instructions on using s2i] To check everything is working you can run ```bash -s2i usage seldonio/seldon-core-s2i-r +s2i usage seldonio/seldon-core-s2i-r:0.1 ``` # Step 2 - Create your source code @@ -84,14 +84,14 @@ Use ```s2i build``` to create your Docker image from source code. You will need Using s2i you can build directly from a git repo or from a local source folder. See the [s2i docs](https://github.com/openshift/source-to-image/blob/master/docs/cli.md#s2i-build) for further details. The general format is: ```bash -s2i build seldonio/seldon-core-s2i-r -s2i build seldonio/seldon-core-s2i-r +s2i build seldonio/seldon-core-s2i-r:0.1 +s2i build seldonio/seldon-core-s2i-r:0.1 ``` An example invocation using the test template model inside seldon-core: ```bash -s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-r seldon-core-template-model +s2i build https://github.com/seldonio/seldon-core.git --context-dir=wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-r:0.1 seldon-core-template-model ``` The above s2i build invocation: @@ -106,13 +106,13 @@ For building from a local source folder, an example where we clone the seldon-co ```bash git clone https://github.com/seldonio/seldon-core.git cd seldon-core -s2i build wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-r seldon-core-template-model +s2i build wrappers/s2i/R/test/model-template-app seldonio/seldon-core-s2i-r:0.1 seldon-core-template-model ``` For more help see: ``` -s2i usage seldonio/seldon-core-s2i-r +s2i usage seldonio/seldon-core-s2i-r:0.1 s2i build --help ``` diff --git a/examples/models/deep_mnist/deep_mnist.ipynb b/examples/models/deep_mnist/deep_mnist.ipynb index 9801bbaa55..fa28863dc5 100644 --- a/examples/models/deep_mnist/deep_mnist.ipynb +++ b/examples/models/deep_mnist/deep_mnist.ipynb @@ -83,7 +83,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-python2 deep-mnist:0.1" + "!s2i build . seldonio/seldon-core-s2i-python2:0.1 deep-mnist:0.1" ] }, { @@ -172,7 +172,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python2 deep-mnist:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python2:0.1 deep-mnist:0.1" ] }, { diff --git a/examples/models/h2o_mojo/h2o_model.ipynb b/examples/models/h2o_mojo/h2o_model.ipynb index 5a010c02d1..89d719fdb6 100644 --- a/examples/models/h2o_mojo/h2o_model.ipynb +++ b/examples/models/h2o_mojo/h2o_model.ipynb @@ -77,7 +77,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-java-build h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime" + "!s2i build . seldonio/seldon-core-s2i-java-build:0.1 h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1" ] }, { @@ -166,7 +166,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-java-build h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-java-build:0.1 h2o-test:0.1 --runtime-image seldonio/seldon-core-s2i-java-runtime:0.1" ] }, { diff --git a/examples/models/keras_mnist/MnistClassifier.py b/examples/models/keras_mnist/MnistClassifier.py index bf101c3a9c..0b79f8640d 100644 --- a/examples/models/keras_mnist/MnistClassifier.py +++ b/examples/models/keras_mnist/MnistClassifier.py @@ -4,6 +4,7 @@ class MnistClassifier(object): def __init__(self): self.model = load_model('MnistClassifier.h5') + self.model._make_predict_function() def predict(self,X,features_names): return self.model.predict(X) diff --git a/examples/models/keras_mnist/keras_mnist.ipynb b/examples/models/keras_mnist/keras_mnist.ipynb index 13d6e978af..6cce4ade7e 100644 --- a/examples/models/keras_mnist/keras_mnist.ipynb +++ b/examples/models/keras_mnist/keras_mnist.ipynb @@ -251,7 +251,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-python3 keras-mnist:0.1" + "!s2i build . seldonio/seldon-core-s2i-python3:0.1 keras-mnist:0.1" ] }, { @@ -340,7 +340,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3 keras-mnist:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3:0.1 keras-mnist:0.1" ] }, { diff --git a/examples/models/r_iris/r_iris.ipynb b/examples/models/r_iris/r_iris.ipynb index 1b21d084d6..a2f65d9c9b 100644 --- a/examples/models/r_iris/r_iris.ipynb +++ b/examples/models/r_iris/r_iris.ipynb @@ -48,7 +48,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-r r-iris:0.1" + "!s2i build . seldonio/seldon-core-s2i-r:0.1 r-iris:0.1" ] }, { @@ -137,7 +137,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-r r-iris:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-r:0.1 r-iris:0.1" ] }, { diff --git a/examples/models/r_mnist/r_mnist.ipynb b/examples/models/r_mnist/r_mnist.ipynb index 4d9229425b..119633505f 100644 --- a/examples/models/r_mnist/r_mnist.ipynb +++ b/examples/models/r_mnist/r_mnist.ipynb @@ -48,7 +48,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-r r-mnist:0.1" + "!s2i build . seldonio/seldon-core-s2i-r:0.1 r-mnist:0.1" ] }, { @@ -137,7 +137,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-r r-mnist:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-r:0.1 r-mnist:0.1" ] }, { diff --git a/examples/models/sk_mnist/skmnist.ipynb b/examples/models/sk_mnist/skmnist.ipynb index de9269952c..e2a7571293 100644 --- a/examples/models/sk_mnist/skmnist.ipynb +++ b/examples/models/sk_mnist/skmnist.ipynb @@ -83,7 +83,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-python3 sk-mnist:0.1" + "!s2i build . seldonio/seldon-core-s2i-python3:0.1 sk-mnist:0.1" ] }, { @@ -172,7 +172,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3 sk-mnist:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3:0.1 sk-mnist:0.1" ] }, { diff --git a/examples/models/sklearn_iris/sklearn_iris.ipynb b/examples/models/sklearn_iris/sklearn_iris.ipynb index e3c2e749b4..fd1714deff 100644 --- a/examples/models/sklearn_iris/sklearn_iris.ipynb +++ b/examples/models/sklearn_iris/sklearn_iris.ipynb @@ -78,7 +78,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build . seldonio/seldon-core-s2i-python3 sklearn-iris:0.1" + "!s2i build . seldonio/seldon-core-s2i-python3:0.1 sklearn-iris:0.1" ] }, { @@ -137,7 +137,7 @@ "metadata": {}, "outputs": [], "source": [ - "!s2i build -E .s2i/environment_grpc . seldonio/seldon-core-s2i-python3 sklearn-iris:0.1" + "!s2i build -E .s2i/environment_grpc . seldonio/seldon-core-s2i-python3:0.1 sklearn-iris:0.1" ] }, { @@ -240,7 +240,7 @@ "metadata": {}, "outputs": [], "source": [ - "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3 sklearn-iris:0.1" + "!eval $(minikube docker-env) && s2i build . seldonio/seldon-core-s2i-python3:0.1 sklearn-iris:0.1" ] }, { diff --git a/readme.md b/readme.md index 926b3a5f73..09362d2fbb 100644 --- a/readme.md +++ b/readme.md @@ -3,8 +3,10 @@ | Branch | Status | |-------------|-------| | master | [![Build Status](https://travis-ci.org/SeldonIO/seldon-core.svg?branch=master)](https://travis-ci.org/SeldonIO/seldon-core) | +| release-0.2 | [![Build Status](https://travis-ci.org/SeldonIO/seldon-core.svg?branch=release-0.2)](https://travis-ci.org/SeldonIO/seldon-core) | | release-0.1 | [![Build Status](https://travis-ci.org/SeldonIO/seldon-core.svg?branch=release-0.1)](https://travis-ci.org/SeldonIO/seldon-core) | + Seldon Core is an open source platform for deploying machine learning models on Kubernetes. - [Goals](#goals) @@ -148,3 +150,17 @@ Three steps: - [CHANGELOG](CHANGELOG.md) - [Developer Guide](./docs/developer/readme.md) + +## Latest Seldon Images + +|Description | Image URL | Version | +|------------|-----------|---------| +| Seldon Operator | [seldonio/cluster-manager](https://hub.docker.com/r/seldonio/cluster-manager/tags/) | 0.2.2 | +| Seldon Service Orchestrator | [seldonio/engine](https://hub.docker.com/r/seldonio/engine/tags/) | 0.2.2 | +| Seldon API Gateway | [seldonio/apife](https://hub.docker.com/r/seldonio/apife/tags/) | 0.2.2 | +| [Seldon Python 3 Wrapper for S2I](docs/wrappers/python.md) | [seldonio/seldon-core-s2i-python3](https://hub.docker.com/r/seldonio/seldon-core-s2i-python3/tags/) | 0.1 | +| [Seldon Python 2 Wrapper for S2I](docs/wrappers/python.md) | [seldonio/seldon-core-s2i-python2](https://hub.docker.com/r/seldonio/seldon-core-s2i-python2/tags/) | 0.1 | +| [Seldon Core Python Wrapper](docs/wrappers/python-docker.md) | [seldonio/core-python-wrapper](https://hub.docker.com/r/seldonio/core-python-wrapper/tags/) | 0.7 | +| [Seldon Java Build Wrapper for S2I](docs/wrappers/java.md) | [seldonio/seldon-core-s2i-java-build](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-build/tags/) | 0.1 | +| [Seldon Java Runtime Wrapper for S2I](docs/wrappers/java.md) | [seldonio/seldon-core-s2i-java-runtime](https://hub.docker.com/r/seldonio/seldon-core-s2i-java-runtime/tags/) | 0.1 | +| [Seldon R Wrapper for S2I](docs/wrappers/r.md) | [seldonio/seldon-core-s2i-r](https://hub.docker.com/r/seldonio/seldon-core-s2i-r) | 0.1 | diff --git a/util/api_tester/api-tester.py b/util/api_tester/api-tester.py index d45c4ce0c6..0041987b14 100644 --- a/util/api_tester/api-tester.py +++ b/util/api_tester/api-tester.py @@ -55,7 +55,7 @@ def generate_batch(contract,n): batch = gen_continuous(range,shape) batch = reconciliate_cont_type(batch,feature_def["dtype"]) elif feature_def["ftype"] == "categorical": - batch = gen_categorical(feature_def["values"],n) + batch = gen_categorical(feature_def["values"],[n,1]) feature_batches.append(batch) return np.concatenate(feature_batches,axis=1) diff --git a/wrappers/python/seldon_requirements.txt b/wrappers/python/seldon_requirements.txt index f4d24aaff5..188cc411b6 100644 --- a/wrappers/python/seldon_requirements.txt +++ b/wrappers/python/seldon_requirements.txt @@ -1,6 +1,6 @@ -numpy==1.11.2 -pandas==0.18.1 -grpcio==1.1.3 -Flask==0.11.1 +numpy==1.14.5 +pandas==0.23.4 +grpcio==1.14.0 +Flask==1.0.2 futures redis==2.10.5 diff --git a/wrappers/s2i/R/Makefile b/wrappers/s2i/R/Makefile index 56111e4aff..b91ae7eefd 100644 --- a/wrappers/s2i/R/Makefile +++ b/wrappers/s2i/R/Makefile @@ -1,4 +1,5 @@ -IMAGE_NAME = docker.io/seldonio/seldon-core-s2i-r +VERSION=0.1 +IMAGE_NAME = docker.io/seldonio/seldon-core-s2i-r:${VERSION} SELDON_CORE_DIR=../../.. @@ -8,7 +9,7 @@ build: docker build -t $(IMAGE_NAME) . push_to_dockerhub: - docker push $(IMAGE_NAME):latest + docker push $(IMAGE_NAME) .PHONY: test diff --git a/wrappers/s2i/java/Makefile b/wrappers/s2i/java/Makefile index 2c1cd199af..e0543d3705 100644 --- a/wrappers/s2i/java/Makefile +++ b/wrappers/s2i/java/Makefile @@ -1,5 +1,6 @@ -IMAGE_NAME_BUILD = docker.io/seldonio/seldon-core-s2i-java-build -IMAGE_NAME_RUNTIME = docker.io/seldonio/seldon-core-s2i-java-runtime +VERSION=0.1 +IMAGE_NAME_BUILD = docker.io/seldonio/seldon-core-s2i-java-build:${VERSION} +IMAGE_NAME_RUNTIME = docker.io/seldonio/seldon-core-s2i-java-runtime:${VERSION} SELDON_CORE_DIR=../../.. @@ -10,8 +11,8 @@ build: docker build -f Dockerfile.runtime -t $(IMAGE_NAME_RUNTIME) . push_to_dockerhub: - docker push $(IMAGE_NAME_BUILD):latest - docker push $(IMAGE_NAME_RUNTIME):latest + docker push $(IMAGE_NAME_BUILD) + docker push $(IMAGE_NAME_RUNTIME) .PHONY: test diff --git a/wrappers/s2i/python/Makefile b/wrappers/s2i/python/Makefile index 916288ced7..f2d0eb571f 100644 --- a/wrappers/s2i/python/Makefile +++ b/wrappers/s2i/python/Makefile @@ -1,5 +1,7 @@ PYTHON_VERSION=2 -IMAGE_NAME = docker.io/seldonio/seldon-core-s2i-python${PYTHON_VERSION} +IMAGE_PYTHON_VERSION=`echo -n $(PYTHON_VERSION) | cut -d. -f1` +IMAGE_VERSION=0.1 +IMAGE_NAME = docker.io/seldonio/seldon-core-s2i-python${IMAGE_PYTHON_VERSION} SELDON_CORE_DIR=../../.. @@ -17,10 +19,10 @@ get_wrappers_and_protos: .PHONY: build build: get_wrappers_and_protos cat Dockerfile.tmpl | sed -e "s|%PYTHON_VERSION%|$(PYTHON_VERSION)|" > Dockerfile - docker build -t $(IMAGE_NAME) . + docker build -t $(IMAGE_NAME):$(IMAGE_VERSION) . push_to_dockerhub: - docker push $(IMAGE_NAME):latest + docker push $(IMAGE_NAME):$(IMAGE_VERSION) .PHONY: test diff --git a/wrappers/s2i/python/build_python3.sh b/wrappers/s2i/python/build_python3.sh new file mode 100755 index 0000000000..86307e966e --- /dev/null +++ b/wrappers/s2i/python/build_python3.sh @@ -0,0 +1,3 @@ +# Tensorflow does not work with python 3.7 at present +# see https://github.com/tensorflow/tensorflow/issues/20444 +make build PYTHON_VERSION=3.6 diff --git a/wrappers/s2i/python/push_python3.sh b/wrappers/s2i/python/push_python3.sh new file mode 100755 index 0000000000..0194fbffff --- /dev/null +++ b/wrappers/s2i/python/push_python3.sh @@ -0,0 +1 @@ +make push_to_dockerhub PYTHON_VERSION=3.6 diff --git a/wrappers/testing/tester.py b/wrappers/testing/tester.py index 57dd5cc038..d71fc6fca6 100644 --- a/wrappers/testing/tester.py +++ b/wrappers/testing/tester.py @@ -57,7 +57,7 @@ def generate_batch(contract,n): batch = np.around(batch,decimals=3) batch = reconciliate_cont_type(batch,feature_def["dtype"]) elif feature_def["ftype"] == "categorical": - batch = gen_categorical(feature_def["values"],n) + batch = gen_categorical(feature_def["values"],[n,1]) feature_batches.append(batch) if len(ty_set) == 1: return np.concatenate(feature_batches,axis=1)