|
|
|
@@ -89,53 +89,45 @@ |
|
|
|
</div> |
|
|
|
<div class="ui divider"></div> |
|
|
|
|
|
|
|
<!-- 模型相关配置 --> |
|
|
|
<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: 90%;"> |
|
|
|
<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> |
|
|
|
<!-- <select class="ui fluid selection dropdown" id="select_model"> |
|
|
|
<option value="">选择当前项目下的模型</option> |
|
|
|
<option value="0">Cat</option> |
|
|
|
<option value="1">Dog</option> |
|
|
|
<option value="2">Bird</option> |
|
|
|
<option value="3">Rabbit</option> |
|
|
|
<option value="4">Squirrel</option> |
|
|
|
<option value="5">Horse</option> |
|
|
|
<option value="6">Turtle</option> |
|
|
|
<option value="7">Parrot</option> |
|
|
|
</select> --> |
|
|
|
<div class="ui search selection dropdown" id="select_model"> |
|
|
|
<div class="text">Search</div> |
|
|
|
<div class="ui fluid search selection dropdown loading" id="select_model"> |
|
|
|
<input type="hidden" name="ModelName" required> |
|
|
|
<div class="default text">选择项目下的模型</div> |
|
|
|
<i class="dropdown icon"></i> |
|
|
|
<div class="menu" id="model_name"> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="three wide field"> |
|
|
|
<select class="ui fluid selection dropdown"> |
|
|
|
<option value="">选择版本</option> |
|
|
|
<option value="0">Cat</option> |
|
|
|
<option value="1">Dog</option> |
|
|
|
<option value="2">Bird</option> |
|
|
|
<option value="3">Rabbit</option> |
|
|
|
<option value="4">Squirrel</option> |
|
|
|
<option value="5">Horse</option> |
|
|
|
<option value="6">Turtle</option> |
|
|
|
<option value="7">Parrot</option> |
|
|
|
</select> |
|
|
|
<div class="ui fluid search selection dropdown" id="select_model_version"> |
|
|
|
<input type="hidden" name="ModelNameVersion" required> |
|
|
|
<div class="default text">选择版本</div> |
|
|
|
<i class="dropdown icon"></i> |
|
|
|
<div class="menu" id="model_name_version"> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="five wide field"> |
|
|
|
<select class="ui fluid selection dropdown"> |
|
|
|
<option value="">选择模型.ckpt文件</option> |
|
|
|
<option value="0">Cat</option> |
|
|
|
<option value="1">Dog</option> |
|
|
|
<option value="2">Bird</option> |
|
|
|
<option value="3">Rabbit</option> |
|
|
|
<option value="4">Squirrel</option> |
|
|
|
<option value="5">Horse</option> |
|
|
|
<option value="6">Turtle</option> |
|
|
|
<option value="7">Parrot</option> |
|
|
|
</select> |
|
|
|
<div class="ui fluid search selection dropdown" id="select_model_checkpoint"> |
|
|
|
<input type="hidden" name="ModelCkpt" required> |
|
|
|
<div class="default text">选择模型.ckpt文件</div> |
|
|
|
<i class="dropdown icon"></i> |
|
|
|
<div class="menu" id="model_checkpoint"> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<span > |
|
|
|
<i class="question circle icon" data-content="模型文件位置存储在环境变量ckpt_path中。" data-position="top center" data-variation="inverted mini"></i> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
<!-- 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> |
|
|
|
@@ -153,7 +145,7 @@ |
|
|
|
</select> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 代码分支 --> |
|
|
|
<div class="required unite min_title inline field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.code_version"}} </label> |
|
|
|
<select class="ui dropdown width35" id="code_version" name="branch_name"> |
|
|
|
@@ -174,6 +166,7 @@ |
|
|
|
{{end}} |
|
|
|
</select> |
|
|
|
</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="选择数据集"> |
|
|
|
@@ -185,9 +178,12 @@ |
|
|
|
<option name="attachment" value="{{.UUID}}">{{.Attachment.Name}}</option> |
|
|
|
{{end}} |
|
|
|
</select> |
|
|
|
<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> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 启动文件 --> |
|
|
|
<div class="inline unite min_title field required"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.start_file"}}</label> |
|
|
|
{{if .bootFile}} |
|
|
|
@@ -195,13 +191,13 @@ |
|
|
|
{{else}} |
|
|
|
<input style="width: 35.5%;" name="boot_file" id="trainjob_boot_file" value="" tabindex="3" autofocus required maxlength="254" > |
|
|
|
{{end}} |
|
|
|
<span> |
|
|
|
<i class="question circle icon link" data-content={{.i18n.Tr "repo.modelarts.train_job.boot_file_helper"}} data-position="right center" data-variation="mini"></i> |
|
|
|
<span > |
|
|
|
<i class="question circle icon" data-content={{.i18n.Tr "repo.modelarts.train_job.boot_file_helper"}} data-position="top center" data-variation="inverted mini"></i> |
|
|
|
</span> |
|
|
|
<a href="https://git.openi.org.cn/OpenIOSSG/MINIST_Example" target="_blank">查看样例</a> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 运行参数 --> |
|
|
|
<div class="inline unite min_title field"> |
|
|
|
<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> |
|
|
|
@@ -225,17 +221,16 @@ |
|
|
|
{{end}} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="required field " style="display: none;"> |
|
|
|
|
|
|
|
<!-- <div class="required field " style="display: none;"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.resource_pool"}}</label> |
|
|
|
<select class="ui dropdown" id="trainjob_resource_pool" style='width:385px' name="pool_id"> |
|
|
|
{{range .resource_pools}} |
|
|
|
<option value="{{.ID}}">{{.Value}}</option> |
|
|
|
{{end}} |
|
|
|
</select> |
|
|
|
</div> |
|
|
|
|
|
|
|
</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> |
|
|
|
<select class="ui dropdown width80" id="trainjob-flavor" name="flavor"> |
|
|
|
@@ -244,6 +239,7 @@ |
|
|
|
{{end}} |
|
|
|
</select> |
|
|
|
</div> |
|
|
|
<!-- 计算节点 --> |
|
|
|
<div class="inline required unite min_title field"> |
|
|
|
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.amount_of_compute_node"}}</label> |
|
|
|
|
|
|
|
@@ -251,16 +247,14 @@ |
|
|
|
<input style="border-radius: 0;text-align: center;" name="work_server_number" id="trainjob_work_server_num" tabindex="3" autofocus required maxlength="254" value="1" readonly> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 表单操作 --> |
|
|
|
<div class="inline unite min_title field"> |
|
|
|
<button class="ui create_train_job green button"> |
|
|
|
{{.i18n.Tr "repo.cloudbrain.new"}} |
|
|
|
</button> |
|
|
|
<a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<!-- 模态框 --> |
|
|
|
|
|
|
|
</form> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@@ -268,38 +262,94 @@ |
|
|
|
{{template "base/footer" .}} |
|
|
|
|
|
|
|
<script> |
|
|
|
console.log({{.RepoLink}}) |
|
|
|
const RepoLink = {{.RepoLink}} |
|
|
|
const url_href = window.location.pathname.split('create')[0] |
|
|
|
let nameMap,nameList |
|
|
|
$(".ui.button").attr('href',url_href) |
|
|
|
const changeOwner = function () { |
|
|
|
console.log($('#select_model')) |
|
|
|
|
|
|
|
$('#select_model') |
|
|
|
.dropdown({ |
|
|
|
filterRemoteData: true, |
|
|
|
apiSettings: { |
|
|
|
|
|
|
|
url: `${RepoLink}/modelmanage/query_model_for_predict`, |
|
|
|
onResponse(response) { |
|
|
|
console.log(response) |
|
|
|
} |
|
|
|
}, |
|
|
|
// 获取模型列表和模型名称对应的模型版本 |
|
|
|
$.get(`${RepoLink}/modelmanage/query_model_for_predict`, (data) => { |
|
|
|
nameMap = data.nameMap |
|
|
|
nameList = data.nameList |
|
|
|
let html = '' |
|
|
|
nameList.forEach(element => { |
|
|
|
html += `<div class="item" data-value=${element}>${element}</div>` |
|
|
|
}); |
|
|
|
}; |
|
|
|
changeOwner(); |
|
|
|
// $(function(){ |
|
|
|
// $('#select_model').dropdown({ |
|
|
|
// onChange:function(value){ |
|
|
|
// $(".ui.dropdown.selection.search.width70").addClass("loading") |
|
|
|
// $('#choice_version').dropdown('clear') |
|
|
|
// $("#job-version").empty() |
|
|
|
// loadTrainVersion(value) |
|
|
|
// }, |
|
|
|
// apiSettings: { |
|
|
|
|
|
|
|
// url: `${RepoLink}/modelmanage/query_model_for_predict` |
|
|
|
// }, |
|
|
|
// }) |
|
|
|
// }) |
|
|
|
$('#model_name').append(html) |
|
|
|
$('#select_model').removeClass("loading") |
|
|
|
|
|
|
|
}) |
|
|
|
// 根据选中的模型名称获取相应的模型版本 |
|
|
|
$(function(){ |
|
|
|
$('#select_model').dropdown({ |
|
|
|
onChange: function(value, text, $selectedItem) { |
|
|
|
$("#select_model_version").addClass("loading") |
|
|
|
let html = '' |
|
|
|
nameMap[value].forEach(element => { |
|
|
|
let {TrainTaskInfo} = element |
|
|
|
TrainTaskInfo = JSON.parse(TrainTaskInfo) |
|
|
|
html += `<div class="item" data-value=${TrainTaskInfo.TrainUrl}>${element.Version}</div>` |
|
|
|
}); |
|
|
|
$('#model_name_version').append(html) |
|
|
|
$("#select_model_version").removeClass("loading") |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
// 根据选中的模型版本获取相应的模型权重文件 |
|
|
|
$(function(){ |
|
|
|
$('#select_model_version').dropdown({ |
|
|
|
onChange: function(value, text, $selectedItem) { |
|
|
|
$("#select_model_checkpoint").addClass("loading") |
|
|
|
let html = '' |
|
|
|
loadCheckpointList(value).then((res)=>{ |
|
|
|
res.forEach(element => { |
|
|
|
html += `<div class="item" data-value=${element.FileName}>${element.FileName}</div>` |
|
|
|
}) |
|
|
|
$('#model_checkpoint').append(html) |
|
|
|
$("#select_model_checkpoint").removeClass("loading") |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
function loadCheckpointList(value){ |
|
|
|
return new Promise((resolve,reject)=>{ |
|
|
|
$.get(`${RepoLink}/modelmanage/query_modelfile_for_predict`,{ID:value}, (data) => { |
|
|
|
resolve(data) |
|
|
|
}) |
|
|
|
}) |
|
|
|
} |
|
|
|
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') |
|
|
|
}); |
|
|
|
</script> |