From c57d265c69a83ae451bcd73a192957aa52eab24d Mon Sep 17 00:00:00 2001 From: zouap Date: Fri, 10 Dec 2021 09:01:52 +0800 Subject: [PATCH 01/30] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zouap --- models/ai_model_manage.go | 2 +- routers/repo/ai_model_manage.go | 60 +++++++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/models/ai_model_manage.go b/models/ai_model_manage.go index ace51002d..712e72d98 100644 --- a/models/ai_model_manage.go +++ b/models/ai_model_manage.go @@ -31,7 +31,7 @@ type AiModelManage struct { CodeCommitID string `xorm:"NULL"` UserId int64 `xorm:"NOT NULL"` UserName string - UserRelAvatarLink string `xorm:"NULL"` + UserRelAvatarLink string TrainTaskInfo string `xorm:"text NULL"` CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index 5103c2a5e..612458058 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -71,25 +71,24 @@ func saveModelByParameters(jobId string, versionName string, name string, versio aiTaskJson, _ := json.Marshal(aiTask) model := &models.AiModelManage{ - ID: id, - Version: version, - VersionCount: len(aimodels) + 1, - Label: label, - Name: name, - Description: description, - New: MODEL_LATEST, - Type: cloudType, - Path: modelPath, - Size: modelSize, - AttachmentId: aiTask.Uuid, - RepoId: aiTask.RepoID, - UserId: ctx.User.ID, - UserRelAvatarLink: ctx.User.RelAvatarLink(), - CodeBranch: aiTask.BranchName, - CodeCommitID: aiTask.CommitID, - Engine: aiTask.EngineID, - TrainTaskInfo: string(aiTaskJson), - Accuracy: string(accuracyJson), + ID: id, + Version: version, + VersionCount: len(aimodels) + 1, + Label: label, + Name: name, + Description: description, + New: MODEL_LATEST, + Type: cloudType, + Path: modelPath, + Size: modelSize, + AttachmentId: aiTask.Uuid, + RepoId: aiTask.RepoID, + UserId: ctx.User.ID, + CodeBranch: aiTask.BranchName, + CodeCommitID: aiTask.CommitID, + Engine: aiTask.EngineID, + TrainTaskInfo: string(aiTaskJson), + Accuracy: string(accuracyJson), } err = models.SaveModelToDb(model) @@ -395,7 +394,7 @@ func ShowSingleModel(ctx *context.Context) { ctx.JSON(http.StatusOK, models) } -func queryUserName(intSlice []int64) map[int64]string { +func queryUserName(intSlice []int64) map[int64]*models.User { keys := make(map[int64]string) uniqueElements := []int64{} for _, entry := range intSlice { @@ -404,13 +403,14 @@ func queryUserName(intSlice []int64) map[int64]string { uniqueElements = append(uniqueElements, entry) } } - userNames, err := models.GetUserNamesByIDs(uniqueElements) + result := make(map[int64]*models.User) + userLists, err := models.GetUsersByIDs(uniqueElements) if err == nil { - for i, userName := range userNames { - keys[uniqueElements[i]] = userName + for i, user := range userLists { + result[uniqueElements[i]] = user } } - return keys + return result } func ShowOneVersionOtherModel(ctx *context.Context) { @@ -428,7 +428,11 @@ func ShowOneVersionOtherModel(ctx *context.Context) { userNameMap := queryUserName(userIds) for _, model := range aimodels { - model.UserName = userNameMap[model.UserId] + value := userNameMap[model.UserId] + if value != nil { + model.UserName = value.Name + model.UserRelAvatarLink = value.RelAvatarLink() + } } if len(aimodels) > 0 { @@ -500,7 +504,11 @@ func ShowModelPageInfo(ctx *context.Context) { userNameMap := queryUserName(userIds) for _, model := range modelResult { - model.UserName = userNameMap[model.UserId] + value := userNameMap[model.UserId] + if value != nil { + model.UserName = value.Name + model.UserRelAvatarLink = value.RelAvatarLink() + } } mapInterface := make(map[string]interface{}) From 403a8b229cd757b4be2201aef3e7349a0e964927 Mon Sep 17 00:00:00 2001 From: zouap Date: Fri, 10 Dec 2021 10:18:39 +0800 Subject: [PATCH 02/30] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82?= 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 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/routers/repo/ai_model_manage.go b/routers/repo/ai_model_manage.go index a8c331e47..54f6162be 100644 --- a/routers/repo/ai_model_manage.go +++ b/routers/repo/ai_model_manage.go @@ -391,6 +391,22 @@ func ShowSingleModel(ctx *context.Context) { log.Info("Show single ModelInfo start.name=" + name) models := models.QueryModelByName(name, ctx.Repo.Repository.ID) + userIds := make([]int64, len(models)) + for i, model := range models { + log.Info("model=" + model.Name) + log.Info("model.UserId=" + fmt.Sprint(model.UserId)) + model.IsCanOper = isOper(ctx, model.UserId) + userIds[i] = model.UserId + } + userNameMap := queryUserName(userIds) + + for _, model := range models { + value := userNameMap[model.UserId] + if value != nil { + model.UserName = value.Name + model.UserRelAvatarLink = value.RelAvatarLink() + } + } ctx.JSON(http.StatusOK, models) } From b6cdf39e507a3736b2736a340911eb01d4f170e0 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Fri, 10 Dec 2021 10:29:55 +0800 Subject: [PATCH 03/30] #882 add owner to reviewer list --- models/repo.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/models/repo.go b/models/repo.go index fda5460f5..f82c3c6cf 100755 --- a/models/repo.go +++ b/models/repo.go @@ -653,8 +653,9 @@ func (repo *Repository) getReviewersPrivate(e Engine, doerID, posterID int64) (u users = make([]*User, 0, 20) if err = e. - SQL("SELECT * FROM `user` WHERE id in (SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? AND user_id NOT IN ( ?, ?)) ORDER BY name", - repo.ID, AccessModeRead, + SQL("SELECT * FROM `user` WHERE id in (SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? "+ + " UNION SELECT owner_id FROM `repository` WHERE id = ?) AND id NOT IN ( ?, ?) ORDER BY name", + repo.ID, AccessModeWrite, repo.ID, doerID, posterID). Find(&users); err != nil { return nil, err @@ -668,11 +669,14 @@ func (repo *Repository) getReviewersPublic(e Engine, doerID, posterID int64) (_ users := make([]*User, 0) const SQLCmd = "SELECT * FROM `user` WHERE id IN ( " + - "SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? AND user_id NOT IN ( ?, ?) ) ORDER BY name " + "SELECT user_id FROM `access` WHERE repo_id = ? AND mode >= ? " + + " UNION" + + " SELECT owner_id FROM `repository` WHERE id = ?)" + + " AND id NOT IN ( ?, ?) ORDER BY name " if err = e. SQL(SQLCmd, - repo.ID, AccessModeWrite, doerID, posterID). + repo.ID, AccessModeWrite, repo.ID, doerID, posterID). Find(&users); err != nil { return nil, err } From a4ea05259072feaba526110db38ad8ea49836efd Mon Sep 17 00:00:00 2001 From: liuzx Date: Fri, 10 Dec 2021 18:19:43 +0800 Subject: [PATCH 04/30] =?UTF-8?q?=E6=8F=90=E4=BE=9B=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E4=BB=93=E5=BA=93=E6=98=AF=E5=90=A6=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E7=9A=84=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/repo/modelarts.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/routers/repo/modelarts.go b/routers/repo/modelarts.go index 1d8323000..920205334 100755 --- a/routers/repo/modelarts.go +++ b/routers/repo/modelarts.go @@ -92,6 +92,7 @@ func DebugJobIndex(ctx *context.Context) { ctx.Data["PageIsCloudBrain"] = true ctx.Data["Tasks"] = ciTasks ctx.Data["CanCreate"] = cloudbrain.CanCreateOrDebugJob(ctx) + ctx.Data["RepoIsEmpty"] = repo.IsEmpty ctx.HTML(200, tplDebugJobIndex) } @@ -331,6 +332,7 @@ func TrainJobIndex(ctx *context.Context) { ctx.Data["PageIsCloudBrain"] = true ctx.Data["Tasks"] = tasks ctx.Data["CanCreate"] = cloudbrain.CanCreateOrDebugJob(ctx) + ctx.Data["RepoIsEmpty"] = repo.IsEmpty ctx.HTML(200, tplModelArtsTrainJobIndex) } From 7b85452cccd3baf9b732bcd2db902e5981869521 Mon Sep 17 00:00:00 2001 From: ychao_1983 Date: Mon, 13 Dec 2021 11:44:28 +0800 Subject: [PATCH 05/30] =?UTF-8?q?fix-1052=20=E9=A1=B9=E7=9B=AE=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/git/commit.go | 9 +++++++++ modules/git/repo.go | 4 ++++ modules/git/repo_stats_custom.go | 4 ++-- routers/private/hook.go | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/git/commit.go b/modules/git/commit.go index 5e492e27e..8e6857f4a 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -271,6 +271,15 @@ func AllCommitsCount(repoPath string) (int64, error) { return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64) } +func HEADCommitsCount(repoPath string) (int64, error) { + stdout, err := NewCommand("rev-list", "HEAD", "--count").RunInDir(repoPath) + if err != nil { + return 0, err + } + + return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64) +} + func commitsCount(repoPath, revision, relpath string) (int64, error) { cmd := NewCommand("rev-list", "--count") cmd.AddArguments(revision) diff --git a/modules/git/repo.go b/modules/git/repo.go index a2a4d28af..772f1d149 100644 --- a/modules/git/repo.go +++ b/modules/git/repo.go @@ -52,6 +52,10 @@ func (repo *Repository) GetAllCommitsCount() (int64, error) { return AllCommitsCount(repo.Path) } +func (repo *Repository) GetHeadCommitsCount() (int64, error) { + return HEADCommitsCount(repo.Path) +} + func (repo *Repository) parsePrettyFormatLogToList(logs []byte) (*list.List, error) { l := list.New() if len(logs) == 0 { diff --git a/modules/git/repo_stats_custom.go b/modules/git/repo_stats_custom.go index 95bad6678..d70a17052 100644 --- a/modules/git/repo_stats_custom.go +++ b/modules/git/repo_stats_custom.go @@ -126,7 +126,7 @@ func GetUserKPIStats(repoPath string) (map[string]*UserKPIStats, error) { func SetRepoKPIStats(repoPath string, fromTime time.Time, stats *RepoKPIStats, newContributers map[string]struct{}) error { since := fromTime.Format(time.RFC3339) - args := []string{"log", "--numstat", "--no-merges", "--branches=*", "--pretty=format:---%n%h%n%an%n%ae%n", "--date=iso", fmt.Sprintf("--since='%s'", since)} + args := []string{"log", "--numstat", "--no-merges", "HEAD", "--pretty=format:---%n%h%n%an%n%ae%n", "--date=iso", fmt.Sprintf("--since='%s'", since)} stdout, err := NewCommand(args...).RunInDirBytes(repoPath) if err != nil { @@ -212,7 +212,7 @@ func SetRepoKPIStats(repoPath string, fromTime time.Time, stats *RepoKPIStats, n func GetContributorsDetail(repoPath string, fromTime time.Time) ([]Contributor, error) { since := fromTime.Format(time.RFC3339) - cmd := NewCommand("shortlog", "-sne", "--all", fmt.Sprintf("--since='%s'", since)) + cmd := NewCommand("shortlog", "-sne", "HEAD", fmt.Sprintf("--since='%s'", since)) stdout, err := cmd.RunInDir(repoPath) if err != nil { return nil, err diff --git a/routers/private/hook.go b/routers/private/hook.go index a673362fa..79c8ecfc5 100755 --- a/routers/private/hook.go +++ b/routers/private/hook.go @@ -539,7 +539,7 @@ func updateRepoCommitCnt(ctx *macaron.Context, repo *models.Repository) error { } defer gitRepo.Close() - count, err := gitRepo.GetAllCommitsCount() + count, err := gitRepo.GetHeadCommitsCount() if err != nil { log.Error("GetAllCommitsCount failed:%v", err.Error(), ctx.Data["MsgID"]) return err From 809cd98d86c97fc5c2782c9608fe88cb1c3c7cdf Mon Sep 17 00:00:00 2001 From: zhoupzh Date: Mon, 13 Dec 2021 14:47:08 +0800 Subject: [PATCH 06/30] fix issue --- templates/repo/cloudbrain/new.tmpl | 6 +-- templates/repo/cloudbrain/show.tmpl | 3 +- templates/repo/debugjob/index.tmpl | 8 +++- templates/repo/modelarts/notebook/new.tmpl | 2 +- templates/repo/modelarts/notebook/show.tmpl | 2 +- templates/repo/modelarts/trainjob/index.tmpl | 8 ++-- templates/repo/modelarts/trainjob/new.tmpl | 3 +- templates/repo/modelarts/trainjob/version_new.tmpl | 2 + templates/repo/modelmanage/index.tmpl | 14 +++++- templates/repo/modelmanage/showinfo.tmpl | 20 +++++--- web_src/js/components/Model.vue | 53 +++++++++------------- web_src/js/index.js | 5 +- web_src/less/openi.less | 11 ++++- 13 files changed, 83 insertions(+), 54 deletions(-) diff --git a/templates/repo/cloudbrain/new.tmpl b/templates/repo/cloudbrain/new.tmpl index d85b51bea..527faaf51 100755 --- a/templates/repo/cloudbrain/new.tmpl +++ b/templates/repo/cloudbrain/new.tmpl @@ -258,7 +258,7 @@ - {{.i18n.Tr "repo.cloudbrain.cancel"}} + {{.i18n.Tr "repo.cloudbrain.cancel"}} @@ -272,8 +272,8 @@ \ No newline at end of file diff --git a/templates/repo/modelarts/notebook/new.tmpl b/templates/repo/modelarts/notebook/new.tmpl index 9e28649b3..60025c63e 100755 --- a/templates/repo/modelarts/notebook/new.tmpl +++ b/templates/repo/modelarts/notebook/new.tmpl @@ -92,7 +92,7 @@ - {{.i18n.Tr "repo.cloudbrain.cancel"}} + {{.i18n.Tr "repo.cloudbrain.cancel"}} diff --git a/templates/repo/modelarts/notebook/show.tmpl b/templates/repo/modelarts/notebook/show.tmpl index 8613c483f..aa769dce3 100755 --- a/templates/repo/modelarts/notebook/show.tmpl +++ b/templates/repo/modelarts/notebook/show.tmpl @@ -11,7 +11,7 @@ {{.i18n.Tr "repo.cloudbrain"}}
/
- + {{$.i18n.Tr "repo.modelarts.notebook"}}
/
diff --git a/templates/repo/modelarts/trainjob/index.tmpl b/templates/repo/modelarts/trainjob/index.tmpl index 6ad3cbba9..24a17e8e1 100755 --- a/templates/repo/modelarts/trainjob/index.tmpl +++ b/templates/repo/modelarts/trainjob/index.tmpl @@ -49,9 +49,11 @@
未创建过训练任务
-
代码版本:您还没有初始化代码仓库,请先创建代码版本
-
数据集:云脑1提供 CPU / GPU 资源,云脑2提供 Ascend NPU 资源,调试使用的数据集也需要上传到对应的环境。
-
使用说明:可以参考启智AI协作平台小白训练营课程
+ {{if $.RepoIsEmpty}} +
代码版本:您还没有初始化代码仓库,请先创建代码版本;
+ {{end}} +
数据集:云脑1提供 CPU / GPU 资源,云脑2提供 Ascend NPU 资源,调试使用的数据集也需要上传到对应的环境;
+
使用说明:可以参考启智AI协作平台小白训练营课程。
{{else}} diff --git a/templates/repo/modelarts/trainjob/new.tmpl b/templates/repo/modelarts/trainjob/new.tmpl index b7365f22f..790b6d1eb 100755 --- a/templates/repo/modelarts/trainjob/new.tmpl +++ b/templates/repo/modelarts/trainjob/new.tmpl @@ -147,6 +147,7 @@ + 查看样例
@@ -159,6 +160,7 @@ {{end}} + 数据集位置存储在环境变量data_url中,训练输出路径存储在环境变量train_url中。
@@ -267,7 +269,6 @@ sever_num.val(parseInt(sever_num.val())+1) } }) - // 参数增加、删除、修改、保存 function Add_parameter(i){ value = '
' + diff --git a/templates/repo/modelarts/trainjob/version_new.tmpl b/templates/repo/modelarts/trainjob/version_new.tmpl index 3c680d2c5..5c4d6119f 100644 --- a/templates/repo/modelarts/trainjob/version_new.tmpl +++ b/templates/repo/modelarts/trainjob/version_new.tmpl @@ -159,6 +159,7 @@ + 查看样例
@@ -173,6 +174,7 @@ {{end}} {{end}} + 数据集位置存储在环境变量data_url中,训练输出路径存储在环境变量train_url中。
diff --git a/templates/repo/modelmanage/index.tmpl b/templates/repo/modelmanage/index.tmpl index dd2fe58ae..c794e8215 100644 --- a/templates/repo/modelmanage/index.tmpl +++ b/templates/repo/modelmanage/index.tmpl @@ -162,6 +162,7 @@ $("#job-name").empty() createModelName() loadTrainList() + }, onHide:function(){ document.getElementById("formId").reset(); @@ -179,6 +180,7 @@ $('#choice_model').dropdown({ onChange:function(value){ $(".ui.dropdown.selection.search.width70").addClass("loading") + $('#choice_version').dropdown('clear') $("#job-version").empty() loadTrainVersion(value) } @@ -208,11 +210,17 @@ train_html += '
' } $("#job-name").append(train_html) - $(".ui.dropdown.selection.search.width83").removeClass("loading") + $(".ui.dropdown.selection.search.width83").removeClass("loading") + + $('#choice_model .default.text').text(data[0].JobName) + $('#choice_model input[name="JobId"]').val(data[0].JobID) + loadTrainVersion() + }) } function loadTrainVersion(value){ - $.get(`${repolink}/modelmanage/query_train_job_version?JobID=${value}`, (data) => { + let JobID = !value ?$('#choice_model input[name="JobId"]').val(): value + $.get(`${repolink}/modelmanage/query_train_job_version?JobID=${JobID}`, (data) => { const n_length = data.length let train_html='' for (let i=0;i diff --git a/templates/repo/modelmanage/showinfo.tmpl b/templates/repo/modelmanage/showinfo.tmpl index 31f8896d1..c10400bb2 100644 --- a/templates/repo/modelmanage/showinfo.tmpl +++ b/templates/repo/modelmanage/showinfo.tmpl @@ -162,6 +162,9 @@ function loadInfo(){ $.get(`${url}show_model_info_api?name=${ID}`,(data)=>{ let html = '' for (let i=0;i${data[i].Version}` } $('#dropdown').append(html) @@ -218,7 +221,7 @@ function tranSize(value){ function editorFn(context){ let id= context.dataset.id let text = context.dataset.desc - $('#edit-td').replaceWith("
"); + $('#edit-td').replaceWith("
"); } function editorCancel(text,id){ @@ -247,12 +250,17 @@ function renderInfo(obj,accObj,id){ $('#edit-pencil').attr("data-desc",obj[key]) } else if(key==="Label"){ - let labelArray = obj[key].split(' ') - let html='' - for(let i=0;i${labelArray[i]}` + $('#Label').empty() + if(obj[key]==='--'){ + $('#Label').text(obj[key]) + }else{ + let labelArray = obj[key].trim().split(' ') + let html='' + for(let i=0;i${labelArray[i]}` + } + $('#Label').append(html) } - $('#Label').append(html) } else{ $(`#${key}`).text(obj[key]) diff --git a/web_src/js/components/Model.vue b/web_src/js/components/Model.vue index 03cdc1eea..60233696b 100644 --- a/web_src/js/components/Model.vue +++ b/web_src/js/components/Model.vue @@ -1,7 +1,7 @@