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
694bb539
Unverified
Commit
694bb539
authored
Nov 27, 2018
by
chicm-ms
Committed by
GitHub
Nov 27, 2018
Browse files
Multi final metrics (#377)
* Rest retrieve multiple final results for multiphase job * updates
parent
e577bafd
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
17 additions
and
11 deletions
+17
-11
src/nni_manager/common/datastore.ts
src/nni_manager/common/datastore.ts
+1
-1
src/nni_manager/core/nniDataStore.ts
src/nni_manager/core/nniDataStore.ts
+12
-6
src/nni_manager/rest_server/test/mockedNNIManager.ts
src/nni_manager/rest_server/test/mockedNNIManager.ts
+4
-4
No files found.
src/nni_manager/common/datastore.ts
View file @
694bb539
...
@@ -66,7 +66,7 @@ interface TrialJobInfo {
...
@@ -66,7 +66,7 @@ interface TrialJobInfo {
endTime
?:
number
;
endTime
?:
number
;
hyperParameters
?:
string
[];
hyperParameters
?:
string
[];
logPath
?:
string
;
logPath
?:
string
;
finalMetricData
?:
MetricDataRecord
;
finalMetricData
?:
MetricDataRecord
[]
;
stderrPath
?:
string
;
stderrPath
?:
string
;
}
}
...
...
src/nni_manager/core/nniDataStore.ts
View file @
694bb539
...
@@ -163,7 +163,7 @@ class NNIDataStore implements DataStore {
...
@@ -163,7 +163,7 @@ class NNIDataStore implements DataStore {
}
}
const
map
:
Map
<
string
,
TrialJobInfo
>
=
this
.
getTrialJobsByReplayEvents
(
trialJobEvents
);
const
map
:
Map
<
string
,
TrialJobInfo
>
=
this
.
getTrialJobsByReplayEvents
(
trialJobEvents
);
const
finalMetricsMap
:
Map
<
string
,
MetricDataRecord
>
=
await
this
.
getFinalMetricData
(
trialJobId
);
const
finalMetricsMap
:
Map
<
string
,
MetricDataRecord
[]
>
=
await
this
.
getFinalMetricData
(
trialJobId
);
for
(
const
key
of
map
.
keys
())
{
for
(
const
key
of
map
.
keys
())
{
const
jobInfo
:
TrialJobInfo
|
undefined
=
map
.
get
(
key
);
const
jobInfo
:
TrialJobInfo
|
undefined
=
map
.
get
(
key
);
...
@@ -181,17 +181,23 @@ class NNIDataStore implements DataStore {
...
@@ -181,17 +181,23 @@ class NNIDataStore implements DataStore {
return
result
;
return
result
;
}
}
private
async
getFinalMetricData
(
trialJobId
?:
string
):
Promise
<
Map
<
string
,
MetricDataRecord
>>
{
private
async
getFinalMetricData
(
trialJobId
?:
string
):
Promise
<
Map
<
string
,
MetricDataRecord
[]
>>
{
const
map
:
Map
<
string
,
MetricDataRecord
>
=
new
Map
();
const
map
:
Map
<
string
,
MetricDataRecord
[]
>
=
new
Map
();
const
metrics
:
MetricDataRecord
[]
=
await
this
.
getMetricData
(
trialJobId
,
'
FINAL
'
);
const
metrics
:
MetricDataRecord
[]
=
await
this
.
getMetricData
(
trialJobId
,
'
FINAL
'
);
const
multiPhase
:
boolean
=
await
this
.
isMultiPhase
();
const
multiPhase
:
boolean
=
await
this
.
isMultiPhase
();
for
(
const
metric
of
metrics
)
{
for
(
const
metric
of
metrics
)
{
if
(
map
.
has
(
metric
.
trialJobId
)
&&
!
multiPhase
)
{
const
existMetrics
:
MetricDataRecord
[]
|
undefined
=
map
.
get
(
metric
.
trialJobId
);
this
.
log
.
error
(
`Found multiple FINAL results for trial job
${
trialJobId
}
`
);
if
(
existMetrics
!==
undefined
)
{
if
(
!
multiPhase
)
{
this
.
log
.
error
(
`Found multiple FINAL results for trial job
${
trialJobId
}
, metrics:
${
JSON
.
stringify
(
metrics
)}
`
);
}
else
{
existMetrics
.
push
(
metric
);
}
}
else
{
map
.
set
(
metric
.
trialJobId
,
[
metric
]);
}
}
map
.
set
(
metric
.
trialJobId
,
metric
);
}
}
return
map
;
return
map
;
...
...
src/nni_manager/rest_server/test/mockedNNIManager.ts
View file @
694bb539
...
@@ -159,28 +159,28 @@ export class MockedNNIManager extends Manager {
...
@@ -159,28 +159,28 @@ export class MockedNNIManager extends Manager {
status
:
'
SUCCEEDED
'
,
status
:
'
SUCCEEDED
'
,
startTime
:
Date
.
now
(),
startTime
:
Date
.
now
(),
endTime
:
Date
.
now
(),
endTime
:
Date
.
now
(),
finalMetricData
:
{
finalMetricData
:
[
{
timestamp
:
0
,
timestamp
:
0
,
trialJobId
:
'
3456
'
,
trialJobId
:
'
3456
'
,
parameterId
:
'
123
'
,
parameterId
:
'
123
'
,
type
:
'
FINAL
'
,
type
:
'
FINAL
'
,
sequence
:
0
,
sequence
:
0
,
data
:
'
0.2
'
data
:
'
0.2
'
}
}
]
};
};
const
job2
:
TrialJobInfo
=
{
const
job2
:
TrialJobInfo
=
{
id
:
'
3456
'
,
id
:
'
3456
'
,
status
:
'
FAILED
'
,
status
:
'
FAILED
'
,
startTime
:
Date
.
now
(),
startTime
:
Date
.
now
(),
endTime
:
Date
.
now
(),
endTime
:
Date
.
now
(),
finalMetricData
:
{
finalMetricData
:
[
{
timestamp
:
0
,
timestamp
:
0
,
trialJobId
:
'
3456
'
,
trialJobId
:
'
3456
'
,
parameterId
:
'
123
'
,
parameterId
:
'
123
'
,
type
:
'
FINAL
'
,
type
:
'
FINAL
'
,
sequence
:
0
,
sequence
:
0
,
data
:
'
0.2
'
data
:
'
0.2
'
}
}
]
};
};
return
Promise
.
resolve
([
job1
,
job2
]);
return
Promise
.
resolve
([
job1
,
job2
]);
...
...
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