Browse Source

Merge pull request 'fix issue' (#2494) from gpu-inference into V20220718

Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/2494
Reviewed-by: chenshihai <chenshh@pcl.ac.cn>
pull/2503/head
chenshihai 2 years ago
parent
commit
10277d8c34
10 changed files with 38 additions and 21 deletions
  1. +1
    -0
      modules/auth/cloudbrain.go
  2. +2
    -0
      modules/cloudbrain/cloudbrain.go
  3. +4
    -4
      routers/api/v1/repo/cloudbrain.go
  4. +4
    -0
      routers/repo/cloudbrain.go
  5. +2
    -3
      templates/repo/cloudbrain/inference/show.tmpl
  6. +1
    -1
      templates/repo/cloudbrain/trainjob/show.tmpl
  7. +1
    -1
      templates/repo/grampus/trainjob/show.tmpl
  8. +4
    -4
      templates/repo/modelarts/inferencejob/show.tmpl
  9. +1
    -1
      templates/repo/modelarts/trainjob/show.tmpl
  10. +18
    -7
      web_src/js/features/cloudbrainShow.js

+ 1
- 0
modules/auth/cloudbrain.go View File

@@ -69,6 +69,7 @@ type CreateCloudBrainInferencForm struct {
ModelName string `form:"model_name" binding:"Required"` ModelName string `form:"model_name" binding:"Required"`
ModelVersion string `form:"model_version" binding:"Required"` ModelVersion string `form:"model_version" binding:"Required"`
CkptName string `form:"ckpt_name" binding:"Required"` CkptName string `form:"ckpt_name" binding:"Required"`
LabelName string `form:"label_names" binding:"Required"`
} }


func (f *CreateCloudBrainForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { func (f *CreateCloudBrainForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {


+ 2
- 0
modules/cloudbrain/cloudbrain.go View File

@@ -78,6 +78,7 @@ type GenerateCloudBrainTaskReq struct {
ModelName string ModelName string
ModelVersion string ModelVersion string
CkptName string CkptName string
LabelName string
} }


func GetCloudbrainDebugCommand() string { func GetCloudbrainDebugCommand() string {
@@ -400,6 +401,7 @@ func GenerateTask(req GenerateCloudBrainTaskReq) error {
ModelVersion: req.ModelVersion, ModelVersion: req.ModelVersion,
CkptName: req.CkptName, CkptName: req.CkptName,
ResultUrl: req.ResultPath, ResultUrl: req.ResultPath,
LabelName: req.LabelName,
CreatedUnix: createTime, CreatedUnix: createTime,
UpdatedUnix: createTime, UpdatedUnix: createTime,
CommitID: req.CommitID, CommitID: req.CommitID,


+ 4
- 4
routers/api/v1/repo/cloudbrain.go View File

@@ -157,15 +157,15 @@ func DelCloudBrainJob(ctx *context.APIContext) {


if errStr != "" { if errStr != "" {
ctx.JSON(http.StatusOK, map[string]interface{}{ ctx.JSON(http.StatusOK, map[string]interface{}{
"message": ctx.Tr(errStr),
"Message": ctx.Tr(errStr),
"VersionName": "1", "VersionName": "1",
"code": 1,
"Code": 1,
}) })
} else { } else {
ctx.JSON(http.StatusOK, map[string]interface{}{ ctx.JSON(http.StatusOK, map[string]interface{}{
"message": "",
"Message": "",
"VersionName": "1", "VersionName": "1",
"code": 0,
"Code": 0,
}) })
} }




+ 4
- 0
routers/repo/cloudbrain.go View File

@@ -380,6 +380,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra
codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath
resourceSpecId := form.ResourceSpecId resourceSpecId := form.ResourceSpecId
branchName := form.BranchName branchName := form.BranchName
labelName := form.LabelName
repo := ctx.Repo.Repository repo := ctx.Repo.Repository


ckptUrl := setting.Attachment.Minio.RealPath + form.TrainUrl + form.CkptName ckptUrl := setting.Attachment.Minio.RealPath + form.TrainUrl + form.CkptName
@@ -475,6 +476,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra
ModelVersion: form.ModelVersion, ModelVersion: form.ModelVersion,
CkptName: form.CkptName, CkptName: form.CkptName,
TrainUrl: form.TrainUrl, TrainUrl: form.TrainUrl,
LabelName: labelName,
} }


err = cloudbrain.GenerateTask(req) err = cloudbrain.GenerateTask(req)
@@ -830,6 +832,8 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo
} }


ctx.Data["task"] = task ctx.Data["task"] = task
labelName := strings.Fields(task.LabelName)
ctx.Data["LabelName"] = labelName
ctx.Data["jobName"] = task.JobName ctx.Data["jobName"] = task.JobName
ctx.Data["displayJobName"] = task.DisplayJobName ctx.Data["displayJobName"] = task.DisplayJobName
version_list_task := make([]*models.Cloudbrain, 0) version_list_task := make([]*models.Cloudbrain, 0)


+ 2
- 3
templates/repo/cloudbrain/inference/show.tmpl View File

@@ -266,7 +266,7 @@
onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a> onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a>
<a class="item load-model-file" data-tab="four" <a class="item load-model-file" data-tab="four"
data-path="{{$.RepoLink}}/cloudbrain/inference-job/{{.JobID}}/result_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
data-gpu-flag="true" data-download-flag="{{$.canDownload}}" data-path="{{$.RepoLink}}/cloudbrain/inference-job/{{.JobID}}/result_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
</div> </div>
<div class="ui tab active" data-tab="first" style="height:400px"> <div class="ui tab active" data-tab="first" style="height:400px">
<div style="padding-top: 10px;"> <div style="padding-top: 10px;">
@@ -420,9 +420,8 @@


<td class="ti-text-form-content"> <td class="ti-text-form-content">
<div class="text-span text-span-w" id="{{.VersionName}}-labels"> <div class="text-span text-span-w" id="{{.VersionName}}-labels">

{{if .LabelName}} {{if .LabelName}}
{{range $.labelName}}
{{range $.LabelName}}
<a class="ui label" title="{{.}}">{{.}}</a> <a class="ui label" title="{{.}}">{{.}}</a>
{{end}} {{end}}
{{else}} {{else}}


+ 1
- 1
templates/repo/cloudbrain/trainjob/show.tmpl View File

@@ -288,7 +288,7 @@
onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a> onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a>
<a class="item" data-tab="third{{$k}}" <a class="item" data-tab="third{{$k}}"
onclick="loadLog({{.VersionName}})">{{$.i18n.Tr "repo.modelarts.log"}}</a> onclick="loadLog({{.VersionName}})">{{$.i18n.Tr "repo.modelarts.log"}}</a>
<a class="item load-model-file" data-tab="four{{$k}}" data-path="{{$.RepoLink}}/cloudbrain/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
<a class="item load-model-file" data-tab="four{{$k}}" data-gpu-flag="true" data-download-flag="{{$.canDownload}}" data-path="{{$.RepoLink}}/cloudbrain/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
</div> </div>
<div class="ui tab active" data-tab="first{{$k}}"> <div class="ui tab active" data-tab="first{{$k}}">
<div style="padding-top: 10px;"> <div style="padding-top: 10px;">


+ 1
- 1
templates/repo/grampus/trainjob/show.tmpl View File

@@ -298,7 +298,7 @@
data-tab="first{{$k}}">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a> data-tab="first{{$k}}">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a>
<a class="item" data-tab="second{{$k}}" <a class="item" data-tab="second{{$k}}"
onclick="loadLog({{.VersionName}})">{{$.i18n.Tr "repo.modelarts.log"}}</a> onclick="loadLog({{.VersionName}})">{{$.i18n.Tr "repo.modelarts.log"}}</a>
<a class="item load-model-file" data-tab="third{{$k}}" data-path="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
<a class="item load-model-file" data-tab="third{{$k}}" data-download-flag="{{$.canDownload}}" data-path="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
</div> </div>
<div class="ui tab active" data-tab="first{{$k}}"> <div class="ui tab active" data-tab="first{{$k}}">
<div style="padding-top: 10px;"> <div style="padding-top: 10px;">


+ 4
- 4
templates/repo/modelarts/inferencejob/show.tmpl View File

@@ -214,7 +214,7 @@ td, th {


<a class="active item" data-tab="first">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a> <a class="active item" data-tab="first">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a>
<a class="item log_bottom" data-tab="second" data-version="{{.VersionName}}">{{$.i18n.Tr "repo.modelarts.log"}}</a> <a class="item log_bottom" data-tab="second" data-version="{{.VersionName}}">{{$.i18n.Tr "repo.modelarts.log"}}</a>
<a class="item load-model-file" data-tab="third" data-path="{{$.RepoLink}}/modelarts/inference-job/{{.JobID}}/result_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
<a class="item load-model-file" data-tab="third" data-download-flag="{{$.canDownload}}" data-path="{{$.RepoLink}}/modelarts/inference-job/{{.JobID}}/result_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
</div> </div>


<div class="ui tab active" data-tab="first" style="height:400px"> <div class="ui tab active" data-tab="first" style="height:400px">
@@ -451,10 +451,10 @@ td, th {
<div class="ui tab" data-tab="second"> <div class="ui tab" data-tab="second">
<div> <div>
<a id="{{.VersionName}}-log-down" <a id="{{.VersionName}}-log-down"
class='{{if and (.CanModify) (eq .Status "KILLED" "FAILED" "START_FAILED" "STOPPED" "COMPLETED") }}ti-download-file{{else}}disabled{{end}}'
class='{{if and ($.canDownload) (eq .Status "KILLED" "FAILED" "START_FAILED" "STOPPED" "COMPLETED") }}ti-download-file{{else}}disabled{{end}}'
href="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/download_log_file?version_name={{.VersionName}}"> href="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/download_log_file?version_name={{.VersionName}}">
<i class="ri-download-cloud-2-line"></i> <i class="ri-download-cloud-2-line"></i>
<span style="margin-left: 0.3rem;">{{$.i18n.Tr "repo.modelarts.download_log"}}</span>{{.CanModify}}
<span style="margin-left: 0.3rem;">{{$.i18n.Tr "repo.modelarts.download_log"}}</span>
</a> </a>


</div> </div>
@@ -507,7 +507,7 @@ td, th {
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}
<script> <script>
console.log('{{.CanModify}}')
console.log('{{$.canDownload}}')
$(document).ready(function(){ $(document).ready(function(){
$('.secondary.menu .item').tab(); $('.secondary.menu .item').tab();
}); });


+ 1
- 1
templates/repo/modelarts/trainjob/show.tmpl View File

@@ -327,7 +327,7 @@
<a class="item log_bottom" data-tab="second{{$k}}" <a class="item log_bottom" data-tab="second{{$k}}"
data-version="{{.VersionName}}">{{$.i18n.Tr "repo.modelarts.log"}}</a> data-version="{{.VersionName}}">{{$.i18n.Tr "repo.modelarts.log"}}</a>
<a class="item metric_chart" data-tab="four{{$k}}" data-version="{{.VersionName}}">资源占用情况</a> <a class="item metric_chart" data-tab="four{{$k}}" data-version="{{.VersionName}}">资源占用情况</a>
<a class="item load-model-file" data-tab="third{{$k}}" data-path="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
<a class="item load-model-file" data-tab="third{{$k}}" data-download-flag="{{$.canDownload}}" data-path="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/model_list" data-version="{{.VersionName}}" data-parents="" data-filename="" data-init="init" >{{$.i18n.Tr "repo.model_download"}}</a>
</div> </div>
<div class="ui tab active" data-tab="first{{$k}}"> <div class="ui tab active" data-tab="first{{$k}}">
<div style="padding-top: 10px;"> <div style="padding-top: 10px;">


+ 18
- 7
web_src/js/features/cloudbrainShow.js View File

@@ -16,7 +16,6 @@ export default async function initCloudrainSow() {


function logScroll(version_name) { function logScroll(version_name) {
let container = document.querySelector(`#log${version_name}`); let container = document.querySelector(`#log${version_name}`);
console.log(container);
let scrollTop = container.scrollTop; let scrollTop = container.scrollTop;
let scrollHeight = container.scrollHeight; let scrollHeight = container.scrollHeight;
let clientHeight = container.clientHeight; let clientHeight = container.clientHeight;
@@ -161,17 +160,17 @@ export default async function initCloudrainSow() {


// //
$(".content-pad").on("click", ".load-model-file", function () { $(".content-pad").on("click", ".load-model-file", function () {
console.log("11111111111");
let downloadFlag = $(this).data("download-flag") || "";
let gpuFlag = $(this).data("gpu-flag") || "";
let version_name = $(this).data("version"); let version_name = $(this).data("version");
let parents = $(this).data("parents") || ""; let parents = $(this).data("parents") || "";
let filename = $(this).data("filename") || ""; let filename = $(this).data("filename") || "";
let init = $(this).data("init") || ""; let init = $(this).data("init") || "";
let path = $(this).data("path"); let path = $(this).data("path");
let url = `/api/v1/repos${path}?version_name=${version_name}&parentDir=${parents}`; let url = `/api/v1/repos${path}?version_name=${version_name}&parentDir=${parents}`;
console.log(url);
$.get(url, (data) => { $.get(url, (data) => {
$(`#dir_list${version_name}`).empty(); $(`#dir_list${version_name}`).empty();
renderDir(path, data, version_name);
renderDir(path, data, version_name, downloadFlag, gpuFlag);
if (init === "init") { if (init === "init") {
$(`input[name=model${version_name}]`).val(""); $(`input[name=model${version_name}]`).val("");
$(`input[name=modelback${version_name}]`).val(version_name); $(`input[name=modelback${version_name}]`).val(version_name);
@@ -251,7 +250,7 @@ export default async function initCloudrainSow() {
} }
} }


function renderDir(path, data, version_name) {
function renderDir(path, data, version_name, downloadFlag, gpuFlag) {
let html = ""; let html = "";
html += "<div class='ui grid' style='margin:0;'>"; html += "<div class='ui grid' style='margin:0;'>";
html += "<div class='row' style='padding: 0;'>"; html += "<div class='row' style='padding: 0;'>";
@@ -274,8 +273,20 @@ export default async function initCloudrainSow() {
data.Dirs[i].FileName + data.Dirs[i].FileName +
"</span>"; "</span>";
} else { } else {
if (downlaodFlag) {
html += `<a href="${location.href}/result_download?version_name=${version_name}&file_name=${data.Dirs[i].FileName}&parent_dir=${data.Dirs[i].ParenDir}">`;
if (downloadFlag) {
if (gpuFlag) {
if (path.includes("model_list")) {
html += `<a href="${location.href}/download_model?version_name=${version_name}&fileName=${data.Dirs[i].FileName}&parentDir=${data.Dirs[i].ParenDir}&jobName=${data.task.JobName}">`;
} else {
html += `<a href="${location.href}/result_download?version_name=${version_name}&fileName=${data.Dirs[i].FileName}&parentDir=${data.Dirs[i].ParenDir}&jobName=${data.task.JobName}">`;
}
} else {
if (path.includes("model_list")) {
html += `<a href="${location.href}/model_download?version_name=${version_name}&file_name=${data.Dirs[i].FileName}&parent_dir=${data.Dirs[i].ParenDir}">`;
} else {
html += `<a href="${location.href}/result_download?version_name=${version_name}&file_name=${data.Dirs[i].FileName}&parent_dir=${data.Dirs[i].ParenDir}">`;
}
}
} else { } else {
html += `<a class="disabled">`; html += `<a class="disabled">`;
} }


Loading…
Cancel
Save