|
|
@@ -251,13 +251,9 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
|
downloadCode(repo, codePath) |
|
|
|
uploadCodeToMinio(codePath + "/", jobName, "/code/") |
|
|
|
|
|
|
|
modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath |
|
|
|
err = os.MkdirAll(modelPath, os.ModePerm) |
|
|
|
if err != nil { |
|
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) |
|
|
|
return |
|
|
|
} |
|
|
|
modelPath := setting.JobPath + jobName + cloudbrain.ModelMountPath + "/" |
|
|
|
mkModelPath(modelPath) |
|
|
|
uploadCodeToMinio(modelPath, jobName, cloudbrain.ModelMountPath + "/") |
|
|
|
|
|
|
|
benchmarkPath := setting.JobPath + jobName + cloudbrain.BenchMarkMountPath |
|
|
|
if setting.IsBenchmarkEnabled && jobType == string(models.JobTypeBenchmark) { |
|
|
@@ -283,7 +279,9 @@ func CloudBrainCreate(ctx *context.Context, form auth.CreateCloudBrainForm) { |
|
|
|
uploadCodeToMinio(brainScorePath + "/", jobName, cloudbrain.BrainScoreMountPath + "/") |
|
|
|
} |
|
|
|
|
|
|
|
err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, codePath, modelPath, benchmarkPath, snn4imagenetPath, brainScorePath, jobType, gpuQueue, resourceSpecId) |
|
|
|
err = cloudbrain.GenerateTask(ctx, jobName, image, command, uuid, codePath, getMinioPath(jobName, cloudbrain.ModelMountPath + "/"), |
|
|
|
getMinioPath(jobName, cloudbrain.BenchMarkMountPath + "/"), getMinioPath(jobName, cloudbrain.Snn4imagenetMountPath + "/"), |
|
|
|
getMinioPath(jobName, cloudbrain.BrainScoreMountPath + "/"), jobType, gpuQueue, resourceSpecId) |
|
|
|
if err != nil { |
|
|
|
cloudBrainNewDataPrepare(ctx) |
|
|
|
ctx.RenderWithErr(err.Error(), tplCloudBrainNew, &form) |
|
|
@@ -607,7 +605,7 @@ func getImages(ctx *context.Context, imageType string) { |
|
|
|
|
|
|
|
func getModelDirs(jobName string, parentDir string) (string, error) { |
|
|
|
var req string |
|
|
|
modelActualPath := setting.JobPath + jobName + "/model/" |
|
|
|
modelActualPath := getMinioPath(jobName, cloudbrain.ModelMountPath + "/") |
|
|
|
if parentDir == "" { |
|
|
|
req = "baseDir=" + modelActualPath |
|
|
|
} else { |
|
|
@@ -617,6 +615,10 @@ func getModelDirs(jobName string, parentDir string) (string, error) { |
|
|
|
return getDirs(req) |
|
|
|
} |
|
|
|
|
|
|
|
func getMinioPath(jobName, suffixPath string) string { |
|
|
|
return setting.Attachment.Minio.RealPath + setting.Attachment.Minio.Bucket + "/" + setting.CBCodePathPrefix + jobName + suffixPath |
|
|
|
} |
|
|
|
|
|
|
|
func CloudBrainDownloadModel(ctx *context.Context) { |
|
|
|
parentDir := ctx.Query("parentDir") |
|
|
|
fileName := ctx.Query("fileName") |
|
|
@@ -772,6 +774,32 @@ func uploadCodeToMinio(codePath, jobName, parentDir string) error { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func mkModelPath(modelPath string) error { |
|
|
|
err := os.MkdirAll(modelPath, os.ModePerm) |
|
|
|
if err != nil { |
|
|
|
log.Error("MkdirAll(%s) failed:%v", modelPath, err) |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
fileName := modelPath + "README" |
|
|
|
f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm) |
|
|
|
if err != nil { |
|
|
|
log.Error("OpenFile failed", err.Error()) |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
defer f.Close() |
|
|
|
|
|
|
|
_, err = f.WriteString("You can put the model file into this directory and download it by the web page.") |
|
|
|
if err != nil { |
|
|
|
log.Error("WriteString failed", err.Error()) |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func SyncCloudbrainStatus() { |
|
|
|
cloudBrains, err := models.GetCloudBrainUnStoppedJob() |
|
|
|
if err != nil { |
|
|
|