|
|
@@ -1,6 +1,5 @@ |
|
|
|
{{template "base/head" .}} |
|
|
|
<style> |
|
|
|
|
|
|
|
.unite{ |
|
|
|
font-family: SourceHanSansSC-medium !important; |
|
|
|
color: rgba(16, 16, 16, 100) !important; |
|
|
@@ -16,44 +15,22 @@ |
|
|
|
margin-bottom: 2rem !important; |
|
|
|
|
|
|
|
} |
|
|
|
.width{ |
|
|
|
width:100% !important; |
|
|
|
} |
|
|
|
.width80{ |
|
|
|
width: 80.7% !important; |
|
|
|
} |
|
|
|
.width85{ |
|
|
|
width: 85% !important; |
|
|
|
margin-left: 4.5rem !important; |
|
|
|
.width84{ |
|
|
|
width: 84% !important; |
|
|
|
margin-left: 5.1rem !important; |
|
|
|
} |
|
|
|
.width35{ |
|
|
|
width: 35.5% !important; |
|
|
|
} |
|
|
|
|
|
|
|
.add{font-size: 18px; |
|
|
|
padding: 0.5rem; |
|
|
|
border: 1px solid rgba(187, 187, 187, 100); |
|
|
|
border-radius: 0px 5px 5px 0px; |
|
|
|
line-height: 21px; |
|
|
|
text-align: center; |
|
|
|
color: #C2C7CC; |
|
|
|
} |
|
|
|
.min{ |
|
|
|
font-size: 18px; |
|
|
|
padding: 0.5rem; |
|
|
|
border: 1px solid rgba(187, 187, 187, 100); |
|
|
|
border-radius: 5px 0px 0px 5px; |
|
|
|
line-height: 21px; |
|
|
|
text-align: center; |
|
|
|
color: #C2C7CC; |
|
|
|
} |
|
|
|
|
|
|
|
.nowrap { |
|
|
|
white-space: nowrap !important; |
|
|
|
} |
|
|
|
</style> |
|
|
|
<!-- <div class="ui page dimmer"> |
|
|
|
<div class="ui text loader">{{.i18n.Tr "loading"}}</div> |
|
|
|
</div> --> |
|
|
|
<div id="mask"> |
|
|
|
<div id="loadingPage"> |
|
|
|
<div class="rect1"></div> |
|
|
@@ -83,10 +60,11 @@ |
|
|
|
<div class="required unite min_title inline field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> |
|
|
|
<input style="width: 60%;" name="job_name" id="trainjob_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.job_name}}" tabindex="3" autofocus required maxlength="254"> |
|
|
|
<span class="tooltips" style="display: block;">请输入只包含大小写字母、数字、_和-,最长36个字符。</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="unite min_title inline field"> |
|
|
|
<label style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}} </label> |
|
|
|
<label style="font-weight: normal;" for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}}</label> |
|
|
|
<textarea style="width: 80%;" id="description" name="description" rows="3" maxlength="254" placeholder={{.i18n.Tr "repo.modelarts.train_job.new_place"}} onchange="this.value=this.value.substring(0, 255)" onkeydown="this.value=this.value.substring(0, 255)" onkeyup="this.value=this.value.substring(0, 255)"></textarea> |
|
|
|
</div> |
|
|
|
<div class="ui divider"></div> |
|
|
@@ -95,7 +73,7 @@ |
|
|
|
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.parameter_setting"}}:</h4> |
|
|
|
<div class="required unite inline min_title fields" style="width: 91.8%;"> |
|
|
|
<div class="required eight wide field"> |
|
|
|
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.infer_job.select_model"}} </label> |
|
|
|
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.infer_job.select_model"}}</label> |
|
|
|
<div class="ui fluid search selection dropdown loading" id="select_model"> |
|
|
|
{{if $.ckpt_name}} |
|
|
|
<input type="hidden" name="model_name" value="{{$.model_name}}" required> |
|
|
@@ -109,7 +87,6 @@ |
|
|
|
<div class="menu" id="model_name"> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="three wide field"> |
|
|
|
<div class="ui fluid search selection dropdown" id="select_model_version"> |
|
|
@@ -148,7 +125,7 @@ |
|
|
|
<!-- AI引擎 --> |
|
|
|
<div class="required unite inline min_title fields" style="width: 90%;"> |
|
|
|
<div class="required eight wide field"> |
|
|
|
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.train_job.AI_driver"}} </label> |
|
|
|
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.modelarts.train_job.AI_driver"}}</label> |
|
|
|
<select class="ui fluid selection search dropdown" id="trainjob_engines"> |
|
|
|
{{range .engines}} |
|
|
|
<option value="{{.Value}}">{{.Value}}</option> |
|
|
@@ -165,7 +142,7 @@ |
|
|
|
</div> |
|
|
|
<!-- 代码分支 --> |
|
|
|
<div class="required unite min_title inline field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}} </label> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}}</label> |
|
|
|
<select class="ui dropdown width35" id="code_version" name="branch_name"> |
|
|
|
{{if .branch_name}} |
|
|
|
<option name="branch_name" value="{{.branch_name}}">{{.branch_name}}</option> |
|
|
@@ -186,8 +163,8 @@ |
|
|
|
</div> |
|
|
|
<!-- 数据集 --> |
|
|
|
<div class="required unite min_title inline field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.dataset"}} </label> |
|
|
|
<select class="ui dropdown width35" id="trainjob_datasets" name="attachment" placeholder="选择数据集"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.dataset"}}</label> |
|
|
|
<select class="ui dropdown width35" id="trainjob_datasets" name="attachment" placeholder="选择数据集" required> |
|
|
|
{{if $.uuid}} |
|
|
|
<option name="attachment" value="{{$.uuid}}">{{$.datasetName}}</option> |
|
|
|
{{end}} |
|
|
@@ -199,11 +176,11 @@ |
|
|
|
<span> |
|
|
|
<i class="question circle icon" data-content="数据集位置存储在环境变量data_url中。" data-position="top center" data-variation="inverted mini"></i> |
|
|
|
</span> |
|
|
|
<span class="tooltips" style="display: block;">数据集位置存储在环境变量data_url中,训练输出路径存储在环境变量train_url中。</span> |
|
|
|
<span class="tooltips" style="display: block;">数据集位置存储在环境变量data_url中,推理输出路径存储在环境变量result_url中。</span> |
|
|
|
</div> |
|
|
|
<!-- 启动文件 --> |
|
|
|
<div class="inline unite min_title field required"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> |
|
|
|
{{if .bootFile}} |
|
|
|
<input style="width: 35.5%;" name="boot_file" id="trainjob_boot_file" value="{{.bootFile}}" tabindex="3" autofocus required maxlength="254" > |
|
|
|
{{else}} |
|
|
@@ -217,13 +194,13 @@ |
|
|
|
|
|
|
|
<!-- 运行参数 --> |
|
|
|
<div class="inline unite min_title field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.run_parameter"}}</label> |
|
|
|
<span id="add_run_para" style="margin-left: 0.5rem;cursor:pointer;color: rgba(3, 102, 214, 100);font-size: 14px;line-height: 26px;font-family: SourceHanSansSC-medium;"><i class="plus square outline icon"></i>{{.i18n.Tr "repo.modelarts.train_job.add_run_parameter"}}</span> |
|
|
|
<input id="store_run_para" type="hidden" name="run_para_list"> |
|
|
|
<div class="dynamic field" style="margin-top: 1rem;"> |
|
|
|
{{if ne 0 (len .params)}} |
|
|
|
{{range $k ,$v := .params}} |
|
|
|
<div class="two fields width85" id="para{{$k}}"> |
|
|
|
<div class="two fields width84" id="para{{$k}}"> |
|
|
|
<div class="field"> |
|
|
|
<input type="text" name="shipping_first-name" value={{$v.Label}} required> |
|
|
|
</div> |
|
|
@@ -250,7 +227,7 @@ |
|
|
|
</div> |
|
|
|
<!-- 规格 --> |
|
|
|
<div class="required unite min_title inline field" id="flaver_name"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}} </label> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.standard"}}</label> |
|
|
|
<select class="ui dropdown width80" id="trainjob-flavor" name="flavor"> |
|
|
|
{{range .flavor_infos}} |
|
|
|
<option name="flavor" value="{{.Code}}">{{.Value}}</option> |
|
|
@@ -280,7 +257,6 @@ |
|
|
|
{{template "base/footer" .}} |
|
|
|
|
|
|
|
<script> |
|
|
|
console.log({{.attachments}}) |
|
|
|
const RepoLink = {{.RepoLink}} |
|
|
|
const url_href = window.location.pathname.split('create')[0] |
|
|
|
let nameMap,nameList |
|
|
@@ -344,37 +320,6 @@ |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
function check(){ |
|
|
|
let jobid = document.getElementById("JobId").value |
|
|
|
let versionname = document.getElementById("VersionName").value |
|
|
|
let name= document.getElementById("name").value |
|
|
|
let version= document.getElementById("version").value |
|
|
|
if(jobid==""){ |
|
|
|
$(".required.ten.wide.field").addClass("error") |
|
|
|
return false |
|
|
|
}else{ |
|
|
|
$(".required.ten.wide.field").removeClass("error") |
|
|
|
} |
|
|
|
if(versionname==""){ |
|
|
|
$(".required.six.widde.field").addClass("error") |
|
|
|
return false |
|
|
|
}else{ |
|
|
|
$(".required.six.widde.field").removeClass("error") |
|
|
|
} |
|
|
|
if(name==""){ |
|
|
|
$("#modelname").addClass("error") |
|
|
|
return false |
|
|
|
}else{ |
|
|
|
$("#modelname").removeClass("error") |
|
|
|
} |
|
|
|
if(versionname==""){ |
|
|
|
$("#verionname").addClass("error") |
|
|
|
return false |
|
|
|
}else{ |
|
|
|
$("#verionname").removeClass("error") |
|
|
|
} |
|
|
|
return true |
|
|
|
} |
|
|
|
|
|
|
|
$('.question.circle.icon').hover(function(){ |
|
|
|
$(this).popup('show') |
|
|
@@ -382,7 +327,7 @@ |
|
|
|
|
|
|
|
// 参数增加、删除、修改、保存 |
|
|
|
function Add_parameter(i){ |
|
|
|
value = '<div class="two fields width85" id= "para'+ i +'">' + |
|
|
|
value = '<div class="two fields width84" id= "para'+ i +'">' + |
|
|
|
'<div class="field">' + |
|
|
|
'<input type="text" name="shipping_first-name" required placeholder={{.i18n.Tr "repo.modelarts.train_job.parameter_name"}}> ' + |
|
|
|
'</div> ' + |
|
|
@@ -430,18 +375,16 @@ |
|
|
|
$("input#ai_flaver_name").val(name2) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$('.ui.form') |
|
|
|
function validate(){ |
|
|
|
$('.ui.form') |
|
|
|
.form({ |
|
|
|
on: 'blur', |
|
|
|
inline:true, |
|
|
|
fields: { |
|
|
|
boot_file: { |
|
|
|
identifier : 'boot_file', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'regExp[/.+\.py$/g]', |
|
|
|
prompt : '启动文件必须为.py结尾' |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
@@ -450,7 +393,6 @@ |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', |
|
|
|
prompt : '只包含大小写字母、数字、_和-,最长36个字符。' |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
@@ -459,71 +401,36 @@ |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'empty', |
|
|
|
prompt : '选择一个数据集' |
|
|
|
} |
|
|
|
] |
|
|
|
|
|
|
|
}, |
|
|
|
work_server_number: { |
|
|
|
identifier : 'work_server_number', |
|
|
|
model_name:{ |
|
|
|
identifier : 'model_name', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type : 'integer[1..25]', |
|
|
|
prompt : '计算节点需要在1-25之间,请您键入正确的值' |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
}, |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function validate(){ |
|
|
|
$('.ui.form') |
|
|
|
.form({ |
|
|
|
on: 'blur', |
|
|
|
inline:true, |
|
|
|
fields: { |
|
|
|
boot_file: { |
|
|
|
identifier : 'boot_file', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'regExp[/.+\.py$/g]', |
|
|
|
prompt : '启动文件必须为.py结尾' |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
|
job_name:{ |
|
|
|
identifier : 'job_name', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'regExp[/^[a-zA-Z0-9-_]{1,36}$/]', |
|
|
|
prompt : '只包含大小写字母、数字、_和-,最长36个字符。' |
|
|
|
type: 'empty', |
|
|
|
} |
|
|
|
] |
|
|
|
}, |
|
|
|
attachment:{ |
|
|
|
identifier : 'attachment', |
|
|
|
train_url:{ |
|
|
|
identifier : 'train_url', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type: 'empty', |
|
|
|
prompt : '选择一个数据集' |
|
|
|
} |
|
|
|
] |
|
|
|
|
|
|
|
}, |
|
|
|
work_server_number: { |
|
|
|
identifier : 'work_server_number', |
|
|
|
ckpt_name:{ |
|
|
|
identifier : 'ckpt_name', |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
type : 'integer[1..25]', |
|
|
|
prompt : '计算节点需要在1-25之间,请您键入正确的值' |
|
|
|
type: 'empty', |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
}, |
|
|
|
onSuccess: function(){ |
|
|
|
// $('.ui.page.dimmer').dimmer('show') |
|
|
|
document.getElementById("mask").style.display = "block" |
|
|
|
}, |
|
|
|
onFailure: function(e){ |
|
|
|