claimed-framework / claimed-framework/mlx_deprecated
Convert to UBI conformant container images
- 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
Assessment
This issue has not been assessed yet.