Unverified Commit aa316742 authored by SparkSnail's avatar SparkSnail Committed by GitHub
Browse files

Merge pull request #233 from microsoft/master

merge master
parents 3fe117f0 24fa4619
$titleBgcolor: #b3b3b3; $titleBgcolor: #b3b3b3;
$iconPaddingVal: 14px;
.overview .overviewBoder{ .overview .overviewBoder{
height: 100%; height: 100%;
border-right: 2px solid white; border-right: 2px solid white;
...@@ -8,12 +10,15 @@ $titleBgcolor: #b3b3b3; ...@@ -8,12 +10,15 @@ $titleBgcolor: #b3b3b3;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
width: 100%; width: 100%;
height: 38px; height: 38px;
padding: 0 $iconPaddingVal;
background: $titleBgcolor; background: $titleBgcolor;
img{ img{
height: 22px; height: 22px;
margin-top: -8px; /* (38 - 22 ) / 2 */
padding-left: 14px; margin-top: 8px;
/* icon right */
padding: 0 $iconPaddingVal 0 0;
} }
span{ span{
...@@ -21,15 +26,11 @@ $titleBgcolor: #b3b3b3; ...@@ -21,15 +26,11 @@ $titleBgcolor: #b3b3b3;
font-weight: 600; font-weight: 600;
color: #333; color: #333;
line-height: 38px; line-height: 38px;
margin-left: 14px;
} }
i{ i{
font-size: 24px; font-size: 24px;
margin-left: 14px;
color: #545454; color: #545454;
position: relative;
top: 2px;
} }
} }
...@@ -46,11 +47,11 @@ $titleBgcolor: #b3b3b3; ...@@ -46,11 +47,11 @@ $titleBgcolor: #b3b3b3;
} }
.title{ .title{
width: 135px;
border-left: 2px solid #fff; border-left: 2px solid #fff;
} }
.minTitle{ .minTitle{
margin-right: $iconPaddingVal;
border-right: 2px solid #fff; border-right: 2px solid #fff;
} }
......
.parameter{ .parameter{
height: 100%; height: 100%;
} }
.para-filter{
width: 97%;
margin-top: 15px;
&-text{
line-height: 32px;
margin-right: 10px;
}
&-percent{
margin-right: 10px;
}
}
.meline{ .meline{
margin-top: 15px; margin-top: 15px;
...@@ -27,16 +40,14 @@ ...@@ -27,16 +40,14 @@
/* Intermediate Result Style */ /* Intermediate Result Style */
.intermediate{ .intermediate{
width: 90%; width: 95%;
text-align: right;
/* border: 1px solid blue; */ /* border: 1px solid blue; */
input{ input{
width: 64px; width: 64px;
height: 32px; height: 26px;
padding-left: 8px; padding-left: 8px;
} }
.strange{ .strange{
margin-top: 2px;
margin-right: 15px; margin-right: 15px;
} }
.hyphen{ .hyphen{
...@@ -46,4 +57,7 @@ ...@@ -46,4 +57,7 @@
.filter-x{ .filter-x{
margin-left: 15px; margin-left: 15px;
} }
.filter-toggle{
line-height: 32px;
}
} }
...@@ -4,37 +4,22 @@ ...@@ -4,37 +4,22 @@
.RUNNING, .STOPPING, .INITIALIZED, .NO_MORE_TRIAL, .TUNER_NO_MORE_TRIAL{ .RUNNING, .STOPPING, .INITIALIZED, .NO_MORE_TRIAL, .TUNER_NO_MORE_TRIAL{
/* specific status color */ /* specific status color */
color: #0071bc; color: #0071bc;
.ant-progress-bg { /* progress- duration & trial numbers span */
.ms-ProgressIndicator-progressBar {
background-color: #0071bc; background-color: #0071bc;
} }
.ant-progress-text{
color: #0071bc;
}
} }
.DONE, .STOPPED{ .DONE, .STOPPED{
color: #009245; color: #009245;
.ant-progress-bg { .ms-ProgressIndicator-progressBar {
background-color: #009245; background-color: #009245;
} }
.ant-progress-text{
color: #009245;
}
} }
.ERROR{ .ERROR{
color: #eb0716; color: #eb0716;
.ant-progress-bg { .ms-ProgressIndicator-progressBar {
background-color: #eb0716; background-color: #eb0716;
} }
.ant-progress-text{
color: #eb0716;
}
}
.ant-progress-bg{
border-radius: 0 !important;
}
.ant-progress-status-success .ant-progress-bg{
border-radius: 0 12px 12px 0 !important;
} }
} }
......
.progress {
.progress{ margin: 15px 17px;
margin: 15px 17px; .status {
.status{ color: #0573bc;
color: #0573bc; font-size: 20px;
font-size: 20px; font-weight: 600;
font-weight: 600; margin-top: 5px;
margin-top: 5px; .status-text{
display: inline-block;
line-height: 30px;
} }
}
.probar{ .probar {
width: 95%; width: 100%;
height: 34px; height: 34px;
margin-top: 15px; margin-top: 15px;
.showProgress{
width: 300px;
height: 30px;
}
.name {
width: 178px;
box-sizing: border-box;
line-height: 30px;
text-align: center;
color: #fff;
background-color: #999;
border: 2px solid #e6e6e6;
border-top-left-radius: 12px;
border-bottom-left-radius: 12px;
}
.ant-progress-inner{ .boundary {
border: 2px solid #e6e6e6; width: 100%;
border-radius: 0 12px 12px 0 !important; line-height: 24px;
} font-size: 12px;
.name{ color: #212121;
height: 34px; .right {
line-height: 30px; text-align: right;
text-align: center; }
color: #fff; }
background-color: #999;
border: 2px solid #e6e6e6;
border-top-left-radius: 12px;
border-bottom-left-radius: 12px;
}
.showProgress{ .description{
height: 30px; line-height: 34px;
} margin-left: 6px;
.description{
width: 100%;
line-height: 24px;
font-size: 12px;
color: #212121;
.right{
text-align: right;
}
}
} }
}
} }
/* basic experiment message style */ /* basic experiment message style */
.basic{ .basic {
line-height: 24px;
line-height: 24px; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; p {
p{ font-size: 14px;
font-size: 14px; color: #212121;
color: #212121; }
} div {
div{ font-size: 16px;
font-size: 16px; color: #0573bc;
color: #0573bc; }
}
} }
.colorOfbasic{ .colorOfbasic {
div{ div {
color: #0573bc; color: #0573bc;
} }
.time{ .time {
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
.mess{ .mess {
margin: 10px 0; margin: 10px 0;
} }
/*
.ant-tooltip-inner{ .inputBox {
min-width: 300px; height: 32px;
margin-top: 5px;
.concurrencyInput {
width: 40px;
padding-left: 8px;
outline: none;
border: 1px solid #ccc;
}
} }
*/
.inputBox{ .lineBasic {
height: 26px; padding-bottom: 14px;
margin-top: 5px; border-bottom: 1px solid #ccc;
.concurrencyInput{
width: 25%;
height: 26px;
padding-left: 8px;
outline: none;
border: 1px solid #ccc;
}
.editStyle{
height: 26px;
padding: 0 9px;
}
} }
.lineBasic{ /* office-fabric-ui progressIndicator*/
padding-bottom: 14px; .ms-ProgressIndicator-itemProgress {
border-bottom: 1px solid #ccc; padding: 0;
border: 2px solid #e6e6e6;
border-radius: 0 12px 12px 0 !important;
} }
...@@ -2,72 +2,35 @@ ...@@ -2,72 +2,35 @@
.allList{ .allList{
width: 96%; width: 96%;
margin: 0 auto; margin: 0 auto;
.right{ margin-top: 15px;
text-align: right;
.common{ &-compare{
border-radius: 0; margin-top: 15px;
}
.common:hover{
color: #0071BC;
border-radius: 0;
}
.filter{
width: 100px;
margin-left: 8px;
.ant-select-selection-selected-value{
font-size: 14px;
}
}
.search-input{
height: 32px;
outline: none;
border: 1px solid #d9d9d9;
border-left: none;
padding-left: 8px;
color: #333;
}
.search-input::placeholder{
color: DarkGray;
}
}
.entry{
width: 120px;
margin: 0 6px;
} }
.btns{
height: 32px; &-entry{
text-align: right; line-height: 32px;
.ant-input-search{
height: 32px;
}
} }
}
.titleColumn{ /* compare button style */
.ant-checkbox-group-item{ &-button-gap{
display: block; margin-right: 10px;
} }
}
.applyfooter{ &-search-input{
/* apply button style */ padding-left: 10px;
.apply{
text-align: right;
} }
} }
/* compare button style */
Button.mediateBtn{
margin: 0 2px 0 8px;
}
/* each row's Intermediate btn -> Modal*/ /* each row's Intermediate btn -> Modal*/
.selectKeys{ .selectKeys{
/* intermediate result is dict, select box for keys */ /* intermediate result is dict, select box for keys */
.select{ .select{
margin-right: 12%;
}
.ms-Dropdown{
width: 120px; width: 120px;
float: right;
margin-right: 10%;
} }
} }
$barHeight: 56px;
/* drowdown and select default bgcolor */
$drowBgColor: #f2f2f2;
/* drowdown and select hover bgcolor */
$drowHoverBgColor: #e2e2e2;
/* refresh button */
.fresh{
border: none;
color: #fff;
font-size: 16px;
padding: 0 8px;
}
.fresh:hover{
color: #fff;
background-color: #006cb5;
}
.dropdown{
/* make dropdown content box position in blue bar bottom */
padding-bottom: 14px;
.down-icon{
font-size: 20px !important;
padding-right: 6px;
}
}
.interval{
display: inline-block;
font-size: 16px;
color: #fff;
.ant-form{
display: inline-block;
}
form .ant-select{
width: 166px;
}
.ant-select-selection{
background-color: transparent;
border: none;
color: #fff;
outline: none;
font-size: 16px;
}
.ant-select-arrow{
color: #fff;
}
.fresh{
margin-right: 10px;
}
.ant-btn-ghost{
padding: 0 10px;
}
.ant-btn-ghost[disabled]{
background-color: #005b98;
color: #fff;
}
}
/* set select bgcolor */
.ant-select-dropdown-menu{
background-color: $drowBgColor;
}
.ant-select-dropdown-menu-item:hover{
background-color: $drowHoverBgColor;
}
.ant-select-dropdown-menu-item-active{
background-color: transparent;
}
/* set dropdown bgcolor */
.ant-dropdown{
.ant-dropdown-menu{
padding: 0;
background-color: $drowBgColor;
border-radius: 0;
.ant-dropdown-menu-item{
font-size: 16px;
}
.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu:hover{
background-color: $drowHoverBgColor;
}
}
}
.ant-dropdown-menu-sub{
padding: 0;
background-color: $drowBgColor;
border-radius: 0;
.ant-dropdown-menu-item:hover{
background-color: $drowHoverBgColor;
}
}
.menu-list{
position: relative;
top: 13px;
}
.ant-dropdown{
.menuModal{
position: relative;
top: 12px;
}
}
.ant-select-selection-selected-value{
font-size: 16px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.ant-dropdown-menu-submenu-title{
font-size: 16px;
}
.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover{
background-color: transparent;
}
.nav{
width: 95%;
height: $barHeight;
margin: 0 auto;
line-height: $barHeight;
/* mobile start*/
.left{
text-align: left;
/* more menu */
font-size: 18px;
color: #fff;
a, a:visited{
color: #fff;
text-decoration: none;
}
.more-mobile{
margin-right: 10%;
font-size: 22px;
position: relative;
top: 1px;
}
.more-mobile:hover{
cursor: pointer;
}
}
.center{
text-align: center;
img{
height: 38px;
}
}
.right{
text-align: right;
button{
margin-top: 12px;
}
}
/* mobile end */
/* tabelt mode */
.tabelt-left{
height: $barHeight;
.tabelt-img img{
position: relative;
top: -5px;
}
}
.tabelt-right{
text-align: right;
}
/* desktop mode */
.desktop-logo{
position: relative;
top: -3px;
}
.desktop-right{
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
text-align: right;
line-height: $barHeight;
font-size: 16px;
color: #fff;
a{
color: #fff;
text-decoration: none;
}
img{
width: 20px;
margin-right: 8px;
}
/* ? icon style */
.question{
width: 14px;
margin-right: 4px;
}
.feedback{
font-size: 16px;
margin: 0 20px;
}
.version{
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 16px;
}
.margin-icon{
margin-left: 8px;
}
}
}
/* public style in nav in threee mode*/
.more{
color: #fff;
font-size: 24px;
}
.more:hover{
cursor: pointer;
}
/* overview and detail tabs common style */
a.common-tabs{
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
font-size: 16px;
color: #b8c7ce;
text-decoration: none;
}
.common-tabs:visited, .high-light:hover{
color: #fff;
text-decoration: none;
}
.common-tabs:hover, .high-light{
color: #fff;
border-bottom: 1px solid #fff;
}
.left-right-margin{
margin-left: 20px;
margin-right: 20px;
}
.left-margin{
margin-left: 20px;
}
\ No newline at end of file
#succTable{
height: 404px;
overflow-y: scroll;
}
\ No newline at end of file
...@@ -24,129 +24,30 @@ ...@@ -24,129 +24,30 @@
} }
} }
} }
/* add the brother selector to increase the priority */
#succeTable .commonTableStyle, #tableList .commonTableStyle {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
tr{
text-align: center;
color:#212121;
font-size: 14px;
}
th{
padding: 2px;
background-color:white !important;
font-size: 14px;
color: #808080;
text-align: center;
}
.ant-table-expanded-row{
/* background-color: #f2f2f2 */
background-color: transparent;
}
tr:hover{
/* cancel antd table default hover style */
td{
background-color: transparent;
}
.ant-table-row-expand-icon{
background-color: transparent;
}
}
td{
padding: 0 15px;
line-height: 24px;
}
.ant-table-row-expand-icon-cell{
background: #ccc;
width: 50px;
.ant-table-row-expand-icon{
background: none;
border: none;
}
}
.ant-table-row-expand-icon-cell:hover{
background: #ccc;
}
.ant-table-selection-column{
width: 50px;
}
}
/* let openrow content left*/
.hyperpar{
text-align: left;
line-height: 18px;
font-size: 14px;
overflow: hidden;
margin-bottom: 10px;
}
/* the position of the pagination */
.ant-table-pagination.ant-pagination{
margin: 16px 0;
float: right;
margin-right: 30px;
}
.ant-modal-title{
font-size: 20px;
}
/*disable select all checkbox in detail page*/
.ant-table-selection{
display: none;
}
/* fix the border-bottom bug in firefox and edge */
.ant-table-thead > tr > th .ant-table-column-sorters::before{
padding-bottom: 25px;
border-bottom: 1px solid #e8e8e8;
}
.margin-mediate{ .margin-mediate{
margin: 0 10px; margin: 0 10px;
} }
#detail-button{ .detail-button{
margin: 2px 0; &-operation{
.common-style, .common-style:visited, .common-style:focus{ min-width: 44px;
height: 26px;
border: none; border: none;
border-radius: 0; margin-right: 10px;
background-color: #0078d4;
}
.common-style:hover{
background-color: #106ebe;
}
.common-style:active{
background-color: #005a9e;
outline: 0;
} }
.common-style:disabled{ i{
background-color: #f4f4f4; color: #fff;
}
.special, .special:visited, .special:focus, .special button{
height: 26px;
border: none;
border-radius: 0;
outline: 0;
background-color: #f4f4f4;
color: #333;
}
.special:hover{
background-color: #eaeaea;
}
.special:active{
background-color: #c8c8c8;
outline: 0;
}
.special:disabled, .special button:disabled{
background-color: #f4f4f4;
color: #d9d9d9;
} }
} }
/* office-fabric-ui */
.ms-DetailsRow{
height: 30px;
}
.detail-table{
padding: 5px 0 0 0;
}
.columns-height{
max-height: 335px;
overflow-y: scroll;
}
$bg: #b3b3b3;
#tabsty{ #tabsty{
.ant-tabs-nav-container{ .ms-Pivot{
height: 38px; .ms-Button{
} padding: 0;
.ant-tabs-tab{ /* reset fabric style */
border: none; margin-right: 0;
margin-right: 0; border-right: 2px solid #fff;
line-height: 38px; transition: 0.3s;
padding: 0;
} &:hover{
.ant-tabs-nav-scroll{ background-color: $bg;
background-color: #b3b3b3; }
} .ms-Button-flexContainer{
.ant-tabs-tab-active{ background-color: $bg;
.panelTitle{ }
background-color: #999; }
/*
span{ .ms-Pivot-link::before{
color: #fff; height: 0;
font-weight: normal; }
.is-selected{
background: #999;
&:hover{
background: #999;
} }
*/
} }
} }
.panelTitle{
margin-right: 14px; .ms-Pivot-icon{
border-right: 2px solid #e8e8e8; margin-left: 12px;
}
.ms-Pivot-text{
/* Default metric | Hyper-parameter | Duration | Intermediate result*/
margin: 0 12px;
font-size: 16px;
font-weight: 600;
} }
} }
.trial{ .trial{
/* graph, title total height */ /* graph, title total height */
width: 100%; width: 100%;
height: 478px; height: 500px;
/* cancle default panel title style*/ /* graph all title bg*/
.ant-tabs-bar{ .ms-FocusZone{
margin: 0; background-color: $bg;
} }
.graph{ .graph{
height: 432px; height: 432px;
...@@ -69,30 +81,54 @@ ...@@ -69,30 +81,54 @@
} }
} }
.allList{
margin-top: 15px;
}
.default-metric{ .default-metric{
width: 90%; width: 90%;
text-align: right; text-align: right;
margin-top: 15px; margin-top: 15px;
.position{
&-graph{
position: relative;
}
&-noData{
position: absolute;
left: 48%;
top: 30%;
color: #333; color: #333;
.bold{
font-weight: 600;
margin-right: 10px;
}
} }
} }
/* for # intermediate in intermediate graph*/ .detial-title{
.ms-Button{
i{
font-size: 22px;
}
}
}
/* for yAxis # intermediate position in intermediate graph*/
.intermediate-graph{ .intermediate-graph{
position: relative; position: relative;
.yAxis{ .yAxis{
color: #333; color: #333;
position: absolute; position: absolute;
left: 45%; left: 50%;
top: 86%; top: 88%;
transform: translate(-50%);
}
}
#tableList{
width: 96%;
margin: 0 auto;
}
.detail-table{
.ms-Button{
padding: 0;
height: 26px;
margin-top: -2px;
span{
padding: 0;
}
} }
} }
{ {
"compilerOptions": { "compilerOptions": {
"outDir": "build/dist", "target": "es5",
"module": "esnext",
"target": "esnext",
"lib": [ "lib": [
"esnext", "dom",
"dom" "dom.iterable",
"esnext"
], ],
"sourceMap": true,
"allowJs": true, "allowJs": true,
"jsx": "react", "skipLibCheck": true,
"moduleResolution": "node", "esModuleInterop": true,
"rootDir": "src", "downlevelIteration": true,
"noImplicitAny": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"noImplicitReturns": true, "module": "esnext",
"noImplicitThis": true, "moduleResolution": "node",
"noImplicitAny": true, "resolveJsonModule": true,
"strictNullChecks": true, "isolatedModules": false,
"suppressImplicitAnyIndexErrors": true, "noEmit": true,
"noUnusedLocals": true, "jsx": "preserve"
"baseUrl": "."
}, },
"include": [ "include": [
"src/**/*" "src"
] ]
} }
{
"extends": "./tsconfig.json"
}
\ No newline at end of file
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs"
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -29,6 +29,12 @@ def gen_new_config(config_file, training_service='local'): ...@@ -29,6 +29,12 @@ def gen_new_config(config_file, training_service='local'):
config['trial'].pop('command') config['trial'].pop('command')
if 'gpuNum' in config['trial']: if 'gpuNum' in config['trial']:
config['trial'].pop('gpuNum') config['trial'].pop('gpuNum')
if training_service == 'frameworkcontroller':
it_config[training_service]['trial']['taskRoles'][0]['command'] = config['trial']['command']
config['trial'].pop('command')
if 'gpuNum' in config['trial']:
config['trial'].pop('gpuNum')
deep_update(config, it_config['all']) deep_update(config, it_config['all'])
deep_update(config, it_config[training_service]) deep_update(config, it_config[training_service])
...@@ -106,7 +112,7 @@ if __name__ == '__main__': ...@@ -106,7 +112,7 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--config", type=str, default=None) parser.add_argument("--config", type=str, default=None)
parser.add_argument("--exclude", type=str, default=None) parser.add_argument("--exclude", type=str, default=None)
parser.add_argument("--ts", type=str, choices=['local', 'remote', 'pai', 'kubeflow'], default='local') parser.add_argument("--ts", type=str, choices=['local', 'remote', 'pai', 'kubeflow', 'frameworkcontroller'], default='local')
parser.add_argument("--local_gpu", action='store_true') parser.add_argument("--local_gpu", action='store_true')
parser.add_argument("--preinstall", action='store_true') parser.add_argument("--preinstall", action='store_true')
args = parser.parse_args() args = parser.parse_args()
......
...@@ -13,7 +13,7 @@ assessor: ...@@ -13,7 +13,7 @@ assessor:
optimize_mode: maximize optimize_mode: maximize
trial: trial:
codeDir: ../../../examples/trials/cifar10_pytorch codeDir: ../../../examples/trials/cifar10_pytorch
command: python3 main.py --epochs 2 command: python3 main.py --epochs 1 --batches 1
gpuNum: 1 gpuNum: 1
useAnnotation: false useAnnotation: false
......
...@@ -42,6 +42,21 @@ def update_training_service_config(args): ...@@ -42,6 +42,21 @@ def update_training_service_config(args):
config[args.ts]['kubeflowConfig']['azureStorage']['azureShare'] = args.azs_share config[args.ts]['kubeflowConfig']['azureStorage']['azureShare'] = args.azs_share
if args.nni_docker_image is not None: if args.nni_docker_image is not None:
config[args.ts]['trial']['worker']['image'] = args.nni_docker_image config[args.ts]['trial']['worker']['image'] = args.nni_docker_image
elif args.ts == 'frameworkcontroller':
if args.nfs_server is not None:
config[args.ts]['frameworkcontrollerConfig']['nfs']['server'] = args.nfs_server
if args.nfs_path is not None:
config[args.ts]['frameworkcontrollerConfig']['nfs']['path'] = args.nfs_path
if args.keyvault_vaultname is not None:
config[args.ts]['frameworkcontrollerConfig']['keyVault']['vaultName'] = args.keyvault_vaultname
if args.keyvault_name is not None:
config[args.ts]['frameworkcontrollerConfig']['keyVault']['name'] = args.keyvault_name
if args.azs_account is not None:
config[args.ts]['frameworkcontrollerConfig']['azureStorage']['accountName'] = args.azs_account
if args.azs_share is not None:
config[args.ts]['frameworkcontrollerConfig']['azureStorage']['azureShare'] = args.azs_share
if args.nni_docker_image is not None:
config[args.ts]['trial']['taskRoles'][0]['image'] = args.nni_docker_image
elif args.ts == 'remote': elif args.ts == 'remote':
if args.remote_user is not None: if args.remote_user is not None:
config[args.ts]['machineList'][0]['username'] = args.remote_user config[args.ts]['machineList'][0]['username'] = args.remote_user
...@@ -69,7 +84,7 @@ def convert_command(): ...@@ -69,7 +84,7 @@ def convert_command():
if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--ts", type=str, choices=['pai', 'kubeflow', 'remote', 'local'], default='pai') parser.add_argument("--ts", type=str, choices=['pai', 'kubeflow', 'remote', 'local', 'frameworkcontroller'], default='pai')
parser.add_argument("--nni_docker_image", type=str) parser.add_argument("--nni_docker_image", type=str)
parser.add_argument("--nni_manager_ip", type=str) parser.add_argument("--nni_manager_ip", type=str)
# args for PAI # args for PAI
...@@ -79,7 +94,7 @@ if __name__ == '__main__': ...@@ -79,7 +94,7 @@ if __name__ == '__main__':
parser.add_argument("--data_dir", type=str) parser.add_argument("--data_dir", type=str)
parser.add_argument("--output_dir", type=str) parser.add_argument("--output_dir", type=str)
parser.add_argument("--vc", type=str) parser.add_argument("--vc", type=str)
# args for kubeflow # args for kubeflow and frameworkController
parser.add_argument("--nfs_server", type=str) parser.add_argument("--nfs_server", type=str)
parser.add_argument("--nfs_path", type=str) parser.add_argument("--nfs_path", type=str)
parser.add_argument("--keyvault_vaultname", type=str) parser.add_argument("--keyvault_vaultname", type=str)
......
...@@ -56,9 +56,9 @@ def get_metric_results(metrics): ...@@ -56,9 +56,9 @@ def get_metric_results(metrics):
final_result = [] final_result = []
for metric in metrics: for metric in metrics:
if metric['type'] == 'PERIODICAL': if metric['type'] == 'PERIODICAL':
intermediate_result.append(metric['data']) intermediate_result.append(json.loads(metric['data']))
elif metric['type'] == 'FINAL': elif metric['type'] == 'FINAL':
final_result.append(metric['data']) final_result.append(json.loads(metric['data']))
print(intermediate_result, final_result) print(intermediate_result, final_result)
return [round(float(x),6) for x in intermediate_result], [round(float(x), 6) for x in final_result] return [round(float(x),6) for x in intermediate_result], [round(float(x), 6) for x in final_result]
......
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
jobs:
- job: 'integration_test_frameworkController'
timeoutInMinutes: 0
steps:
- script: python3 -m pip install --upgrade pip setuptools --user
displayName: 'Install python tools'
- script: |
cd deployment/pypi
echo 'building prerelease package...'
make build
ls $(Build.SourcesDirectory)/deployment/pypi/dist/
condition: eq( variables['build_docker_img'], 'true' )
displayName: 'build nni bdsit_wheel'
- script: |
source install.sh
displayName: 'Install nni toolkit via source code'
- script: |
sudo apt-get install swig -y
PATH=$HOME/.local/bin:$PATH nnictl package install --name=SMAC
PATH=$HOME/.local/bin:$PATH nnictl package install --name=BOHB
displayName: 'Install dependencies for integration tests in frameworkcontroller mode'
- script: |
if [ $(build_docker_img) = 'true' ]
then
cd deployment/pypi
docker login -u $(docker_hub_user) -p $(docker_hub_pwd)
echo 'updating docker file for installing nni from local...'
# update Dockerfile to install NNI in docker image from whl file built in last step
sed -ie 's/RUN python3 -m pip --no-cache-dir install nni/COPY .\/dist\/* .\nRUN python3 -m pip install nni-*.whl/' ../docker/Dockerfile
cat ../docker/Dockerfile
export IMG_TAG=`date -u +%y%m%d%H%M`
docker build -f ../docker/Dockerfile -t $(test_docker_img_name):$IMG_TAG .
docker push $(test_docker_img_name):$IMG_TAG
export TEST_IMG=$(test_docker_img_name):$IMG_TAG
cd ../../
else
export TEST_IMG=$(existing_docker_img)
fi
echo "TEST_IMG:$TEST_IMG"
cd test
python3 generate_ts_config.py --ts frameworkcontroller --keyvault_vaultname $(keyVault_vaultName) --keyvault_name $(keyVault_name) \
--azs_account $(azureStorage_accountName) --azs_share $(azureStorage_azureShare) --nni_docker_image $TEST_IMG --nni_manager_ip $(nni_manager_ip)
cat training_service.yml
PATH=$HOME/.local/bin:$PATH python3 config_test.py --ts frameworkcontroller --exclude multi_phase
displayName: 'integration test'
jobs: jobs:
- job: 'Test' - job: 'integration_test_local_windows'
timeoutInMinutes: 0
steps: steps:
- script: | - script: |
...@@ -8,8 +9,7 @@ jobs: ...@@ -8,8 +9,7 @@ jobs:
- script: | - script: |
python -m pip install scikit-learn==0.20.0 --user python -m pip install scikit-learn==0.20.0 --user
python -m pip install keras==2.1.6 --user python -m pip install keras==2.1.6 --user
python -m pip install https://download.pytorch.org/whl/cu90/torch-0.4.1-cp36-cp36m-win_amd64.whl --user python -m pip install torch===1.2.0 torchvision===0.4.1 -f https://download.pytorch.org/whl/torch_stable.html --user
python -m pip install torchvision --user
python -m pip install tensorflow-gpu==1.11.0 --user python -m pip install tensorflow-gpu==1.11.0 --user
displayName: 'Install dependencies for integration tests' displayName: 'Install dependencies for integration tests'
- script: | - script: |
......
jobs: jobs:
- job: 'integration_test_local_ubuntu' - job: 'integration_test_local_ubuntu'
timeoutInMinutes: 0
steps: steps:
- script: python3 -m pip install --upgrade pip setuptools --user - script: python3 -m pip install --upgrade pip setuptools --user
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment