diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b2d6c2572813ee8e48f6cc976ebae46f568d19cf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +ARG BASE_REGISTRY=repo1.dso.mil +ARG BASE_IMAGE=opensource/python/python38 +ARG BASE_TAG=3.8 + +FROM seldonio/tfserving-proxy_grpc:0.7 as base + +FROM ${BASE_REGISTRY}/${BASE_IMAGE}:${BASE_TAG} + +CMD ["bash"] + +USER root + +RUN dnf -y update && dnf -y upgrade && \ + rm -rf /var/cache/dnf/ && \ + groupadd -g 2001 seldonio && \ + useradd -r -u 2001 -m -s /sbin/nologin -g seldonio seldonio + + +ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV LANG=C.UTF-8 + +CMD ["python3"] + +RUN mkdir microservice +WORKDIR /microservice + +COPY --from=base /microservice /microservice + +COPY --from=base /s2i/bin /s2i/bin + +HEALTHCHECK --start-period=1s --interval=10s \ + CMD [ "curl -f http://localhost:5000" || exit 1 ] + +EXPOSE 5000 + +USER seldonio diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..d645695673349e3947e8e5ae42332d0ac3164cd7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 5dc6fa6db4361c22da2f35edf0544d83ba6001e2..f0a7b5dd8ba07b16040079bb7be43adf5f6cb9eb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,382 @@ -# +# Seldon Core: Blazing Fast, Industry-Ready ML +An open source platform to deploy your machine learning models on Kubernetes at massive scale. + +![](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. + +Seldon handles scaling to thousands of production machine learning models and provides advanced machine learning capabilities out of the box including Advanced Metrics, Request Logging, Explainers, Outlier Detectors, A/B Tests, Canaries and more. + +* 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 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 + +![](https://raw.githubusercontent.com/SeldonIO/seldon-core/master/doc/source/images/seldon-core-high-level.jpg) + +### High Level Features + +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 [pre-packaged inference servers](https://docs.seldon.io/projects/seldon-core/en/latest/servers/overview.html), [custom servers](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 + +Deploying your models using Seldon Core is simplified through our pre-packaged inference servers and language wrappers. Below you can see how you can deploy our "hello world Iris" example. You can see more details on these workflows in our [Documentation Quickstart](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/quickstart.html). + +### Install Seldon Core + +Quick install using Helm 3 (you can also use Kustomize): + +```bash +kubectl create namespace seldon-system + +helm install seldon-core seldon-core-operator \ + --repo https://storage.googleapis.com/seldon-charts \ + --set usageMetrics.enabled=true \ + --namespace seldon-system \ + --set istio.enabled=true + # You can set ambassador instead with --set ambassador.enabled=true +``` + +### Deploy your model using pre-packaged model servers + +We provide optimized model servers for some of the most popular Deep Learning and Machine Learning frameworks that allow you to deploy your trained model binaries/weights without having to containerize or modify them. + +You only have to upload your model binaries into your preferred object store, in this case we have a trained scikit-learn iris model in a Google bucket: + +```console +gs://seldon-models/sklearn/iris/model.joblib +``` + +Create a namespace to run your model in: + +```bash +kubectl create namespace seldon +``` + +We then can deploy this model with Seldon Core to our Kubernetes cluster using the pre-packaged model server for scikit-learn (SKLEARN_SERVER) by running the `kubectl apply` command below: + +```yaml +$ kubectl apply -f - << END +apiVersion: machinelearning.seldon.io/v1 +kind: SeldonDeployment +metadata: + name: iris-model + namespace: seldon +spec: + name: iris + predictors: + - graph: + implementation: SKLEARN_SERVER + modelUri: gs://seldon-models/sklearn/iris + name: classifier + name: default + replicas: 1 +END +``` + +#### Send API requests to your deployed model + +Every model deployed exposes a standardised User Interface to send requests using our OpenAPI schema. + +This can be accessed through the endpoint `http:///seldon///api/v1.0/doc/` which will allow you to send requests directly through your browser. + +![](https://raw.githubusercontent.com/SeldonIO/seldon-core/master/doc/source/images/rest-openapi.jpg) + +Or alternatively you can send requests programmatically using our [Seldon Python Client](https://docs.seldon.io/projects/seldon-core/en/latest/python/seldon_client.html) or another Linux CLI: + +```console +$ curl -X POST http:///seldon/seldon/iris-model/api/v1.0/predictions \ + -H 'Content-Type: application/json' \ + -d '{ "data": { "ndarray": [[1,2,3,4]] } }' + +{ + "meta" : {}, + "data" : { + "names" : [ + "t:0", + "t:1", + "t:2" + ], + "ndarray" : [ + [ + 0.000698519453116284, + 0.00366803903943576, + 0.995633441507448 + ] + ] + } +} +``` + +### Deploy your custom model using language wrappers + +For more custom deep learning and machine learning use-cases which have custom dependencies (such as 3rd party libraries, operating system binaries or even external systems), we can use any of the Seldon Core language wrappers. + +You only have to write a class wrapper that exposes the logic of your model; for example in Python we can create a file `Model.py`: + +```python +import pickle +class Model: + def __init__(self): + self._model = pickle.loads( open("model.pickle", "rb") ) + + def predict(self, X): + output = self._model(X) + return output +``` + +We can now containerize our class file using the [Seldon Core s2i utils](https://docs.seldon.io/projects/seldon-core/en/latest/wrappers/s2i.html) to produce the `sklearn_iris` image: + +```console +s2i build . seldonio/seldon-core-s2i-python3:0.18 sklearn_iris:0.1 +``` + +And we now deploy it to our Seldon Core Kubernetes Cluster: + +```yaml +$ kubectl apply -f - << END +apiVersion: machinelearning.seldon.io/v1 +kind: SeldonDeployment +metadata: + name: iris-model + namespace: model-namespace +spec: + name: iris + predictors: + - componentSpecs: + - spec: + containers: + - name: classifier + image: sklearn_iris:0.1 + - graph: + name: classifier + name: default + replicas: 1 +END +``` + +#### Send API requests to your deployed model + +Every model deployed exposes a standardised User Interface to send requests using our OpenAPI schema. + +This can be accessed through the endpoint `http:///seldon///api/v1.0/doc/` which will allow you to send requests directly through your browser. + +![](https://raw.githubusercontent.com/SeldonIO/seldon-core/master/doc/source/images/rest-openapi.jpg) + +Or alternatively you can send requests programmatically using our [Seldon Python Client](https://docs.seldon.io/projects/seldon-core/en/latest/python/seldon_client.html) or another Linux CLI: + +```console +$ curl -X POST http:///seldon/model-namespace/iris-model/api/v1.0/predictions \ + -H 'Content-Type: application/json' \ + -d '{ "data": { "ndarray": [1,2,3,4] } }' | json_pp + +{ + "meta" : {}, + "data" : { + "names" : [ + "t:0", + "t:1", + "t:2" + ], + "ndarray" : [ + [ + 0.000698519453116284, + 0.00366803903943576, + 0.995633441507448 + ] + ] + } +} +``` + +### Dive into the Advanced Production ML Integrations + +Any model that is deployed and orchestrated with Seldon Core provides out of the box machine learning insights for monitoring, managing, scaling and debugging. + +Below are some of the core components together with link to the logs that provide further insights on how to set them up. + + + + + + + + + + + + + + +
+ +
+ Standard and custom metrics with prometheus +
+
+ +
+
+ +
+ Full audit trails with ELK request logging +
+
+ +
+
+ +
+ Explainers for Machine Learning Interpretability +
+
+ +
+
+ +
+ Outlier and Adversarial Detectors for Monitoring +
+
+ +
+
+ +
+ CI/CD for MLOps at Massive Scale +
+
+ +
+
+ +
+ Distributed tracing for performance monitoring +
+
+ +
+
+ + +## Where to go from here + +### Getting Started + +* [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 Inference 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) +* [Create your Inference Graph ](https://docs.seldon.io/projects/seldon-core/en/latest/graph/inference-graph.html) +* [Deploy your Model ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/deploying.html) +* [Testing your Model Endpoints ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/serving.html) +* [Troubleshooting guide ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/troubleshooting.html) +* [Usage reporting ](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/usage-reporting.html) +* [Upgrading ](https://docs.seldon.io/projects/seldon-core/en/latest/reference/upgrading.html) +* [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) + +### Language Wrappers (Incubating) + +* [Java Language Wrapper [Incubating] ](https://docs.seldon.io/projects/seldon-core/en/latest/java/README.html) +* [R Language Wrapper [ALPHA] ](https://docs.seldon.io/projects/seldon-core/en/latest/R/README.html) +* [NodeJS Language Wrapper [ALPHA] ](https://docs.seldon.io/projects/seldon-core/en/latest/nodejs/README.html) +* [Go Language Wrapper [ALPHA] ](https://docs.seldon.io/projects/seldon-core/en/latest/go/go_wrapper_link.html) + +### Ingress + +* [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) +* [CI/CD MLOps at Scale ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/cicd-mlops.html) +* [Metrics with Prometheus ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/analytics.html) +* [Payload Logging with ELK ](https://docs.seldon.io/projects/seldon-core/en/latest/analytics/logging.html) +* [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) +* [Budgeting Disruptions](https://docs.seldon.io/projects/seldon-core/en/latest/graph/disruption-budgets.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) + +### Examples + +* [Notebooks ](https://docs.seldon.io/projects/seldon-core/en/latest/examples/notebooks.html) +* [Articles/Blogs ](https://docs.seldon.io/projects/seldon-core/en/latest/tutorials/blogs.html) +* [Videos ](https://docs.seldon.io/projects/seldon-core/en/latest/tutorials/videos.html) + +### Reference + +* [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) +* [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) +* [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) +* [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) + +### Developer + +* [Overview ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/readme.html) +* [Contributing to Seldon Core ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/contributing.html) +* [End to End Tests ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/e2e.html) +* [Roadmap ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/roadmap.html) +* [Build using private repo ](https://docs.seldon.io/projects/seldon-core/en/latest/developer/build-using-private-repo.html) + + + +## About the name "Seldon Core" + +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. -Project template for all Iron Bank container repositories. \ No newline at end of file diff --git a/hardening_manifest.yaml b/hardening_manifest.yaml new file mode 100644 index 0000000000000000000000000000000000000000..45752cfd8f3f6b809747cdbf1acfcb7806b63d3f --- /dev/null +++ b/hardening_manifest.yaml @@ -0,0 +1,51 @@ +--- +apiVersion: v1 + +# The repository name in registry1, excluding /ironbank/ +name: "opensource/seldonio/tfserving-proxy_grpc-0.7" + +# List of tags to push for the repository in registry1 +# The most specific version should be the first tag and will be shown +# on ironbank.dsop.io +tags: +- "0.7" +- "latest" + +# Build args passed to Dockerfile ARGs +args: + BASE_IMAGE: "opensource/python/python38" + BASE_TAG: "3.8" + +# Docker image labels +labels: + org.opencontainers.image.title: "tfserving-proxy_grpc" + # Human-readable description of the software packaged in the image + org.opencontainers.image.description: "An open source platform to deploy your machine learning models on Kubernetes at massive scale." + # License(s) under which contained software is distributed + org.opencontainers.image.licenses: "Apache-2.0" + # URL to find more information on the image + org.opencontainers.image.url: "https://docs.seldon.io/projects/seldon-core/en/latest/servers/tensorflow.html" + # Name of the distributing entity, organization or individual + org.opencontainers.image.vendor: "Seldon" + org.opencontainers.image.version: "0.7" + # Keywords to help with search (ex. "cicd,gitops,golang") + mil.dso.ironbank.image.keywords: "seldonio,tfserving,tensorflow" + # This value can be "opensource" or "commercial" + mil.dso.ironbank.image.type: "opensource" + # Product the image belongs to for grouping multiple images + mil.dso.ironbank.product.name: "seldonio" + +# List of resources to make available to the offline build context +resources: + - url: "docker://docker.io/seldonio/tfserving-proxy_grpc@sha256:5fdc5ff7ca2d4692bfe3dd7c20bd79a565c57cc8bc3f2669c433818cb8ec9e63" + tag: "seldonio/tfserving-proxy_grpc:0.7" + + +# List of project maintainers +maintainers: +- email: "jweatherford@oteemo.com" + # The name of the current container owner + name: "Jeff Weatherford" + # The gitlab username of the current container owner + username: "jweatherford" + cht_member: true