diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 81c3df2af..90b2433ad 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -83,6 +83,7 @@ type Cloudbrain struct { type TrainjobConfigDetail struct { ID int64 `xorm:"pk autoincr"` + JobID string `xorm:"INDEX"` JobName string `xorm:"INDEX"` ResourcePools string `xorm:"INDEX"` EngineVersions int `xorm:"INDEX"` @@ -93,6 +94,7 @@ type TrainjobConfigDetail struct { DatasetName string `xorm:"INDEX"` Params string `xorm:"INDEX"` BranchName string `xorm:"INDEX"` + VersionName string `xorm:"INDEX"` User *User `xorm:"-"` Repo *Repository `xorm:"-"` diff --git a/modules/modelarts/modelarts.go b/modules/modelarts/modelarts.go index fcf1e8829..f75bf571b 100755 --- a/modules/modelarts/modelarts.go +++ b/modules/modelarts/modelarts.go @@ -192,7 +192,7 @@ func GenerateTask(ctx *context.Context, jobName, uuid, description string) error return nil } -func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) error { +func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) (jobresult *models.CreateTrainJobResult, err error) { jobResult, err := createTrainJob(models.CreateTrainJobParams{ JobName: req.JobName, Description: req.Description, @@ -214,13 +214,13 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) error { }) if err != nil { log.Error("CreateJob failed: %v", err.Error()) - return err + return nil, err } attach, err := models.GetAttachmentByUUID(req.Uuid) if err != nil { log.Error("GetAttachmentByUUID(%s) failed:%v", strconv.FormatInt(jobResult.JobID, 10), err.Error()) - return nil + return nil, err } err = models.CreateCloudbrain(&models.Cloudbrain{ @@ -241,13 +241,13 @@ func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) error { if err != nil { log.Error("CreateCloudbrain(%s) failed:%v", req.JobName, err.Error()) - return err + return nil, err } - return nil + return jobResult, nil } -func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionReq, jobId string) error { +func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionReq, jobId string) (jobresult *models.CreateTrainJobResult, err error) { jobResult, err := createTrainJobVersion(models.CreateTrainJobVersionParams{ Description: req.Description, Config: models.TrainJobVersionConfig{ @@ -268,13 +268,13 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR }, jobId) if err != nil { log.Error("CreateJob failed: %v", err.Error()) - return err + return nil, err } attach, err := models.GetAttachmentByUUID(req.Uuid) if err != nil { log.Error("GetAttachmentByUUID(%s) failed:%v", strconv.FormatInt(jobResult.JobID, 10), err.Error()) - return nil + return nil, err } err = models.CreateCloudbrain(&models.Cloudbrain{ @@ -293,7 +293,7 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR }) if err != nil { log.Error("CreateCloudbrain(%s) failed:%v", req.JobName, err.Error()) - return err + return nil, err } repo := ctx.Repo.Repository @@ -313,14 +313,14 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR }) if err != nil { ctx.ServerError("Cloudbrain", err) - return nil + return nil, err } //将训练任务的上一版本的isLatestVersion设置为"0" latestTask, err := models.GetCloudbrainByJobIDAndIsLatestVersion(strconv.FormatInt(jobResult.JobID, 10), IsLatestVersion) if err != nil { ctx.ServerError("GetCloudbrainByJobIDAndIsLatestVersion faild:", err) - return nil + return nil, err } // lastVersionNum := jobResult.VersionName[1:] @@ -333,17 +333,17 @@ func GenerateTrainJobVersion(ctx *context.Context, req *GenerateTrainJobVersionR err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(strconv.FormatInt(jobResult.JobID, 10), latestTask.VersionName, VersionListCount, NotLatestVersion) if err != nil { ctx.ServerError("UpdateJobVersionCount failed", err) - return nil + return nil, err } //将当前版本的isLatestVersion和任务数量更新 err = models.SetVersionCountAndLatestVersionByJobIDAndVersionName(strconv.FormatInt(jobResult.JobID, 10), jobResult.VersionName, VersionListCount, IsLatestVersion) if err != nil { ctx.ServerError("UpdateJobVersionCount failed", err) - return nil + return nil, err } - return nil + return jobResult, err } func TransTrainJobStatus(status int) string { diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index be6b635bc..28b66e59e 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -850,7 +850,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) IsLatestVersion: isLatestVersion, } - err = modelarts.GenerateTrainJob(ctx, req) + jobResult, err := modelarts.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) trainJobNewDataPrepare(ctx) @@ -862,6 +862,34 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) return } + // 保存openi创建训练任务界面的参数 + err = models.CreateTrainjobConfigDetail(&models.TrainjobConfigDetail{ + + JobName: req.JobName, + JobID: strconv.FormatInt(jobResult.JobID, 10), + VersionName: jobResult.VersionName, + ResourcePools: form.PoolID, + EngineVersions: form.EngineID, + FlavorInfos: form.Flavor, + TrainUrl: outputObsPath, + BootFile: form.BootFile, + Uuid: form.Attachment, + DatasetName: attach.Name, + Params: form.Params, + BranchName: branch_name, + }) + + if err != nil { + log.Error("CreateTrainjobConfigDetail failed:%v", err.Error()) + trainJobNewVersionDataPrepare(ctx) + ctx.Data["bootFile"] = form.BootFile + ctx.Data["uuid"] = form.Attachment + ctx.Data["datasetName"] = attach.Name + ctx.Data["params"] = form.Params + ctx.Data["branch_name"] = branch_name + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobVersionNew, &form) + return + } ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/train-job") } @@ -869,8 +897,8 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ ctx.Data["PageIsTrainJob"] = true var jobID = ctx.Params(":jobid") var versionName = ctx.Query("versionName") - jobID = "19373" - versionName = "V0009" + // jobID = "19373" + // versionName = "V0009" jobName := form.JobName uuid := form.Attachment @@ -1038,7 +1066,7 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ PreVersionId: task.VersionID, CommitID: commitID, } - err = modelarts.GenerateTrainJobVersion(ctx, req, jobID) + jobResult, err := modelarts.GenerateTrainJobVersion(ctx, req, jobID) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) trainJobNewVersionDataPrepare(ctx) @@ -1053,6 +1081,8 @@ func TrainJobCreateVersion(ctx *context.Context, form auth.CreateModelArtsTrainJ err = models.CreateTrainjobConfigDetail(&models.TrainjobConfigDetail{ JobName: req.JobName, + JobID: strconv.FormatInt(jobResult.JobID, 10), + VersionName: jobResult.VersionName, ResourcePools: form.PoolID, EngineVersions: form.EngineID, FlavorInfos: form.Flavor, diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 37807cf31..c3dde2274 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -962,16 +962,6 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoRef()) m.Group("/modelarts", func() { - // m.Get("", reqRepoCloudBrainReader, repo.ModelArtsIndex) - // m.Group("/:jobid", func() { - // m.Get("", reqRepoCloudBrainReader, repo.ModelArtsShow) - // m.Get("/debug", reqRepoCloudBrainReader, repo.ModelArtsDebug) - // m.Post("/stop", reqRepoCloudBrainWriter, repo.ModelArtsStop) - // m.Post("/del", reqRepoCloudBrainWriter, repo.ModelArtsDel) - // }) - // m.Get("/create", reqRepoCloudBrainWriter, repo.ModelArtsNew) - // m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsForm{}), repo.ModelArtsCreate) - m.Group("/notebook", func() { m.Get("", reqRepoCloudBrainReader, repo.NotebookIndex) m.Group("/:jobid", func() {