Describe the feature or enhancement request:
Convert container images used in MLX and MLX Katalog to UBI.
Announced at Red Hat Summit 2019, Red Hat Universal Base Images (UBI) are OCI-compliant container base operating system images with complementary runtime languages and packages that are freely redistributable. Like previous base images, they are built from portions of Red Hat Enterprise Linux. UBI images can be obtained from the Red Hat container catalog, and be built and deployed anywhere.
UBI is designed to be a foundation for cloud-native and web applications use cases developed in containers. You can build a containerized application using UBI, push it to your choice of registry server, easily share it with others - and because it’s freely redistributable — even deploy it on non-Red Hat platforms. And since it’s built on Red Hat Enterprise Linux, UBI is a platform that is reliable, secure, and performant.
Where do we currently use potentially non-UBI-compliant images?
-
MLX API, pipeline code templates (reusing component samples from katalog):
$ grep "image=" api/server/swagger_server/code_templates/*.py
api/server/swagger_server/code_templates/run_notebook.TEMPLATE.py: image="${image}")
api/server/swagger_server/code_templates/run_notebook_with_dataset...py: image="${image}")
api/server/swagger_server/code_templates/serve_kfserving.TEMPLATE.py: image='tomcli/model-config',
api/server/swagger_server/code_templates/serve_knative.TEMPLATE.py: image='tomcli/model-config',
api/server/swagger_server/code_templates/serve_knative.TEMPLATE.py: image='aipipeline/knative-model-deploy',
api/server/swagger_server/code_templates/serve_kubernetes.TEMPLATE.py: image='aipipeline/model-config',
api/server/swagger_server/code_templates/serve_kubernetes.TEMPLATE.py: image='aipipeline/deployment-k8s-remote',
api/server/swagger_server/code_templates/train_watsonml.TEMPLATE.py: image='tomcli/model-config:latest',
api/server/swagger_server/code_templates/train_watsonml_w_credentials...py: image='aipipeline/model-config:latest',
-
MLX Katalog, components (some being used in code_templates above):
$ grep -r "image: " component-samples/**/*.yaml
component-samples/echo/component.yaml: image: alpine:latest
component-samples/dlf/component.yaml: image: aipipeline/dlf-to-pvc:0.0.1
component-samples/kube-model-deployment/component.yaml: image: docker.io/aipipeline/k8s-model-deploy:latest
component-samples/model-config/component.yaml: image: aipipeline/model-config:latest
component-samples/create-secret/component.yaml: image: docker.io/aipipeline/wml-config:latest
component-samples/dax-to-dlf/component.yaml: image: ckadner/dax-to-dlf:0.0.9
-
MLX Katalog, pipelines:
$ grep -r "image: " pipeline-samples/*.yaml
pipeline-samples/calculation-pipeline.yaml: image: python:3.7
pipeline-samples/calculation-pipeline.yaml: image: tensorflow/tensorflow:1.11.0-py3
pipeline-samples/calculation-pipeline.yaml: image: python:3.7
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/flip-coin-pipeline.yaml: image: python:alpine3.6
pipeline-samples/katib-pipeline.yaml: image: docker.io/kubeflowkatib/kubeflow-pipelines-launcher
pipeline-samples/katib-pipeline.yaml: image: library/bash:4.4.23
pipeline-samples/nested-pipeline.yaml: image: google/cloud-sdk
pipeline-samples/nested-pipeline.yaml: image: python:3.5-jessie
pipeline-samples/nested-pipeline.yaml: image: google/cloud-sdk
pipeline-samples/trusted-ai-pipeline.yaml: image: aipipeline/gender-classification:latest
pipeline-samples/trusted-ai-pipeline.yaml: image: $(params.image)
pipeline-samples/trusted-ai-pipeline.yaml: image: aipipeline/bias-detector:pytorch
pipeline-samples/trusted-ai-pipeline.yaml: image: aipipeline/robustness-evaluation:pytorch
pipeline-samples/wml-pipeline.yaml: image: docker.io/aipipeline/wml-config:latest
pipeline-samples/wml-pipeline.yaml: image: docker.io/aipipeline/wml-train:latest
pipeline-samples/wml-pipeline.yaml: image: docker.io/aipipeline/wml-store:latest
pipeline-samples/wml-pipeline.yaml: image: docker.io/aipipeline/wml-deploy:latest
-
MLX Katalog, models:
$ grep -r "image_url: " model-samples/**/*.yaml
model-samples/codenet-language-classification/codenet-language-classification.yaml: container_image_url: "codait/codenet-language-classifier"
model-samples/max-human-pose-estimator/max-human-pose-estimator.yaml: container_image_url: "quay.io/codait/max-human-pose-estimator:latest"
model-samples/max-image-caption-generator/max-image-caption-generator.yaml: container_image_url: "quay.io/codait/max-image-caption-generator:latest"
model-samples/max-image-resolution-enhancer/max-image-resolution-enhancer.yaml: container_image_url: "quay.io/codait/max-image-resolution-enhancer:latest"
model-samples/max-named-entity-tagger/max-named-entity-tagger.yaml: container_image_url: "quay.io/codait/max-named-entity-tagger:latest"
model-samples/max-object-detector/max-object-detector.yaml: container_image_url: "quay.io/codait/max-object-detector:latest"
model-samples/max-ocr/max-ocr.yaml: container_image_url: "quay.io/codait/max-ocr:latest"
model-samples/max-question-answering/max-question-answering.yaml: container_image_url: "quay.io/codait/max-question-answering:latest"
model-samples/max-recommender/max-recommender.yaml: container_image_url: "quay.io/codait/max-recommender:latest"
model-samples/max-text-sentiment-classifier/max-text-sentiment-classifier.yaml: container_image_url: "quay.io/codait/max-text-sentiment-classifier:latest"
model-samples/max-toxic-comment-classifier/max-toxic-comment-classifier.yaml: container_image_url: "quay.io/codait/max-toxic-comment-classifier:latest"
model-samples/max-weather-forecaster/max-weather-forecaster.yaml: container_image_url: "quay.io/codait/max-weather-forecaster:latest"
-
MLX Katalog, notebooks:
$ grep -r "image: " notebook-samples/*.yaml --exclude template.yaml
notebook-samples/JFK-airport.yaml: image: 'tensorflow/tensorflow:2.7.0'
notebook-samples/aif-bias.yaml: image: 'tensorflow/tensorflow:2.3.0'
notebook-samples/art-detector.yaml: image: 'tensorflow/tensorflow:2.3.0'
notebook-samples/art-poison.yaml: image: 'tensorflow/tensorflow:2.2.0'
notebook-samples/codenet-lang.yaml: image: 'tensorflow/tensorflow:2.7.0'
notebook-samples/codenet-mlm.yaml: image: 'tensorflow/tensorflow:2.7.0'
notebook-samples/qiskit-ml.yaml: image: 'tensorflow/tensorflow:2.7.0'
notebook-samples/qiskit-nncr.yam image: 'tensorflow/tensorflow:2.7.0'
/cc @jbusche
Related issues:
https://github.com/machine-learning-exchange/katalog/pull/73
Further reading:
https://developers.redhat.com/blog/2019/07/29/red-hat-universal-base-image-how-it-works-in-3-minutes-or-less#what_is_ubi_
Describe the feature or enhancement request:
Convert container images used in MLX and MLX Katalog to UBI.
Where do we currently use potentially non-UBI-compliant images?
MLX API, pipeline code templates (reusing component samples from
katalog):MLX
Katalog, components (some being used incode_templatesabove):MLX
Katalog, pipelines:MLX
Katalog, models:MLX
Katalog, notebooks:/cc @jbusche
Related issues:
https://github.com/machine-learning-exchange/katalog/pull/73
Further reading:
https://developers.redhat.com/blog/2019/07/29/red-hat-universal-base-image-how-it-works-in-3-minutes-or-less#what_is_ubi_