Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MindSpore
mindinsight
提交
362a05e4
M
mindinsight
项目概览
MindSpore
/
mindinsight
通知
7
Star
3
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindinsight
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
362a05e4
编写于
8月 21, 2020
作者:
M
mindspore-ci-bot
提交者:
Gitee
8月 21, 2020
浏览文件
操作
浏览文件
下载
差异文件
!546 Add training log path to training panel sub-page and profiling page
Merge pull request !546 from 秦君艳/path
上级
1491de23
8beb39ba
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
389 addition
and
273 deletion
+389
-273
mindinsight/ui/src/views/profiling/profiling.vue
mindinsight/ui/src/views/profiling/profiling.vue
+20
-0
mindinsight/ui/src/views/train-manage/data-map.vue
mindinsight/ui/src/views/train-manage/data-map.vue
+20
-6
mindinsight/ui/src/views/train-manage/graph.vue
mindinsight/ui/src/views/train-manage/graph.vue
+14
-0
mindinsight/ui/src/views/train-manage/histogram.vue
mindinsight/ui/src/views/train-manage/histogram.vue
+33
-17
mindinsight/ui/src/views/train-manage/image.vue
mindinsight/ui/src/views/train-manage/image.vue
+16
-1
mindinsight/ui/src/views/train-manage/scalar.vue
mindinsight/ui/src/views/train-manage/scalar.vue
+259
-245
mindinsight/ui/src/views/train-manage/summary-manage.vue
mindinsight/ui/src/views/train-manage/summary-manage.vue
+1
-0
mindinsight/ui/src/views/train-manage/tensor.vue
mindinsight/ui/src/views/train-manage/tensor.vue
+16
-1
mindinsight/ui/src/views/train-manage/training-dashboard.vue
mindinsight/ui/src/views/train-manage/training-dashboard.vue
+10
-3
未找到文件。
mindinsight/ui/src/views/profiling/profiling.vue
浏览文件 @
362a05e4
...
...
@@ -20,6 +20,10 @@ limitations under the License.
:class=
"
{collapse:collapse}">
<div
class=
"helper"
v-show=
"!collapse"
>
<div
class=
"summary-path"
>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
<span>
{{
summaryPath
}}
</span>
</div>
<div
class=
"cur-card"
>
<label>
{{
$t
(
'
profiling.curCard
'
)
}}
</label>
<el-select
v-model=
"curDashboardInfo.curCardNum"
...
...
@@ -61,6 +65,7 @@ import RequestService from '../../services/request-service';
export
default
{
data
()
{
return
{
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
tipsArrayList
:
[
'
step_trace-iter_interval
'
,
'
minddata_pipeline-general
'
,
...
...
@@ -331,11 +336,26 @@ export default {
}
.helper
{
padding
:
32px
;
padding-top
:
20px
;
height
:
100%
;
overflow-y
:
auto
;
margin-left
:
24px
;
background
:
#edf0f5
;
word-wrap
:
break-word
;
.summary-path
{
line-height
:
24px
;
font-size
:
14px
;
overflow
:
hidden
;
font-weight
:
bold
;
padding-bottom
:
10px
;
word-break
:
break-all
;
text-overflow
:
-
o-ellipsis-lastline
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
4
;
-webkit-box-orient
:
vertical
;
}
.nowrap-style
{
white-space
:
nowrap
;
}
...
...
mindinsight/ui/src/views/train-manage/data-map.vue
浏览文件 @
362a05e4
...
...
@@ -19,7 +19,14 @@ limitations under the License.
<div
class=
"cl-data-map-manage"
>
<div
class=
'data-map-p32'
>
<div
class=
"cl-title cl-data-map-title"
>
<div
class=
"cl-title-left"
>
{{
$t
(
'
dataMap.titleText
'
)
}}
</div>
<div
class=
"cl-title-left"
>
{{
$t
(
'
dataMap.titleText
'
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
</div>
<div
class=
"cl-title-right"
>
<div
class=
"cl-close-btn"
@
click=
"jumpToTrainDashboard"
>
...
...
@@ -162,6 +169,7 @@ export default {
trainJobID
:
''
,
selectedNode
:
[],
noData
:
false
,
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
};
},
mounted
()
{
...
...
@@ -213,8 +221,9 @@ export default {
if
(
!
data
)
{
return
;
}
const
key
=
`
${
parentKey
?
parentKey
+
'
/
'
:
''
}${
data
.
op_type
||
''
}
_
${
index
}
`
;
const
key
=
`
${
parentKey
?
parentKey
+
'
/
'
:
''
}${
data
.
op_type
||
''
}
_
${
index
}
`
;
const
obj
=
{
key
:
key
,
id
:
''
,
...
...
@@ -329,9 +338,7 @@ export default {
this
.
graphviz
=
null
;
}
},
100
);
d3
.
select
(
'
#graph
'
)
.
selectAll
(
'
title
'
)
.
remove
();
d3
.
select
(
'
#graph
'
).
selectAll
(
'
title
'
).
remove
();
this
.
startApp
();
},
/**
...
...
@@ -631,6 +638,13 @@ export default {
.cl-data-map-title
{
height
:
56px
;
line-height
:
56px
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
}
.data-map-p32
{
height
:
100%
;
...
...
mindinsight/ui/src/views/train-manage/graph.vue
浏览文件 @
362a05e4
...
...
@@ -59,6 +59,12 @@ limitations under the License.
<div
class=
"cl-title cl-graph-title"
>
<div
class=
"cl-title-left"
>
{{
$t
(
'
graph.titleText
'
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
<span
@
click=
"showUserGuide"
class=
"guide"
>
<i
class=
"guide-icon"
></i>
...
...
@@ -421,6 +427,7 @@ const d3 = {select, selectAll, zoom};
export
default
{
data
()
{
return
{
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
clickScope
:
{},
// Information about the node that is clicked for the first time.
smallResize
:
{},
// The container of display area box.
insideBox
:
{},
// Basic information about the display area box
...
...
@@ -2968,6 +2975,13 @@ export default {
.cl-graph-title
{
height
:
56px
;
line-height
:
56px
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
.guide
{
cursor
:
pointer
;
margin-left
:
10px
;
...
...
mindinsight/ui/src/views/train-manage/histogram.vue
浏览文件 @
362a05e4
...
...
@@ -18,7 +18,14 @@ limitations under the License.
<div
class=
"histogram-bk"
>
<!-- Title area -->
<div
class=
"cl-title cl-histogram-title"
>
<div
class=
"cl-title-left"
>
{{
$t
(
'
histogram.titleText
'
)
}}
</div>
<div
class=
"cl-title-left"
>
{{
$t
(
'
histogram.titleText
'
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
</div>
<div
class=
"cl-title-right"
>
<div
class=
"cl-close-btn"
@
click=
"jumpToTrainDashboard"
>
...
...
@@ -126,6 +133,7 @@ export default {
return
{
tagList
:
[],
// Tag list.
trainingJobId
:
this
.
$route
.
query
.
train_id
,
// ID of the current training job.
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
originDataArr
:
[],
// List of all data.
initOver
:
false
,
// Indicates whether the initialization is complete.
curAxisName
:
0
,
// Current time type.
...
...
@@ -263,8 +271,11 @@ export default {
document
.
title
=
this
.
$t
(
'
histogram.titleText
'
)
+
'
-MindInsight
'
;
return
;
}
document
.
title
=
decodeURIComponent
(
this
.
$route
.
query
.
train_id
)
+
'
-
'
+
this
.
$t
(
'
histogram.titleText
'
)
+
'
-MindInsight
'
;
document
.
title
=
decodeURIComponent
(
this
.
$route
.
query
.
train_id
)
+
'
-
'
+
this
.
$t
(
'
histogram.titleText
'
)
+
'
-MindInsight
'
;
this
.
getOriginData
();
if
(
this
.
isTimeReload
)
{
this
.
autoUpdateSamples
();
...
...
@@ -810,25 +821,23 @@ export default {
'
.cl-histogram-show-data-content
'
,
).
offsetTop
;
if
(
height
+
e
.
event
.
y
+
20
>
screenHeight
&&
screenHeight
>
height
)
{
document
.
querySelector
(
'
#echartTip
'
).
style
.
top
=
`
${
e
.
event
.
y
+
scrollTop
-
height
-
20
-
offsetTop
}
px`
;
document
.
querySelector
(
'
#echartTip
'
).
style
.
top
=
`
${
e
.
event
.
y
+
scrollTop
-
height
-
20
-
offsetTop
}
px`
;
}
else
{
document
.
querySelector
(
'
#echartTip
'
).
style
.
top
=
`
${
e
.
event
.
y
+
scrollTop
+
20
-
offsetTop
}
px`
;
document
.
querySelector
(
'
#echartTip
'
).
style
.
top
=
`
${
e
.
event
.
y
+
scrollTop
+
20
-
offsetTop
}
px`
;
}
// Blank area on the right of the chart is 80
if
(
width
+
e
.
event
.
x
+
80
>
screenWidth
&&
screenWidth
>
width
)
{
document
.
querySelector
(
'
#echartTip
'
).
style
.
left
=
`
${
e
.
event
.
x
-
width
-
20
}
px`
;
document
.
querySelector
(
'
#echartTip
'
).
style
.
left
=
`
${
e
.
event
.
x
-
width
-
20
}
px`
;
}
else
{
document
.
querySelector
(
'
#echartTip
'
).
style
.
left
=
`
${
e
.
event
.
x
+
20
}
px`
;
document
.
querySelector
(
'
#echartTip
'
).
style
.
left
=
`
${
e
.
event
.
x
+
20
}
px`
;
}
}
...
...
@@ -1377,6 +1386,13 @@ export default {
.cl-histogram-title
{
height
:
56px
;
line-height
:
56px
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
.cl-close-btn
{
width
:
20px
;
height
:
20px
;
...
...
mindinsight/ui/src/views/train-manage/image.vue
浏览文件 @
362a05e4
...
...
@@ -18,7 +18,14 @@ limitations under the License.
<div
class=
"cl-image-manage"
>
<div
class=
"image-bk"
>
<div
class=
"cl-title cl-image-title"
>
<div
class=
"cl-title-left"
>
{{
$t
(
'
images.titleText
'
)
}}
</div>
<div
class=
"cl-title-left"
>
{{
$t
(
'
images.titleText
'
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
</div>
<div
class=
"cl-title-right"
>
<div
class=
"cl-close-btn"
@
click=
"jumpToTrainDashboard"
>
...
...
@@ -138,6 +145,7 @@ export default {
brightness
:
50
,
// Brightness
contrast
:
50
,
// Contrast
trainingJobId
:
this
.
$route
.
query
.
train_id
,
// ID of the current training job
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
multiSelectedTagNames
:
{},
// Dictionary for storing the name of the selected tags
curFilterSamples
:
[],
// List of images that meet the current filter criteria
tagOperateList
:
[],
// Tag list
...
...
@@ -676,6 +684,13 @@ export default {
.cl-image-title
{
height
:
56px
;
line-height
:
56px
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
}
}
.title
{
...
...
mindinsight/ui/src/views/train-manage/scalar.vue
浏览文件 @
362a05e4
...
...
@@ -19,7 +19,14 @@ limitations under the License.
<div
class=
"scalar-bk"
>
<div
class=
"cl-title cl-scalar-title"
v-show=
"originDataArr.length>0"
>
<div
class=
"cl-title-left"
>
{{
$t
(
"
scalar.titleText
"
)
}}
</div>
<div
class=
"cl-title-left"
>
{{
$t
(
"
scalar.titleText
"
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
</div>
<div
class=
"cl-title-right"
>
<ScalarButton
class=
"scalar-btn"
:right=
"scalarCompare"
...
...
@@ -291,6 +298,7 @@ export default {
compare
:
false
,
// Comparison Page
scalarCompare
:
this
.
$t
(
'
scalar
'
)[
'
comparison
'
],
trainingJobId
:
this
.
$route
.
query
.
train_id
,
// ID of the current training job
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
thresholdDialogVisible
:
false
,
delThresholdVisible
:
false
,
currentTagName
:
''
,
...
...
@@ -298,8 +306,8 @@ export default {
thresholdErrorMsg
:
''
,
thresholdRelational
:
''
,
thresholdValue
:
[
{
filterCondition
:
this
.
$t
(
'
scalar.lessThan
'
),
value
:
''
},
{
filterCondition
:
this
.
$t
(
'
scalar.lessThan
'
),
value
:
''
},
{
filterCondition
:
this
.
$t
(
'
scalar.lessThan
'
),
value
:
''
},
{
filterCondition
:
this
.
$t
(
'
scalar.lessThan
'
),
value
:
''
},
],
filterOptions
:
[
{
...
...
@@ -412,7 +420,7 @@ export default {
return
;
}
document
.
title
=
`
${
decodeURIComponent
(
this
.
$route
.
query
.
train_id
this
.
$route
.
query
.
train_id
,
)}
-
${
this
.
$t
(
'
scalar.titleText
'
)}
-MindInsight`
;
// Adding a Listener
window
.
addEventListener
(
'
resize
'
,
this
.
resizeCallback
,
false
);
...
...
@@ -440,7 +448,7 @@ export default {
if
(
localStorage
.
getItem
(
'
thresholdCache
'
))
{
try
{
this
.
thresholdLocal
=
JSON
.
parse
(
localStorage
.
getItem
(
'
thresholdCache
'
)
localStorage
.
getItem
(
'
thresholdCache
'
),
);
this
.
clearCache
();
}
catch
(
e
)
{
...
...
@@ -467,8 +475,8 @@ export default {
)
{
delete
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
];
localStorage
.
setItem
(
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
)
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
),
);
}
}
...
...
@@ -484,81 +492,81 @@ export default {
train_id
:
this
.
trainingJobId
,
};
RequestService
.
getSingleTrainJob
(
params
,
false
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
// error;
if
(
!
res
||
if
(
!
res
||
!
res
.
data
||
!
res
.
data
.
train_jobs
||
!
res
.
data
.
train_jobs
.
length
)
{
)
{
this
.
initOver
=
true
;
return
;
}
const
tempTagList
=
[];
const
dataList
=
[];
const
propsList
=
[];
const
data
=
res
.
data
.
train_jobs
[
0
];
const
runNmeColor
=
CommonProperty
.
commonColorArr
[
0
];
data
.
tags
.
forEach
((
tagObj
)
=>
{
if
(
!
this
.
oriDataDictionaries
[
tagObj
])
{
this
.
oriDataDictionaries
[
tagObj
]
=
true
;
// Add the tag list
tempTagList
.
push
({
label
:
tagObj
,
checked
:
true
,
show
:
true
,
});
const
sampleIndex
=
dataList
.
length
;
// Adding Chart Data
dataList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
runNmeColor
,
show
:
false
,
updateFlag
:
false
,
dataRemove
:
false
,
fullScreen
:
false
,
sampleIndex
:
sampleIndex
,
domId
:
'
prDom
'
+
this
.
DomIdIndex
,
charData
:
{
oriData
:
[],
charOption
:
{},
},
zoomData
:
[
null
,
null
],
zoomDataTimer
:
null
,
charObj
:
null
,
invalidData
:
false
,
});
propsList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
''
,
});
this
.
DomIdIndex
++
;
}
});
this
.
tagOperateList
=
tempTagList
;
this
.
tagPropsList
=
JSON
.
parse
(
JSON
.
stringify
(
tempTagList
));
if
(
dataList
.
length
===
1
)
{
dataList
[
0
].
fullScreen
=
true
;
}
this
.
originDataArr
=
dataList
;
this
.
propsList
=
propsList
;
this
.
initOver
=
true
;
return
;
}
const
tempTagList
=
[];
const
dataList
=
[];
const
propsList
=
[];
const
data
=
res
.
data
.
train_jobs
[
0
];
const
runNmeColor
=
CommonProperty
.
commonColorArr
[
0
];
data
.
tags
.
forEach
((
tagObj
)
=>
{
if
(
!
this
.
oriDataDictionaries
[
tagObj
])
{
this
.
oriDataDictionaries
[
tagObj
]
=
true
;
// Add the tag list
tempTagList
.
push
({
label
:
tagObj
,
checked
:
true
,
show
:
true
,
});
const
sampleIndex
=
dataList
.
length
;
// Adding Chart Data
dataList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
runNmeColor
,
show
:
false
,
updateFlag
:
false
,
dataRemove
:
false
,
fullScreen
:
false
,
sampleIndex
:
sampleIndex
,
domId
:
'
prDom
'
+
this
.
DomIdIndex
,
charData
:
{
oriData
:
[],
charOption
:
{},
},
zoomData
:
[
null
,
null
],
zoomDataTimer
:
null
,
charObj
:
null
,
invalidData
:
false
,
});
propsList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
''
,
});
this
.
DomIdIndex
++
;
}
});
this
.
tagOperateList
=
tempTagList
;
this
.
tagPropsList
=
JSON
.
parse
(
JSON
.
stringify
(
tempTagList
));
if
(
dataList
.
length
===
1
)
{
dataList
[
0
].
fullScreen
=
true
;
}
this
.
originDataArr
=
dataList
;
this
.
propsList
=
propsList
;
this
.
initOver
=
true
;
this
.
$nextTick
(()
=>
{
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
// Obtains data on the current page
this
.
updateTagInPage
();
this
.
resizeCallback
();
this
.
$nextTick
(()
=>
{
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
// Obtains data on the current page
this
.
updateTagInPage
();
this
.
resizeCallback
();
});
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
this
.
initOver
=
true
;
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
});
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
this
.
initOver
=
true
;
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
});
},
/**
...
...
@@ -606,108 +614,108 @@ export default {
};
RequestService
.
getScalarsSample
(
params
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
// error
if
(
!
res
||
!
res
.
data
||
!
res
.
data
.
metadatas
)
{
if
(
!
res
||
!
res
.
data
||
!
res
.
data
.
metadatas
)
{
// canceled
if
(
res
.
toString
()
===
'
false
'
)
{
if
(
res
.
toString
()
===
'
false
'
)
{
return
;
}
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
clear
();
sampleObject
.
onePoint
=
false
;
}
return
;
}
let
hasInvalidData
=
false
;
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
clear
();
sampleObject
.
onePoint
=
false
;
sampleObject
.
charObj
.
showLoading
();
}
return
;
}
let
hasInvalidData
=
false
;
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
showLoading
();
}
const
resData
=
res
.
data
;
const
resData
=
res
.
data
;
const
tempObject
=
{
valueData
:
{
stepData
:
[],
absData
:
[],
relativeData
:
[],
},
logData
:
{
stepData
:
[],
absData
:
[],
relativeData
:
[],
},
};
let
relativeTimeBench
=
0
;
if
(
resData
.
metadatas
.
length
)
{
relativeTimeBench
=
resData
.
metadatas
[
0
].
wall_time
;
}
// Initializing Chart Data
resData
.
metadatas
.
forEach
((
metaData
)
=>
{
if
(
metaData
.
value
===
null
&&
!
hasInvalidData
)
{
hasInvalidData
=
true
;
const
tempObject
=
{
valueData
:
{
stepData
:
[],
absData
:
[],
relativeData
:
[],
},
logData
:
{
stepData
:
[],
absData
:
[],
relativeData
:
[],
},
};
let
relativeTimeBench
=
0
;
if
(
resData
.
metadatas
.
length
)
{
relativeTimeBench
=
resData
.
metadatas
[
0
].
wall_time
;
}
tempObject
.
valueData
.
stepData
.
push
([
metaData
.
step
,
metaData
.
value
,
]);
tempObject
.
valueData
.
absData
.
push
([
metaData
.
wall_time
,
metaData
.
value
,
]);
tempObject
.
valueData
.
relativeData
.
push
([
metaData
.
wall_time
-
relativeTimeBench
,
metaData
.
value
,
]);
const
logValue
=
metaData
.
value
>=
0
?
metaData
.
value
:
''
;
tempObject
.
logData
.
stepData
.
push
([
metaData
.
step
,
logValue
]);
tempObject
.
logData
.
absData
.
push
([
metaData
.
wall_time
,
logValue
]);
tempObject
.
logData
.
relativeData
.
push
([
metaData
.
wall_time
-
relativeTimeBench
,
logValue
,
]);
});
sampleObject
.
charData
.
oriData
[
0
]
=
tempObject
;
// Initializing Chart Data
resData
.
metadatas
.
forEach
((
metaData
)
=>
{
if
(
metaData
.
value
===
null
&&
!
hasInvalidData
)
{
hasInvalidData
=
true
;
}
tempObject
.
valueData
.
stepData
.
push
([
metaData
.
step
,
metaData
.
value
,
]);
tempObject
.
valueData
.
absData
.
push
([
metaData
.
wall_time
,
metaData
.
value
,
]);
tempObject
.
valueData
.
relativeData
.
push
([
metaData
.
wall_time
-
relativeTimeBench
,
metaData
.
value
,
]);
const
logValue
=
metaData
.
value
>=
0
?
metaData
.
value
:
''
;
tempObject
.
logData
.
stepData
.
push
([
metaData
.
step
,
logValue
]);
tempObject
.
logData
.
absData
.
push
([
metaData
.
wall_time
,
logValue
]);
tempObject
.
logData
.
relativeData
.
push
([
metaData
.
wall_time
-
relativeTimeBench
,
logValue
,
]);
});
sampleObject
.
charData
.
oriData
[
0
]
=
tempObject
;
if
(
hasInvalidData
)
{
this
.
$set
(
sampleObject
,
'
invalidData
'
,
true
);
}
else
{
this
.
$set
(
sampleObject
,
'
invalidData
'
,
false
);
}
if
(
hasInvalidData
)
{
this
.
$set
(
sampleObject
,
'
invalidData
'
,
true
);
}
else
{
this
.
$set
(
sampleObject
,
'
invalidData
'
,
false
);
}
sampleObject
.
charData
.
charOption
=
this
.
formateCharOption
(
sampleIndex
);
const
tempOption
=
sampleObject
.
charData
.
charOption
;
if
(
tempOption
.
series
[
0
].
data
.
length
===
1
||
sampleObject
.
charData
.
charOption
=
this
.
formateCharOption
(
sampleIndex
,
);
const
tempOption
=
sampleObject
.
charData
.
charOption
;
if
(
tempOption
.
series
[
0
].
data
.
length
===
1
||
sampleObject
.
onePoint
)
{
tempOption
.
series
[
0
].
showSymbol
=
true
;
}
else
{
tempOption
.
series
[
0
].
showSymbol
=
false
;
}
)
{
tempOption
.
series
[
0
].
showSymbol
=
true
;
}
else
{
tempOption
.
series
[
0
].
showSymbol
=
false
;
}
this
.
$forceUpdate
();
this
.
$forceUpdate
();
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
hideLoading
();
}
// Draw chart
if
(
!
this
.
compare
)
{
this
.
updateOrCreateChar
(
sampleIndex
,
true
);
}
});
})
.
catch
((
e
)
=>
{
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
hideLoading
();
}
// Draw chart
if
(
!
this
.
compare
)
{
this
.
updateOrCreateChar
(
sampleIndex
,
true
);
sampleObject
.
charObj
.
clear
();
}
});
})
.
catch
((
e
)
=>
{
if
(
sampleObject
.
charObj
)
{
sampleObject
.
charObj
.
clear
();
}
});
});
},
...
...
@@ -718,7 +726,7 @@ export default {
setOnePoint
(
sampleObject
)
{
const
that
=
this
;
sampleObject
.
charObj
.
on
(
'
datazoom
'
,
function
(
params
)
{
sampleObject
.
charObj
.
on
(
'
datazoom
'
,
function
(
params
)
{
const
xAxisObject
=
params
.
batch
[
0
];
const
yAxisObject
=
params
.
batch
[
1
];
const
charData
=
sampleObject
.
charData
.
charOption
.
series
[
0
].
data
;
...
...
@@ -777,7 +785,7 @@ export default {
setRestore
(
sampleObject
)
{
const
that
=
this
;
sampleObject
.
charObj
.
on
(
'
restore
'
,
function
(
params
)
{
sampleObject
.
charObj
.
on
(
'
restore
'
,
function
(
params
)
{
const
charData
=
sampleObject
.
charData
.
charOption
.
series
[
0
].
data
;
const
tempCharOption
=
sampleObject
.
charData
.
charOption
;
...
...
@@ -846,12 +854,12 @@ export default {
if
(
curOriData
)
{
if
(
sampleObject
.
log
)
{
dataObj
.
data
=
this
.
formateSmoothData
(
curOriData
.
logData
[
this
.
curBenchX
]
curOriData
.
logData
[
this
.
curBenchX
],
);
dataObjBackend
.
data
=
curOriData
.
logData
[
this
.
curBenchX
];
}
else
{
dataObj
.
data
=
this
.
formateSmoothData
(
curOriData
.
valueData
[
this
.
curBenchX
]
curOriData
.
valueData
[
this
.
curBenchX
],
);
dataObjBackend
.
data
=
curOriData
.
valueData
[
this
.
curBenchX
];
}
...
...
@@ -981,23 +989,23 @@ export default {
position
:
(
point
,
params
,
dom
,
rect
,
size
)
=>
{
const
curDom
=
document
.
getElementById
(
sampleObject
.
domId
);
if
(
!
curDom
)
{
return
{
left
:
0
,
bottom
:
'
100%
'
};
return
{
left
:
0
,
bottom
:
'
100%
'
};
}
if
(
sampleObject
.
fullScreen
)
{
if
(
point
[
0
]
+
size
.
contentSize
[
0
]
<=
size
.
viewSize
[
0
])
{
return
{
left
:
point
[
0
],
bottom
:
'
10%
'
};
return
{
left
:
point
[
0
],
bottom
:
'
10%
'
};
}
else
{
return
{
right
:
size
.
viewSize
[
0
]
-
point
[
0
],
bottom
:
'
10%
'
};
return
{
right
:
size
.
viewSize
[
0
]
-
point
[
0
],
bottom
:
'
10%
'
};
}
}
else
{
const
parentNode
=
curDom
.
parentNode
;
if
(
!
parentNode
)
{
return
{
left
:
0
,
bottom
:
'
100%
'
};
return
{
left
:
0
,
bottom
:
'
100%
'
};
}
if
(
parentNode
.
offsetLeft
>
size
.
contentSize
[
0
])
{
return
{
right
:
'
100%
'
,
bottom
:
0
};
return
{
right
:
'
100%
'
,
bottom
:
0
};
}
else
{
return
{
left
:
'
100%
'
,
bottom
:
0
};
return
{
left
:
'
100%
'
,
bottom
:
0
};
}
}
},
...
...
@@ -1082,16 +1090,16 @@ export default {
`display:inline-block;"></td><td>
${
parma
.
seriesName
}
</td>`
+
`<td>
${
that
.
formateYaxisValue
(
parma
.
value
[
1
])}
</td>`
+
`<td>
${
that
.
formateYaxisValue
(
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
1
]
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
1
],
)}
</td>`
+
`<td>
${
curSerieOriData
.
stepData
[
parma
.
dataIndex
][
0
]}
</td>`
+
`<td>
${
curSerieOriData
.
relativeData
[
parma
.
dataIndex
parma
.
dataIndex
][
0
].
toFixed
(
3
)}${
unit
}
</td>`
+
`<td>
${
that
.
dealrelativeTime
(
new
Date
(
curSerieOriData
.
absData
[
parma
.
dataIndex
][
0
]
*
1000
).
toString
()
new
Date
(
curSerieOriData
.
absData
[
parma
.
dataIndex
][
0
]
*
1000
,
).
toString
(),
)}
</td>`
+
`</tr>`
;
}
...
...
@@ -1176,9 +1184,9 @@ export default {
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
]
)
{
const
tempStorgeArr
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
]
)
JSON
.
stringify
(
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
],
),
);
let
pieceStr
=
''
;
pieceStr
=
this
.
formatePieceStr
(
tempStorgeArr
);
...
...
@@ -1212,8 +1220,8 @@ export default {
// Updating chart option
if
(
sampleObject
.
updateFlag
)
{
sampleObject
.
charObj
.
setOption
(
sampleObject
.
charData
.
charOption
,
sampleObject
.
dataRemove
sampleObject
.
charData
.
charOption
,
sampleObject
.
dataRemove
,
);
sampleObject
.
updateFlag
=
false
;
sampleObject
.
dataRemove
=
false
;
...
...
@@ -1221,8 +1229,8 @@ export default {
}
else
{
// creat chart
sampleObject
.
charObj
=
echarts
.
init
(
document
.
getElementById
(
sampleObject
.
domId
),
null
document
.
getElementById
(
sampleObject
.
domId
),
null
,
);
sampleObject
.
charObj
.
setOption
(
sampleObject
.
charData
.
charOption
,
true
);
this
.
setOnePoint
(
sampleObject
);
...
...
@@ -1328,13 +1336,13 @@ export default {
const
oriIndexData
=
sampleObject
.
charData
.
oriData
[
index
];
if
(
sampleObject
.
log
)
{
seriesData
[
index
*
2
].
data
=
this
.
formateSmoothData
(
oriIndexData
.
logData
[
this
.
curBenchX
]
oriIndexData
.
logData
[
this
.
curBenchX
],
);
seriesData
[
index
*
2
+
1
].
data
=
oriIndexData
.
logData
[
this
.
curBenchX
];
}
else
{
seriesData
[
index
*
2
].
data
=
this
.
formateSmoothData
(
oriIndexData
.
valueData
[
this
.
curBenchX
]
oriIndexData
.
valueData
[
this
.
curBenchX
],
);
seriesData
[
index
*
2
+
1
].
data
=
oriIndexData
.
valueData
[
this
.
curBenchX
];
...
...
@@ -1548,56 +1556,56 @@ export default {
train_id
:
this
.
trainingJobId
,
};
RequestService
.
getSingleTrainJob
(
params
,
ignoreError
)
.
then
((
res
)
=>
{
if
(
this
.
isReloading
)
{
this
.
$store
.
commit
(
'
setIsReload
'
,
false
);
this
.
isReloading
=
false
;
}
.
then
((
res
)
=>
{
if
(
this
.
isReloading
)
{
this
.
$store
.
commit
(
'
setIsReload
'
,
false
);
this
.
isReloading
=
false
;
}
// Fault tolerance processing
if
(
!
res
||
!
res
.
data
)
{
return
;
}
else
if
(
!
res
.
data
.
train_jobs
||
!
res
.
data
.
train_jobs
.
length
)
{
this
.
clearAllData
();
return
;
}
const
data
=
res
.
data
.
train_jobs
[
0
];
// Delete the data that does not exist
const
tagRemoveFlag
=
this
.
removeNonexistentData
(
data
);
// Fault tolerance processing
if
(
!
res
||
!
res
.
data
)
{
return
;
}
else
if
(
!
res
.
data
.
train_jobs
||
!
res
.
data
.
train_jobs
.
length
)
{
this
.
clearAllData
();
return
;
}
const
data
=
res
.
data
.
train_jobs
[
0
];
// Delete the data that does not exist
const
tagRemoveFlag
=
this
.
removeNonexistentData
(
data
);
// Check whether new data exists and add it to the page
const
tagAddFlag
=
this
.
checkNewDataAndComplete
(
data
);
// Check whether new data exists and add it to the page
const
tagAddFlag
=
this
.
checkNewDataAndComplete
(
data
);
this
.
$nextTick
(()
=>
{
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
this
.
updateTagInPage
(
!
tagRemoveFlag
&&
!
tagAddFlag
);
this
.
resizeCallback
();
});
this
.
$nextTick
(()
=>
{
this
.
multiSelectedTagNames
=
this
.
$refs
.
multiselectGroupComponents
.
updateSelectedDic
();
this
.
updateTagInPage
(
!
tagRemoveFlag
&&
!
tagAddFlag
);
this
.
resizeCallback
();
});
const
tempTagList
=
[];
const
propsList
=
[];
// Initial chart data
data
.
tags
.
forEach
((
tagObj
)
=>
{
const
tempTagList
=
[];
const
propsList
=
[];
// Initial chart data
data
.
tags
.
forEach
((
tagObj
)
=>
{
// Check whether the tag with the same name exists
tempTagList
.
push
({
label
:
tagObj
,
checked
:
true
,
show
:
true
,
});
tempTagList
.
push
({
label
:
tagObj
,
checked
:
true
,
show
:
true
,
});
// Add the tag list.
propsList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
''
,
// Add the tag list.
propsList
.
push
({
tagName
:
tagObj
,
runNames
:
data
.
name
,
colors
:
''
,
});
});
this
.
tagPropsList
=
tempTagList
;
this
.
propsList
=
propsList
;
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
});
this
.
tagPropsList
=
tempTagList
;
this
.
propsList
=
propsList
;
},
this
.
requestErrorCallback
)
.
catch
((
e
)
=>
{
this
.
$message
.
error
(
this
.
$t
(
'
public.dataError
'
));
});
},
/**
...
...
@@ -1703,15 +1711,15 @@ export default {
if
(
index
%
2
===
0
)
{
if
(
log
)
{
serie
.
data
=
this
.
formateSmoothData
(
sampleObject
.
charData
.
oriData
[
index
/
2
].
logData
[
this
.
curBenchX
]
sampleObject
.
charData
.
oriData
[
index
/
2
].
logData
[
this
.
curBenchX
],
);
}
else
{
serie
.
data
=
this
.
formateSmoothData
(
sampleObject
.
charData
.
oriData
[
index
/
2
].
valueData
[
this
.
curBenchX
]
sampleObject
.
charData
.
oriData
[
index
/
2
].
valueData
[
this
.
curBenchX
],
);
}
}
...
...
@@ -1807,13 +1815,13 @@ export default {
tempOriData
.
forEach
((
originData
,
index
)
=>
{
if
(
log
)
{
tempOption
.
series
[
index
*
2
].
data
=
this
.
formateSmoothData
(
tempOriData
[
index
].
logData
[
this
.
curBenchX
]
tempOriData
[
index
].
logData
[
this
.
curBenchX
],
);
tempOption
.
series
[
index
*
2
+
1
].
data
=
tempOriData
[
index
].
logData
[
this
.
curBenchX
];
}
else
{
tempOption
.
series
[
index
*
2
].
data
=
this
.
formateSmoothData
(
tempOriData
[
index
].
valueData
[
this
.
curBenchX
]
tempOriData
[
index
].
valueData
[
this
.
curBenchX
],
);
tempOption
.
series
[
index
*
2
+
1
].
data
=
tempOriData
[
index
].
valueData
[
this
.
curBenchX
];
...
...
@@ -1900,7 +1908,7 @@ export default {
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleItem
.
tagName
]
)
{
delete
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleItem
.
tagName
sampleItem
.
tagName
];
}
this
.
currentTagName
=
sampleItem
.
tagName
;
...
...
@@ -2249,7 +2257,7 @@ export default {
this
.
originDataArr
.
forEach
((
sampleObject
)
=>
{
if
(
this
.
multiSelectedTagNames
[
sampleObject
.
tagName
])
{
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
sampleObject
.
tagName
]
=
chartPieces
;
sampleObject
.
pieceStr
=
pieceStr
;
...
...
@@ -2260,14 +2268,14 @@ export default {
});
}
else
{
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
this
.
currentTagName
this
.
currentTagName
]
=
chartPieces
;
this
.
currentSample
.
pieceStr
=
pieceStr
;
this
.
setVisualMap
(
this
.
currentSample
,
chartPieces
);
}
localStorage
.
setItem
(
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
)
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
),
);
this
.
thresholdDialogVisible
=
false
;
...
...
@@ -2332,11 +2340,11 @@ export default {
this
.
thresholdLocal
&&
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
]
&&
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
sampleObject
.
tagName
]
)
{
delete
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
sampleObject
.
tagName
sampleObject
.
tagName
];
sampleObject
.
pieceStr
=
''
;
const
tempCharOption
=
sampleObject
.
charData
.
charOption
;
...
...
@@ -2363,7 +2371,7 @@ export default {
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
this
.
currentTagName
]
)
{
delete
this
.
thresholdLocal
[
this
.
decodeTrainingJobId
][
this
.
currentTagName
this
.
currentTagName
];
this
.
currentSample
.
pieceStr
=
''
;
const
tempCharOption
=
this
.
currentSample
.
charData
.
charOption
;
...
...
@@ -2375,7 +2383,7 @@ export default {
tempCharOption
.
visualMap
=
null
;
tempCharOption
.
series
[
0
].
markLine
=
null
;
tempCharOption
.
series
[
0
].
lineStyle
[
'
color
'
'
color
'
]
=
this
.
currentSample
.
colors
;
}
this
.
currentSample
.
charObj
.
setOption
(
tempCharOption
,
false
);
...
...
@@ -2383,8 +2391,8 @@ export default {
}
this
.
clearCache
();
localStorage
.
setItem
(
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
)
'
thresholdCache
'
,
JSON
.
stringify
(
this
.
thresholdLocal
),
);
this
.
delThresholdVisible
=
false
;
},
...
...
@@ -2445,7 +2453,13 @@ export default {
background-color
:
#fff
;
display
:
flex
;
flex-direction
:
column
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
.cl-scalar-title
{
height
:
56px
;
line-height
:
56px
;
...
...
mindinsight/ui/src/views/train-manage/summary-manage.vue
浏览文件 @
362a05e4
...
...
@@ -211,6 +211,7 @@ export default {
dir
:
profilerDir
,
id
:
trainId
,
path
:
path
,
summaryPath
:
row
.
train_id
,
},
});
window
.
open
(
routeUrl
.
href
,
'
_blank
'
);
...
...
mindinsight/ui/src/views/train-manage/tensor.vue
浏览文件 @
362a05e4
...
...
@@ -18,7 +18,14 @@ limitations under the License.
<div
class=
"tensor-bk"
>
<!-- Title area -->
<div
class=
"cl-title cl-tensor-title"
>
<div
class=
"cl-title-left"
>
{{
$t
(
'
tensors.titleText
'
)
}}
</div>
<div
class=
"cl-title-left"
>
{{
$t
(
'
tensors.titleText
'
)
}}
<div
class=
"path-message"
>
<span>
{{
$t
(
'
symbols.leftbracket
'
)
}}
</span>
<span>
{{
$t
(
'
trainingDashboard.summaryDirPath
'
)
}}
</span>
<span>
{{
summaryPath
}}
</span>
<span>
{{
$t
(
'
symbols.rightbracket
'
)
}}
</span>
</div>
</div>
<div
class=
"cl-title-right"
>
<div
class=
"cl-close-btn"
@
click=
"jumpToTrainDashboard"
>
...
...
@@ -183,6 +190,7 @@ export default {
return
{
tagList
:
[],
// Tag list.
trainingJobId
:
this
.
$route
.
query
.
train_id
,
// ID of the current training job.
summaryPath
:
this
.
$route
.
query
.
summaryPath
,
originDataArr
:
[],
// List of all data.
initOver
:
false
,
// Indicates whether the initialization is complete.
curFullTagDic
:
{},
// Dictionary that contains all the current tags.
...
...
@@ -1092,6 +1100,13 @@ export default {
.cl-tensor-title
{
height
:
56px
;
line-height
:
56px
;
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
0px
4px
15px
4px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
.cl-close-btn
{
width
:
20px
;
height
:
20px
;
...
...
mindinsight/ui/src/views/train-manage/training-dashboard.vue
浏览文件 @
362a05e4
...
...
@@ -474,6 +474,7 @@ export default {
path
:
'
/train-manage/scalar
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
},
...
...
@@ -488,6 +489,7 @@ export default {
path
:
'
/train-manage/histogram
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
},
...
...
@@ -522,6 +524,7 @@ export default {
path
:
'
/train-manage/tensor
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
}
...
...
@@ -538,6 +541,7 @@ export default {
path
:
'
/train-manage/data-map
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
},
...
...
@@ -552,6 +556,7 @@ export default {
path
:
'
/train-manage/graph
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
},
...
...
@@ -1500,6 +1505,7 @@ export default {
path
:
'
/train-manage/image
'
,
query
:
{
train_id
:
this
.
trainingJobId
,
summaryPath
:
this
.
summaryPath
,
},
});
},
...
...
@@ -2085,8 +2091,9 @@ export default {
.path-message
{
display
:
inline-block
;
line-height
:
20px
;
padding
:
18px
16
px
;
padding
:
21px
4px
0
4
px
;
font-weight
:
bold
;
vertical-align
:
bottom
;
}
.loading-icon
{
margin-left
:
5px
;
...
...
@@ -2096,8 +2103,8 @@ export default {
color
:
#000000
;
font-weight
:
bold
;
font-size
:
20px
;
line-height
:
20
px
;
padding
:
18px
0
;
line-height
:
56
px
;
padding
:
0
;
}
}
.cl-dashboard-center
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录