| @@ -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:"-"` | |||
| @@ -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 { | |||
| @@ -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, | |||
| @@ -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() { | |||