Browse Source

fix issue

tags/v1.22.1.2
zhoupzh 4 years ago
parent
commit
17041f10a1
4 changed files with 134 additions and 83 deletions
  1. +1
    -1
      routers/repo/ai_model_manage.go
  2. +1
    -0
      templates/repo/debugjob/index.tmpl
  3. +131
    -81
      templates/repo/modelarts/inferencejob/new.tmpl
  4. +1
    -1
      web_src/js/index.js

+ 1
- 1
routers/repo/ai_model_manage.go View File

@@ -631,7 +631,7 @@ func QueryModelFileForPredict(ctx *context.Context) {
ctx.ServerError("no such model:", err)
return
}
prefix := model.Path[len(setting.Bucket)+2:]
prefix := model.Path[len(setting.Bucket)+1:]
fileinfos, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, prefix)
ctx.JSON(http.StatusOK, fileinfos)
}

+ 1
- 0
templates/repo/debugjob/index.tmpl View File

@@ -480,6 +480,7 @@

<script>
// 调试和评分新开窗口
console.log({{.Tasks}})
const {AppSubUrl, StaticUrlPrefix, csrf} = window.config;
let url={{.RepoLink}}
let getParam=getQueryVariable('debugListType')


+ 131
- 81
templates/repo/modelarts/inferencejob/new.tmpl View File

@@ -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"}}&nbsp;&nbsp;</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"}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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"}}&nbsp;</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"}}&nbsp;&nbsp;&nbsp;&nbsp;</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"}}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>

+ 1
- 1
web_src/js/index.js View File

@@ -4128,7 +4128,7 @@ function initDropDown() {
}

//云脑提示
$('.question.circle.icon').hover(function(){
$('.question.circle.icon.cloudbrain-question').hover(function(){
$(this).popup('show')
$('.ui.popup.mini.top.center').css({"border-color":'rgba(50, 145, 248, 100)',"color":"rgba(3, 102, 214, 100)","border-radius":"5px","border-shadow":"none"})
});


Loading…
Cancel
Save