Reviewed-on: https://openi.pcl.ac.cn/OpenI/aiforge/pulls/3439 Reviewed-by: zouap <zouap@pcl.ac.cn>pull/3442/head
@@ -259,6 +259,17 @@ func GetAttachmentsByCommentID(commentID int64) ([]*Attachment, error) { | |||||
return getAttachmentsByCommentID(x, commentID) | return getAttachmentsByCommentID(x, commentID) | ||||
} | } | ||||
func GetAttachmentByDatasetIdFileName(fileName string, datasetId int64) (*Attachment, error) { | |||||
attach := &Attachment{DatasetID: datasetId, Name: fileName} | |||||
has, err := x.Get(attach) | |||||
if err != nil { | |||||
return nil, err | |||||
} else if !has { | |||||
return nil, err | |||||
} | |||||
return attach, nil | |||||
} | |||||
func getAttachmentsByCommentID(e Engine, commentID int64) ([]*Attachment, error) { | func getAttachmentsByCommentID(e Engine, commentID int64) ([]*Attachment, error) { | ||||
attachments := make([]*Attachment, 0, 10) | attachments := make([]*Attachment, 0, 10) | ||||
return attachments, e.Where("comment_id=?", commentID).Find(&attachments) | return attachments, e.Where("comment_id=?", commentID).Find(&attachments) | ||||
@@ -60,6 +60,7 @@ const ( | |||||
JobTypeModelSafety JobType = "MODELSAFETY" | JobTypeModelSafety JobType = "MODELSAFETY" | ||||
JobTypeSnn4imagenet JobType = "SNN4IMAGENET" | JobTypeSnn4imagenet JobType = "SNN4IMAGENET" | ||||
JobTypeBrainScore JobType = "BRAINSCORE" | JobTypeBrainScore JobType = "BRAINSCORE" | ||||
JobTypeSnn4Ecoset JobType = "SNN4ECOSET" | |||||
JobTypeTrain JobType = "TRAIN" | JobTypeTrain JobType = "TRAIN" | ||||
JobTypeInference JobType = "INFERENCE" | JobTypeInference JobType = "INFERENCE" | ||||
@@ -335,6 +336,9 @@ func IsModelArtsDebugJobTerminal(status string) bool { | |||||
func IsCloudBrainOneDebugJobTerminal(status string) bool { | func IsCloudBrainOneDebugJobTerminal(status string) bool { | ||||
return status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) | return status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) | ||||
} | } | ||||
func IsModelBenchMarkJobType(jobType string) bool { | |||||
return jobType == string(JobTypeSnn4imagenet) || jobType == string(JobTypeBrainScore) || jobType == string(JobTypeSnn4Ecoset) | |||||
} | |||||
func ParseAndSetDurationFromCloudBrainOne(result JobResultPayload, task *Cloudbrain) { | func ParseAndSetDurationFromCloudBrainOne(result JobResultPayload, task *Cloudbrain) { | ||||
isActivated := result.JobStatus.CreatedTime > 0 | isActivated := result.JobStatus.CreatedTime > 0 | ||||
@@ -32,10 +32,10 @@ const ( | |||||
Snn4imagenetMountPath = "/snn4imagenet" | Snn4imagenetMountPath = "/snn4imagenet" | ||||
BrainScoreMountPath = "/brainscore" | BrainScoreMountPath = "/brainscore" | ||||
TaskInfoName = "/taskInfo" | TaskInfoName = "/taskInfo" | ||||
Snn4imagenetCommand = `/opt/conda/bin/python /snn4imagenet/testSNN_script.py --modelname '%s' --modelpath '/dataset' --modeldescription '%s' >/model/benchmark-log.txt` | |||||
BrainScoreCommand = `bash /brainscore/brainscore_test_par4shSrcipt.sh -b '%s' -n '%s' -p '/dataset' -d '%s' >/model/benchmark-log.txt` | |||||
SubTaskName = "task1" | |||||
Snn4imagenetCommand = `/opt/conda/bin/python /benchmark/testSNN_script.py --modelname '%s' --modelpath '/pretrainmodel/%s' --modeldescription '%s' >/model/benchmark-log.txt` | |||||
BrainScoreCommand = `bash /benchmark/brainscore_test_par4shSrcipt.sh -b '%s' -n '%s' -p '/pretrainmodel/%s' -d '%s' >/model/benchmark-log.txt` | |||||
Snn4EcosetCommand = `/opt/conda/bin/python /benchmark/testSNN_script.py --datapath '/dataset' --modelname '%s' --modelpath '/pretrainmodel/%s' --modeldescription '%s' >/model/benchmark-log.txt` | |||||
SubTaskName = "task1" | |||||
Success = "S000" | Success = "S000" | ||||
@@ -259,20 +259,6 @@ func GenerateTask(req GenerateCloudBrainTaskReq) (string, error) { | |||||
}, | }, | ||||
{ | { | ||||
HostPath: models.StHostPath{ | HostPath: models.StHostPath{ | ||||
Path: req.Snn4ImageNetPath, | |||||
MountPath: Snn4imagenetMountPath, | |||||
ReadOnly: true, | |||||
}, | |||||
}, | |||||
{ | |||||
HostPath: models.StHostPath{ | |||||
Path: req.BrainScorePath, | |||||
MountPath: BrainScoreMountPath, | |||||
ReadOnly: true, | |||||
}, | |||||
}, | |||||
{ | |||||
HostPath: models.StHostPath{ | |||||
Path: req.ResultPath, | Path: req.ResultPath, | ||||
MountPath: ResultPath, | MountPath: ResultPath, | ||||
ReadOnly: false, | ReadOnly: false, | ||||
@@ -406,7 +392,7 @@ func GenerateTask(req GenerateCloudBrainTaskReq) (string, error) { | |||||
} | } | ||||
func IsBenchmarkJob(jobType string) bool { | func IsBenchmarkJob(jobType string) bool { | ||||
return string(models.JobTypeModelSafety) == jobType || string(models.JobTypeBenchmark) == jobType || string(models.JobTypeBrainScore) == jobType || string(models.JobTypeSnn4imagenet) == jobType | |||||
return string(models.JobTypeModelSafety) == jobType || string(models.JobTypeBenchmark) == jobType || string(models.JobTypeBrainScore) == jobType || string(models.JobTypeSnn4imagenet) == jobType || string(models.JobTypeSnn4Ecoset) == jobType | |||||
} | } | ||||
func GetWaitingCloudbrainCount(cloudbrainType int, computeResource string, jobTypes ...models.JobType) int64 { | func GetWaitingCloudbrainCount(cloudbrainType int, computeResource string, jobTypes ...models.JobType) int64 { | ||||
@@ -675,6 +661,7 @@ func IsElementExist(s []string, str string) bool { | |||||
return false | return false | ||||
} | } | ||||
func GetCloudBrainByIdOrJobId(id string, initialQuery string) (*models.Cloudbrain, error) { | func GetCloudBrainByIdOrJobId(id string, initialQuery string) (*models.Cloudbrain, error) { | ||||
_, err := strconv.ParseInt(id, 10, 64) | _, err := strconv.ParseInt(id, 10, 64) | ||||
var job *models.Cloudbrain | var job *models.Cloudbrain | ||||
@@ -544,6 +544,12 @@ var ( | |||||
BrainScoreName string | BrainScoreName string | ||||
BrainScoreServerHost string | BrainScoreServerHost string | ||||
IsSnn4EcosetEnabled bool | |||||
Snn4EcosetOwner string | |||||
Snn4EcosetName string | |||||
Snn4EcosetServerHost string | |||||
Snn4AttachmentName string | |||||
//blockchain config | //blockchain config | ||||
BlockChainHost string | BlockChainHost string | ||||
CommitValidDate string | CommitValidDate string | ||||
@@ -1524,6 +1530,13 @@ func NewContext() { | |||||
BrainScoreName = sec.Key("NAME").MustString("") | BrainScoreName = sec.Key("NAME").MustString("") | ||||
BrainScoreServerHost = sec.Key("HOST").MustString("") | BrainScoreServerHost = sec.Key("HOST").MustString("") | ||||
sec = Cfg.Section("snn4ecoset") | |||||
IsSnn4EcosetEnabled = sec.Key("ENABLED").MustBool(false) | |||||
Snn4EcosetOwner = sec.Key("OWNER").MustString("") | |||||
Snn4EcosetName = sec.Key("NAME").MustString("") | |||||
Snn4EcosetServerHost = sec.Key("HOST").MustString("") | |||||
Snn4AttachmentName = sec.Key("DATASET").MustString("") | |||||
sec = Cfg.Section("blockchain") | sec = Cfg.Section("blockchain") | ||||
BlockChainHost = sec.Key("HOST").MustString("http://192.168.136.66:3302/") | BlockChainHost = sec.Key("HOST").MustString("http://192.168.136.66:3302/") | ||||
CommitValidDate = sec.Key("COMMIT_VALID_DATE").MustString("2021-01-15") | CommitValidDate = sec.Key("COMMIT_VALID_DATE").MustString("2021-01-15") | ||||
@@ -1982,28 +1982,6 @@ | |||||
"object.assign": "^4.1.0" | "object.assign": "^4.1.0" | ||||
} | } | ||||
}, | }, | ||||
"babel-polyfill": { | |||||
"version": "6.26.0", | |||||
"resolved": "https://registry.npm.taobao.org/babel-polyfill/download/babel-polyfill-6.26.0.tgz", | |||||
"integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", | |||||
"requires": { | |||||
"babel-runtime": "^6.26.0", | |||||
"core-js": "^2.5.0", | |||||
"regenerator-runtime": "^0.10.5" | |||||
}, | |||||
"dependencies": { | |||||
"core-js": { | |||||
"version": "2.6.12", | |||||
"resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1611040749668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz", | |||||
"integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw=" | |||||
}, | |||||
"regenerator-runtime": { | |||||
"version": "0.10.5", | |||||
"resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.10.5.tgz", | |||||
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" | |||||
} | |||||
} | |||||
}, | |||||
"babel-runtime": { | "babel-runtime": { | ||||
"version": "6.26.0", | "version": "6.26.0", | ||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", | ||||
@@ -2194,9 +2172,9 @@ | |||||
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" | ||||
}, | }, | ||||
"blueimp-md5": { | "blueimp-md5": { | ||||
"version": "2.18.0", | |||||
"resolved": "https://registry.npm.taobao.org/blueimp-md5/download/blueimp-md5-2.18.0.tgz", | |||||
"integrity": "sha1-EVK+EzXwxrORHtnjbbVPPmrFKTU=" | |||||
"version": "2.19.0", | |||||
"resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", | |||||
"integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" | |||||
}, | }, | ||||
"bn.js": { | "bn.js": { | ||||
"version": "5.1.1", | "version": "5.1.1", | ||||
@@ -3536,6 +3514,11 @@ | |||||
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", | ||||
"integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" | "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=" | ||||
}, | }, | ||||
"dayjs": { | |||||
"version": "1.10.7", | |||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", | |||||
"integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" | |||||
}, | |||||
"de-indent": { | "de-indent": { | ||||
"version": "1.0.2", | "version": "1.0.2", | ||||
"resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", | "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", | ||||
@@ -4152,25 +4135,29 @@ | |||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | ||||
}, | }, | ||||
"esdk-obs-browserjs": { | "esdk-obs-browserjs": { | ||||
"version": "3.20.7", | |||||
"resolved": "https://registry.npm.taobao.org/esdk-obs-browserjs/download/esdk-obs-browserjs-3.20.7.tgz", | |||||
"integrity": "sha1-vhziRlKEhW3PgZPl0DyX68bJI0s=", | |||||
"version": "3.22.3", | |||||
"resolved": "https://registry.npmjs.org/esdk-obs-browserjs/-/esdk-obs-browserjs-3.22.3.tgz", | |||||
"integrity": "sha512-MATZXp0FwjPtKG9tpdfURa3koUarR/ev+tbO0oUKgj0GRt0798ZxmfCvYvRpgNst4w1ht4E79ikD4H40UYLgPA==", | |||||
"requires": { | "requires": { | ||||
"axios": "^0.19.0", | |||||
"babel-polyfill": "^6.26.0", | |||||
"blueimp-md5": "^2.10.0", | |||||
"js-base64": "^2.3.2", | |||||
"jssha": "^2.3.1", | |||||
"urijs": "^1.19.1" | |||||
"axios": "^0.26.1", | |||||
"blueimp-md5": "^2.18.0", | |||||
"js-base64": "^3.7.1", | |||||
"jssha": "^3.2.0", | |||||
"urijs": "^1.19.7" | |||||
}, | }, | ||||
"dependencies": { | "dependencies": { | ||||
"axios": { | "axios": { | ||||
"version": "0.19.2", | |||||
"resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.2.tgz?cache=0&sync_timestamp=1608609215811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.19.2.tgz", | |||||
"integrity": "sha1-PqNsXYgY0NX4qKl6bTa4bNwAyyc=", | |||||
"version": "0.26.1", | |||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", | |||||
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", | |||||
"requires": { | "requires": { | ||||
"follow-redirects": "1.5.10" | |||||
"follow-redirects": "^1.14.8" | |||||
} | } | ||||
}, | |||||
"js-base64": { | |||||
"version": "3.7.3", | |||||
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.3.tgz", | |||||
"integrity": "sha512-PAr6Xg2jvd7MCR6Ld9Jg3BmTcjYsHEBx1VlwEwULb/qowPf5VD9kEMagj23Gm7JRnSvE/Da/57nChZjnvL8v6A==" | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
@@ -5382,27 +5369,9 @@ | |||||
} | } | ||||
}, | }, | ||||
"follow-redirects": { | "follow-redirects": { | ||||
"version": "1.5.10", | |||||
"resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz?cache=0&sync_timestamp=1611606737937&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.5.10.tgz", | |||||
"integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=", | |||||
"requires": { | |||||
"debug": "=3.1.0" | |||||
}, | |||||
"dependencies": { | |||||
"debug": { | |||||
"version": "3.1.0", | |||||
"resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1607566533140&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz", | |||||
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", | |||||
"requires": { | |||||
"ms": "2.0.0" | |||||
} | |||||
}, | |||||
"ms": { | |||||
"version": "2.0.0", | |||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | |||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | |||||
} | |||||
} | |||||
"version": "1.15.2", | |||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", | |||||
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" | |||||
}, | }, | ||||
"fomantic-ui": { | "fomantic-ui": { | ||||
"version": "2.8.4", | "version": "2.8.4", | ||||
@@ -7884,9 +7853,9 @@ | |||||
} | } | ||||
}, | }, | ||||
"jssha": { | "jssha": { | ||||
"version": "2.4.2", | |||||
"resolved": "https://registry.npm.taobao.org/jssha/download/jssha-2.4.2.tgz", | |||||
"integrity": "sha1-2VCwlWNJKL1rK9odQtqaOnYtZek=" | |||||
"version": "3.3.0", | |||||
"resolved": "https://registry.npmjs.org/jssha/-/jssha-3.3.0.tgz", | |||||
"integrity": "sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==" | |||||
}, | }, | ||||
"just-debounce": { | "just-debounce": { | ||||
"version": "1.0.0", | "version": "1.0.0", | ||||
@@ -14400,9 +14369,9 @@ | |||||
} | } | ||||
}, | }, | ||||
"urijs": { | "urijs": { | ||||
"version": "1.19.6", | |||||
"resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.6.tgz", | |||||
"integrity": "sha512-eSXsXZ2jLvGWeLYlQA3Gh36BcjF+0amo92+wHPyN1mdR8Nxf75fuEuYTd9c0a+m/vhCjRK0ESlE9YNLW+E1VEw==" | |||||
"version": "1.19.11", | |||||
"resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", | |||||
"integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" | |||||
}, | }, | ||||
"urix": { | "urix": { | ||||
"version": "0.1.0", | "version": "0.1.0", | ||||
@@ -53,7 +53,7 @@ func CloudBrains(ctx *context.Context) { | |||||
var jobTypes []string | var jobTypes []string | ||||
jobTypeNot := false | jobTypeNot := false | ||||
if jobType == string(models.JobTypeBenchmark) { | if jobType == string(models.JobTypeBenchmark) { | ||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet)) | |||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeSnn4Ecoset)) | |||||
} else if jobType != "all" && jobType != "" { | } else if jobType != "all" && jobType != "" { | ||||
jobTypes = append(jobTypes, jobType) | jobTypes = append(jobTypes, jobType) | ||||
} | } | ||||
@@ -623,7 +623,7 @@ func GetAllCloudbrainsPeriodDistribution(ctx *context.Context) { | |||||
} | } | ||||
jobTypeList := []string{string(models.JobTypeDebug), string(models.JobTypeTrain), string(models.JobTypeInference), string(models.JobTypeBenchmark), | jobTypeList := []string{string(models.JobTypeDebug), string(models.JobTypeTrain), string(models.JobTypeInference), string(models.JobTypeBenchmark), | ||||
string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet)} | |||||
string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeSnn4Ecoset)} | |||||
for _, v := range jobTypeList { | for _, v := range jobTypeList { | ||||
if _, ok := cloudOneJobTypeRes[v]; !ok { | if _, ok := cloudOneJobTypeRes[v]; !ok { | ||||
cloudOneJobTypeRes[v] = 0 | cloudOneJobTypeRes[v] = 0 | ||||
@@ -730,7 +730,7 @@ func GetCloudbrainsDetailData(ctx *context.Context) { | |||||
var jobTypes []string | var jobTypes []string | ||||
jobTypeNot := false | jobTypeNot := false | ||||
if jobType == string(models.JobTypeBenchmark) { | if jobType == string(models.JobTypeBenchmark) { | ||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet)) | |||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeSnn4Ecoset)) | |||||
} else if jobType != "all" && jobType != "" { | } else if jobType != "all" && jobType != "" { | ||||
jobTypes = append(jobTypes, jobType) | jobTypes = append(jobTypes, jobType) | ||||
} | } | ||||
@@ -399,7 +399,6 @@ func cloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { | |||||
req.ModelVersion = form.ModelVersion | req.ModelVersion = form.ModelVersion | ||||
req.PreTrainModelPath = setting.Attachment.Minio.RealPath + form.PreTrainModelUrl | req.PreTrainModelPath = setting.Attachment.Minio.RealPath + form.PreTrainModelUrl | ||||
req.PreTrainModelUrl = form.PreTrainModelUrl | req.PreTrainModelUrl = form.PreTrainModelUrl | ||||
} | } | ||||
_, err = cloudbrain.GenerateTask(req) | _, err = cloudbrain.GenerateTask(req) | ||||
@@ -747,6 +746,7 @@ func CloudBrainRestart(ctx *context.Context) { | |||||
}) | }) | ||||
} | } | ||||
func hasDatasetDeleted(task *models.Cloudbrain) bool { | func hasDatasetDeleted(task *models.Cloudbrain) bool { | ||||
if task.Uuid == "" { | if task.Uuid == "" { | ||||
return false | return false | ||||
@@ -855,7 +855,7 @@ func cloudBrainShow(ctx *context.Context, tpName base.TplName, jobType models.Jo | |||||
if task.JobType == string(models.JobTypeBenchmark) { | if task.JobType == string(models.JobTypeBenchmark) { | ||||
task.BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.algorithm") | task.BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.algorithm") | ||||
} else if task.JobType == string(models.JobTypeSnn4imagenet) || task.JobType == string(models.JobTypeBrainScore) { | |||||
} else if models.IsModelBenchMarkJobType(task.JobType) { | |||||
task.BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.model") | task.BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.model") | ||||
task.BenchmarkTypeName = task.JobType | task.BenchmarkTypeName = task.JobType | ||||
ctx.Data["BenchmarkTypeName"] = task.JobType | ctx.Data["BenchmarkTypeName"] = task.JobType | ||||
@@ -1704,6 +1704,8 @@ func GetRate(ctx *context.Context) { | |||||
ctx.Redirect(setting.Snn4imagenetServerHost) | ctx.Redirect(setting.Snn4imagenetServerHost) | ||||
} else if job.JobType == string(models.JobTypeBrainScore) { | } else if job.JobType == string(models.JobTypeBrainScore) { | ||||
ctx.Redirect(setting.BrainScoreServerHost) | ctx.Redirect(setting.BrainScoreServerHost) | ||||
} else if job.JobType == string(models.JobTypeSnn4Ecoset) { | |||||
ctx.Redirect(setting.Snn4EcosetServerHost) | |||||
} else { | } else { | ||||
log.Error("JobType error:%s", job.JobType, ctx.Data["msgID"]) | log.Error("JobType error:%s", job.JobType, ctx.Data["msgID"]) | ||||
} | } | ||||
@@ -2176,7 +2178,7 @@ func CloudBrainBenchmarkIndex(ctx *context.Context) { | |||||
} | } | ||||
var jobTypes []string | var jobTypes []string | ||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeModelSafety)) | |||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeSnn4Ecoset), string(models.JobTypeModelSafety)) | |||||
ciTasks, count, err := models.Cloudbrains(&models.CloudbrainsOptions{ | ciTasks, count, err := models.Cloudbrains(&models.CloudbrainsOptions{ | ||||
ListOptions: models.ListOptions{ | ListOptions: models.ListOptions{ | ||||
Page: page, | Page: page, | ||||
@@ -2209,14 +2211,16 @@ func CloudBrainBenchmarkIndex(ctx *context.Context) { | |||||
ciTasks[i].BenchmarkTypeName = "" | ciTasks[i].BenchmarkTypeName = "" | ||||
if ciTasks[i].JobType == string(models.JobTypeBenchmark) { | if ciTasks[i].JobType == string(models.JobTypeBenchmark) { | ||||
ciTasks[i].BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.algorithm") | ciTasks[i].BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.algorithm") | ||||
} else if ciTasks[i].JobType == string(models.JobTypeSnn4imagenet) || ciTasks[i].JobType == string(models.JobTypeBrainScore) { | |||||
} else if models.IsModelBenchMarkJobType(ciTasks[i].JobType) { | |||||
ciTasks[i].BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.model") | ciTasks[i].BenchmarkType = ctx.Tr("repo.cloudbrain.benchmark.model") | ||||
ciTasks[i].BenchmarkTypeName = ciTasks[i].JobType | ciTasks[i].BenchmarkTypeName = ciTasks[i].JobType | ||||
if ciTasks[i].JobType == string(models.JobTypeSnn4imagenet) { | if ciTasks[i].JobType == string(models.JobTypeSnn4imagenet) { | ||||
ciTasks[i].BenchmarkTypeRankLink = setting.Snn4imagenetServerHost | ciTasks[i].BenchmarkTypeRankLink = setting.Snn4imagenetServerHost | ||||
} else { | |||||
} else if ciTasks[i].JobType == string(models.JobTypeBrainScore) { | |||||
ciTasks[i].BenchmarkTypeRankLink = setting.BrainScoreServerHost | ciTasks[i].BenchmarkTypeRankLink = setting.BrainScoreServerHost | ||||
} else { | |||||
ciTasks[i].BenchmarkTypeRankLink = setting.Snn4EcosetServerHost | |||||
} | } | ||||
} | } | ||||
@@ -2566,7 +2570,6 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
displayJobName := form.DisplayJobName | displayJobName := form.DisplayJobName | ||||
jobName := util.ConvertDisplayJobNameToJobName(displayJobName) | jobName := util.ConvertDisplayJobNameToJobName(displayJobName) | ||||
image := form.Image | image := form.Image | ||||
uuid := form.Attachment | |||||
jobType := form.JobType | jobType := form.JobType | ||||
codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath | codePath := setting.JobPath + jobName + cloudbrain.CodeMountPath | ||||
branchName := cloudbrain.DefaultBranchName | branchName := cloudbrain.DefaultBranchName | ||||
@@ -2608,7 +2611,7 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
return | return | ||||
} | } | ||||
if jobType != string(models.JobTypeSnn4imagenet) && jobType != string(models.JobTypeBrainScore) { | |||||
if !models.IsModelBenchMarkJobType(jobType) { | |||||
log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) | log.Error("jobtype error:", jobType, ctx.Data["MsgID"]) | ||||
cloudBrainNewDataPrepare(ctx, jobType) | cloudBrainNewDataPrepare(ctx, jobType) | ||||
ctx.RenderWithErr("jobtype error", tpl, &form) | ctx.RenderWithErr("jobtype error", tpl, &form) | ||||
@@ -2637,29 +2640,41 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
mkModelPath(modelPath) | mkModelPath(modelPath) | ||||
uploadCodeToMinio(modelPath, jobName, cloudbrain.ModelMountPath+"/") | uploadCodeToMinio(modelPath, jobName, cloudbrain.ModelMountPath+"/") | ||||
snn4imagenetPath := setting.JobPath + jobName + cloudbrain.Snn4imagenetMountPath | |||||
benchmarkPath := setting.JobPath + jobName + cloudbrain.BenchMarkMountPath | |||||
if setting.IsSnn4imagenetEnabled && jobType == string(models.JobTypeSnn4imagenet) { | if setting.IsSnn4imagenetEnabled && jobType == string(models.JobTypeSnn4imagenet) { | ||||
downloadRateCode(repo, jobName, setting.Snn4imagenetOwner, setting.Snn4imagenetName, snn4imagenetPath, "", "", ctx.User.Name) | |||||
uploadCodeToMinio(snn4imagenetPath+"/", jobName, cloudbrain.Snn4imagenetMountPath+"/") | |||||
command = fmt.Sprintf(cloudbrain.Snn4imagenetCommand, displayJobName, trimSpaceNewlineInString(form.Description)) | |||||
downloadRateCode(repo, jobName, setting.Snn4imagenetOwner, setting.Snn4imagenetName, benchmarkPath, "", "", ctx.User.Name) | |||||
uploadCodeToMinio(benchmarkPath+"/", jobName, cloudbrain.BenchMarkMountPath+"/") | |||||
command = fmt.Sprintf(cloudbrain.Snn4imagenetCommand, displayJobName, form.CkptName, trimSpaceNewlineInString(form.Description)) | |||||
} | } | ||||
benchmarkChildTypeID := 0 | benchmarkChildTypeID := 0 | ||||
brainScorePath := setting.JobPath + jobName + cloudbrain.BrainScoreMountPath | |||||
if setting.IsBrainScoreEnabled && jobType == string(models.JobTypeBrainScore) { | if setting.IsBrainScoreEnabled && jobType == string(models.JobTypeBrainScore) { | ||||
downloadRateCode(repo, jobName, setting.BrainScoreOwner, setting.BrainScoreName, brainScorePath, "", "", ctx.User.Name) | |||||
uploadCodeToMinio(brainScorePath+"/", jobName, cloudbrain.BrainScoreMountPath+"/") | |||||
downloadRateCode(repo, jobName, setting.BrainScoreOwner, setting.BrainScoreName, benchmarkPath, "", "", ctx.User.Name) | |||||
uploadCodeToMinio(benchmarkPath+"/", jobName, cloudbrain.BenchMarkMountPath+"/") | |||||
benchmarkChildTypeID = form.BenchmarkChildTypeID | benchmarkChildTypeID = form.BenchmarkChildTypeID | ||||
command = fmt.Sprintf(cloudbrain.BrainScoreCommand, getBrainRegion(benchmarkChildTypeID), displayJobName, trimSpaceNewlineInString(form.Description)) | |||||
command = fmt.Sprintf(cloudbrain.BrainScoreCommand, getBrainRegion(benchmarkChildTypeID), displayJobName, form.CkptName, trimSpaceNewlineInString(form.Description)) | |||||
} | } | ||||
var uuid string | |||||
var datasetInfos map[string]models.DatasetInfo | |||||
var datasetNames string | |||||
if setting.IsSnn4EcosetEnabled && jobType == string(models.JobTypeSnn4Ecoset) { | |||||
downloadRateCode(repo, jobName, setting.Snn4EcosetOwner, setting.Snn4EcosetName, benchmarkPath, "", "", ctx.User.Name) | |||||
uploadCodeToMinio(benchmarkPath+"/", jobName, cloudbrain.BenchMarkMountPath+"/") | |||||
command = fmt.Sprintf(cloudbrain.Snn4EcosetCommand, displayJobName, form.CkptName, trimSpaceNewlineInString(form.Description)) | |||||
attachment, err := getEcosetAttachment() | |||||
if err != nil { | |||||
log.Error("load benchmark code failed", err) | |||||
cloudBrainNewDataPrepare(ctx, jobType) | |||||
ctx.RenderWithErr(ctx.Tr("repo.cloudbrain.morethanonejob"), tpl, &form) | |||||
return | |||||
} | |||||
uuid = attachment.UUID | |||||
datasetInfos, datasetNames, _ = models.GetDatasetInfo(uuid) | |||||
datasetInfos, datasetNames, err := models.GetDatasetInfo(uuid) | |||||
if err != nil { | |||||
log.Error("GetDatasetInfo failed: %v", err, ctx.Data["MsgID"]) | |||||
cloudBrainNewDataPrepare(ctx, jobType) | |||||
ctx.RenderWithErr(ctx.Tr("cloudbrain.error.dataset_select"), tpl, &form) | |||||
return | |||||
} | } | ||||
spec, err := resource.GetAndCheckSpec(ctx.User.ID, form.SpecId, models.FindSpecsOptions{ | spec, err := resource.GetAndCheckSpec(ctx.User.ID, form.SpecId, models.FindSpecsOptions{ | ||||
JobType: models.JobTypeBenchmark, | JobType: models.JobTypeBenchmark, | ||||
ComputeResource: models.GPU, | ComputeResource: models.GPU, | ||||
@@ -2691,8 +2706,6 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
CodePath: storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), | CodePath: storage.GetMinioPath(jobName, cloudbrain.CodeMountPath+"/"), | ||||
ModelPath: storage.GetMinioPath(jobName, cloudbrain.ModelMountPath+"/"), | ModelPath: storage.GetMinioPath(jobName, cloudbrain.ModelMountPath+"/"), | ||||
BenchmarkPath: storage.GetMinioPath(jobName, cloudbrain.BenchMarkMountPath+"/"), | BenchmarkPath: storage.GetMinioPath(jobName, cloudbrain.BenchMarkMountPath+"/"), | ||||
Snn4ImageNetPath: storage.GetMinioPath(jobName, cloudbrain.Snn4imagenetMountPath+"/"), | |||||
BrainScorePath: storage.GetMinioPath(jobName, cloudbrain.BrainScoreMountPath+"/"), | |||||
JobType: jobType, | JobType: jobType, | ||||
Description: form.Description, | Description: form.Description, | ||||
BranchName: branchName, | BranchName: branchName, | ||||
@@ -2704,6 +2717,14 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
ResultPath: storage.GetMinioPath(jobName, cloudbrain.ResultPath+"/"), | ResultPath: storage.GetMinioPath(jobName, cloudbrain.ResultPath+"/"), | ||||
Spec: spec, | Spec: spec, | ||||
} | } | ||||
if form.ModelName != "" { | |||||
req.ModelName = form.ModelName | |||||
req.LabelName = form.LabelName | |||||
req.CkptName = form.CkptName | |||||
req.ModelVersion = form.ModelVersion | |||||
req.PreTrainModelPath = setting.Attachment.Minio.RealPath + form.PreTrainModelUrl | |||||
req.PreTrainModelUrl = form.PreTrainModelUrl | |||||
} | |||||
_, err = cloudbrain.GenerateTask(req) | _, err = cloudbrain.GenerateTask(req) | ||||
if err != nil { | if err != nil { | ||||
@@ -2715,6 +2736,21 @@ func ModelBenchmarkCreate(ctx *context.Context, form auth.CreateCloudBrainForm) | |||||
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/cloudbrain/benchmark") | ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/cloudbrain/benchmark") | ||||
} | } | ||||
func getEcosetAttachment() (*models.Attachment, error) { | |||||
ecosetRepo, err := models.GetRepositoryByOwnerAndName(setting.Snn4EcosetOwner, setting.Snn4EcosetName) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
datasetInfo, err := models.GetDatasetByRepo(ecosetRepo) | |||||
if err != nil { | |||||
return nil, err | |||||
} | |||||
return models.GetAttachmentByDatasetIdFileName(setting.Snn4AttachmentName, datasetInfo.ID) | |||||
} | |||||
func getBrainRegion(benchmarkChildTypeID int) string { | func getBrainRegion(benchmarkChildTypeID int) string { | ||||
values := []string{"V1", "V2", "V4", "IT"} | values := []string{"V1", "V2", "V4", "IT"} | ||||
return values[benchmarkChildTypeID] | return values[benchmarkChildTypeID] | ||||
@@ -779,7 +779,7 @@ func Cloudbrains(ctx *context.Context) { | |||||
var jobTypes []string | var jobTypes []string | ||||
jobTypeNot := false | jobTypeNot := false | ||||
if jobType == string(models.JobTypeBenchmark) { | if jobType == string(models.JobTypeBenchmark) { | ||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet)) | |||||
jobTypes = append(jobTypes, string(models.JobTypeBenchmark), string(models.JobTypeModelSafety), string(models.JobTypeBrainScore), string(models.JobTypeSnn4imagenet), string(models.JobTypeSnn4Ecoset)) | |||||
} else if jobType != "all" && jobType != "" { | } else if jobType != "all" && jobType != "" { | ||||
jobTypes = append(jobTypes, jobType) | jobTypes = append(jobTypes, jobType) | ||||
} | } | ||||
@@ -34,7 +34,7 @@ var StatusInfoDict = map[string]StatusInfo{string(models.JobTypeDebug) + "-" + s | |||||
ComputeResource: models.GPUResource, | ComputeResource: models.GPUResource, | ||||
}, string(models.JobTypeBenchmark) + "-" + strconv.Itoa(models.TypeCloudBrainOne): { | }, string(models.JobTypeBenchmark) + "-" + strconv.Itoa(models.TypeCloudBrainOne): { | ||||
CloudBrainTypes: []int{models.TypeCloudBrainOne}, | CloudBrainTypes: []int{models.TypeCloudBrainOne}, | ||||
JobType: []models.JobType{models.JobTypeBenchmark, models.JobTypeBrainScore, models.JobTypeSnn4imagenet}, | |||||
JobType: []models.JobType{models.JobTypeBenchmark, models.JobTypeBrainScore, models.JobTypeSnn4imagenet, models.JobTypeSnn4Ecoset}, | |||||
NotFinalStatuses: CloudbrainOneNotFinalStatuses, | NotFinalStatuses: CloudbrainOneNotFinalStatuses, | ||||
ComputeResource: models.GPUResource, | ComputeResource: models.GPUResource, | ||||
}, string(models.JobTypeDebug) + "-" + strconv.Itoa(models.TypeCloudBrainTwo): { | }, string(models.JobTypeDebug) + "-" + strconv.Itoa(models.TypeCloudBrainTwo): { | ||||
@@ -76,7 +76,7 @@ var StatusInfoDict = map[string]StatusInfo{string(models.JobTypeDebug) + "-" + s | |||||
func GetNotFinalStatusTaskCount(uid int64, cloudbrainType int, jobType string, computeResource ...string) (int, error) { | func GetNotFinalStatusTaskCount(uid int64, cloudbrainType int, jobType string, computeResource ...string) (int, error) { | ||||
jobNewType := jobType | jobNewType := jobType | ||||
if jobType == string(models.JobTypeSnn4imagenet) || jobType == string(models.JobTypeBrainScore) { | |||||
if models.IsModelBenchMarkJobType(jobType) { | |||||
jobNewType = string(models.JobTypeBenchmark) | jobNewType = string(models.JobTypeBenchmark) | ||||
} | } | ||||
@@ -1,37 +1,9 @@ | |||||
{{template "base/head" .}} | {{template "base/head" .}} | ||||
<style> | |||||
.unite { | |||||
font-family: SourceHanSansSC-medium !important; | |||||
color: rgba(16, 16, 16, 100) !important; | |||||
} | |||||
.title { | |||||
font-size: 16px !important; | |||||
padding-left: 3rem !important; | |||||
} | |||||
.min_title{ | |||||
font-size: 14px !important; | |||||
margin-bottom: 2rem !important; | |||||
} | |||||
.width81 { | |||||
margin-left: 1.5rem; | |||||
width: 81% !important; | |||||
} | |||||
.width48 { | |||||
width: 48.5% !important; | |||||
} | |||||
.nowrapx { | |||||
white-space: nowrap !important; | |||||
} | |||||
</style> | |||||
{{template "custom/global_mask" .}} | {{template "custom/global_mask" .}} | ||||
<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-repo-link="{{.RepoLink}}" data-flag-model="true"></div> | |||||
{{if eq .NotStopTaskCount 0}} | {{if eq .NotStopTaskCount 0}} | ||||
{{template "base/alert" .}} | {{template "base/alert" .}} | ||||
{{end}} | {{end}} | ||||
@@ -78,21 +50,12 @@ | |||||
onkeydown="this.value=this.value.substring(0, 255)" | onkeydown="this.value=this.value.substring(0, 255)" | ||||
onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | ||||
</div> | </div> | ||||
<!--<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.gpu_type"}}</label> | |||||
<select id="cloudbrain_gpu_type" class="ui search dropdown width48" placeholder="选择GPU类型" | |||||
name="gpu_type"> | |||||
{{range .benchmark_gpu_types}} | |||||
<option value="{{.Queue}}">{{.Value}}</option> | |||||
{{end}} | |||||
</select> | |||||
</div>--> | |||||
<div class="required unite min_title two inline fields" style="margin-left: 80px;"> | |||||
<div class="required min_title two inline fields" style="margin-left: 80px;"> | |||||
<div class="required ten wide field" style="width: 26.5% !important;"> | <div class="required ten wide field" style="width: 26.5% !important;"> | ||||
<label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.task_type"}}</label> | <label style="font-weight: normal;">{{.i18n.Tr "cloudbrain.task_type"}}</label> | ||||
<select id="cloudbrain_job_type" class="ui search dropdown job_type" | |||||
<select id="cloudbrain_job_type" class="ui search dropdown job_type" | |||||
placeholder="select {{.i18n.Tr "cloudbrain.task_type"}}" name="job_type"> | placeholder="select {{.i18n.Tr "cloudbrain.task_type"}}" name="job_type"> | ||||
<option value="SNN4ECOSET">SNN4ECOSET</option> | |||||
<option value="SNN4IMAGENET">SNN4IMAGENET</option> | <option value="SNN4IMAGENET">SNN4IMAGENET</option> | ||||
<option value="BRAINSCORE">BRAINSCORE</option> | <option value="BRAINSCORE">BRAINSCORE</option> | ||||
</select> | </select> | ||||
@@ -116,22 +79,10 @@ | |||||
<a id="benchmark_model_example" href="https://openi.pcl.ac.cn/BDIP/snn4imagenet" | <a id="benchmark_model_example" href="https://openi.pcl.ac.cn/BDIP/snn4imagenet" | ||||
target="_blank">{{.i18n.Tr "cloudbrain.view_sample"}}</a> | target="_blank">{{.i18n.Tr "cloudbrain.view_sample"}}</a> | ||||
</div> | </div> | ||||
{{template "custom/select_model" .}} | |||||
<div id="images-new-cb"> | <div id="images-new-cb"> | ||||
</div> | </div> | ||||
{{template "custom/select_dataset_train" .}} | |||||
<!--<div class="required min_title inline field" style="margin-top:2rem;"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | |||||
<select id="cloudbrain_resource_spec" class="ui search dropdown" | |||||
placeholder="{{.i18n.Tr "cloudbrain.select_specification"}}" style='width:385px' | |||||
name="resource_spec_id"> | |||||
{{range .benchmark_resource_specs}} | |||||
<option name="resource_spec_id" value="{{.Id}}"> | |||||
{{$.i18n.Tr "cloudbrain.gpu_num"}}:{{.GpuNum}},{{$.i18n.Tr "cloudbrain.cpu_num"}}:{{.CpuNum}},{{$.i18n.Tr "cloudbrain.memory"}}(MB):{{.MemMiB}},{{$.i18n.Tr "cloudbrain.shared_memory"}}(MB):{{.ShareMemMiB}} | |||||
</option> | |||||
{{end}} | |||||
</select> | |||||
</div>--> | |||||
<div class="required min_title inline field" style="margin-top:2rem;"> | <div class="required min_title inline field" style="margin-top:2rem;"> | ||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | <label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | ||||
<select id="__specs__" class="ui search dropdown width48" | <select id="__specs__" class="ui search dropdown width48" | ||||
@@ -156,7 +107,7 @@ | |||||
<button class="ui create_train_job green button {{if eq .NotStopTaskCount 1}}disabled{{end}}"> | <button class="ui create_train_job green button {{if eq .NotStopTaskCount 1}}disabled{{end}}"> | ||||
{{.i18n.Tr "repo.cloudbrain.new"}} | {{.i18n.Tr "repo.cloudbrain.new"}} | ||||
</button> | </button> | ||||
<a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||||
<a class="ui button" href="{{.RepoLink}}/cloudbrain/benchmark">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -199,20 +150,11 @@ | |||||
onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | ||||
</div> | </div> | ||||
<!--<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.gpu_type"}}</label> | |||||
<select id="cloudbrain_gpu_type" class="ui search dropdown" placeholder="选择GPU类型" | |||||
style='width:385px' name="gpu_type"> | |||||
{{range .benchmark_gpu_types}} | |||||
<option value="{{.Queue}}">{{.Value}}</option> | |||||
{{end}} | |||||
</select> | |||||
</div>--> | |||||
<div class="required unite inline min_title fields" style="width: 90%;margin-left: 5.7rem;"> | |||||
<div class="required inline min_title fields" style="width: 90%;margin-left: 5.7rem;"> | |||||
<div class="required eight wide field"> | <div class="required eight wide field"> | ||||
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.cloudbrain.benchmark.evaluate_type"}}</label> | <label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.cloudbrain.benchmark.evaluate_type"}}</label> | ||||
<select class="ui fluid selection search dropdown" id="benchmark_types_id" | |||||
<select class="ui fluid selection search dropdown benchmark_types_id" | |||||
name="benchmark_types_id"> | name="benchmark_types_id"> | ||||
{{range .benchmark_types}} | {{range .benchmark_types}} | ||||
{{if eq .Id $.benchmarkTypeID}} | {{if eq .Id $.benchmarkTypeID}} | ||||
@@ -226,26 +168,13 @@ | |||||
<div class="eight wide field" id="engine_name"> | <div class="eight wide field" id="engine_name"> | ||||
<input type="hidden" id="benchmark_child_types_id_hidden" name="benchmark_child_types_id_hidden" value="{{.benchmark_child_types_id_hidden}}"> | <input type="hidden" id="benchmark_child_types_id_hidden" name="benchmark_child_types_id_hidden" value="{{.benchmark_child_types_id_hidden}}"> | ||||
<label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.cloudbrain.benchmark.evaluate_child_type"}}</label> | <label style="font-weight: normal;white-space: nowrap;">{{.i18n.Tr "repo.cloudbrain.benchmark.evaluate_child_type"}}</label> | ||||
<select class="ui fluid selection dropdown nowrapx" id="benchmark_child_types_id" style='width: 100%;' name="benchmark_child_types_id"> | |||||
<select class="ui fluid selection dropdown " id="benchmark_child_types_id" style='width: 100%;' name="benchmark_child_types_id"> | |||||
</select> | </select> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div id="images-new-cb"> | <div id="images-new-cb"> | ||||
</div> | </div> | ||||
<!--<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | |||||
<select id="cloudbrain_resource_spec" class="ui search dropdown" | |||||
placeholder="{{.i18n.Tr "cloudbrain.select_specification"}}" style='width:385px' | |||||
name="resource_spec_id"> | |||||
{{range .benchmark_resource_specs}} | |||||
<option name="resource_spec_id" value="{{.Id}}"> | |||||
{{$.i18n.Tr "cloudbrain.gpu_num"}}:{{.GpuNum}},{{$.i18n.Tr "cloudbrain.cpu_num"}}:{{.CpuNum}},{{$.i18n.Tr "cloudbrain.memory"}}(MB):{{.MemMiB}},{{$.i18n.Tr "cloudbrain.shared_memory"}}(MB):{{.ShareMemMiB}} | |||||
</option> | |||||
{{end}} | |||||
</select> | |||||
</div>--> | |||||
<div class="required min_title inline field"> | <div class="required min_title inline field"> | ||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | <label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | ||||
<select id="__specs__" class="ui search dropdown width48" | <select id="__specs__" class="ui search dropdown width48" | ||||
@@ -282,197 +211,134 @@ | |||||
target="_blank">{{.i18n.Tr "cloudbrain.view_sample"}}</a> | target="_blank">{{.i18n.Tr "cloudbrain.view_sample"}}</a> | ||||
</div> | </div> | ||||
<div class="inline unite min_title field"> | |||||
<label class="label-fix-width" style="font-weight: normal;"></label> | |||||
<button class="ui create_train_job green button {{if eq .NotStopTaskCount 1}}disabled{{end}}"> | |||||
{{.i18n.Tr "repo.cloudbrain.new"}} | |||||
</button> | |||||
<a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
{{else if eq .benchmarkMode "aisafety"}} | |||||
<form id="form_id" class="ui form alogrithm_form" action="{{.Link}}?benchmarkMode=alogrithm" method="post"> | |||||
{{.CsrfTokenHtml}} | |||||
<input type="hidden" name="action" value="update"> | |||||
<input type="hidden" name="job_type" value="BENCHMARK"> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.cloudbrain.benchmark.evaluate_scenes"}}</label> | |||||
<div class="ui blue small menu compact selectcloudbrain"> | |||||
<a class="item alogrithm_benchmark" | |||||
href="{{.Link}}?benchmarkMode=alogrithm">{{.i18n.Tr "repo.cloudbrain.benchmark.algorithm"}}</a> | |||||
<a class="item model_benchmark" | |||||
href="{{.Link}}?benchmarkMode=model">{{.i18n.Tr "repo.cloudbrain.benchmark.model"}}</a> | |||||
<a class="active item aisafety_benchmark" | |||||
href="{{.RepoLink}}/modelsafety/create_gpu">模型安全评测</a> | |||||
</div> | |||||
</div> | |||||
<div> | |||||
<div class="min_title inline field" style="margin-top:-10px;"> | |||||
<label class="label-fix-width" style="font-weight: normal;"></label> | |||||
{{template "custom/task_wait_count" .}} | |||||
</div> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "repo.modelarts.train_job.job_name"}}</label> | |||||
<input style="width: 80%;" name="display_job_name" id="trainjob_job_name" | |||||
placeholder={{.i18n.Tr "repo.modelarts.train_job.job_name"}} value="{{.display_job_name}}" | |||||
tabindex="3" autofocus required maxlength="36"> | |||||
<span class="tooltips" style="display: block;margin-left: 11.5rem;">{{.i18n.Tr "repo.cloudbrain_jobname_err"}}</span> | |||||
</div> | |||||
<div class="min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;" | |||||
for="description">{{.i18n.Tr "repo.modelarts.train_job.description"}}</label> | |||||
<textarea style="width: 80%;" id="description" name="description" rows="3" maxlength="254" | |||||
placeholder={{.i18n.Tr "repo.modelarts.train_job.new_place"}} | |||||
onchange="this.value=this.value.substring(0, 255)" | |||||
onkeydown="this.value=this.value.substring(0, 255)" | |||||
onkeyup="this.value=this.value.substring(0, 255)">{{.description}}</textarea> | |||||
</div> | |||||
<div id="images-new-cb"> | |||||
</div> | |||||
<div class="required min_title inline field"> | |||||
<label class="label-fix-width" style="font-weight: normal;">{{.i18n.Tr "cloudbrain.resource_specification"}}</label> | |||||
<select id="__specs__" class="ui search dropdown width48" | |||||
placeholder="{{.i18n.Tr "cloudbrain.select_specification"}}" style='width:385px' ovalue="{{.spec_id}}" | |||||
name="spec_id"> | |||||
</select> | |||||
<span><i class="question circle icon link"></i></span> | |||||
<a href="{{AppSubUrl}}/resource_desc" target="_blank">{{.i18n.Tr "custom.resource_description"}}</a> | |||||
</div> | |||||
<div class="inline min_title field required"> | |||||
<label class="label-fix-width" style="font-weight: normal;">推理程序</label> | |||||
<input disabled="disabled" style="width: 33.5%;" name="test_file" id="test_file" value="test.py" | |||||
tabindex="3" autofocus required maxlength="254"> | |||||
<a id="test_href_id" href="https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark" | |||||
target="_blank">{{.i18n.Tr "cloudbrain.view_sample"}}</a> | |||||
</div> | |||||
<div class="inline unite min_title field"> | |||||
<div class="inline min_title field"> | |||||
<label class="label-fix-width" style="font-weight: normal;"></label> | <label class="label-fix-width" style="font-weight: normal;"></label> | ||||
<button class="ui create_train_job green button {{if eq .NotStopTaskCount 1}}disabled{{end}}"> | <button class="ui create_train_job green button {{if eq .NotStopTaskCount 1}}disabled{{end}}"> | ||||
{{.i18n.Tr "repo.cloudbrain.new"}} | {{.i18n.Tr "repo.cloudbrain.new"}} | ||||
</button> | </button> | ||||
<a class="ui button" href="/">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||||
<a class="ui button" href="{{.RepoLink}}/cloudbrain/benchmark">{{.i18n.Tr "repo.cloudbrain.cancel"}}</a> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</form> | </form> | ||||
{{end}} | {{end}} | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
{{template "base/footer" .}} | {{template "base/footer" .}} | ||||
<script src="{{StaticUrlPrefix}}/js/specsuse.js?v={{MD5 AppVer}}" type="text/javascript"></script> | <script src="{{StaticUrlPrefix}}/js/specsuse.js?v={{MD5 AppVer}}" type="text/javascript"></script> | ||||
<script src="{{StaticUrlPrefix}}/js/cloudbrainNew.js?v={{MD5 AppVer}}" type="text/javascript"></script> | |||||
<script> | <script> | ||||
let form = document.getElementById('form_id'); | |||||
let createFlag = false | |||||
form.onsubmit = function (e) { | |||||
if(createFlag) return false | |||||
createFlag = true | |||||
} | |||||
let repolink = {{.RepoLink }} | |||||
let url_href = window.location.pathname.split('create')[0] | |||||
$(".ui.button").attr('href', url_href) | |||||
$('.menu .item') | |||||
.tab(); | |||||
$('#benchmark_types_id').change(function () { | |||||
setChildType(); | |||||
}) | |||||
$(document).ready(() => { | |||||
$('.ui.search.dropdown.job_type').dropdown({ | |||||
onChange: function (value, text, $selectedItem) { | |||||
if (value === "BRAINSCORE") { | |||||
$('#brainscore_child_type').css('display', 'block') | |||||
$('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/similarity2brain_ann') | |||||
} else { | |||||
$('#brainscore_child_type').css('display', 'none') | |||||
$('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/snn4imagenet') | |||||
} | |||||
} | |||||
}) | |||||
}) | |||||
function setChildType() { | |||||
let type_id = $('#benchmark_types_id').val(); | |||||
if (type_id == 3) { | |||||
$('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
$('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
} else { | |||||
$('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
$('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
} | |||||
let child_selected_id = $('#benchmark_child_types_id_hidden').val(); | |||||
$.get(`${repolink}/cloudbrain/benchmark/get_child_types?benchmark_type_id=${type_id}`, (data) => { | |||||
const n_length = data['child_types'].length | |||||
let html = '' | |||||
for (let i = 0; i < n_length; i++) { | |||||
if (child_selected_id == data['child_types'][i].id) { | |||||
html += `<option value="${data['child_types'][i].id}" selected="true">${data['child_types'][i].value}</option>`; | |||||
} else { | |||||
html += `<option value="${data['child_types'][i].id}">${data['child_types'][i].value}</option>`; | |||||
} | |||||
} | |||||
document.getElementById("benchmark_child_types_id").innerHTML = html; | |||||
}) | |||||
} | |||||
document.onreadystatechange = function () { | |||||
if (document.readyState === "complete") { | |||||
if ($('input[name=benchmarkMode]').val() === 'alogrithm' || $('input[name=benchmarkMode]').val() === '') { | |||||
setChildType(); | |||||
} | |||||
} | |||||
} | |||||
var isValidate = false; | |||||
function validate() { | |||||
$('.ui.form') | |||||
.form({ | |||||
on: 'blur', | |||||
fields: { | |||||
image: { | |||||
identifier: 'image', | |||||
rules: [ | |||||
{ | |||||
type: 'empty', | |||||
promt: '' | |||||
} | |||||
] | |||||
}, | |||||
display_job_name: { | |||||
identifier: 'display_job_name', | |||||
rules: [ | |||||
{ | |||||
type: 'regExp[/^[a-z0-9][a-z0-9-_]{1,34}[a-z0-9-]$/]', | |||||
promt: '' | |||||
} | |||||
] | |||||
}, | |||||
spec_id: { | |||||
identifier: 'spec_id', | |||||
rules: [{ type: 'empty' }] | |||||
} | |||||
}, | |||||
onSuccess: function () { | |||||
// $('.ui.page.dimmer').dimmer('show') | |||||
document.getElementById("mask").style.display = "block" | |||||
isValidate = true; | |||||
}, | |||||
onFailure: function (e) { | |||||
isValidate = false; | |||||
return false; | |||||
} | |||||
}) | |||||
} | |||||
// let repolink = {{.RepoLink }} | |||||
// $('#benchmark_types_id').change(function () { | |||||
// console.log("----") | |||||
// // setChildType(); | |||||
// }) | |||||
// $("#benchmark_types_id").dropdown({ | |||||
// onChange:function (value, text, $selectedItem){ | |||||
// console.log(value) | |||||
// } | |||||
// }) | |||||
// $(document).ready(() => { | |||||
// $('.ui.search.dropdown.job_type').dropdown({ | |||||
// onChange: function (value, text, $selectedItem) { | |||||
// console.log(value) | |||||
// if (value === "BRAINSCORE") { | |||||
// $('#brainscore_child_type').css('display', 'block') | |||||
// $('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/similarity2brain_ann') | |||||
// } else { | |||||
// $('#brainscore_child_type').css('display', 'none') | |||||
// $('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/snn4imagenet') | |||||
// } | |||||
// } | |||||
// }) | |||||
// }) | |||||
// function setChildType(type_id=1) { | |||||
// if (type_id == 3) { | |||||
// $('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
// $('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
// } else { | |||||
// $('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
// $('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
// } | |||||
// let child_selected_id = $('#benchmark_child_types_id_hidden').val(); | |||||
// $.get(`${repolink}/cloudbrain/benchmark/get_child_types?benchmark_type_id=${type_id}`, (data) => { | |||||
// const n_length = data['child_types'].length | |||||
// let html = '' | |||||
// for (let i = 0; i < n_length; i++) { | |||||
// if (child_selected_id == data['child_types'][i].id) { | |||||
// html += `<option value="${data['child_types'][i].id}" selected="true">${data['child_types'][i].value}</option>`; | |||||
// } else { | |||||
// html += `<option value="${data['child_types'][i].id}">${data['child_types'][i].value}</option>`; | |||||
// } | |||||
// } | |||||
// document.getElementById("benchmark_child_types_id").innerHTML = html; | |||||
// }) | |||||
// } | |||||
// $(document).ready(function (){ | |||||
// console.log("00") | |||||
// $(".ui.selection.dropdown.benchmark_types_id").dropdown({ | |||||
// onChange:function (value, text, $selectedItem){ | |||||
// console.log(value) | |||||
// setChildType(value) | |||||
// } | |||||
// }) | |||||
// }) | |||||
// document.onreadystatechange = function () { | |||||
// if (document.readyState === "complete") { | |||||
// if ($('input[name=benchmarkMode]').val() === 'alogrithm' || $('input[name=benchmarkMode]').val() === '') { | |||||
// setChildType(); | |||||
// } | |||||
// } | |||||
// } | |||||
// var isValidate = false; | |||||
// function validate() { | |||||
// $('.ui.form') | |||||
// .form({ | |||||
// on: 'blur', | |||||
// fields: { | |||||
// image: { | |||||
// identifier: 'image', | |||||
// rules: [ | |||||
// { | |||||
// type: 'empty', | |||||
// promt: '' | |||||
// } | |||||
// ] | |||||
// }, | |||||
// display_job_name: { | |||||
// identifier: 'display_job_name', | |||||
// rules: [ | |||||
// { | |||||
// type: 'regExp[/^[a-z0-9][a-z0-9-_]{1,34}[a-z0-9-]$/]', | |||||
// promt: '' | |||||
// } | |||||
// ] | |||||
// }, | |||||
// spec_id: { | |||||
// identifier: 'spec_id', | |||||
// rules: [{ type: 'empty' }] | |||||
// } | |||||
// }, | |||||
// onSuccess: function () { | |||||
// // $('.ui.page.dimmer').dimmer('show') | |||||
// document.getElementById("mask").style.display = "block" | |||||
// isValidate = true; | |||||
// }, | |||||
// onFailure: function (e) { | |||||
// isValidate = false; | |||||
// return false; | |||||
// } | |||||
// }) | |||||
// } | |||||
validate() | |||||
$('.ui.create_train_job.green.button').click(function (e) { | |||||
validate() | |||||
}) | |||||
// validate() | |||||
// $('.ui.create_train_job.green.button').click(function (e) { | |||||
// validate() | |||||
// }) | |||||
;(function() { | ;(function() { | ||||
var SPECS = {{ .benchmark_specs }}; | var SPECS = {{ .benchmark_specs }}; | ||||
@@ -206,7 +206,7 @@ | |||||
<table class="ti-form"> | <table class="ti-form"> | ||||
<tbody class="ti-text-form"> | <tbody class="ti-text-form"> | ||||
{{if eq .JobType "BENCHMARK"}} | |||||
<tr class="ti-no-ng-animate"> | <tr class="ti-no-ng-animate"> | ||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | <td class="ti-no-ng-animate ti-text-form-label text-width80"> | ||||
{{$.i18n.Tr "repo.cloudbrain.benchmark.evaluate_train"}} | {{$.i18n.Tr "repo.cloudbrain.benchmark.evaluate_train"}} | ||||
@@ -214,11 +214,7 @@ | |||||
<td class="ti-text-form-content"> | <td class="ti-text-form-content"> | ||||
<div class="text-span text-span-w"> | <div class="text-span text-span-w"> | ||||
{{if eq .JobType "BENCHMARK"}} | |||||
train.py | train.py | ||||
{{else}} | |||||
-- | |||||
{{end}} | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
@@ -228,16 +224,39 @@ | |||||
</td> | </td> | ||||
<td class="ti-text-form-content"> | <td class="ti-text-form-content"> | ||||
<div class="text-span text-span-w"> | |||||
{{if eq .JobType "BENCHMARK"}} | |||||
test.py | test.py | ||||
{{else}} | |||||
-- | |||||
{{end}} | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
{{else}} | |||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelarts.model_name"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w">{{if .ModelName}}{{.ModelName}}{{else}}--{{end}}</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelconvert.modelversion"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w">{{if .ModelVersion}}{{.ModelVersion}}{{else}}--{{end}}</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.modelarts.infer_job_model_file"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w">{{if .CkptName}}{{.CkptName}}{{else}}--{{end}}</div> | |||||
</td> | |||||
</tr> | |||||
{{end}} | |||||
<tr class="ti-no-ng-animate"> | <tr class="ti-no-ng-animate"> | ||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | <td class="ti-no-ng-animate ti-text-form-label text-width80"> | ||||
{{$.i18n.Tr "repo.modelarts.train_job.description"}} | {{$.i18n.Tr "repo.modelarts.train_job.description"}} | ||||
@@ -271,17 +290,7 @@ | |||||
<div class="text-span text-span-w"></div> | <div class="text-span text-span-w"></div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr class="ti-no-ng-animate"> | |||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | |||||
{{$.i18n.Tr "repo.model_manager"}} | |||||
</td> | |||||
<td class="ti-text-form-content"> | |||||
<div class="text-span text-span-w" id="{{.VersionName}}-mirror"> | |||||
{{.DatasetName}} | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
<tr class="ti-no-ng-animate"> | <tr class="ti-no-ng-animate"> | ||||
<td class="ti-no-ng-animate ti-text-form-label text-width80"> | <td class="ti-no-ng-animate ti-text-form-label text-width80"> | ||||
{{$.i18n.Tr "repo.cloudbrain_creator"}} | {{$.i18n.Tr "repo.cloudbrain_creator"}} | ||||
@@ -6,7 +6,7 @@ | |||||
if (createFlag) return false; | if (createFlag) return false; | ||||
createFlag = true; | createFlag = true; | ||||
}; | }; | ||||
$("select.dropdown").dropdown(); | |||||
// $("select.dropdown").dropdown(); | |||||
$(document).keydown(function (event) { | $(document).keydown(function (event) { | ||||
switch (event.keyCode) { | switch (event.keyCode) { | ||||
case 13: | case 13: | ||||
@@ -182,4 +182,53 @@ | |||||
} | } | ||||
validate(); | validate(); | ||||
}); | }); | ||||
// 评测任务相关创建func | |||||
let repoLink = $(".cloudbrain-type").data("repo-link"); | |||||
function setChildType(type_id=1) { | |||||
if (type_id == 3) { | |||||
$('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
$('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_MOT_benchmark'); | |||||
} else { | |||||
$('#train_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
$('#test_href_id').attr('href', 'https://openi.pcl.ac.cn/CV_benchmark/CV_reID_benchmark'); | |||||
} | |||||
let child_selected_id = $('#benchmark_child_types_id_hidden').val(); | |||||
$.get(`${repoLink}/cloudbrain/benchmark/get_child_types?benchmark_type_id=${type_id}`, (data) => { | |||||
const n_length = data['child_types'].length | |||||
let html = '' | |||||
for (let i = 0; i < n_length; i++) { | |||||
if (child_selected_id == data['child_types'][i].id) { | |||||
html += `<option value="${data['child_types'][i].id}" selected="true">${data['child_types'][i].value}</option>`; | |||||
} else { | |||||
html += `<option value="${data['child_types'][i].id}">${data['child_types'][i].value}</option>`; | |||||
} | |||||
} | |||||
document.getElementById("benchmark_child_types_id").innerHTML = html; | |||||
}) | |||||
} | |||||
$(document).ready(function () { | |||||
if ($('input[name=benchmarkMode]').val() === 'alogrithm' || $('input[name=benchmarkMode]').val() === '') { | |||||
setChildType(); | |||||
} | |||||
$(".ui.selection.dropdown.benchmark_types_id").dropdown({ | |||||
onChange:function (value, text, $selectedItem){ | |||||
setChildType(value) | |||||
} | |||||
}) | |||||
$('.ui.search.dropdown.job_type').dropdown({ | |||||
onChange: function (value, text, $selectedItem) { | |||||
if (value === "BRAINSCORE") { | |||||
$('#brainscore_child_type').css('display', 'block') | |||||
$('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/similarity2brain_ann') | |||||
}else if(value === "SNN4ECOSET"){ | |||||
$('#brainscore_child_type').css('display', 'none') | |||||
$('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/snn4ecoset') | |||||
}else { | |||||
$('#brainscore_child_type').css('display', 'none') | |||||
$('#benchmark_model_example').attr('href', 'https://openi.pcl.ac.cn/BDIP/snn4imagenet') | |||||
} | |||||
} | |||||
}) | |||||
}) | |||||
})(); | })(); |