|
|
@@ -17,6 +17,7 @@ import ( |
|
|
|
|
|
|
|
|
"code.gitea.io/gitea/modules/dataset" |
|
|
"code.gitea.io/gitea/modules/dataset" |
|
|
|
|
|
|
|
|
|
|
|
"code.gitea.io/gitea/services/cloudbrain/cloudbrainTask" |
|
|
"code.gitea.io/gitea/services/cloudbrain/resource" |
|
|
"code.gitea.io/gitea/services/cloudbrain/resource" |
|
|
"code.gitea.io/gitea/services/reward/point/account" |
|
|
"code.gitea.io/gitea/services/reward/point/account" |
|
|
|
|
|
|
|
|
@@ -107,7 +108,7 @@ func jobNamePrefixValid(s string) string { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func cloudBrainNewDataPrepare(ctx *context.Context) error { |
|
|
|
|
|
|
|
|
func cloudBrainNewDataPrepare(ctx *context.Context, jobType string) error { |
|
|
ctx.Data["PageIsCloudBrain"] = true |
|
|
ctx.Data["PageIsCloudBrain"] = true |
|
|
t := time.Now() |
|
|
t := time.Now() |
|
|
var displayJobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] |
|
|
var displayJobName = jobNamePrefixValid(cutString(ctx.User.Name, 5)) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] |
|
|
@@ -148,6 +149,8 @@ func cloudBrainNewDataPrepare(ctx *context.Context) error { |
|
|
defaultMode = "alogrithm" |
|
|
defaultMode = "alogrithm" |
|
|
} |
|
|
} |
|
|
ctx.Data["benchmarkMode"] = defaultMode |
|
|
ctx.Data["benchmarkMode"] = defaultMode |
|
|
|
|
|
NotStopTaskCount, _ := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, jobType, models.GPUResource) |
|
|
|
|
|
ctx.Data["NotStopTaskCount"] = NotStopTaskCount |
|
|
|
|
|
|
|
|
if ctx.Cloudbrain != nil { |
|
|
if ctx.Cloudbrain != nil { |
|
|
ctx.Data["branch_name"] = ctx.Cloudbrain.BranchName |
|
|
ctx.Data["branch_name"] = ctx.Cloudbrain.BranchName |
|
|
@@ -210,7 +213,7 @@ func prepareCloudbrainOneSpecs(ctx *context.Context) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func CloudBrainNew(ctx *context.Context) { |
|
|
func CloudBrainNew(ctx *context.Context) { |
|
|
err := cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
err := cloudBrainNewDataPrepare(ctx, string(models.JobTypeDebug)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("get new cloudbrain info failed", err) |
|
|
ctx.ServerError("get new cloudbrain info failed", err) |
|
|
return |
|
|
return |
|
|
@@ -244,7 +247,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
if !isOk { |
|
|
if !isOk { |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -254,42 +257,42 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
if err == nil { |
|
|
if err == nil { |
|
|
if len(tasks) != 0 { |
|
|
if len(tasks) != 0 { |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeTrain) { |
|
|
if jobType != string(models.JobTypeBenchmark) && jobType != string(models.JobTypeDebug) && jobType != string(models.JobTypeTrain) { |
|
|
log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) |
|
|
log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("jobtype error", tpl, &form) |
|
|
ctx.RenderWithErr("jobtype error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) |
|
|
|
|
|
|
|
|
count, err := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, jobType, models.GPUResource) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} else { |
|
|
} else { |
|
|
if count >= 1 { |
|
|
if count >= 1 { |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -301,7 +304,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
datasetInfos, datasetNames, err = models.GetDatasetInfo(uuids) |
|
|
datasetInfos, datasetNames, err = models.GetDatasetInfo(uuids) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -312,7 +315,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
bootFileExist, err := ctx.Repo.FileExists(bootFile, branchName) |
|
|
bootFileExist, err := ctx.Repo.FileExists(bootFile, branchName) |
|
|
if err != nil || !bootFileExist { |
|
|
if err != nil || !bootFileExist { |
|
|
log.Error("Get bootfile error:", err, ctx.Data["MsgID"]) |
|
|
log.Error("Get bootfile error:", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_bootfile_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_bootfile_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -320,7 +323,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
commandTrain, err := getTrainJobCommand(form) |
|
|
commandTrain, err := getTrainJobCommand(form) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("getTrainJobCommand failed: %v", err) |
|
|
log.Error("getTrainJobCommand failed: %v", err) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -333,7 +336,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
} |
|
|
} |
|
|
errStr := loadCodeAndMakeModelPath(repo, codePath, branchName, jobName, cloudbrain.ModelMountPath) |
|
|
errStr := loadCodeAndMakeModelPath(repo, codePath, branchName, jobName, cloudbrain.ModelMountPath) |
|
|
if errStr != "" { |
|
|
if errStr != "" { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr(errStr), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr(errStr), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -346,14 +349,14 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
Cluster: models.OpenICluster, |
|
|
Cluster: models.OpenICluster, |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
if err != nil || spec == nil { |
|
|
if err != nil || spec == nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -396,7 +399,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
|
|
|
|
|
|
err = cloudbrain.GenerateTask(req) |
|
|
err = cloudbrain.GenerateTask(req) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -454,7 +457,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
if !isOk { |
|
|
if !isOk { |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -465,7 +468,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
command, err := getInferenceJobCommand(form) |
|
|
command, err := getInferenceJobCommand(form) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("getTrainJobCommand failed: %v", err) |
|
|
log.Error("getTrainJobCommand failed: %v", err) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -474,21 +477,21 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
if err == nil { |
|
|
if err == nil { |
|
|
if len(tasks) != 0 { |
|
|
if len(tasks) != 0 { |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -496,21 +499,21 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
bootFileExist, err := ctx.Repo.FileExists(bootFile, branchName) |
|
|
bootFileExist, err := ctx.Repo.FileExists(bootFile, branchName) |
|
|
if err != nil || !bootFileExist { |
|
|
if err != nil || !bootFileExist { |
|
|
log.Error("Get bootfile error:", err, ctx.Data["MsgID"]) |
|
|
log.Error("Get bootfile error:", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_bootfile_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_bootfile_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, jobType) |
|
|
|
|
|
|
|
|
count, err := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, jobType, models.GPUResource) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} else { |
|
|
} else { |
|
|
if count >= 1 { |
|
|
if count >= 1 { |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -521,7 +524,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
} |
|
|
} |
|
|
errStr := loadCodeAndMakeModelPath(repo, codePath, branchName, jobName, cloudbrain.ResultPath) |
|
|
errStr := loadCodeAndMakeModelPath(repo, codePath, branchName, jobName, cloudbrain.ResultPath) |
|
|
if errStr != "" { |
|
|
if errStr != "" { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr(errStr), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr(errStr), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -531,7 +534,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -541,13 +544,13 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
Cluster: models.OpenICluster, |
|
|
Cluster: models.OpenICluster, |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
if err != nil || spec == nil { |
|
|
if err != nil || spec == nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -582,7 +585,7 @@ func CloudBrainInferenceJobCreate(ctx *context.Context, form auth.CreateCloudBra |
|
|
|
|
|
|
|
|
err = cloudbrain.GenerateTask(req) |
|
|
err = cloudbrain.GenerateTask(req) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -682,7 +685,7 @@ func CloudBrainRestart(ctx *context.Context) { |
|
|
break |
|
|
break |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
count, err := models.GetCloudbrainCountByUserID(ctx.User.ID, string(models.JobTypeDebug)) |
|
|
|
|
|
|
|
|
count, err := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, string(models.JobTypeDebug), models.GPUResource) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
resultCode = "-1" |
|
|
resultCode = "-1" |
|
|
@@ -2222,7 +2225,7 @@ func CloudBrainBenchmarkNew(ctx *context.Context) { |
|
|
ctx.Data["description"] = "" |
|
|
ctx.Data["description"] = "" |
|
|
ctx.Data["benchmarkTypeID"] = -1 |
|
|
ctx.Data["benchmarkTypeID"] = -1 |
|
|
ctx.Data["benchmark_child_types_id_hidden"] = -1 |
|
|
ctx.Data["benchmark_child_types_id_hidden"] = -1 |
|
|
err := cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
err := cloudBrainNewDataPrepare(ctx, string(models.JobTypeBenchmark)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("get new cloudbrain info failed", err) |
|
|
ctx.ServerError("get new cloudbrain info failed", err) |
|
|
return |
|
|
return |
|
|
@@ -2327,6 +2330,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
benchmarkTypeID := form.BenchmarkTypeID |
|
|
benchmarkTypeID := form.BenchmarkTypeID |
|
|
benchmarkChildTypeID := form.BenchmarkChildTypeID |
|
|
benchmarkChildTypeID := form.BenchmarkChildTypeID |
|
|
repo := ctx.Repo.Repository |
|
|
repo := ctx.Repo.Repository |
|
|
|
|
|
jobType := form.JobType |
|
|
|
|
|
|
|
|
ctx.Data["description"] = form.Description |
|
|
ctx.Data["description"] = form.Description |
|
|
ctx.Data["benchmarkTypeID"] = benchmarkTypeID |
|
|
ctx.Data["benchmarkTypeID"] = benchmarkTypeID |
|
|
@@ -2336,31 +2340,31 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
if !isOk { |
|
|
if !isOk { |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
defer lock.UnLock() |
|
|
defer lock.UnLock() |
|
|
|
|
|
|
|
|
tasks, err := models.GetCloudbrainsByDisplayJobName(repo.ID, string(models.JobTypeBenchmark), displayJobName) |
|
|
|
|
|
|
|
|
tasks, err := models.GetCloudbrainsByDisplayJobName(repo.ID, jobType, displayJobName) |
|
|
if err == nil { |
|
|
if err == nil { |
|
|
if len(tasks) != 0 { |
|
|
if len(tasks) != 0 { |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("the job name did already exist", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("the job name did already exist", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !jobNamePattern.MatchString(jobName) { |
|
|
if !jobNamePattern.MatchString(jobName) { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2368,7 +2372,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
childInfo, err := getBenchmarkAttachment(benchmarkTypeID, benchmarkChildTypeID, ctx) |
|
|
childInfo, err := getBenchmarkAttachment(benchmarkTypeID, benchmarkChildTypeID, ctx) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("getBenchmarkAttachment failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("getBenchmarkAttachment failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("benchmark type error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("benchmark type error", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2379,27 +2383,27 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
Cluster: models.OpenICluster, |
|
|
Cluster: models.OpenICluster, |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
if err != nil || spec == nil { |
|
|
if err != nil || spec == nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("Resource specification not available", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("Resource specification not available", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
count, err := models.GetBenchmarkCountByUserID(ctx.User.ID) |
|
|
|
|
|
|
|
|
count, err := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, jobType, models.GPUResource) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} else { |
|
|
} else { |
|
|
if count >= 1 { |
|
|
if count >= 1 { |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2408,7 +2412,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
os.RemoveAll(codePath) |
|
|
os.RemoveAll(codePath) |
|
|
if err := downloadCode(repo, codePath, cloudbrain.DefaultBranchName); err != nil { |
|
|
if err := downloadCode(repo, codePath, cloudbrain.DefaultBranchName); err != nil { |
|
|
log.Error("downloadCode failed, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("downloadCode failed, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2417,11 +2421,11 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
if os.IsNotExist(err) { |
|
|
if os.IsNotExist(err) { |
|
|
// file does not exist |
|
|
// file does not exist |
|
|
log.Error("train.py does not exist, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("train.py does not exist, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("train.py does not exist", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("train.py does not exist", tplCloudBrainBenchmarkNew, &form) |
|
|
} else { |
|
|
} else { |
|
|
log.Error("Stat failed, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("Stat failed, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
} |
|
|
} |
|
|
return |
|
|
return |
|
|
@@ -2429,11 +2433,11 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
if os.IsNotExist(err) { |
|
|
if os.IsNotExist(err) { |
|
|
// file does not exist |
|
|
// file does not exist |
|
|
log.Error("test.py does not exist, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("test.py does not exist, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("test.py does not exist", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("test.py does not exist", tplCloudBrainBenchmarkNew, &form) |
|
|
} else { |
|
|
} else { |
|
|
log.Error("Stat failed, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("Stat failed, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
} |
|
|
} |
|
|
return |
|
|
return |
|
|
@@ -2441,7 +2445,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
|
|
|
|
|
|
if err := uploadCodeToMinio(codePath+"/", jobName, cloudbrain.CodeMountPath+"/"); err != nil { |
|
|
if err := uploadCodeToMinio(codePath+"/", jobName, cloudbrain.CodeMountPath+"/"); err != nil { |
|
|
log.Error("uploadCodeToMinio failed, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("uploadCodeToMinio failed, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr("system error", tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2466,7 +2470,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2500,7 +2504,7 @@ func BenchMarkAlgorithmCreate(ctx *context.Context, form auth.CreateCloudBrainFo |
|
|
|
|
|
|
|
|
err = cloudbrain.GenerateTask(req) |
|
|
err = cloudbrain.GenerateTask(req) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tplCloudBrainBenchmarkNew, &form) |
|
|
ctx.RenderWithErr(err.Error(), tplCloudBrainBenchmarkNew, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2526,7 +2530,7 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
isOk, err := lock.Lock(models.CloudbrainKeyDuration) |
|
|
if !isOk { |
|
|
if !isOk { |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("lock processed failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_samejob_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2536,42 +2540,42 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) |
|
|
if err == nil { |
|
|
if err == nil { |
|
|
if len(tasks) != 0 { |
|
|
if len(tasks) != 0 { |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
log.Error("the job name did already exist", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
ctx.RenderWithErr("the job name did already exist", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
if !models.IsErrJobNotExist(err) { |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("system error, %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
if !jobNamePattern.MatchString(displayJobName) { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain_jobname_err"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if jobType != string(models.JobTypeSnn4imagenet) && jobType != string(models.JobTypeBrainScore) { |
|
|
if jobType != string(models.JobTypeSnn4imagenet) && jobType != string(models.JobTypeBrainScore) { |
|
|
log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) |
|
|
log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("jobtype error", tpl, &form) |
|
|
ctx.RenderWithErr("jobtype error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
count, err := models.GetBenchmarkCountByUserID(ctx.User.ID) |
|
|
|
|
|
|
|
|
count, err := cloudbrainTask.GetNotFinalStatusTaskCount(ctx.User.ID, models.TypeCloudBrainOne, jobType, models.GPUResource) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetCloudbrainCountByUserID failed:%v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
ctx.RenderWithErr("system error", tpl, &form) |
|
|
return |
|
|
return |
|
|
} else { |
|
|
} else { |
|
|
if count >= 1 { |
|
|
if count >= 1 { |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
log.Error("the user already has running or waiting task", ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2603,7 +2607,7 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2613,14 +2617,14 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) |
|
|
Cluster: models.OpenICluster, |
|
|
Cluster: models.OpenICluster, |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
AiCenterCode: models.AICenterOfCloudBrainOne}) |
|
|
if err != nil || spec == nil { |
|
|
if err != nil || spec == nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
ctx.RenderWithErr("Resource specification not available", tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
if !account.IsPointBalanceEnough(ctx.User.ID, spec.UnitPrice) { |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
log.Error("point balance is not enough,userId=%d specId=%d", ctx.User.ID, spec.ID) |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
ctx.RenderWithErr(ctx.Tr("points.insufficient_points_balance"), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2654,7 +2658,7 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) |
|
|
|
|
|
|
|
|
err = cloudbrain.GenerateTask(req) |
|
|
err = cloudbrain.GenerateTask(req) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
cloudBrainNewDataPrepare(ctx, jobType) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
ctx.RenderWithErr(err.Error(), tpl, &form) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
@@ -2701,7 +2705,7 @@ func CloudBrainTrainJobVersionNew(ctx *context.Context) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func cloudBrainTrainJobCreate(ctx *context.Context) { |
|
|
func cloudBrainTrainJobCreate(ctx *context.Context) { |
|
|
err := cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
err := cloudBrainNewDataPrepare(ctx, string(models.JobTypeTrain)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("get new train-job info failed", err) |
|
|
ctx.ServerError("get new train-job info failed", err) |
|
|
return |
|
|
return |
|
|
@@ -2710,7 +2714,7 @@ func cloudBrainTrainJobCreate(ctx *context.Context) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func InferenceCloudBrainJobNew(ctx *context.Context) { |
|
|
func InferenceCloudBrainJobNew(ctx *context.Context) { |
|
|
err := cloudBrainNewDataPrepare(ctx) |
|
|
|
|
|
|
|
|
err := cloudBrainNewDataPrepare(ctx, string(models.JobTypeInference)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("get new train-job info failed", err) |
|
|
ctx.ServerError("get new train-job info failed", err) |
|
|
return |
|
|
return |
|
|
|