Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
nni
Commits
14a79654
"git@developer.sourcefind.cn:gaoqiong/composable_kernel.git" did not exist on "f2c7e7c5686655d9c0e49610834f2dd5c9bdfc23"
Unverified
Commit
14a79654
authored
May 23, 2019
by
SparkSnail
Committed by
GitHub
May 23, 2019
Browse files
Support v1beta2 operator in KubeflowTrainingService (#1058)
parent
1ace9baf
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
102 additions
and
15 deletions
+102
-15
src/nni_manager/config/kubeflow/pytorchjob-crd-v1beta2.json
src/nni_manager/config/kubeflow/pytorchjob-crd-v1beta2.json
+17
-0
src/nni_manager/config/kubeflow/tfjob-crd-v1beta2.json
src/nni_manager/config/kubeflow/tfjob-crd-v1beta2.json
+17
-0
src/nni_manager/training_service/kubernetes/kubeflow/kubeflowApiClient.ts
...training_service/kubernetes/kubeflow/kubeflowApiClient.ts
+67
-14
src/nni_manager/training_service/kubernetes/kubeflow/kubeflowConfig.ts
...er/training_service/kubernetes/kubeflow/kubeflowConfig.ts
+1
-1
No files found.
src/nni_manager/config/kubeflow/pytorchjob-crd-v1beta2.json
0 → 100644
View file @
14a79654
{
"kind"
:
"CustomResourceDefinition"
,
"spec"
:
{
"scope"
:
"Namespaced"
,
"version"
:
"v1beta2"
,
"group"
:
"kubeflow.org"
,
"names"
:
{
"kind"
:
"PyTorchJob"
,
"plural"
:
"pytorchjobs"
,
"singular"
:
"pytorchjob"
}
},
"apiVersion"
:
"apiextensions.k8s.io/v1beta2"
,
"metadata"
:
{
"name"
:
"pytorchjobs.kubeflow.org"
}
}
src/nni_manager/config/kubeflow/tfjob-crd-v1beta2.json
0 → 100644
View file @
14a79654
{
"kind"
:
"CustomResourceDefinition"
,
"spec"
:
{
"scope"
:
"Namespaced"
,
"version"
:
"v1beta2"
,
"group"
:
"kubeflow.org"
,
"names"
:
{
"kind"
:
"TFJob"
,
"plural"
:
"tfjobs"
,
"singular"
:
"tfjob"
}
},
"apiVersion"
:
"apiextensions.k8s.io/v1beta2"
,
"metadata"
:
{
"name"
:
"tfjobs.kubeflow.org"
}
}
src/nni_manager/training_service/kubernetes/kubeflow/kubeflowApiClient.ts
View file @
14a79654
...
@@ -29,20 +29,35 @@ abstract class KubeflowOperatorClient extends KubernetesCRDClient{
...
@@ -29,20 +29,35 @@ abstract class KubeflowOperatorClient extends KubernetesCRDClient{
*/
*/
public
static
generateOperatorClient
(
kubeflowOperator
:
KubeflowOperator
,
public
static
generateOperatorClient
(
kubeflowOperator
:
KubeflowOperator
,
operatorApiVersion
:
string
):
KubernetesCRDClient
{
operatorApiVersion
:
string
):
KubernetesCRDClient
{
if
(
kubeflowOperator
===
'
tf-operator
'
)
{
switch
(
kubeflowOperator
)
{
if
(
operatorApiVersion
==
'
v1alpha2
'
)
{
case
'
tf-operator
'
:
{
return
new
TFOperatorClientV1Alpha2
();
switch
(
operatorApiVersion
)
{
}
else
if
(
operatorApiVersion
==
'
v1beta1
'
)
{
case
'
v1alpha2
'
:
{
return
new
TFOperatorClientV1Beta1
();
return
new
TFOperatorClientV1Alpha2
();
}
}
}
else
if
(
kubeflowOperator
===
'
pytorch-operator
'
)
{
case
'
v1beta1
'
:
{
if
(
operatorApiVersion
==
'
v1alpha2
'
)
{
return
new
TFOperatorClientV1Beta1
();
return
new
PytorchOperatorClientV1Alpha2
();
}
}
else
if
(
operatorApiVersion
==
'
v1beta1
'
)
{
case
'
v1beta2
'
:
{
return
new
PytorchOperatorClientV1Beta1
();
return
new
TFOperatorClientV1Beta2
();
}
}
break
;
}
}
case
'
pytorch-operator
'
:
{
switch
(
operatorApiVersion
)
{
case
'
v1alpha2
'
:
{
return
new
PyTorchOperatorClientV1Alpha2
();
}
case
'
v1beta1
'
:
{
return
new
PyTorchOperatorClientV1Beta1
();
}
case
'
v1beta2
'
:
{
return
new
PyTorchOperatorClientV1Beta2
();
}
}
}
}
}
throw
new
Error
(
`Invalid operator
${
kubeflowOperator
}
or apiVersion
${
operatorApiVersion
}
`
);
throw
new
Error
(
`Invalid operator
${
kubeflowOperator
}
or apiVersion
${
operatorApiVersion
}
`
);
}
}
}
}
...
@@ -85,7 +100,26 @@ class TFOperatorClientV1Beta1 extends KubernetesCRDClient {
...
@@ -85,7 +100,26 @@ class TFOperatorClientV1Beta1 extends KubernetesCRDClient {
}
}
}
}
class
PytorchOperatorClientV1Alpha2
extends
KubeflowOperatorClient
{
class
TFOperatorClientV1Beta2
extends
KubernetesCRDClient
{
/**
* constructor, to initialize tfjob CRD definition
*/
public
constructor
()
{
super
();
this
.
crdSchema
=
JSON
.
parse
(
fs
.
readFileSync
(
'
./config/kubeflow/tfjob-crd-v1beta2.json
'
,
'
utf8
'
));
this
.
client
.
addCustomResourceDefinition
(
this
.
crdSchema
);
}
protected
get
operator
():
any
{
return
this
.
client
.
apis
[
"
kubeflow.org
"
].
v1beta2
.
namespaces
(
'
default
'
).
tfjobs
;
}
public
get
containerName
():
string
{
return
'
tensorflow
'
;
}
}
class
PyTorchOperatorClientV1Alpha2
extends
KubeflowOperatorClient
{
/**
/**
* constructor, to initialize tfjob CRD definition
* constructor, to initialize tfjob CRD definition
*/
*/
...
@@ -104,7 +138,7 @@ class PytorchOperatorClientV1Alpha2 extends KubeflowOperatorClient {
...
@@ -104,7 +138,7 @@ class PytorchOperatorClientV1Alpha2 extends KubeflowOperatorClient {
}
}
}
}
class
Py
t
orchOperatorClientV1Beta1
extends
KubernetesCRDClient
{
class
Py
T
orchOperatorClientV1Beta1
extends
KubernetesCRDClient
{
/**
/**
* constructor, to initialize tfjob CRD definition
* constructor, to initialize tfjob CRD definition
*/
*/
...
@@ -123,5 +157,24 @@ class PytorchOperatorClientV1Beta1 extends KubernetesCRDClient {
...
@@ -123,5 +157,24 @@ class PytorchOperatorClientV1Beta1 extends KubernetesCRDClient {
}
}
}
}
class
PyTorchOperatorClientV1Beta2
extends
KubernetesCRDClient
{
/**
* constructor, to initialize tfjob CRD definition
*/
public
constructor
()
{
super
();
this
.
crdSchema
=
JSON
.
parse
(
fs
.
readFileSync
(
'
./config/kubeflow/pytorchjob-crd-v1beta2.json
'
,
'
utf8
'
));
this
.
client
.
addCustomResourceDefinition
(
this
.
crdSchema
);
}
protected
get
operator
():
any
{
return
this
.
client
.
apis
[
"
kubeflow.org
"
].
v1beta2
.
namespaces
(
'
default
'
).
pytorchjobs
;
}
public
get
containerName
():
string
{
return
'
pytorch
'
;
}
}
export
{
KubeflowOperatorClient
,
GeneralK8sClient
};
export
{
KubeflowOperatorClient
,
GeneralK8sClient
};
src/nni_manager/training_service/kubernetes/kubeflow/kubeflowConfig.ts
View file @
14a79654
...
@@ -28,7 +28,7 @@ import { MethodNotImplementedError } from '../../../common/errors';
...
@@ -28,7 +28,7 @@ import { MethodNotImplementedError } from '../../../common/errors';
export
type
KubeflowOperator
=
'
tf-operator
'
|
'
pytorch-operator
'
;
export
type
KubeflowOperator
=
'
tf-operator
'
|
'
pytorch-operator
'
;
export
type
DistTrainRole
=
'
worker
'
|
'
ps
'
|
'
master
'
;
export
type
DistTrainRole
=
'
worker
'
|
'
ps
'
|
'
master
'
;
export
type
KubeflowJobStatus
=
'
Created
'
|
'
Running
'
|
'
Failed
'
|
'
Succeeded
'
;
export
type
KubeflowJobStatus
=
'
Created
'
|
'
Running
'
|
'
Failed
'
|
'
Succeeded
'
;
export
type
OperatorApiVersion
=
'
v1alpha2
'
|
'
v1beta1
'
;
export
type
OperatorApiVersion
=
'
v1alpha2
'
|
'
v1beta1
'
|
'
v1beta2
'
;
export
class
KubeflowClusterConfig
extends
KubernetesClusterConfig
{
export
class
KubeflowClusterConfig
extends
KubernetesClusterConfig
{
public
readonly
operator
:
KubeflowOperator
;
public
readonly
operator
:
KubeflowOperator
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment