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
8fd18a5a
Unverified
Commit
8fd18a5a
authored
Mar 25, 2019
by
chicm-ms
Committed by
GitHub
Mar 25, 2019
Browse files
Optimize query job performance (#898)
* Optimize job query performance
parent
aaa8f446
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
19 deletions
+29
-19
src/nni_manager/core/nniDataStore.ts
src/nni_manager/core/nniDataStore.ts
+29
-19
No files found.
src/nni_manager/core/nniDataStore.ts
View file @
8fd18a5a
...
...
@@ -250,29 +250,26 @@ class NNIDataStore implements DataStore {
return
<
TrialJobStatus
>
event
;
}
private
mergeHyperParameters
(
hyperParamList
:
string
[],
newParamStr
:
string
):
string
[]
{
const
mergedHyperParams
:
any
[]
=
[];
let
newParam
:
any
;
private
parseHyperParameter
(
hParamStr
:
string
):
any
{
let
hParam
:
any
;
try
{
newParam
=
JSON
.
parse
(
newParamStr
);
hParam
=
JSON
.
parse
(
hParamStr
);
return
hParam
;
}
catch
(
err
)
{
this
.
log
.
error
(
`Hyper parameter needs to be in json format:
${
new
ParamStr
}
`
);
this
.
log
.
error
(
`Hyper parameter needs to be in json format:
${
h
ParamStr
}
`
);
return
hyperParamList
;
}
for
(
const
hyperParamStr
of
hyperParamList
)
{
const
hyperParam
:
any
=
JSON
.
parse
(
hyperParamStr
);
mergedHyperParams
.
push
(
hyperParam
);
}
if
(
mergedHyperParams
.
filter
((
value
:
any
)
=>
value
.
parameter_index
===
newParam
.
parameter_index
).
length
<=
0
)
{
mergedHyperParams
.
push
(
newParam
);
return
undefined
;
}
return
mergedHyperParams
.
map
<
string
>
((
value
:
any
)
=>
{
return
JSON
.
stringify
(
value
);
});
}
// tslint:disable-next-line:cyclomatic-complexity
private
getTrialJobsByReplayEvents
(
trialJobEvents
:
TrialJobEventRecord
[]):
Map
<
string
,
TrialJobInfo
>
{
this
.
log
.
debug
(
'
getTrialJobsByReplayEvents begin
'
);
const
map
:
Map
<
string
,
TrialJobInfo
>
=
new
Map
();
const
hParamIdMap
:
Map
<
string
,
Set
<
number
>>
=
new
Map
();
// assume data is stored by time ASC order
for
(
const
record
of
trialJobEvents
)
{
let
jobInfo
:
TrialJobInfo
|
undefined
;
...
...
@@ -322,10 +319,21 @@ class NNIDataStore implements DataStore {
}
jobInfo
.
status
=
this
.
getJobStatusByLatestEvent
(
jobInfo
.
status
,
record
.
event
);
if
(
record
.
data
!==
undefined
&&
record
.
data
.
trim
().
length
>
0
)
{
if
(
jobInfo
.
hyperParameters
!==
undefined
)
{
jobInfo
.
hyperParameters
=
this
.
mergeHyperParameters
(
jobInfo
.
hyperParameters
,
record
.
data
);
}
else
{
assert
(
false
,
'
jobInfo.hyperParameters is undefined
'
);
const
newHParam
:
any
=
this
.
parseHyperParameter
(
record
.
data
);
if
(
newHParam
!==
undefined
)
{
if
(
jobInfo
.
hyperParameters
!==
undefined
)
{
let
hParamIds
:
Set
<
number
>
|
undefined
=
hParamIdMap
.
get
(
jobInfo
.
id
);
if
(
hParamIds
===
undefined
)
{
hParamIds
=
new
Set
();
}
if
(
!
hParamIds
.
has
(
newHParam
.
parameter_index
))
{
jobInfo
.
hyperParameters
.
push
(
JSON
.
stringify
(
newHParam
));
hParamIds
.
add
(
newHParam
.
parameter_index
);
hParamIdMap
.
set
(
jobInfo
.
id
,
hParamIds
);
}
}
else
{
assert
(
false
,
'
jobInfo.hyperParameters is undefined
'
);
}
}
}
if
(
record
.
sequenceId
!==
undefined
&&
jobInfo
.
sequenceId
===
undefined
)
{
...
...
@@ -334,6 +342,8 @@ class NNIDataStore implements DataStore {
map
.
set
(
record
.
trialJobId
,
jobInfo
);
}
this
.
log
.
debug
(
'
getTrialJobsByReplayEvents done
'
);
return
map
;
}
}
...
...
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