Compare commits

...

5 Commits

Author SHA1 Message Date
Andrey Velichkevich 05ab6f012a Katib official release v0.15.0 2023-03-22 15:18:22 +00:00
Andrey Velichkevich 6dc3555b6e Katib official release v0.15.0-rc.1 2023-02-15 15:24:22 +00:00
Elena Zioga ff1d4d0c08
Automated cherry pick of #2101: Create the LOGS tab of Trial's details page in KWA (#2117)
Signed-off-by: Elena Zioga <elena@arrikto.com>
2023-02-15 15:18:34 +00:00
Yuki Iwai 6f15555a89
Automated cherry pick of #2114: Reformat katib-operators (#2115)
Signed-off-by: Yuki Iwai <yuki.iwai.tz@gmail.com>
2023-02-14 19:38:25 +00:00
Andrey Velichkevich e536de778c Katib official release v0.15.0-rc.0 2023-01-27 12:40:37 +00:00
51 changed files with 223 additions and 76 deletions

View File

@ -76,7 +76,7 @@ spec:
- name: num-examples - name: num-examples
container: container:
name: model-training name: model-training
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -62,7 +62,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -57,7 +57,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -57,7 +57,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -55,7 +55,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -69,7 +69,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -43,7 +43,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/simple-pbt:latest image: docker.io/kubeflowkatib/simple-pbt:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pbt/pbt_test.py" - "/opt/pbt/pbt_test.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -46,7 +46,7 @@ spec:
spec: spec:
containers: containers:
- name: pytorch - name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"
@ -61,7 +61,7 @@ spec:
spec: spec:
containers: containers:
- name: pytorch - name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -56,7 +56,7 @@ spec:
spec: spec:
containers: containers:
- name: tensorflow - name: tensorflow
image: docker.io/kubeflowkatib/tf-mnist-with-summaries:latest image: docker.io/kubeflowkatib/tf-mnist-with-summaries:v0.15.0
command: command:
- "python" - "python"
- "/opt/tf-mnist-with-summaries/mnist.py" - "/opt/tf-mnist-with-summaries/mnist.py"

View File

@ -67,7 +67,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -52,7 +52,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -54,7 +54,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -59,7 +59,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -60,7 +60,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/darts-cnn-cifar10-cpu:latest image: docker.io/kubeflowkatib/darts-cnn-cifar10-cpu:v0.15.0
command: command:
- python3 - python3
- run_trial.py - run_trial.py

View File

@ -77,7 +77,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/darts-cnn-cifar10-gpu:latest image: docker.io/kubeflowkatib/darts-cnn-cifar10-gpu:v0.15.0
command: command:
- python3 - python3
- run_trial.py - run_trial.py

View File

@ -139,7 +139,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v0.15.0
command: command:
- python3 - python3
- -u - -u

View File

@ -136,7 +136,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/enas-cnn-cifar10-gpu:latest image: docker.io/kubeflowkatib/enas-cnn-cifar10-gpu:v0.15.0
command: command:
- python3 - python3
- -u - -u

View File

@ -55,7 +55,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -55,7 +55,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -89,7 +89,7 @@ spec:
description: Number of training examples description: Number of training examples
steps: steps:
- name: model-training - name: model-training
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -60,7 +60,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -8,13 +8,13 @@ data:
metrics-collector-sidecar: |- metrics-collector-sidecar: |-
{ {
"StdOut": { "StdOut": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest" "image": "docker.io/kubeflowkatib/file-metrics-collector:v0.15.0"
}, },
"File": { "File": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest" "image": "docker.io/kubeflowkatib/file-metrics-collector:v0.15.0"
}, },
"TensorFlowEvent": { "TensorFlowEvent": {
"image": "docker.io/kubeflowkatib/tfevent-metrics-collector:latest", "image": "docker.io/kubeflowkatib/tfevent-metrics-collector:v0.15.0",
"resources": { "resources": {
"limits": { "limits": {
"memory": "1Gi" "memory": "1Gi"
@ -25,31 +25,31 @@ data:
suggestion: |- suggestion: |-
{ {
"random": { "random": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest" "image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.15.0"
}, },
"tpe": { "tpe": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest" "image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.15.0"
}, },
"grid": { "grid": {
"image": "docker.io/kubeflowkatib/suggestion-optuna:latest" "image": "docker.io/kubeflowkatib/suggestion-optuna:v0.15.0"
}, },
"hyperband": { "hyperband": {
"image": "docker.io/kubeflowkatib/suggestion-hyperband:latest" "image": "docker.io/kubeflowkatib/suggestion-hyperband:v0.15.0"
}, },
"bayesianoptimization": { "bayesianoptimization": {
"image": "docker.io/kubeflowkatib/suggestion-skopt:latest" "image": "docker.io/kubeflowkatib/suggestion-skopt:v0.15.0"
}, },
"cmaes": { "cmaes": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest" "image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.15.0"
}, },
"sobol": { "sobol": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest" "image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.15.0"
}, },
"multivariate-tpe": { "multivariate-tpe": {
"image": "docker.io/kubeflowkatib/suggestion-optuna:latest" "image": "docker.io/kubeflowkatib/suggestion-optuna:v0.15.0"
}, },
"enas": { "enas": {
"image": "docker.io/kubeflowkatib/suggestion-enas:latest", "image": "docker.io/kubeflowkatib/suggestion-enas:v0.15.0",
"resources": { "resources": {
"limits": { "limits": {
"memory": "200Mi" "memory": "200Mi"
@ -57,10 +57,10 @@ data:
} }
}, },
"darts": { "darts": {
"image": "docker.io/kubeflowkatib/suggestion-darts:latest" "image": "docker.io/kubeflowkatib/suggestion-darts:v0.15.0"
}, },
"pbt": { "pbt": {
"image": "docker.io/kubeflowkatib/suggestion-pbt:latest", "image": "docker.io/kubeflowkatib/suggestion-pbt:v0.15.0",
"persistentVolumeClaimSpec": { "persistentVolumeClaimSpec": {
"accessModes": [ "accessModes": [
"ReadWriteMany" "ReadWriteMany"
@ -76,6 +76,6 @@ data:
early-stopping: |- early-stopping: |-
{ {
"medianstop": { "medianstop": {
"image": "docker.io/kubeflowkatib/earlystopping-medianstop:latest" "image": "docker.io/kubeflowkatib/earlystopping-medianstop:v0.15.0"
} }
} }

View File

@ -15,7 +15,7 @@ data:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"
@ -33,7 +33,7 @@ data:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v0.15.0
command: command:
- python3 - python3
- -u - -u
@ -54,7 +54,7 @@ data:
spec: spec:
containers: containers:
- name: pytorch - name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"
@ -68,7 +68,7 @@ data:
spec: spec:
containers: containers:
- name: pytorch - name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/pytorch-mnist/mnist.py" - "/opt/pytorch-mnist/mnist.py"

View File

@ -22,13 +22,13 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
patchesStrategicMerge: patchesStrategicMerge:
- patches/katib-cert-injection.yaml - patches/katib-cert-injection.yaml

View File

@ -20,16 +20,16 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/cert-generator - name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator newName: docker.io/kubeflowkatib/cert-generator
newTag: latest newTag: v0.15.0
patchesStrategicMerge: patchesStrategicMerge:
- patches/db-manager.yaml - patches/db-manager.yaml
# Modify katib-mysql-secrets with parameters for the DB. # Modify katib-mysql-secrets with parameters for the DB.

View File

@ -30,13 +30,13 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
patchesJson6902: patchesJson6902:
# Annotate Service to delegate TLS-secret generation to OpenShift service controller # Annotate Service to delegate TLS-secret generation to OpenShift service controller

View File

@ -22,16 +22,16 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/cert-generator - name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator newName: docker.io/kubeflowkatib/cert-generator
newTag: latest newTag: v0.15.0
patchesJson6902: patchesJson6902:
- target: - target:
group: apps group: apps

View File

@ -22,13 +22,13 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/cert-generator - name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator newName: docker.io/kubeflowkatib/cert-generator
newTag: latest newTag: v0.15.0

View File

@ -11,13 +11,13 @@ resources:
images: images:
- name: docker.io/kubeflowkatib/katib-controller - name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller newName: docker.io/kubeflowkatib/katib-controller
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-db-manager - name: docker.io/kubeflowkatib/katib-db-manager
newName: docker.io/kubeflowkatib/katib-db-manager newName: docker.io/kubeflowkatib/katib-db-manager
newTag: latest newTag: v0.15.0
- name: docker.io/kubeflowkatib/katib-ui - name: docker.io/kubeflowkatib/katib-ui
newName: docker.io/kubeflowkatib/katib-ui newName: docker.io/kubeflowkatib/katib-ui
newTag: latest newTag: v0.15.0
patchesStrategicMerge: patchesStrategicMerge:
- patches/remove-namespace.yaml - patches/remove-namespace.yaml

View File

@ -5,7 +5,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -5,7 +5,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v0.15.0
command: command:
- python3 - python3
- -u - -u

View File

@ -42,7 +42,6 @@ class Operator(CharmBase):
def set_pod_spec(self, event): def set_pod_spec(self, event):
try: try:
self._check_leader() self._check_leader()
interfaces = self._get_interfaces() interfaces = self._get_interfaces()

View File

@ -729,9 +729,9 @@ func fetchMasterPodName(clientset *kubernetes.Clientset, trial *trialsv1beta1.Tr
} }
if len(podList.Items) == 0 { if len(podList.Items) == 0 {
return "", errors.New(`Logs for the trial could not be found. return "", errors.New(`Failed to find logs for this Trial. Make sure you've set "spec.trialTemplate.retain"
Was 'retain: true' specified in the Experiment definition? field to "true" in the Experiment definition. If this error persists then the Pod's logs are not currently
An example can be found here: https://github.com/kubeflow/katib/blob/7bf39225f7235ee4ba6cf285ecc2c455c6471234/examples/v1beta1/argo/argo-workflow.yaml#L33`) persisted in the cluster.`)
} }
if len(podList.Items) > 1 { if len(podList.Items) > 1 {
return "", errors.New("More than one master replica found") return "", errors.New("More than one master replica found")

View File

@ -46,6 +46,16 @@
></app-trial-overview> ></app-trial-overview>
</ng-template> </ng-template>
</mat-tab> </mat-tab>
<mat-tab label="LOGS">
<ng-template matTabContent>
<app-trial-logs
[trialLogs]="trialLogs"
[logsRequestError]="logsRequestError"
></app-trial-logs>
</ng-template>
</mat-tab>
<mat-tab label="YAML"> <mat-tab label="YAML">
<ng-template matTabContent> <ng-template matTabContent>
<app-trial-yaml [trialJson]="trialDetails"></app-trial-yaml> <app-trial-yaml [trialJson]="trialDetails"></app-trial-yaml>

View File

@ -21,6 +21,7 @@ let NamespaceServiceStub: Partial<NamespaceService>;
KWABackendServiceStub = { KWABackendServiceStub = {
getTrial: () => of([]), getTrial: () => of([]),
getTrialInfo: () => of(), getTrialInfo: () => of(),
getTrialLogs: () => of(),
}; };
NamespaceServiceStub = { NamespaceServiceStub = {

View File

@ -30,6 +30,8 @@ export class TrialDetailsComponent implements OnInit, OnDestroy {
experimentName: string; experimentName: string;
showTrialGraph: boolean = false; showTrialGraph: boolean = false;
options: {}; options: {};
trialLogs: string;
logsRequestError: string;
chartData: ChartPoint[] = []; chartData: ChartPoint[] = [];
yScaleMax = 0; yScaleMax = 0;
yScaleMin = 1; yScaleMin = 1;
@ -133,6 +135,17 @@ export class TrialDetailsComponent implements OnInit, OnDestroy {
} }
this.pageLoading = false; this.pageLoading = false;
}); });
this.backendService.getTrialLogs(this.trialName, this.namespace).subscribe(
logs => {
this.trialLogs = logs;
this.logsRequestError = null;
},
error => {
this.trialLogs = null;
this.logsRequestError = error;
},
);
} }
private trialStatus(trial: TrialK8s): StatusEnum { private trialStatus(trial: TrialK8s): StatusEnum {

View File

@ -16,6 +16,7 @@ import {
PanelModule, PanelModule,
} from 'kubeflow'; } from 'kubeflow';
import { NgxEchartsModule } from 'ngx-echarts'; import { NgxEchartsModule } from 'ngx-echarts';
import { TrialLogsModule } from './trial-logs/trial-logs.module';
@NgModule({ @NgModule({
declarations: [TrialDetailsComponent], declarations: [TrialDetailsComponent],
@ -36,6 +37,7 @@ import { NgxEchartsModule } from 'ngx-echarts';
NgxEchartsModule.forRoot({ NgxEchartsModule.forRoot({
echarts: () => import('echarts'), echarts: () => import('echarts'),
}), }),
TrialLogsModule,
], ],
exports: [TrialDetailsComponent], exports: [TrialDetailsComponent],
}) })

View File

@ -0,0 +1,15 @@
<!--if no logs are present at all then show a warning message-->
<ng-container *ngIf="logsRequestError">
<lib-panel icon="error" color="warn">
{{ logsRequestError }}
</lib-panel>
</ng-container>
<ng-container *ngIf="!logsRequestError">
<lib-logs-viewer
class="logs-viewer"
heading="Trial Logs"
[subHeading]="''"
[logs]="logs"
></lib-logs-viewer>
</ng-container>

View File

@ -0,0 +1,9 @@
lib-panel {
display: block;
margin-top: 1rem;
}
.logs-viewer {
margin-bottom: 2rem;
margin-top: 1rem;
}

View File

@ -0,0 +1,36 @@
import { CommonModule } from '@angular/common';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import {
HeadingSubheadingRowModule,
KubeflowModule,
LogsViewerModule,
} from 'kubeflow';
import { TrialLogsComponent } from './trial-logs.component';
describe('TrialLogsComponent', () => {
let component: TrialLogsComponent;
let fixture: ComponentFixture<TrialLogsComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [TrialLogsComponent],
imports: [
CommonModule,
KubeflowModule,
HeadingSubheadingRowModule,
LogsViewerModule,
],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(TrialLogsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,21 @@
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-trial-logs',
templateUrl: './trial-logs.component.html',
styleUrls: ['./trial-logs.component.scss'],
})
export class TrialLogsComponent {
public logs: string[];
@Input() logsRequestError: string;
@Input()
set trialLogs(trialLogs: string) {
if (!trialLogs) {
return;
}
this.logs = trialLogs.split('\n');
}
}

View File

@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TrialLogsComponent } from './trial-logs.component';
import {
HeadingSubheadingRowModule,
KubeflowModule,
LogsViewerModule,
} from 'kubeflow';
@NgModule({
declarations: [TrialLogsComponent],
imports: [
CommonModule,
KubeflowModule,
HeadingSubheadingRowModule,
LogsViewerModule,
],
exports: [TrialLogsComponent],
})
export class TrialLogsModule {}

View File

@ -102,4 +102,25 @@ export class KWABackendService extends BackendService {
.post(url, { postData: exp }) .post(url, { postData: exp })
.pipe(catchError(error => this.parseError(error))); .pipe(catchError(error => this.parseError(error)));
} }
getTrialLogs(name: string, namespace: string): Observable<any> {
const url = `/katib/fetch_trial_logs/?trialName=${name}&namespace=${namespace}`;
return this.http
.get(url)
.pipe(catchError(error => this.handleError(error, false)));
}
// ---------------------------Error Handling---------------------------------
// Override common service's getBackendErrorLog
// in order to properly show the message the backend has sent
public getBackendErrorLog(error: HttpErrorResponse): string {
if (error.error === null) {
return error.message;
} else {
// Show the message the backend has sent
return error.error.log ? error.error.log : error.error;
}
}
} }

View File

@ -37,7 +37,7 @@ if os.path.exists(katib_grpc_api_file):
setuptools.setup( setuptools.setup(
name="kubeflow-katib", name="kubeflow-katib",
version="0.14.0", version="0.15.0",
author="Kubeflow Authors", author="Kubeflow Authors",
author_email="premnath.vel@gmail.com", author_email="premnath.vel@gmail.com",
license="Apache License Version 2.0", license="Apache License Version 2.0",

View File

@ -52,7 +52,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"

View File

@ -52,7 +52,7 @@ spec:
spec: spec:
containers: containers:
- name: training-container - name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command: command:
- "python3" - "python3"
- "/opt/mxnet-mnist/mnist.py" - "/opt/mxnet-mnist/mnist.py"