diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 5bf066413..c3707c9e2 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -19,8 +19,8 @@ type JobType string type ModelArtsJobStatus string const ( - NPUResource = "NPU" - GPUResource = "CPU/GPU" + NPUResource = "NPU" + GPUResource = "CPU/GPU" JobWaiting CloudbrainStatus = "WAITING" JobStopped CloudbrainStatus = "STOPPED" @@ -210,7 +210,7 @@ type CloudbrainsOptions struct { JobType string VersionName string IsLatestVersion string - JobTypeNot bool + JobTypeNot bool } type TaskPod struct { @@ -975,7 +975,9 @@ func QueryModelTrainJobList(repoId int64) ([]*CloudbrainInfo, int, error) { cond = cond.And( builder.Eq{"Status": "COMPLETED"}, ) - + cond = cond.And( + builder.Eq{"job_type": "TRAIN"}, + ) cloudbrains := make([]*CloudbrainInfo, 0) if err := sess.Select("job_id,job_name").Table(&Cloudbrain{}).Where(cond).OrderBy("created_unix DESC"). Find(&cloudbrains); err != nil { diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 669bdf9fa..87c5dc001 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -474,6 +474,23 @@ func ShowOneVersionOtherModel(ctx *context.Context) { func ShowModelTemplate(ctx *context.Context) { ctx.Data["isModelManage"] = true + repoId := ctx.Repo.Repository.ID + Type := -1 + _, count, _ := models.QueryModel(&models.AiModelQueryOptions{ + ListOptions: models.ListOptions{ + Page: 1, + PageSize: 2, + }, + RepoID: repoId, + Type: Type, + New: MODEL_LATEST, + }) + ctx.Data["MODEL_COUNT"] = count + + _, trainCount, _ := models.QueryModelTrainJobList(repoId) + log.Info("query train count=" + fmt.Sprint(trainCount)) + + ctx.Data["TRAIN_COUNT"] = trainCount ctx.HTML(200, tplModelManageIndex) } @@ -586,3 +603,67 @@ func ModifyModelInfo(ctx *context.Context) { } } + +func QueryModelListForPredict(ctx *context.Context) { + repoId := ctx.Repo.Repository.ID + modelResult, count, err := models.QueryModel(&models.AiModelQueryOptions{ + ListOptions: models.ListOptions{ + Page: -1, + PageSize: -1, + }, + RepoID: repoId, + Type: -1, + New: -1, + }) + if err != nil { + ctx.ServerError("Cloudbrain", err) + return + } + log.Info("query return count=" + fmt.Sprint(count)) + + nameList := make([]string, 0) + + nameMap := make(map[string][]*models.AiModelManage) + for _, model := range modelResult { + if _, value := nameMap[model.Name]; !value { + models := make([]*models.AiModelManage, 0) + models = append(models, model) + nameMap[model.Name] = models + nameList = append(nameList, model.Name) + } else { + nameMap[model.Name] = append(nameMap[model.Name], model) + } + } + + mapInterface := make(map[string]interface{}) + mapInterface["nameList"] = nameList + mapInterface["nameMap"] = nameMap + ctx.JSON(http.StatusOK, mapInterface) +} + +func QueryModelFileForPredict(ctx *context.Context) { + id := ctx.Query("ID") + model, err := models.QueryModelById(id) + if err != nil { + log.Error("no such model!", err.Error()) + ctx.ServerError("no such model:", err) + return + } + prefix := model.Path[len(setting.Bucket)+1:] + fileinfos, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, prefix) + ctx.JSON(http.StatusOK, fileinfos) +} + +func QueryOneLevelModelFile(ctx *context.Context) { + id := ctx.Query("ID") + parentDir := ctx.Query("parentDir") + model, err := models.QueryModelById(id) + if err != nil { + log.Error("no such model!", err.Error()) + ctx.ServerError("no such model:", err) + return + } + prefix := model.Path[len(setting.Bucket)+1:] + fileinfos, err := storage.GetOneLevelAllObjectUnderDir(setting.Bucket, prefix, parentDir) + ctx.JSON(http.StatusOK, fileinfos) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index 481b0eacb..85921b478 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -992,6 +992,9 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/show_model_child_api", repo.ShowOneVersionOtherModel) m.Get("/query_train_job", reqRepoCloudBrainReader, repo.QueryTrainJobList) m.Get("/query_train_job_version", reqRepoCloudBrainReader, repo.QueryTrainJobVersionList) + m.Get("/query_model_for_predict", reqRepoCloudBrainReader, repo.QueryModelListForPredict) + m.Get("/query_modelfile_for_predict", reqRepoCloudBrainReader, repo.QueryModelFileForPredict) + m.Get("/query_onelevel_modelfile", reqRepoCloudBrainReader, repo.QueryOneLevelModelFile) m.Group("/:ID", func() { m.Get("", repo.ShowSingleModel) m.Get("/downloadsingle", repo.DownloadSingleModelFile) diff --git a/templates/repo/modelmanage/index.tmpl b/templates/repo/modelmanage/index.tmpl index 5cd7bbcdb..c83816c62 100644 --- a/templates/repo/modelmanage/index.tmpl +++ b/templates/repo/modelmanage/index.tmpl @@ -17,16 +17,30 @@
{{$.i18n.Tr "repo.model.manage.model_name"}} | -- | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.model.manage.version"}} | -- | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.migrate_items_labels"}} | -
-
+
+
+
+ 基本信息
+
|
+ ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.model_size"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.createtime"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.model.manage.description"}} | +
+
+
+
+
+ |
+ ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.code_version"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.start_file"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.train_dataset"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.run_parameter"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.AI_driver"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.standard"}} | ++ | ||||||||||||||||||||||||||
{{$.i18n.Tr "repo.modelarts.train_job.compute_node"}} | ++ |
{{$.i18n.Tr "repo.model.manage.Accuracy"}} | ++ |
F1 | ++ |
{{$.i18n.Tr "repo.model.manage.Precision"}} | ++ |
{{$.i18n.Tr "repo.model.manage.Recall"}} | ++ |
{{$.i18n.Tr "repo.model.manage.Accuracy"}} | -- |
F1 | -- |
{{$.i18n.Tr "repo.model.manage.Precision"}} | -- |
{{$.i18n.Tr "repo.model.manage.Recall"}} | -- |