claimed-framework / claimed-framework/mlx_deprecated

Convert to UBI conformant container images

Open
#341 0 comments 0 reactions 0 assignees View on GitHub
openshift
Dominant language
Python
Stars
220
Forks
54
PR merge metrics
No merged PRs in 30d

Description

**Describe the feature or enhancement request:**

Convert container images used in MLX and MLX Katalog to [UBI](https://developers.redhat.com/products/rhel/ubi).

> [Announced](https://www.redhat.com/en/blog/introducing-red-hat-universal-base-image) 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_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.