Browse Source

fix-bug

tags/V1.22.3.1^2
liuzx 3 years ago
parent
commit
bafe77ae7c
5 changed files with 83 additions and 57 deletions
  1. +1
    -0
      modules/auth/modelarts.go
  2. +2
    -25
      modules/modelarts/modelarts.go
  3. +76
    -28
      routers/repo/modelarts.go
  4. +3
    -3
      templates/repo/modelarts/inferencejob/new.tmpl
  5. +1
    -1
      templates/repo/modelarts/trainjob/new.tmpl

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

@@ -48,6 +48,7 @@ type CreateModelArtsTrainJobForm struct {
} }


type CreateModelArtsInferenceJobForm struct { type CreateModelArtsInferenceJobForm struct {
DisplayJobName string `form:"display_job_name" binding:"Required"`
JobName string `form:"job_name" binding:"Required"` JobName string `form:"job_name" binding:"Required"`
Attachment string `form:"attachment" binding:"Required"` Attachment string `form:"attachment" binding:"Required"`
BootFile string `form:"boot_file" binding:"Required"` BootFile string `form:"boot_file" binding:"Required"`


+ 2
- 25
modules/modelarts/modelarts.go View File

@@ -96,33 +96,9 @@ type GenerateTrainJobReq struct {
TotalVersionCount int TotalVersionCount int
} }


type GenerateTrainJobVersionReq struct {
JobName string
Uuid string
Description string
CodeObsPath string
BootFile string
BootFileUrl string
DataUrl string
TrainUrl string
FlavorCode string
LogUrl string
PoolID string
WorkServerNumber int
EngineID int64
Parameters []models.Parameter
Params string
PreVersionId int64
CommitID string
BranchName string
FlavorName string
EngineName string
PreVersionName string
TotalVersionCount int
}

type GenerateInferenceJobReq struct { type GenerateInferenceJobReq struct {
JobName string JobName string
DisplayJobName string
Uuid string Uuid string
Description string Description string
CodeObsPath string CodeObsPath string
@@ -577,6 +553,7 @@ func GenerateInferenceJob(ctx *context.Context, req *GenerateInferenceJobReq) (e
RepoID: ctx.Repo.Repository.ID, RepoID: ctx.Repo.Repository.ID,
JobID: jobID, JobID: jobID,
JobName: req.JobName, JobName: req.JobName,
DisplayJobName: req.DisplayJobName,
JobType: string(models.JobTypeInference), JobType: string(models.JobTypeInference),
Type: models.TypeCloudBrainTwo, Type: models.TypeCloudBrainTwo,
VersionID: jobResult.VersionID, VersionID: jobResult.VersionID,


+ 76
- 28
routers/repo/modelarts.go View File

@@ -46,22 +46,6 @@ const (
) )


func DebugJobIndex(ctx *context.Context) { func DebugJobIndex(ctx *context.Context) {
//到任务首页时将DisplayJobName更新,
allTasks, count, err := models.Cloudbrains(&models.CloudbrainsOptions{})
if err != nil {
ctx.ServerError("Get allTasks faild:", err)
return
}
for i, task := range allTasks {
if task.Cloudbrain.DisplayJobName == "" {
task.Cloudbrain.DisplayJobName = allTasks[i].Cloudbrain.JobName
err = models.UpdateDisplayJobName(&allTasks[i].Cloudbrain)
if err != nil {
log.Error("Update DisplayJobName failed:", err)
}
}
}

debugListType := ctx.Query("debugListType") debugListType := ctx.Query("debugListType")
ctx.Data["ListType"] = debugListType ctx.Data["ListType"] = debugListType
MustEnableCloudbrain(ctx) MustEnableCloudbrain(ctx)
@@ -608,8 +592,8 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts
//} //}


t := time.Now() t := time.Now()
var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
ctx.Data["job_name"] = jobName
var displayJobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:]
ctx.Data["display_job_name"] = displayJobName


attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID) attachs, err := models.GetModelArtsTrainAttachments(ctx.User.ID)
if err != nil { if err != nil {
@@ -646,8 +630,8 @@ func trainJobErrorNewDataPrepare(ctx *context.Context, form auth.CreateModelArts
} }
ctx.Data["flavor_infos"] = flavorInfos.Info ctx.Data["flavor_infos"] = flavorInfos.Info


outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath
ctx.Data["train_url"] = outputObsPath
// outputObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.OutputPath
// ctx.Data["train_url"] = outputObsPath


configList, err := getConfigList(modelarts.PerPage, 1, modelarts.SortByCreateTime, "desc", "", modelarts.ConfigTypeCustom) configList, err := getConfigList(modelarts.PerPage, 1, modelarts.SortByCreateTime, "desc", "", modelarts.ConfigTypeCustom)
if err != nil { if err != nil {
@@ -886,6 +870,44 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm)
VersionCount := modelarts.VersionCount VersionCount := modelarts.VersionCount
EngineName := form.EngineName EngineName := form.EngineName


if err := paramCheckCreateTrainJob(form); err != nil {
log.Error("paramCheckCreateTrainJob failed:(%v)", err)
trainJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form)
return
}

//判断项目内任务名称是否重复
var jobTypes []string
jobTypes = append(jobTypes, string(models.JobTypeTrain))
tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{
ListOptions: models.ListOptions{
PageSize: setting.UI.IssuePagingNum,
},
RepoID: repo.ID,
Type: models.TypeCloudBrainTwo,
JobTypeNot: false,
JobTypes: jobTypes,
IsLatestVersion: modelarts.IsLatestVersion,
})
if err == nil {
for _, task := range tasks {
if strings.EqualFold(task.JobName, displayJobName) {
log.Error("the job name did already exist", ctx.Data["MsgID"])
trainJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsTrainJobNew, &form)
return
}
}
} else {
if !models.IsErrJobNotExist(err) {
log.Error("system error, %v", err, ctx.Data["MsgID"])
trainJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr("system error", tplModelArtsTrainJobNew, &form)
return
}
}

count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID) count, err := models.GetCloudbrainTrainJobCountByUserID(ctx.User.ID)
if err != nil { if err != nil {
log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) log.Error("GetCloudbrainTrainJobCountByUserID failed:%v", err, ctx.Data["MsgID"])
@@ -901,13 +923,6 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm)
} }
} }


if err := paramCheckCreateTrainJob(form); err != nil {
log.Error("paramCheckCreateTrainJob failed:(%v)", err)
trainJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form)
return
}

//todo: del the codeLocalPath //todo: del the codeLocalPath
_, err = ioutil.ReadDir(codeLocalPath) _, err = ioutil.ReadDir(codeLocalPath)
if err == nil { if err == nil {
@@ -1677,7 +1692,8 @@ func getConfigList(perPage, page int, sortBy, order, searchContent, configType s
func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInferenceJobForm) { func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInferenceJobForm) {
ctx.Data["PageIsTrainJob"] = true ctx.Data["PageIsTrainJob"] = true
VersionOutputPath := modelarts.GetOutputPathByCount(modelarts.TotalVersionCount) VersionOutputPath := modelarts.GetOutputPathByCount(modelarts.TotalVersionCount)
jobName := form.JobName
displayJobName := form.DisplayJobName
jobName := util.ConvertDisplayJobNameToJobName(displayJobName)
uuid := form.Attachment uuid := form.Attachment
description := form.Description description := form.Description
workServerNumber := form.WorkServerNumber workServerNumber := form.WorkServerNumber
@@ -1712,6 +1728,37 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference
return return
} }


//判断项目内任务名称是否重复
var jobTypes []string
jobTypes = append(jobTypes, string(models.JobTypeTrain))
tasks, _, err := models.Cloudbrains(&models.CloudbrainsOptions{
ListOptions: models.ListOptions{
PageSize: setting.UI.IssuePagingNum,
},
RepoID: repo.ID,
Type: models.TypeCloudBrainTwo,
JobTypeNot: false,
JobTypes: jobTypes,
IsLatestVersion: modelarts.IsLatestVersion,
})
if err == nil {
for _, task := range tasks {
if strings.EqualFold(task.JobName, displayJobName) {
log.Error("the job name did already exist", ctx.Data["MsgID"])
inferenceJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr("任务名称已经被使用!", tplModelArtsInferenceJobNew, &form)
return
}
}
} else {
if !models.IsErrJobNotExist(err) {
log.Error("system error, %v", err, ctx.Data["MsgID"])
inferenceJobErrorNewDataPrepare(ctx, form)
ctx.RenderWithErr("system error", tplModelArtsInferenceJobNew, &form)
return
}
}

count, err := models.GetCloudbrainInferenceJobCountByUserID(ctx.User.ID) count, err := models.GetCloudbrainInferenceJobCountByUserID(ctx.User.ID)
if err != nil { if err != nil {
log.Error("GetCloudbrainInferenceJobCountByUserID failed:%v", err, ctx.Data["MsgID"]) log.Error("GetCloudbrainInferenceJobCountByUserID failed:%v", err, ctx.Data["MsgID"])
@@ -1798,6 +1845,7 @@ func InferenceJobCreate(ctx *context.Context, form auth.CreateModelArtsInference


req := &modelarts.GenerateInferenceJobReq{ req := &modelarts.GenerateInferenceJobReq{
JobName: jobName, JobName: jobName,
DisplayJobName: displayJobName,
DataUrl: dataPath, DataUrl: dataPath,
Description: description, Description: description,
CodeObsPath: codeObsPath, CodeObsPath: codeObsPath,


+ 3
- 3
templates/repo/modelarts/inferencejob/new.tmpl View File

@@ -67,7 +67,7 @@
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> <h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4>
<div class="required unite min_title inline field"> <div class="required unite min_title inline field">
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> <label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label>
<input style="width: 60%;" name="job_name" id="trainjob_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.job_name}}" onkeyup="this.value=this.value.replace(/[, ]/g,'')" tabindex="3" autofocus required maxlength="64">
<input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" onkeyup="this.value=this.value.replace(/[, ]/g,'')" tabindex="3" autofocus required maxlength="64">
<span class="tooltips" style="display: block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> <span class="tooltips" style="display: block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span>
</div> </div>
@@ -414,8 +414,8 @@
} }
] ]
}, },
job_name:{
identifier : 'job_name',
display_job_name:{
identifier : 'display_job_name',
rules: [ rules: [
{ {
type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]', type: 'regExp[/^[a-zA-Z0-9-_]{1,64}[^-]$/]',


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

@@ -80,7 +80,7 @@
<h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4> <h4 class="unite title ui header ">{{.i18n.Tr "repo.modelarts.train_job.basic_info"}}:</h4>
<div class="required unite min_title inline field"> <div class="required unite min_title inline field">
<label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> <label style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label>
<input style="width: 60%;" name="display_job_name" id="job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64">
<input style="width: 60%;" name="display_job_name" id="display_job_name" placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" tabindex="3" onkeyup="this.value=this.value.replace(/[, ]/g,'')" autofocus required maxlength="64">
<span class="tooltips" style="display: block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span> <span class="tooltips" style="display: block;">请输入字母、数字、_和-,最长64个字符,且不能以中划线(-)结尾。</span>
</div> </div>


Loading…
Cancel
Save