diff --git a/modules/normalization/normalization.go b/modules/normalization/normalization.go index c2b545f90..ce616d7f8 100644 --- a/modules/normalization/normalization.go +++ b/modules/normalization/normalization.go @@ -43,7 +43,7 @@ func GetCompleteInitValue(issuesClosed int64, releases int64, developAge int64, return setting.RadarMap.CompletenessIssuesClosed*float64(issuesClosed) + setting.RadarMap.CompletenessReleases*float64(releases) + setting.RadarMap.CompletenessDevelopAge*float64(developAge) + - setting.RadarMap.CompletenessDataset*float64(dataset/(1024*1024)) + + setting.RadarMap.CompletenessDataset*(float64(dataset)/(1024*1024)) + setting.RadarMap.CompletenessModel*float64(model) + setting.RadarMap.CompletenessWiki*float64(wiki) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 18ca21925..ff0cfedea 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -755,6 +755,15 @@ unit_disabled = The site administrator has disabled this repository section. language_other = Other datasets = Datasets datasets.desc = Enable Dataset + +debug=Debug +stop=Stop +delete=Delete +model_download=Model Download +submit_image=Submit Image +download=Download + + cloudbrain=cloudbrain cloudbrain.new=New cloudbrain cloudbrain.desc=cloudbrain @@ -777,15 +786,21 @@ cloudbrain_status_createtime = Status/Createtime cloudbrain_status_runtime = Running Time -modelarts.notebook=Debug Job -modelarts.train_job=Create Job -modelarts.train_job.new=New Job +modelarts.notebook=Debug Task +modelarts.train_job=Create Task +modelarts.train_job.new_debug= New Debug Task +modelarts.train_job.new_train=New Train Task +modelarts.train_job.config=Configuration information +modelarts.train_job.new=New train Task + + + modelarts.train_job.basic_info=Basic Info modelarts.train_job.job_status=Job Status modelarts.train_job.job_name=Job Name modelarts.train_job.version=Job Version modelarts.train_job.start_time=Start Time -modelarts.train_job.dura_time=Duration Time +modelarts.train_job.dura_time=Running Time modelarts.train_job.description=Description modelarts.train_job.parameter_setting=Parameter setting modelarts.train_job.parameter_setting_info=Parameter Info @@ -795,7 +810,7 @@ modelarts.train_job.fast_parameter_setting_config_link=fast_parameter_setting_co modelarts.train_job.frames=frames modelarts.train_job.algorithm_origin=算法来源 modelarts.train_job.AI_driver=AI Engine -modelarts.train_job.start_file=启动文件 +modelarts.train_job.start_file=Start File modelarts.train_job.boot_file_helper=启动文件是您程序执行的入口文件,必须是以.py结尾的文件。 modelarts.train_job.dataset=Dataset modelarts.train_job.run_parameter=Run Parameter diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 8ac895ec9..d6ac9f870 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -757,6 +757,14 @@ unit_disabled=站点管理员已禁用此项目单元。 language_other=其它 datasets=数据集 datasets.desc=数据集功能 + +debug=调试 +stop=停止 +delete=删除 +model_download=模型下载 +submit_image=提交镜像 +download=模型下载 + cloudbrain=云脑 cloudbrain.new=新建任务 cloudbrain.desc=云脑功能 @@ -779,15 +787,21 @@ cloudbrain_status_createtime=状态/创建时间 cloudbrain_status_runtime = 运行时长 cloudbrain_jobname_err=只能以小写字母或数字开头且只包含小写字母、数字、_和-,不能以_结尾,最长36个字符。 -modelarts.notebook=调试作业 -modelarts.train_job=训练作业 -modelarts.train_job.new=新建作业 +modelarts.notebook=调试任务 +modelarts.train_job=训练任务 +modelarts.train_job.new_debug=新建调试任务 +modelarts.train_job.new_train=新建训练任务 +modelarts.train_job.config=配置信息 +modelarts.train_job.new=新建训练任务 + + + modelarts.train_job.basic_info=基本信息 modelarts.train_job.job_status=作业状态 modelarts.train_job.job_name=作业名称 modelarts.train_job.version=作业版本 modelarts.train_job.start_time=开始时间 -modelarts.train_job.dura_time=持续时间 +modelarts.train_job.dura_time=运行时长 modelarts.train_job.description=作业描述 modelarts.train_job.parameter_setting=参数设置 modelarts.train_job.parameter_setting_info=参数信息 diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index f38cb1ad7..2e825d8cc 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -74,6 +74,7 @@ func GetModelArtsTrainJob(ctx *context.APIContext) { ctx.JSON(http.StatusOK, map[string]interface{}{ "JobID": jobID, "JobStatus": job.Status, + "JobDuration": job.Duration, }) } diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 166fe6704..b37af704d 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -357,14 +357,14 @@ func NotebookShow(ctx *context.Context) { task, err := models.GetCloudbrainByJobID(jobID) if err != nil { ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) return } result, err := modelarts.GetJob(jobID) if err != nil { ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) return } @@ -373,7 +373,7 @@ func NotebookShow(ctx *context.Context) { err = models.UpdateJob(task) if err != nil { ctx.Data["error"] = err.Error() - ctx.RenderWithErr(err.Error(), tplModelArtsNotebookIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsNotebookShow, nil) return } @@ -528,6 +528,15 @@ func TrainJobIndex(ctx *context.Context) { } func TrainJobNew(ctx *context.Context) { + err := trainJobNewDataPrepare(ctx) + if err != nil { + ctx.ServerError("get new train-job info failed", err) + return + } + ctx.HTML(200, tplModelArtsTrainJobNew) +} + +func trainJobNewDataPrepare(ctx *context.Context) error { ctx.Data["PageIsCloudBrain"] = true //can, err := canUserCreateTrainJob(ctx.User.ID) @@ -549,35 +558,35 @@ func TrainJobNew(ctx *context.Context) { attachs, err := models.GetModelArtsUserAttachments(ctx.User.ID) if err != nil { ctx.ServerError("GetAllUserAttachments failed:", err) - return + return err } ctx.Data["attachments"] = attachs var resourcePools modelarts.ResourcePool if err = json.Unmarshal([]byte(setting.ResourcePools), &resourcePools); err != nil { ctx.ServerError("json.Unmarshal failed:", err) - return + return err } ctx.Data["resource_pools"] = resourcePools.Info var engines modelarts.Engine if err = json.Unmarshal([]byte(setting.Engines), &engines); err != nil { ctx.ServerError("json.Unmarshal failed:", err) - return + return err } ctx.Data["engines"] = engines.Info var versionInfos modelarts.VersionInfo if err = json.Unmarshal([]byte(setting.EngineVersions), &versionInfos); err != nil { ctx.ServerError("json.Unmarshal failed:", err) - return + return err } ctx.Data["engine_versions"] = versionInfos.Version var flavorInfos modelarts.Flavor if err = json.Unmarshal([]byte(setting.TrainJobFLAVORINFOS), &flavorInfos); err != nil { ctx.ServerError("json.Unmarshal failed:", err) - return + return err } ctx.Data["flavor_infos"] = flavorInfos.Info @@ -587,12 +596,12 @@ func TrainJobNew(ctx *context.Context) { configList, err := getConfigList(modelarts.PerPage, 1, modelarts.SortByCreateTime, "desc", "", modelarts.ConfigTypeCustom) if err != nil { ctx.ServerError("getConfigList failed:", err) - return + return err } ctx.Data["config_list"] = configList.ParaConfigs - ctx.HTML(200, tplModelArtsTrainJobNew) + return nil } func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) { @@ -614,27 +623,29 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) logObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.LogPath dataPath := "/" + setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" - can, err := canUserCreateTrainJob(ctx.User.ID) - if err != nil { - ctx.ServerError("canUserCreateTrainJob", err) - return - } - - if !can { - log.Error("the user can not create train-job") - ctx.RenderWithErr("the user can not create train-job", tplModelArtsTrainJobNew, &form) - return - } + //can, err := canUserCreateTrainJob(ctx.User.ID) + //if err != nil { + // ctx.ServerError("canUserCreateTrainJob", err) + // return + //} + // + //if !can { + // log.Error("the user can not create train-job") + // ctx.RenderWithErr("the user can not create train-job", tplModelArtsTrainJobNew, &form) + // return + //} //param check if err := paramCheckCreateTrainJob(form); err != nil { log.Error("paramCheckCreateTrainJob failed:(%v)", err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) return } if err := git.Clone(repo.RepoPath(), codeLocalPath, git.CloneRepoOptions{}); err != nil { log.Error("Failed to clone repository: %s (%v)", repo.FullName(), err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("Failed to clone repository", tplModelArtsTrainJobNew, &form) return } @@ -642,18 +653,21 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) //todo: upload code (send to file_server todo this work?) if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.OutputPath); err != nil { log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("Failed to obsMkdir_output", tplModelArtsTrainJobNew, &form) return } if err := obsMkdir(setting.CodePathPrefix + jobName + modelarts.LogPath); err != nil { log.Error("Failed to obsMkdir_log: %s (%v)", repo.FullName(), err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("Failed to obsMkdir_log", tplModelArtsTrainJobNew, &form) return } if err := uploadCodeToObs(codeLocalPath, jobName, ""); err != nil { log.Error("Failed to uploadCodeToObs: %s (%v)", repo.FullName(), err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("Failed to uploadCodeToObs", tplModelArtsTrainJobNew, &form) return } @@ -673,6 +687,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) err := json.Unmarshal([]byte(params), ¶meters) if err != nil { log.Error("Failed to Unmarshal params: %s (%v)", params, err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("运行参数错误", tplModelArtsTrainJobNew, &form) return } @@ -691,6 +706,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) if isSaveParam == "on" { if form.ParameterTemplateName == "" { log.Error("ParameterTemplateName is empty") + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("保存作业参数时,作业参数名称不能为空", tplModelArtsTrainJobNew, &form) return } @@ -714,6 +730,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) if err != nil { log.Error("Failed to CreateTrainJobConfig: %v", err) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr("保存作业参数失败:"+err.Error(), tplModelArtsTrainJobNew, &form) return } @@ -735,9 +752,10 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) Parameters: param, } - err = modelarts.GenerateTrainJob(ctx, req) + err := modelarts.GenerateTrainJob(ctx, req) if err != nil { log.Error("GenerateTrainJob failed:%v", err.Error()) + trainJobNewDataPrepare(ctx) ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) return } @@ -838,21 +856,21 @@ func TrainJobShow(ctx *context.Context) { task, err := models.GetCloudbrainByJobID(jobID) if err != nil { log.Error("GetCloudbrainByJobID(%s) failed:%v", jobID, err.Error()) - ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) return } attach, err := models.GetAttachmentByUUID(task.Uuid) if err != nil { log.Error("GetAttachmentByUUID(%s) failed:%v", jobID, err.Error()) - ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) return } result, err := modelarts.GetTrainJob(jobID, strconv.FormatInt(task.VersionID, 10)) if err != nil { log.Error("GetJob(%s) failed:%v", jobID, err.Error()) - ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) + ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) return } diff --git a/templates/repo/cloudbrain/index.tmpl b/templates/repo/cloudbrain/index.tmpl index 795e35aac..2201cd272 100755 --- a/templates/repo/cloudbrain/index.tmpl +++ b/templates/repo/cloudbrain/index.tmpl @@ -239,7 +239,7 @@