From 454c3c634b94298b7068e2e1e9ed9be19ec5a2aa Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 21 Dec 2021 11:14:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=AF=BC=E5=85=A5=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- options/locale/locale_en-US.ini | 4 +++ options/locale/locale_zh-CN.ini | 1 + routers/repo/ai_model_manage.go | 67 +++++++++++++++++++++++++++++++++++++++++ routers/routes/routes.go | 1 + 4 files changed, 73 insertions(+) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index c95aec81e..b58021ea2 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -778,6 +778,10 @@ datasets = Datasets datasets.desc = Enable Dataset cloudbrain_helper=Use GPU/NPU resources to open notebooks, model training tasks, etc. +model_manager = Model +model_noright=No right +model_rename=Duplicate model name, please modify model name. + debug=Debug stop=Stop delete=Delete diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index edeb1356e..f5a52f2cb 100755 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -784,6 +784,7 @@ cloudbrain_helper=使用GPU/NPU资源,开启Notebook、模型训练任务等 model_manager = 模型 model_noright=无权限操作 +model_rename=模型名称重复,请修改模型名称 debug=调试 stop=停止 diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index ad68f5b99..22b551206 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -105,6 +105,23 @@ func saveModelByParameters(jobId string, versionName string, name string, versio return nil } +func SaveNewNameModel(ctx *context.Context) { + name := ctx.Query("Name") + if name == "" { + ctx.Error(500, fmt.Sprintf("name or version is null.")) + return + } + + aimodels := models.QueryModelByName(name, ctx.Repo.Repository.ID) + if len(aimodels) > 0 { + ctx.Error(500, ctx.Tr("repo.model_rename")) + return + } + SaveModel(ctx) + + log.Info("save model end.") +} + func SaveModel(ctx *context.Context) { log.Info("save model start.") JobId := ctx.Query("JobId") @@ -569,3 +586,53 @@ 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)+2:] + fileinfos, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, prefix) + ctx.JSON(http.StatusOK, fileinfos) +} diff --git a/routers/routes/routes.go b/routers/routes/routes.go index cfd962603..784efc6be 100755 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -977,6 +977,7 @@ func RegisterRoutes(m *macaron.Macaron) { }, context.RepoRef()) m.Group("/modelmanage", func() { m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel) + m.Post("/create_new_model", reqRepoModelManageWriter, repo.SaveNewNameModel) m.Delete("/delete_model", repo.DeleteModel) m.Put("/modify_model", repo.ModifyModelInfo) m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate) From eb2832498c98f1cbb0d867d1c7a1ddab34c1a6bf Mon Sep 17 00:00:00 2001 From: zouap Date: Tue, 21 Dec 2021 11:18:35 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=AF=BC=E5=85=A5=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- routers/repo/ai_model_manage.go | 50 ----------------------------------------- 1 file changed, 50 deletions(-) diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 22b551206..669bdf9fa 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -586,53 +586,3 @@ 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)+2:] - fileinfos, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, prefix) - ctx.JSON(http.StatusOK, fileinfos) -}