diff --git a/models/cloudbrain.go b/models/cloudbrain.go index f40403fdd..af53bad32 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1803,7 +1803,7 @@ func GetBenchmarkCountByUserID(userID int64) (int, error) { func GetWaitingCloudbrainCount(cloudbrainType int, computeResource string, jobTypes ...JobType) (int64, error) { sess := x.Where("status=? and type=?", JobWaiting, cloudbrainType) if len(jobTypes) > 0 { - sess.In("JobType", jobTypes) + sess.In("job_type", jobTypes) } if computeResource != "" { sess.And("compute_resource=?", computeResource) diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index ddf1c7ff2..0d20f83f0 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -264,6 +264,7 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { } if !jobNamePattern.MatchString(displayJobName) { + cloudBrainNewDataPrepare(ctx) ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) return } @@ -661,14 +662,35 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo if cloudbrain.TrainResourceSpecs == nil { json.Unmarshal([]byte(setting.TrainResourceSpecs), &cloudbrain.TrainResourceSpecs) } + hasSpec := false for _, tmp := range cloudbrain.TrainResourceSpecs.ResourceSpec { if tmp.Id == task.ResourceSpecId { + hasSpec = true ctx.Data["GpuNum"] = tmp.GpuNum ctx.Data["CpuNum"] = tmp.CpuNum ctx.Data["MemMiB"] = tmp.MemMiB ctx.Data["ShareMemMiB"] = tmp.ShareMemMiB } } + + if !hasSpec && cloudbrain.SpecialPools != nil { + for _, specialPool := range cloudbrain.SpecialPools.Pools { + + if specialPool.ResourceSpec != nil { + + for _, spec := range specialPool.ResourceSpec { + if task.ResourceSpecId == spec.Id { + ctx.Data["GpuNum"] = spec.GpuNum + ctx.Data["CpuNum"] = spec.CpuNum + ctx.Data["MemMiB"] = spec.MemMiB + ctx.Data["ShareMemMiB"] = spec.ShareMemMiB + break + } + } + } + } + } + } else if task.JobType == string(models.JobTypeInference) { if cloudbrain.InferenceResourceSpecs == nil { json.Unmarshal([]byte(setting.InferenceResourceSpecs), &cloudbrain.InferenceResourceSpecs) @@ -709,6 +731,15 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo ctx.Data["resource_type"] = resourceType.Value } } + for _, specialPool := range cloudbrain.SpecialPools.Pools { + + for _, resourceType := range specialPool.Pool { + if resourceType.Queue == jobRes.Config.GpuType { + ctx.Data["resource_type"] = resourceType.Value + } + } + } + } else if task.JobType == string(models.JobTypeInference) { if inferenceGpuInfos == nil { json.Unmarshal([]byte(setting.InferenceGpuTypes), &inferenceGpuInfos) diff --git a/templates/custom/wait_count.tmpl b/templates/custom/wait_count.tmpl index 77c49712d..bef8f1327 100644 --- a/templates/custom/wait_count.tmpl +++ b/templates/custom/wait_count.tmpl @@ -3,13 +3,12 @@ {{$gpuQueue := 0}} {{range $k,$v :=.gpu_types}} {{if eq $k 0}} - {{ $queue := $v.Queue }} + {{ $queue = $v.Queue }} {{ end }} {{ end }} - {{ range $k,$v :=.QueuesDetail }} {{if eq $k $queue}} - {{$gpuQueue :=$v}} + {{$gpuQueue =$v}} {{ end }} {{ end }} {{$queue := ""}} {{$gpuQueue := 0}} - {{range $k,$v :=.gpu_types}} + {{range $k,$v :=.type}} {{if eq $k 0}} - {{ $queue := $v.Queue }} + {{ $queue = $v.Queue }} {{ end }} {{ end }} - {{ range $k,$v :=.QueuesDetail }} + {{ range $k,$v :=.ctx.QueuesDetail }} {{if eq $k $queue}} - {{$gpuQueue :=$v}} + {{$gpuQueue =$v}} {{ end }} {{ end }} - {{.i18n.Tr "repo.wait_count_start"}} - {{if .QueuesDetail}} + {{.ctx.i18n.Tr "repo.wait_count_start"}} + {{if .type}} {{ $gpuQueue }} {{else}} - {{.WaitCount}} + {{.ctx.WaitCount}} {{ end }} - {{.i18n.Tr "repo.wait_count_end"}} diff --git a/templates/repo/cloudbrain/benchmark/new.tmpl b/templates/repo/cloudbrain/benchmark/new.tmpl index 0509ce5bc..fb1296d27 100755 --- a/templates/repo/cloudbrain/benchmark/new.tmpl +++ b/templates/repo/cloudbrain/benchmark/new.tmpl @@ -62,7 +62,7 @@ {{.i18n.Tr "repo.cloudbrain.benchmark.model"}} - {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $ "type" .benchmark_gpu_types}}
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $ "type" .benchmark_gpu_types}}
diff --git a/templates/repo/cloudbrain/benchmark/show.tmpl b/templates/repo/cloudbrain/benchmark/show.tmpl index 59ce3c471..ff4e5e7ea 100755 --- a/templates/repo/cloudbrain/benchmark/show.tmpl +++ b/templates/repo/cloudbrain/benchmark/show.tmpl @@ -232,12 +232,7 @@
- {{if not (eq .StartTime 0)}} - {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - - {{end}} + {{TimeSinceUnix1 .CreatedUnix}} {{$.i18n.Tr "repo.modelarts.status"}}: diff --git a/templates/repo/cloudbrain/inference/new.tmpl b/templates/repo/cloudbrain/inference/new.tmpl index e42c7240a..223fcfe1c 100644 --- a/templates/repo/cloudbrain/inference/new.tmpl +++ b/templates/repo/cloudbrain/inference/new.tmpl @@ -92,7 +92,7 @@ Ascend NPU
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $ "type" .inference_gpu_types}}
diff --git a/templates/repo/cloudbrain/inference/show.tmpl b/templates/repo/cloudbrain/inference/show.tmpl index 909cde468..00ad25644 100644 --- a/templates/repo/cloudbrain/inference/show.tmpl +++ b/templates/repo/cloudbrain/inference/show.tmpl @@ -317,9 +317,9 @@ {{if not (eq .StartTime 0)}} {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - {{end}} + {{else}} + -- + {{end}}
diff --git a/templates/repo/cloudbrain/show.tmpl b/templates/repo/cloudbrain/show.tmpl index 9ae3b9445..e4769c65c 100755 --- a/templates/repo/cloudbrain/show.tmpl +++ b/templates/repo/cloudbrain/show.tmpl @@ -240,12 +240,7 @@
- {{if not (eq .StartTime 0)}} - {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - - {{end}} + {{TimeSinceUnix1 .CreatedUnix}} {{$.i18n.Tr "repo.modelarts.status"}}: @@ -257,9 +252,7 @@ {{$.duration}} - +
@@ -588,33 +581,4 @@ } document.getElementById("info_display").innerHTML = html; } - function stopBubbling(e) { - e = window.event || e; - if (e.stopPropagation) { - e.stopPropagation(); //阻止事件 冒泡传播 - } else { - e.cancelBubble = true; //ie兼容 - } - } - - function refreshStatus(version_name) { - $(".ui.accordion.border-according").each((index, job) => { - const jobID = job.dataset.jobid; - const repoPath = job.dataset.repopath; - const versionname = job.dataset.version - $.get(`/api/v1/repos/${repoPath}/cloudbrain/${jobID}?version_name=${versionname}`, (data) => { - // header status and duration - //$(`#${version_name}-duration-span`).text(data.JobDuration) - $(`#${version_name}-status-span span`).text(data.JobStatus) - $(`#${version_name}-status-span i`).attr("class", data.JobStatus) - // detail status and duration - //$('#'+version_name+'-duration').text(data.JobDuration) - $('#' + version_name + '-status').text(data.JobStatus) - parseLog() - }).fail(function (err) { - console.log(err); - }); - stopBubbling(arguments.callee.caller.arguments[0]) - }) - } \ No newline at end of file diff --git a/templates/repo/cloudbrain/trainjob/new.tmpl b/templates/repo/cloudbrain/trainjob/new.tmpl index 22465492b..c410889b2 100755 --- a/templates/repo/cloudbrain/trainjob/new.tmpl +++ b/templates/repo/cloudbrain/trainjob/new.tmpl @@ -126,7 +126,7 @@ Ascend NPU - {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $ "type" .train_gpu_types}}
diff --git a/templates/repo/cloudbrain/trainjob/show.tmpl b/templates/repo/cloudbrain/trainjob/show.tmpl index da7402eb0..20e5cb55d 100644 --- a/templates/repo/cloudbrain/trainjob/show.tmpl +++ b/templates/repo/cloudbrain/trainjob/show.tmpl @@ -326,8 +326,13 @@
- {{TimeSinceUnix1 .CreatedUnix}} + + {{if not (eq .StartTime 0)}} + {{TimeSinceUnix1 .StartTime}} + {{else}} + -- + {{end}} +
diff --git a/templates/repo/debugjob/index.tmpl b/templates/repo/debugjob/index.tmpl index 14a74ef31..043816e9f 100755 --- a/templates/repo/debugjob/index.tmpl +++ b/templates/repo/debugjob/index.tmpl @@ -386,7 +386,7 @@ {{$.CsrfTokenHtml}} {{if .CanDel}} {{$.i18n.Tr "repo.stop"}} @@ -405,7 +405,7 @@ {{$.CsrfTokenHtml}} {{if .CanDel}} {{$.i18n.Tr "repo.delete"}} diff --git a/templates/repo/grampus/trainjob/gpu/new.tmpl b/templates/repo/grampus/trainjob/gpu/new.tmpl index 2e365fdc6..75b8bcff2 100755 --- a/templates/repo/grampus/trainjob/gpu/new.tmpl +++ b/templates/repo/grampus/trainjob/gpu/new.tmpl @@ -113,7 +113,7 @@ Ascend NPU
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $}}
diff --git a/templates/repo/grampus/trainjob/npu/new.tmpl b/templates/repo/grampus/trainjob/npu/new.tmpl index 1e863ce17..f23942e13 100755 --- a/templates/repo/grampus/trainjob/npu/new.tmpl +++ b/templates/repo/grampus/trainjob/npu/new.tmpl @@ -108,7 +108,7 @@ Ascend NPU
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $}}
diff --git a/templates/repo/grampus/trainjob/show.tmpl b/templates/repo/grampus/trainjob/show.tmpl index 80c59c28a..5d4321736 100755 --- a/templates/repo/grampus/trainjob/show.tmpl +++ b/templates/repo/grampus/trainjob/show.tmpl @@ -236,7 +236,7 @@ {{range $k ,$v := .version_list_task}}
@@ -251,12 +251,7 @@
- - {{if not (eq .StartTime 0)}} - {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - {{end}} + {{TimeSinceUnix1 .CreatedUnix}} {{$.i18n.Tr "repo.modelarts.current_version"}}:{{.VersionName}} @@ -270,9 +265,9 @@ class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}: {{.TrainJobDuration}} - + + +
@@ -350,7 +345,7 @@ {{if not (eq .StartTime 0)}} {{TimeSinceUnix1 .StartTime}} {{else}} - {{TimeSinceUnix1 .CreatedUnix}} + -- {{end}}
@@ -871,64 +866,7 @@ size = size.toFixed(0);//保留的小数位数 return size + unitArr[index]; } - function refreshStatus(version_name) { - $.get(`/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}?version_name=${version_name}`, (data) => { - // header status and duration - $(`#${version_name}-duration-span`).text(data.JobDuration) - $(`#${version_name}-status-span span`).text(data.JobStatus) - $(`#${version_name}-status-span i`).attr("class", data.JobStatus) - // detail status and duration - $('#' + version_name + '-duration').text(data.JobDuration) - $('#' + version_name + '-status').text(data.JobStatus) - $('#' + version_name + '-ai_center').text(data.AiCenter) - loadLog(version_name) - - }).fail(function (err) { - console.log(err); - }); - stopBubbling(arguments.callee.caller.arguments[0]) - } - function deleteVersion(version_name) { - stopBubbling(arguments.callee.caller.arguments[0]) - let flag = 1; - $('.ui.basic.modal').modal({ - onDeny: function () { - flag = false - }, - onApprove: function () { - $.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/del_version`, { version_name: version_name }, (data) => { - if (data.VersionListCount === 0) { - location.href = `/${userName}/${repoPath}/modelarts/train-job` - } else { - $('#accordion' + version_name).remove() - } - - }).fail(function (err) { - console.log(err); - }); - flag = true - }, - onHidden: function () { - if (flag == false) { - $('.alert').html('您已取消操作').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut(); - } - } - }) - .modal('show') - - } - function stopVersion(version_name) { - stopBubbling(arguments.callee.caller.arguments[0]) - $.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/stop_version`, { version_name: version_name }, (data) => { - if (data.StatusOK === 0) { - $('#' + version_name + '-stop').addClass('disabled') - refreshStatus(version_name) - } - }).fail(function (err) { - console.log(err); - }); - } function loadLog(version_name) { document.getElementById("mask").style.display = "block" $.get(`/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { diff --git a/templates/repo/modelarts/inferencejob/new.tmpl b/templates/repo/modelarts/inferencejob/new.tmpl index 116f53a45..89f4180c0 100644 --- a/templates/repo/modelarts/inferencejob/new.tmpl +++ b/templates/repo/modelarts/inferencejob/new.tmpl @@ -90,7 +90,7 @@ Ascend NPU
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $}}
diff --git a/templates/repo/modelarts/inferencejob/show.tmpl b/templates/repo/modelarts/inferencejob/show.tmpl index 99deee551..14bb5cf24 100644 --- a/templates/repo/modelarts/inferencejob/show.tmpl +++ b/templates/repo/modelarts/inferencejob/show.tmpl @@ -266,9 +266,9 @@ td, th { {{if not (eq .StartTime 0)}} {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - {{end}} + {{else}} + -- + {{end}}
diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index c36a5b104..7d49ace86 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -246,14 +246,8 @@
- {{if not (eq .StartTime 0)}} - {{TimeSinceUnix1 .StartTime}} - {{else}} - {{TimeSinceUnix1 .CreatedUnix}} - - {{end}} + {{TimeSinceUnix1 .CreatedUnix}} - {{$.i18n.Tr "repo.modelarts.status"}}: - + {{$.i18n.Tr "repo.modelarts.train_job.dura_time"}} diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index 39f9f30f5..e89482dc2 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -118,7 +118,7 @@ Ascend NPU
- {{template "custom/wait_count_train" .}} + {{template "custom/wait_count_train" Dict "ctx" $}}
diff --git a/templates/repo/modelarts/trainjob/show.tmpl b/templates/repo/modelarts/trainjob/show.tmpl index 3936aa620..7a727cf4c 100755 --- a/templates/repo/modelarts/trainjob/show.tmpl +++ b/templates/repo/modelarts/trainjob/show.tmpl @@ -270,12 +270,14 @@ {{end}} {{if .CanDel}} - {{$.i18n.Tr "repo.stop"}} + data-jobid="{{.JobID}}" + data-repopath="{{$.RepoRelPath}}/modelarts/train-job" + data-version = "{{.VersionName}}" + >{{$.i18n.Tr "repo.stop"}} {{else}} - {{$.i18n.Tr "repo.stop"}} + {{$.i18n.Tr "repo.stop"}} {{end}} @@ -290,11 +292,8 @@
- {{if not (eq .Cloudbrain.StartTime 0)}} - {{TimeSinceUnix1 .Cloudbrain.StartTime}} - {{else}} {{TimeSinceUnix1 .Cloudbrain.CreatedUnix}} - {{end}} + {{$.i18n.Tr "repo.modelarts.current_version"}}:{{.VersionName}} @@ -308,10 +307,9 @@ class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}: {{.TrainJobDuration}} - - + + +
@@ -379,7 +377,7 @@ {{if not (eq .Cloudbrain.StartTime 0)}} {{TimeSinceUnix1 .Cloudbrain.StartTime}} {{else}} - {{TimeSinceUnix1 .Cloudbrain.CreatedUnix}} + -- {{end}}
@@ -877,28 +875,6 @@ $('#name').val(modelName) $('#version').val("0.0.1") } - function refreshStatus(version_name) { - $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}?version_name=${version_name}`, (data) => { - // header status and duration - $(`#${version_name}-duration-span`).text(data.JobDuration) - $(`#${version_name}-status-span span`).text(data.JobStatus) - $(`#${version_name}-status-span i`).attr("class", data.JobStatus) - // detail status and duration - $('#' + version_name + '-duration').text(data.JobDuration) - $('#' + version_name + '-status').text(data.JobStatus) - console.log(data) - if (["KILLED", "FAILED", "START_FAILED", "STOPPED", "COMPLETED"].includes(data.JobStatus)) { - $('#' + version_name + '-stop').addClass('disabled') - } - - loadLog(version_name) - - - }).fail(function (err) { - console.log(err); - }); - stopBubbling(arguments.callee.caller.arguments[0]) - } function deleteVersion(version_name) { stopBubbling(arguments.callee.caller.arguments[0]) let flag = 1; @@ -928,17 +904,7 @@ .modal('show') } - function stopVersion(version_name) { - stopBubbling(arguments.callee.caller.arguments[0]) - $.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/stop_version`, { version_name: version_name }, (data) => { - if (data.StatusOK === 0) { - $('#' + version_name + '-stop').addClass('disabled') - refreshStatus(version_name) - } - }).fail(function (err) { - console.log(err); - }); - } + function loadLog(version_name) { $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { $('input[name=end_line]').val(data.EndLine) diff --git a/web_src/js/features/cloudrbanin.js b/web_src/js/features/cloudrbanin.js index 86e9577b5..172e6b0bd 100644 --- a/web_src/js/features/cloudrbanin.js +++ b/web_src/js/features/cloudrbanin.js @@ -123,6 +123,7 @@ export default async function initCloudrain() { "KILLED", "COMPLETED", "SUCCEEDED", + "CREATE_FAILED", ].includes(status) ) { $("#ai-delete-" + ID) @@ -166,6 +167,7 @@ export default async function initCloudrain() { "START_FAILED", "SUCCEEDED", "STOPPED", + "CREATE_FAILED", ].includes(status) ) { return; @@ -177,6 +179,7 @@ export default async function initCloudrain() { "KILLING", "COMPLETED", "SUCCEEDED", + "CREATE_FAILED", "STOPPED", ]; $.get( @@ -327,6 +330,23 @@ export default async function initCloudrain() { }); } + $(".stop-show-version").click(function (e) { + const ID = this.dataset.jobid; + const repoPath = this.dataset.repopath; + const version_name = this.dataset.version; + const url = `/api/v1/repos/${repoPath}/${ID}/stop_version`; + $.post(url, { version_name: version_name }, (data) => { + if (data.StatusOK === 0) { + $(`#${version_name}-stop`).removeClass("blue"); + $(`#${version_name}-stop`).addClass("disabled"); + refreshStatusShow(version_name, ID, repoPath); + } + }).fail(function (err) { + console.log(err); + }); + e.stopPropagation(); + }); + $("#refresh-status").click(function (e) { let version_name = $(this).data("version"); let ID = $(`#accordion${version_name}`).data("jobid"); @@ -339,11 +359,16 @@ export default async function initCloudrain() { $.get( `/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, (data) => { + //accroding下的状态 $(`#${version_name}-status-span span`).text(data.JobStatus); + //accroding下的状态图标 $(`#${version_name}-status-span i`).attr("class", data.JobStatus); + //accroding下的运行时长 $(`#${version_name}-duration-span`).text(data.JobDuration); - $("#" + versionname + "-duration").text(data.JobDuration); - $("#" + versionname + "-status").text(data.JobStatus); + //配置信息详情页的状态 + $(`#${version_name}-status`).text(data.JobStatus); + //配置信息详情页的状态 + $(`#${version_name}-duration`).text(data.JobDuration); } ).fail(function (err) { console.log(err); @@ -363,6 +388,7 @@ export default async function initCloudrain() { "KILLED", "COMPLETED", "SUCCEEDED", + "CREATE_FAILED", ].includes(data.JobStatus) ) { $("#ai-delete-" + ID)