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
container:
name: model-training
image: docker.io/kubeflowkatib/mxnet-mnist:latest
image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command:
- "python3"
- "/opt/mxnet-mnist/mnist.py"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,13 +8,13 @@ data:
metrics-collector-sidecar: |-
{
"StdOut": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest"
"image": "docker.io/kubeflowkatib/file-metrics-collector:v0.15.0"
},
"File": {
"image": "docker.io/kubeflowkatib/file-metrics-collector:latest"
"image": "docker.io/kubeflowkatib/file-metrics-collector:v0.15.0"
},
"TensorFlowEvent": {
"image": "docker.io/kubeflowkatib/tfevent-metrics-collector:latest",
"image": "docker.io/kubeflowkatib/tfevent-metrics-collector:v0.15.0",
"resources": {
"limits": {
"memory": "1Gi"
@ -25,31 +25,31 @@ data:
suggestion: |-
{
"random": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.15.0"
},
"tpe": {
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperopt:v0.15.0"
},
"grid": {
"image": "docker.io/kubeflowkatib/suggestion-optuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-optuna:v0.15.0"
},
"hyperband": {
"image": "docker.io/kubeflowkatib/suggestion-hyperband:latest"
"image": "docker.io/kubeflowkatib/suggestion-hyperband:v0.15.0"
},
"bayesianoptimization": {
"image": "docker.io/kubeflowkatib/suggestion-skopt:latest"
"image": "docker.io/kubeflowkatib/suggestion-skopt:v0.15.0"
},
"cmaes": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.15.0"
},
"sobol": {
"image": "docker.io/kubeflowkatib/suggestion-goptuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-goptuna:v0.15.0"
},
"multivariate-tpe": {
"image": "docker.io/kubeflowkatib/suggestion-optuna:latest"
"image": "docker.io/kubeflowkatib/suggestion-optuna:v0.15.0"
},
"enas": {
"image": "docker.io/kubeflowkatib/suggestion-enas:latest",
"image": "docker.io/kubeflowkatib/suggestion-enas:v0.15.0",
"resources": {
"limits": {
"memory": "200Mi"
@ -57,10 +57,10 @@ data:
}
},
"darts": {
"image": "docker.io/kubeflowkatib/suggestion-darts:latest"
"image": "docker.io/kubeflowkatib/suggestion-darts:v0.15.0"
},
"pbt": {
"image": "docker.io/kubeflowkatib/suggestion-pbt:latest",
"image": "docker.io/kubeflowkatib/suggestion-pbt:v0.15.0",
"persistentVolumeClaimSpec": {
"accessModes": [
"ReadWriteMany"
@ -76,6 +76,6 @@ data:
early-stopping: |-
{
"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:
containers:
- name: training-container
image: docker.io/kubeflowkatib/mxnet-mnist:latest
image: docker.io/kubeflowkatib/mxnet-mnist:v0.15.0
command:
- "python3"
- "/opt/mxnet-mnist/mnist.py"
@ -33,7 +33,7 @@ data:
spec:
containers:
- name: training-container
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:latest
image: docker.io/kubeflowkatib/enas-cnn-cifar10-cpu:v0.15.0
command:
- python3
- -u
@ -54,7 +54,7 @@ data:
spec:
containers:
- name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"
@ -68,7 +68,7 @@ data:
spec:
containers:
- name: pytorch
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v0.15.0
command:
- "python3"
- "/opt/pytorch-mnist/mnist.py"

View File

@ -22,13 +22,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.15.0
- name: 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
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.15.0
patchesStrategicMerge:
- patches/katib-cert-injection.yaml

View File

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

View File

@ -30,13 +30,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.15.0
- name: 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
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.15.0
patchesJson6902:
# Annotate Service to delegate TLS-secret generation to OpenShift service controller

View File

@ -22,16 +22,16 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.15.0
- name: 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
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.15.0
- name: docker.io/kubeflowkatib/cert-generator
newName: docker.io/kubeflowkatib/cert-generator
newTag: latest
newTag: v0.15.0
patchesJson6902:
- target:
group: apps

View File

@ -22,13 +22,13 @@ resources:
images:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.15.0
- name: 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
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.15.0
- name: 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:
- name: docker.io/kubeflowkatib/katib-controller
newName: docker.io/kubeflowkatib/katib-controller
newTag: latest
newTag: v0.15.0
- name: 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
newName: docker.io/kubeflowkatib/katib-ui
newTag: latest
newTag: v0.15.0
patchesStrategicMerge:
- patches/remove-namespace.yaml

View File

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

View File

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

View File

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

View File

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

View File

@ -46,6 +46,16 @@
></app-trial-overview>
</ng-template>
</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">
<ng-template matTabContent>
<app-trial-yaml [trialJson]="trialDetails"></app-trial-yaml>

View File

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

View File

@ -30,6 +30,8 @@ export class TrialDetailsComponent implements OnInit, OnDestroy {
experimentName: string;
showTrialGraph: boolean = false;
options: {};
trialLogs: string;
logsRequestError: string;
chartData: ChartPoint[] = [];
yScaleMax = 0;
yScaleMin = 1;
@ -133,6 +135,17 @@ export class TrialDetailsComponent implements OnInit, OnDestroy {
}
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 {

View File

@ -16,6 +16,7 @@ import {
PanelModule,
} from 'kubeflow';
import { NgxEchartsModule } from 'ngx-echarts';
import { TrialLogsModule } from './trial-logs/trial-logs.module';
@NgModule({
declarations: [TrialDetailsComponent],
@ -36,6 +37,7 @@ import { NgxEchartsModule } from 'ngx-echarts';
NgxEchartsModule.forRoot({
echarts: () => import('echarts'),
}),
TrialLogsModule,
],
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 })
.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(
name="kubeflow-katib",
version="0.14.0",
version="0.15.0",
author="Kubeflow Authors",
author_email="premnath.vel@gmail.com",
license="Apache License Version 2.0",

View File

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

View File

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