| @@ -2618,6 +2618,7 @@ type DatasetInfo struct { | |||||
| DataLocalPath string | DataLocalPath string | ||||
| Name string | Name string | ||||
| FullName string | FullName string | ||||
| Size int | |||||
| } | } | ||||
| func GetDatasetInfo(uuidStr string, grampusType ...string) (map[string]DatasetInfo, string, error) { | func GetDatasetInfo(uuidStr string, grampusType ...string) (map[string]DatasetInfo, string, error) { | ||||
| @@ -2673,6 +2674,7 @@ func GetDatasetInfo(uuidStr string, grampusType ...string) (map[string]DatasetIn | |||||
| DataLocalPath: dataLocalPath, | DataLocalPath: dataLocalPath, | ||||
| Name: fileName, | Name: fileName, | ||||
| FullName: attach.Name, | FullName: attach.Name, | ||||
| Size: int(attach.Size), | |||||
| } | } | ||||
| if i == 0 { | if i == 0 { | ||||
| datasetNames = attach.Name | datasetNames = attach.Name | ||||
| @@ -518,6 +518,7 @@ var ( | |||||
| MaxDatasetNum int | MaxDatasetNum int | ||||
| CullIdleTimeout string | CullIdleTimeout string | ||||
| CullInterval string | CullInterval string | ||||
| DebugAttachSize int | |||||
| //benchmark config | //benchmark config | ||||
| IsBenchmarkEnabled bool | IsBenchmarkEnabled bool | ||||
| @@ -1497,6 +1498,7 @@ func NewContext() { | |||||
| MaxDatasetNum = sec.Key("MAX_DATASET_NUM").MustInt(5) | MaxDatasetNum = sec.Key("MAX_DATASET_NUM").MustInt(5) | ||||
| CullIdleTimeout = sec.Key("CULL_IDLE_TIMEOUT").MustString("900") | CullIdleTimeout = sec.Key("CULL_IDLE_TIMEOUT").MustString("900") | ||||
| CullInterval = sec.Key("CULL_INTERVAL").MustString("60") | CullInterval = sec.Key("CULL_INTERVAL").MustString("60") | ||||
| DebugAttachSize = sec.Key("DEBUG_ATTACH_SIZE").MustInt(20) | |||||
| sec = Cfg.Section("benchmark") | sec = Cfg.Section("benchmark") | ||||
| IsBenchmarkEnabled = sec.Key("ENABLED").MustBool(false) | IsBenchmarkEnabled = sec.Key("ENABLED").MustBool(false) | ||||
| @@ -98,6 +98,9 @@ func NewFuncMap() []template.FuncMap { | |||||
| "AllowedReactions": func() []string { | "AllowedReactions": func() []string { | ||||
| return setting.UI.Reactions | return setting.UI.Reactions | ||||
| }, | }, | ||||
| "DebugAttachSize": func() int { | |||||
| return setting.DebugAttachSize * 1000 * 1000 * 1000 | |||||
| }, | |||||
| "AvatarLink": models.AvatarLink, | "AvatarLink": models.AvatarLink, | ||||
| "Safe": Safe, | "Safe": Safe, | ||||
| "SafeJS": SafeJS, | "SafeJS": SafeJS, | ||||
| @@ -154,7 +157,7 @@ func NewFuncMap() []template.FuncMap { | |||||
| "EscapePound": func(str string) string { | "EscapePound": func(str string) string { | ||||
| return strings.NewReplacer("%", "%25", "#", "%23", " ", "%20", "?", "%3F").Replace(str) | return strings.NewReplacer("%", "%25", "#", "%23", " ", "%20", "?", "%3F").Replace(str) | ||||
| }, | }, | ||||
| "IpynbBool":func(str string) bool{ | |||||
| "IpynbBool": func(str string) bool { | |||||
| return strings.Contains(str, ".ipynb") | return strings.Contains(str, ".ipynb") | ||||
| }, | }, | ||||
| "nl2br": func(text string) template.HTML { | "nl2br": func(text string) template.HTML { | ||||
| @@ -3327,7 +3327,7 @@ Stopped_failed=任务停止失败,请稍后再试。 | |||||
| Stopped_success_update_status_fail=任务停止成功,状态及运行时间更新失败。 | Stopped_success_update_status_fail=任务停止成功,状态及运行时间更新失败。 | ||||
| load_code_failed=代码加载失败,请确认选择了正确的分支。 | load_code_failed=代码加载失败,请确认选择了正确的分支。 | ||||
| error.debug_datasetsize = 数据集大小超过限制('%d'GB) | |||||
| error.dataset_select = 数据集选择错误:数量超过限制或者有同名数据集 | error.dataset_select = 数据集选择错误:数量超过限制或者有同名数据集 | ||||
| new_train_gpu_tooltips = 训练脚本存储在 <strong style="color:#010101">%s</strong> 中,数据集存储在 <strong style="color:#010101">%s</strong> 中,预训练模型存放在运行参数 <strong style="color:#010101">%s</strong> 中,训练输出请存储在 <strong style="color:#010101">%s</strong> 中以供后续下载。 | new_train_gpu_tooltips = 训练脚本存储在 <strong style="color:#010101">%s</strong> 中,数据集存储在 <strong style="color:#010101">%s</strong> 中,预训练模型存放在运行参数 <strong style="color:#010101">%s</strong> 中,训练输出请存储在 <strong style="color:#010101">%s</strong> 中以供后续下载。 | ||||
| new_debug_gpu_tooltips = 项目代码存储在 <strong style="color:#010101">%s</strong> 中,数据集存储在 <strong style="color:#010101">%s</strong> 中,选择的模型存储在 <strong style="color:#010101">%s</strong> 中,调试输出请存储在 <strong style="color:#010101">%s</strong> 中以供后续下载。 | new_debug_gpu_tooltips = 项目代码存储在 <strong style="color:#010101">%s</strong> 中,数据集存储在 <strong style="color:#010101">%s</strong> 中,选择的模型存储在 <strong style="color:#010101">%s</strong> 中,调试输出请存储在 <strong style="color:#010101">%s</strong> 中以供后续下载。 | ||||
| @@ -285,7 +285,7 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { | |||||
| } | } | ||||
| var datasetInfos map[string]models.DatasetInfo | var datasetInfos map[string]models.DatasetInfo | ||||
| var datasetNames string | var datasetNames string | ||||
| //var | |||||
| var attachSize int | |||||
| if uuids != "" { | if uuids != "" { | ||||
| datasetInfos, datasetNames, err = models.GetDatasetInfo(uuids) | datasetInfos, datasetNames, err = models.GetDatasetInfo(uuids) | ||||
| if err != nil { | if err != nil { | ||||
| @@ -294,6 +294,18 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { | |||||
| ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) | ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) | ||||
| return | return | ||||
| } | } | ||||
| if jobType == string(models.JobTypeDebug) { | |||||
| for _, infos := range datasetInfos { | |||||
| attachSize += infos.Size | |||||
| } | |||||
| if attachSize > int(setting.DebugAttachSize*1000*1000*1000) { | |||||
| log.Error("The DatasetSize exceeds the limit (%d)", int(setting.DebugAttachSize)) // GB | |||||
| cloudBrainNewDataPrepare(ctx, jobType) | |||||
| ctx.RenderWithErr(ctx.Tr("cloudbrain.error.debug_datasetsize", int(setting.DebugAttachSize*1000*1000*1000)), tpl, &form) | |||||
| return | |||||
| } | |||||
| } | |||||
| } | } | ||||
| command := cloudbrain.GetCloudbrainDebugCommand() | command := cloudbrain.GetCloudbrainDebugCommand() | ||||
| @@ -373,6 +373,7 @@ func datasetMultiple(ctx *context.Context, opts *models.SearchDatasetOptions) { | |||||
| } | } | ||||
| data, err := json.Marshal(datasets) | data, err := json.Marshal(datasets) | ||||
| log.Info("datakey", string(data)) | |||||
| if err != nil { | if err != nil { | ||||
| log.Error("json.Marshal failed:", err.Error()) | log.Error("json.Marshal failed:", err.Error()) | ||||
| ctx.JSON(200, map[string]string{ | ctx.JSON(200, map[string]string{ | ||||
| @@ -218,6 +218,22 @@ func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||
| var datasetInfos map[string]models.DatasetInfo | |||||
| var attachSize int | |||||
| if uuid != "" { | |||||
| datasetInfos, _, err = models.GetDatasetInfo(uuid) | |||||
| for _, infos := range datasetInfos { | |||||
| attachSize += infos.Size | |||||
| } | |||||
| if attachSize > int(setting.DebugAttachSize*1000*1000*1000) { | |||||
| log.Error("The DatasetSize exceeds the limit (%d)", int(setting.DebugAttachSize)) //GB | |||||
| notebookNewDataPrepare(ctx) | |||||
| ctx.RenderWithErr(ctx.Tr("cloudbrain.error.debug_datasetsize", int(setting.DebugAttachSize*1000*1000*1000)), tplModelArtsNotebookNew, &form) | |||||
| return | |||||
| } | |||||
| } | |||||
| var aiCenterCode = models.AICenterOfCloudBrainTwo | var aiCenterCode = models.AICenterOfCloudBrainTwo | ||||
| if setting.ModelartsCD.Enabled { | if setting.ModelartsCD.Enabled { | ||||
| aiCenterCode = models.AICenterOfChengdu | aiCenterCode = models.AICenterOfChengdu | ||||
| @@ -23,7 +23,7 @@ | |||||
| <div class="repository"> | <div class="repository"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}"></div> | |||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}" data-exceed-size="{{DebugAttachSize}}"></div> | |||||
| {{if eq .NotStopTaskCount 0}} | {{if eq .NotStopTaskCount 0}} | ||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| {{end}} | {{end}} | ||||
| @@ -4,7 +4,7 @@ | |||||
| <div class="repository"> | <div class="repository"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}"></div> | |||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}" data-exceed-size="{{DebugAttachSize}}"></div> | |||||
| {{if eq .NotStopTaskCount 0}} | {{if eq .NotStopTaskCount 0}} | ||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| {{end}} | {{end}} | ||||
| @@ -3,7 +3,7 @@ | |||||
| <div class="repository"> | <div class="repository"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}"></div> | |||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}" data-exceed-size="{{DebugAttachSize}}"></div> | |||||
| {{if eq .NotStopTaskCount 0}} | {{if eq .NotStopTaskCount 0}} | ||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| {{end}} | {{end}} | ||||
| @@ -4,7 +4,7 @@ | |||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}"></div> | |||||
| <div class="cloudbrain-type" style="display: none;" data-cloudbrain-type="{{.datasetType}}" data-repo-link="{{.RepoLink}}" data-flag-model="true" data-dataset-uuid="{{.attachment}}" data-dataset-name="{{.dataset_name}}" data-exceed-size="{{DebugAttachSize}}"></div> | |||||
| {{if eq .NotStopTaskCount 0}} | {{if eq .NotStopTaskCount 0}} | ||||
| {{template "base/alert" .}} | {{template "base/alert" .}} | ||||
| {{end}} | {{end}} | ||||
| @@ -176,6 +176,12 @@ | |||||
| > | > | ||||
| {{ i18n.dataset_unzip_failed }} | {{ i18n.dataset_unzip_failed }} | ||||
| </span> | </span> | ||||
| <span | |||||
| class="unzip-failed" | |||||
| v-if="data.Size > exceedSize" | |||||
| > | |||||
| {{ i18n.dataset_exceeds_failed }}{{exceedSize/(1000*1000*1000)}}G | |||||
| </span> | |||||
| </span> | </span> | ||||
| </span> | </span> | ||||
| </el-tree> | </el-tree> | ||||
| @@ -282,6 +288,12 @@ | |||||
| > | > | ||||
| {{ i18n.dataset_unzip_failed }} | {{ i18n.dataset_unzip_failed }} | ||||
| </span> | </span> | ||||
| <span | |||||
| class="unzip-failed" | |||||
| v-if="data.Size > exceedSize" | |||||
| > | |||||
| {{ i18n.dataset_exceeds_failed }} | |||||
| </span> | |||||
| </span> | </span> | ||||
| </span> | </span> | ||||
| </el-tree> | </el-tree> | ||||
| @@ -388,6 +400,12 @@ | |||||
| > | > | ||||
| {{ i18n.dataset_unzip_failed }} | {{ i18n.dataset_unzip_failed }} | ||||
| </span> | </span> | ||||
| <span | |||||
| class="unzip-failed" | |||||
| v-if="data.Size > exceedSize" | |||||
| > | |||||
| {{ i18n.dataset_exceeds_failed }} | |||||
| </span> | |||||
| </span> | </span> | ||||
| </span> | </span> | ||||
| </el-tree> | </el-tree> | ||||
| @@ -494,6 +512,12 @@ | |||||
| > | > | ||||
| {{ i18n.dataset_unzip_failed }} | {{ i18n.dataset_unzip_failed }} | ||||
| </span> | </span> | ||||
| <span | |||||
| class="unzip-failed" | |||||
| v-if="data.Size > exceedSize" | |||||
| > | |||||
| {{ i18n.dataset_exceeds_failed }} | |||||
| </span> | |||||
| </span> | </span> | ||||
| </span> | </span> | ||||
| </el-tree> | </el-tree> | ||||
| @@ -625,6 +649,7 @@ export default { | |||||
| paramsFavorite: { page: 1, q: "" }, | paramsFavorite: { page: 1, q: "" }, | ||||
| loadingFavorite: false, | loadingFavorite: false, | ||||
| initFavoriteTreeNode: [], | initFavoriteTreeNode: [], | ||||
| exceedSize:0, | |||||
| }; | }; | ||||
| }, | }, | ||||
| methods: { | methods: { | ||||
| @@ -883,6 +908,9 @@ export default { | |||||
| if (curchild.DecompressState !== 1) { | if (curchild.DecompressState !== 1) { | ||||
| curchild.disabled = true; | curchild.disabled = true; | ||||
| } | } | ||||
| if(curchild.Size>this.exceedSize && this.exceedSize){ | |||||
| curchild.disabled = true; | |||||
| } | |||||
| curchild.ref = ref; | curchild.ref = ref; | ||||
| curchild.label = curchild.Name; | curchild.label = curchild.Name; | ||||
| preChild.push(curchild); | preChild.push(curchild); | ||||
| @@ -971,6 +999,7 @@ export default { | |||||
| mounted() { | mounted() { | ||||
| this.type = $(".cloudbrain-type").data("cloudbrain-type"); | this.type = $(".cloudbrain-type").data("cloudbrain-type"); | ||||
| this.repoLink = $(".cloudbrain-type").data("repo-link"); | this.repoLink = $(".cloudbrain-type").data("repo-link"); | ||||
| this.exceedSize = $(".cloudbrain-type").data("exceed-size"); | |||||
| if ($(".cloudbrain-type").data("dataset-uuid")) { | if ($(".cloudbrain-type").data("dataset-uuid")) { | ||||
| this.hasSelectDatasetList = $(".cloudbrain-type") | this.hasSelectDatasetList = $(".cloudbrain-type") | ||||
| .data("dataset-uuid") | .data("dataset-uuid") | ||||
| @@ -74,6 +74,7 @@ export const i18nVue = { | |||||
| dataset_search_placeholder: "搜数据集名称/描述...", | dataset_search_placeholder: "搜数据集名称/描述...", | ||||
| dataset_unziping: "正在解压缩", | dataset_unziping: "正在解压缩", | ||||
| dataset_unzip_failed: "解压失败", | dataset_unzip_failed: "解压失败", | ||||
| dataset_exceeds_failed: "数据集大小超过", | |||||
| dataset_my_upload: "我上传的", | dataset_my_upload: "我上传的", | ||||
| dataset_current_repo: "本项目", | dataset_current_repo: "本项目", | ||||
| dataset_public: "公开数据集", | dataset_public: "公开数据集", | ||||
| @@ -195,6 +196,7 @@ export const i18nVue = { | |||||
| dataset_search_placeholder: "Search dataset name/description ...", | dataset_search_placeholder: "Search dataset name/description ...", | ||||
| dataset_unziping: "Decompressing", | dataset_unziping: "Decompressing", | ||||
| dataset_unzip_failed: "Decompression failed", | dataset_unzip_failed: "Decompression failed", | ||||
| dataset_exceeds_failed: "Dataset size exceeds ", | |||||
| dataset_my_upload: "Upload by me", | dataset_my_upload: "Upload by me", | ||||
| dataset_current_repo: "Current Repository", | dataset_current_repo: "Current Repository", | ||||
| dataset_public: "Public dataset", | dataset_public: "Public dataset", | ||||