@@ -141,40 +141,7 @@ | |||
onkeydown="this.value=this.value.substring(0, 255)" | |||
onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | |||
</div> | |||
<input type="hidden" id="ai_model_version" name="model_version" value="{{$.model_version}}"> | |||
<div class="required inline min_title fields" style="width: 93.5%;"> | |||
<label class="label-fix-width label-required" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.infer_job.select_model"}}</label> | |||
<div class="six wide field"> | |||
<div class="ui fluid selection dropdown" id="select_model"> | |||
<input type="hidden" name="model_name" required value="{{.model_name}}"> | |||
<div class="text"></div> | |||
<i class="dropdown icon"></i> | |||
<div class="menu" id="model_name"> | |||
</div> | |||
</div> | |||
</div> | |||
<input type="hidden" name="pre_train_model_url" value="{{.train_url}}"> | |||
<div class="three wide field"> | |||
<div class="ui fluid selection dropdown" id="select_model_version"> | |||
<input type="hidden" name="train_url" required value="{{.train_url}}"> | |||
<div class="text"></div> | |||
<i class="dropdown icon"></i> | |||
<div class="menu" id="model_name_version"></div> | |||
</div> | |||
</div> | |||
<div class="five wide field"> | |||
<div class="ui fluid selection dropdown" id="select_model_checkpoint"> | |||
<input type="hidden" name="ckpt_name" required value="{{.ckpt_name}}"> | |||
<div class="text"></div> | |||
<i class="dropdown icon"></i> | |||
<div class="menu" id="model_checkpoint"> | |||
</div> | |||
</div> | |||
</div> | |||
<span > | |||
<i class="question circle icon" data-content="{{.i18n.Tr "cloudbrain.model_file_postfix_rule"}}" data-position="top center" data-variation="inverted mini"></i> | |||
</span> | |||
</div> | |||
{{template "custom/select_model" .}} | |||
<div class="required inline min_title field " style="display: none;"> | |||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.resource_pool"}}</label> | |||
<select class="ui dropdown width48" id="trainjob_resource_pool" name="pool_id"> | |||
@@ -752,200 +752,4 @@ export default async function initCloudrainSow() { | |||
html += "</div>"; | |||
$(`#dir_list${version_name}`).append(html); | |||
} | |||
let nameMap, nameList; | |||
let RepoLink = $(".cloudbrain-type").data("repo-link"); | |||
let type = $(".cloudbrain-type").data("cloudbrain-type"); | |||
let flagModel = $(".cloudbrain-type").data("flag-model"); | |||
// 获取模型列表和模型名称对应的模型版本 | |||
$(document).ready(function () { | |||
if (!flagModel) return; | |||
else { | |||
$.get( | |||
`${RepoLink}/modelmanage/query_model_for_predict?type=${type}`, | |||
(data) => { | |||
nameMap = data.nameMap; | |||
nameList = data.nameList; | |||
let html = `<div class="item"></div>`; | |||
nameList.forEach((element) => { | |||
html += `<div class="item" data-value=${element}>${element}</div>`; | |||
}); | |||
if (nameList.length !== 0) { | |||
$("#model_name").append(html); | |||
} | |||
let faildModelName = $('input[name="model_name"]').val(); | |||
let faildModelVersion = $('input[name="model_version"]').val(); | |||
let dataID; | |||
// 新建错误的表单返回初始化 | |||
if (faildModelName && nameList.includes(faildModelName)) { | |||
$("#select_model").dropdown("set text", faildModelName); | |||
$("#select_model").dropdown("set value", faildModelName); | |||
nameMap[faildModelName].forEach((element) => { | |||
if (element.Version === faildModelVersion) { | |||
dataID = element.ID; | |||
} | |||
}); | |||
initModelVerison(faildModelName, nameMap, faildModelVersion); | |||
initModelckpt(dataID); | |||
} | |||
} | |||
); | |||
} | |||
$("#select_model").dropdown({ | |||
onChange: function (value, text, $selectedItem) { | |||
$("#model_name_version").empty(); | |||
if (value) { | |||
let html = ""; | |||
nameMap[value].forEach((element) => { | |||
//let { trainTaskInfo } = element; | |||
//trainTaskInfo = JSON.parse(trainTaskInfo); | |||
html += `<div class="item" data-label="${element.label}" data-id="${element.id}" data-value="${element.path}">${element.version}</div>`; | |||
}); | |||
$("#model_name_version").append(html); | |||
const initVersionText = $( | |||
"#model_name_version div.item:first-child" | |||
).text(); | |||
const initVersionValue = $( | |||
"#model_name_version div.item:first-child" | |||
).data("value"); | |||
$("#select_model_version").dropdown("set text", initVersionText); | |||
$("#select_model_version").dropdown( | |||
"set value", | |||
initVersionValue, | |||
initVersionText, | |||
$("#model_name_version div.item:first-child") | |||
); | |||
} else { | |||
$("#select_model_version").dropdown("set text", ""); | |||
$("#select_model_version").dropdown("set value", ""); | |||
$("#select_model_checkpoint").dropdown("set text", ""); | |||
$("#select_model_checkpoint").dropdown("set value", ""); | |||
$("#model_checkpoint").empty(); | |||
} | |||
}, | |||
}); | |||
$("#select_model_version").dropdown({ | |||
onChange: function (value, text, $selectedItem) { | |||
if (!value) return; | |||
const dataID = | |||
$selectedItem && $selectedItem[0].getAttribute("data-id"); | |||
$("input#ai_model_version").val(text); | |||
$("#select_model_checkpoint").dropdown("set text", ""); | |||
$("#select_model_checkpoint").addClass("loading"); | |||
$("#model_checkpoint").empty(); | |||
let html = ""; | |||
loadCheckpointList(dataID).then((res) => { | |||
res.forEach((element) => { | |||
const ckptSuffix = element.FileName.split("."); | |||
const loadCheckpointFile = [ | |||
"ckpt", | |||
"pb", | |||
"h5", | |||
"json", | |||
"pkl", | |||
"pth", | |||
"t7", | |||
"pdparams", | |||
"onnx", | |||
"pbtxt", | |||
"keras", | |||
"mlmodel", | |||
"cfg", | |||
"pt", | |||
]; | |||
if ( | |||
!element.IsDir && | |||
loadCheckpointFile.includes(ckptSuffix[ckptSuffix.length - 1]) | |||
) { | |||
html += `<div class="item" data-value="${element.FileName}">${element.FileName}</div>`; | |||
} | |||
}); | |||
$("#model_checkpoint").append(html); | |||
$("#select_model_checkpoint").removeClass("loading"); | |||
if (html) { | |||
$("#select_model_checkpoint").removeClass("error"); | |||
} | |||
const initVersionText = $( | |||
"#model_checkpoint div.item:first-child" | |||
).text(); | |||
const initVersionValue = $( | |||
"#model_checkpoint div.item:first-child" | |||
).data("value"); | |||
$("#select_model_checkpoint").dropdown("set text", initVersionText); | |||
$("#select_model_checkpoint").dropdown( | |||
"set value", | |||
initVersionValue, | |||
initVersionText, | |||
$("#model_name_version div.item:first-child") | |||
); | |||
}); | |||
}, | |||
}); | |||
}); | |||
function initModelVerison(value, nameMap, faildModelVersion) { | |||
let faildTrainUrl = $('input[name="pre_train_model_url"]').val(); | |||
let html = ""; | |||
nameMap[value].forEach((element) => { | |||
let { TrainTaskInfo } = element; | |||
TrainTaskInfo = JSON.parse(TrainTaskInfo); | |||
html += `<div class="item" data-label="${element.Label}" data-id="${element.ID}" data-value="${element.Path}">${element.Version}</div>`; | |||
}); | |||
$("#model_name_version").append(html); | |||
$("#select_model_version").dropdown("set text", faildModelVersion); | |||
$("#select_model_version").dropdown("set value", faildTrainUrl); | |||
} | |||
function initModelckpt(dataID) { | |||
let faildCkptName = $('input[name="ckpt_name"]').val(); | |||
$("#select_model_checkpoint").addClass("loading"); | |||
$("#model_checkpoint").empty(); | |||
let html = ""; | |||
loadCheckpointList(dataID).then((res) => { | |||
res.forEach((element) => { | |||
const ckptSuffix = element.FileName.split("."); | |||
const loadCheckpointFile = [ | |||
"ckpt", | |||
"pb", | |||
"h5", | |||
"json", | |||
"pkl", | |||
"pth", | |||
"t7", | |||
"pdparams", | |||
"onnx", | |||
"pbtxt", | |||
"keras", | |||
"mlmodel", | |||
"cfg", | |||
"pt", | |||
]; | |||
if ( | |||
!element.IsDir && | |||
loadCheckpointFile.includes(ckptSuffix[ckptSuffix.length - 1]) | |||
) { | |||
html += `<div class="item" data-value=${element.FileName}>${element.FileName}</div>`; | |||
} | |||
}); | |||
$("#model_checkpoint").append(html); | |||
$("#select_model_checkpoint").removeClass("loading"); | |||
$("#select_model_checkpoint").dropdown("set text", faildCkptName); | |||
$("#select_model_checkpoint").dropdown("set value", faildCkptName); | |||
}); | |||
} | |||
function loadCheckpointList(value) { | |||
return new Promise((resolve, reject) => { | |||
$.get( | |||
`${RepoLink}/modelmanage/query_modelfile_for_predict`, | |||
{ id: value }, | |||
(data) => { | |||
resolve(data); | |||
} | |||
); | |||
}); | |||
} | |||
} |
@@ -182,4 +182,199 @@ | |||
} | |||
validate(); | |||
}); | |||
//管理镜像相关的东西 | |||
let nameMap, nameList; | |||
let RepoLink = $(".cloudbrain-type").data("repo-link"); | |||
let type = $(".cloudbrain-type").data("cloudbrain-type"); | |||
let flagModel = $(".cloudbrain-type").data("flag-model"); | |||
// 获取模型列表和模型名称对应的模型版本 | |||
$(document).ready(function () { | |||
if (!flagModel) return; | |||
else { | |||
$.get( | |||
`${RepoLink}/modelmanage/query_model_for_predict?type=${type}`, | |||
(data) => { | |||
nameMap = data.nameMap; | |||
nameList = data.nameList; | |||
let html = `<div class="item"></div>`; | |||
nameList.forEach((element) => { | |||
html += `<div class="item" data-value=${element}>${element}</div>`; | |||
}); | |||
if (nameList.length !== 0) { | |||
$("#model_name").append(html); | |||
} | |||
let faildModelName = $('input[name="model_name"]').val(); | |||
let faildModelVersion = $('input[name="model_version"]').val(); | |||
let dataID; | |||
// 新建错误的表单返回初始化 | |||
if (faildModelName && nameList.includes(faildModelName)) { | |||
$("#select_model").dropdown("set text", faildModelName); | |||
$("#select_model").dropdown("set value", faildModelName); | |||
nameMap[faildModelName].forEach((element) => { | |||
if (element.version === faildModelVersion) { | |||
dataID = element.id; | |||
} | |||
}); | |||
initModelVerison(faildModelName, nameMap, faildModelVersion); | |||
initModelckpt(dataID); | |||
} | |||
} | |||
); | |||
} | |||
$("#select_model").dropdown({ | |||
onChange: function (value, text, $selectedItem) { | |||
$("#model_name_version").empty(); | |||
if (value) { | |||
let html = ""; | |||
nameMap[value].forEach((element) => { | |||
//let { trainTaskInfo } = element; | |||
//trainTaskInfo = JSON.parse(trainTaskInfo); | |||
html += `<div class="item" data-label="${element.label}" data-id="${element.id}" data-value="${element.path}">${element.version}</div>`; | |||
}); | |||
$("#model_name_version").append(html); | |||
const initVersionText = $( | |||
"#model_name_version div.item:first-child" | |||
).text(); | |||
const initVersionValue = $( | |||
"#model_name_version div.item:first-child" | |||
).data("value"); | |||
$("#select_model_version").dropdown("set text", initVersionText); | |||
$("#select_model_version").dropdown( | |||
"set value", | |||
initVersionValue, | |||
initVersionText, | |||
$("#model_name_version div.item:first-child") | |||
); | |||
} else { | |||
$("#select_model_version").dropdown("set text", ""); | |||
$("#select_model_version").dropdown("set value", ""); | |||
$("#select_model_checkpoint").dropdown("set text", ""); | |||
$("#select_model_checkpoint").dropdown("set value", ""); | |||
$("#model_checkpoint").empty(); | |||
} | |||
}, | |||
}); | |||
$("#select_model_version").dropdown({ | |||
onChange: function (value, text, $selectedItem) { | |||
if (!value) return; | |||
const dataID = | |||
$selectedItem && $selectedItem[0].getAttribute("data-id"); | |||
$("input#ai_model_version").val(text); | |||
$("#select_model_checkpoint").dropdown("set text", ""); | |||
$("#select_model_checkpoint").addClass("loading"); | |||
$("#model_checkpoint").empty(); | |||
let html = ""; | |||
loadCheckpointList(dataID).then((res) => { | |||
res.forEach((element) => { | |||
const ckptSuffix = element.FileName.split("."); | |||
const loadCheckpointFile = [ | |||
"ckpt", | |||
"pb", | |||
"h5", | |||
"json", | |||
"pkl", | |||
"pth", | |||
"t7", | |||
"pdparams", | |||
"onnx", | |||
"pbtxt", | |||
"keras", | |||
"mlmodel", | |||
"cfg", | |||
"pt", | |||
]; | |||
if ( | |||
!element.IsDir && | |||
loadCheckpointFile.includes(ckptSuffix[ckptSuffix.length - 1]) | |||
) { | |||
html += `<div class="item" data-value="${element.FileName}">${element.FileName}</div>`; | |||
} | |||
}); | |||
$("#model_checkpoint").append(html); | |||
$("#select_model_checkpoint").removeClass("loading"); | |||
if (html) { | |||
$("#select_model_checkpoint").removeClass("error"); | |||
} | |||
const initVersionText = $( | |||
"#model_checkpoint div.item:first-child" | |||
).text(); | |||
const initVersionValue = $( | |||
"#model_checkpoint div.item:first-child" | |||
).data("value"); | |||
$("#select_model_checkpoint").dropdown("set text", initVersionText); | |||
$("#select_model_checkpoint").dropdown( | |||
"set value", | |||
initVersionValue, | |||
initVersionText, | |||
$("#model_name_version div.item:first-child") | |||
); | |||
}); | |||
}, | |||
}); | |||
}); | |||
function initModelVerison(value, nameMap, faildModelVersion) { | |||
let faildTrainUrl = $('input[name="pre_train_model_url"]').val(); | |||
let html = ""; | |||
nameMap[value].forEach((element) => { | |||
html += `<div class="item" data-label="${element.label}" data-id="${element.id}" data-value="${element.path}">${element.version}</div>`; | |||
}); | |||
$("#model_name_version").append(html); | |||
$("#select_model_version").dropdown("set text", faildModelVersion); | |||
$("#select_model_version").dropdown("set value", faildTrainUrl); | |||
} | |||
function initModelckpt(dataID) { | |||
let faildCkptName = $('input[name="ckpt_name"]').val(); | |||
$("#select_model_checkpoint").addClass("loading"); | |||
$("#model_checkpoint").empty(); | |||
let html = ""; | |||
loadCheckpointList(dataID).then((res) => { | |||
res.forEach((element) => { | |||
const ckptSuffix = element.FileName.split("."); | |||
const loadCheckpointFile = [ | |||
"ckpt", | |||
"pb", | |||
"h5", | |||
"json", | |||
"pkl", | |||
"pth", | |||
"t7", | |||
"pdparams", | |||
"onnx", | |||
"pbtxt", | |||
"keras", | |||
"mlmodel", | |||
"cfg", | |||
"pt", | |||
]; | |||
if ( | |||
!element.IsDir && | |||
loadCheckpointFile.includes(ckptSuffix[ckptSuffix.length - 1]) | |||
) { | |||
html += `<div class="item" data-value=${element.FileName}>${element.FileName}</div>`; | |||
} | |||
}); | |||
$("#model_checkpoint").append(html); | |||
$("#select_model_checkpoint").removeClass("loading"); | |||
$("#select_model_checkpoint").dropdown("set text", faildCkptName); | |||
$("#select_model_checkpoint").dropdown("set value", faildCkptName); | |||
}); | |||
} | |||
function loadCheckpointList(value) { | |||
return new Promise((resolve, reject) => { | |||
$.get( | |||
`${RepoLink}/modelmanage/query_modelfile_for_predict`, | |||
{ id: value }, | |||
(data) => { | |||
resolve(data); | |||
} | |||
); | |||
}); | |||
} | |||
})(); |