@@ -69,6 +69,7 @@ type CreateCloudBrainInferencForm struct { | |||
ModelName string `form:"model_name" binding:"Required"` | |||
ModelVersion string `form:"model_version" 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 { | |||
@@ -78,6 +78,7 @@ type GenerateCloudBrainTaskReq struct { | |||
ModelName string | |||
ModelVersion string | |||
CkptName string | |||
LabelName string | |||
} | |||
func GetCloudbrainDebugCommand() string { | |||
@@ -400,6 +401,7 @@ func GenerateTask(req GenerateCloudBrainTaskReq) error { | |||
ModelVersion: req.ModelVersion, | |||
CkptName: req.CkptName, | |||
ResultUrl: req.ResultPath, | |||
LabelName: req.LabelName, | |||
CreatedUnix: createTime, | |||
UpdatedUnix: createTime, | |||
CommitID: req.CommitID, | |||
@@ -157,15 +157,15 @@ func DelCloudBrainJob(ctx *context.APIContext) { | |||
if errStr != "" { | |||
ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
"message": ctx.Tr(errStr), | |||
"Message": ctx.Tr(errStr), | |||
"VersionName": "1", | |||
"code": 1, | |||
"Code": 1, | |||
}) | |||
} else { | |||
ctx.JSON(http.StatusOK, map[string]interface{}{ | |||
"message": "", | |||
"Message": "", | |||
"VersionName": "1", | |||
"code": 0, | |||
"Code": 0, | |||
}) | |||
} | |||
@@ -380,6 +380,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra | |||
codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath | |||
resourceSpecId := form.ResourceSpecId | |||
branchName := form.BranchName | |||
labelName := form.LabelName | |||
repo := ctx.Repo.Repository | |||
ckptUrl := setting.Attachment.Minio.RealPath + form.TrainUrl + form.CkptName | |||
@@ -475,6 +476,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra | |||
ModelVersion: form.ModelVersion, | |||
CkptName: form.CkptName, | |||
TrainUrl: form.TrainUrl, | |||
LabelName: labelName, | |||
} | |||
err = cloudbrain.GenerateTask(req) | |||
@@ -830,6 +832,8 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo | |||
} | |||
ctx.Data["task"] = task | |||
labelName := strings.Fields(task.LabelName) | |||
ctx.Data["LabelName"] = labelName | |||
ctx.Data["jobName"] = task.JobName | |||
ctx.Data["displayJobName"] = task.DisplayJobName | |||
version_list_task := make([]*models.Cloudbrain, 0) | |||
@@ -266,7 +266,7 @@ | |||
onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a> | |||
<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 class="ui tab active" data-tab="first" style="height:400px"> | |||
<div style="padding-top: 10px;"> | |||
@@ -420,9 +420,8 @@ | |||
<td class="ti-text-form-content"> | |||
<div class="text-span text-span-w" id="{{.VersionName}}-labels"> | |||
{{if .LabelName}} | |||
{{range $.labelName}} | |||
{{range $.LabelName}} | |||
<a class="ui label" title="{{.}}">{{.}}</a> | |||
{{end}} | |||
{{else}} | |||
@@ -288,7 +288,7 @@ | |||
onclick="javascript:parseInfo()">{{$.i18n.Tr "repo.cloudbrain.runinfo"}}</a> | |||
<a class="item" data-tab="third{{$k}}" | |||
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 class="ui tab active" data-tab="first{{$k}}"> | |||
<div style="padding-top: 10px;"> | |||
@@ -298,7 +298,7 @@ | |||
data-tab="first{{$k}}">{{$.i18n.Tr "repo.modelarts.train_job.config"}}</a> | |||
<a class="item" data-tab="second{{$k}}" | |||
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 class="ui tab active" data-tab="first{{$k}}"> | |||
<div style="padding-top: 10px;"> | |||
@@ -214,7 +214,7 @@ td, th { | |||
<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 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 class="ui tab active" data-tab="first" style="height:400px"> | |||
@@ -451,10 +451,10 @@ td, th { | |||
<div class="ui tab" data-tab="second"> | |||
<div> | |||
<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}}"> | |||
<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> | |||
</div> | |||
@@ -507,7 +507,7 @@ td, th { | |||
</div> | |||
{{template "base/footer" .}} | |||
<script> | |||
console.log('{{.CanModify}}') | |||
console.log('{{$.canDownload}}') | |||
$(document).ready(function(){ | |||
$('.secondary.menu .item').tab(); | |||
}); | |||
@@ -327,7 +327,7 @@ | |||
<a class="item log_bottom" data-tab="second{{$k}}" | |||
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 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 class="ui tab active" data-tab="first{{$k}}"> | |||
<div style="padding-top: 10px;"> | |||
@@ -16,7 +16,6 @@ export default async function initCloudrainSow() { | |||
function logScroll(version_name) { | |||
let container = document.querySelector(`#log${version_name}`); | |||
console.log(container); | |||
let scrollTop = container.scrollTop; | |||
let scrollHeight = container.scrollHeight; | |||
let clientHeight = container.clientHeight; | |||
@@ -161,17 +160,17 @@ export default async function initCloudrainSow() { | |||
// | |||
$(".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 parents = $(this).data("parents") || ""; | |||
let filename = $(this).data("filename") || ""; | |||
let init = $(this).data("init") || ""; | |||
let path = $(this).data("path"); | |||
let url = `/api/v1/repos${path}?version_name=${version_name}&parentDir=${parents}`; | |||
console.log(url); | |||
$.get(url, (data) => { | |||
$(`#dir_list${version_name}`).empty(); | |||
renderDir(path, data, version_name); | |||
renderDir(path, data, version_name, downloadFlag, gpuFlag); | |||
if (init === "init") { | |||
$(`input[name=model${version_name}]`).val(""); | |||
$(`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 = ""; | |||
html += "<div class='ui grid' style='margin:0;'>"; | |||
html += "<div class='row' style='padding: 0;'>"; | |||
@@ -274,8 +273,20 @@ export default async function initCloudrainSow() { | |||
data.Dirs[i].FileName + | |||
"</span>"; | |||
} else { | |||
if (downlaodFlag) { | |||
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 { | |||
html += `<a class="disabled">`; | |||
} | |||
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》