|
|
@@ -1728,10 +1728,9 @@ func InferenceJobIndex(ctx *context.Context) { |
|
|
Page: page, |
|
|
Page: page, |
|
|
PageSize: setting.UI.IssuePagingNum, |
|
|
PageSize: setting.UI.IssuePagingNum, |
|
|
}, |
|
|
}, |
|
|
RepoID: repo.ID, |
|
|
|
|
|
Type: models.TypeCloudBrainTwo, |
|
|
|
|
|
JobType: string(models.JobTypeTrain), |
|
|
|
|
|
IsLatestVersion: modelarts.IsLatestVersion, |
|
|
|
|
|
|
|
|
RepoID: repo.ID, |
|
|
|
|
|
Type: models.TypeCloudBrainTwo, |
|
|
|
|
|
JobType: string(models.JobTypeInference), |
|
|
}) |
|
|
}) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("Cloudbrain", err) |
|
|
ctx.ServerError("Cloudbrain", err) |
|
|
@@ -1890,24 +1889,15 @@ func InferenceJobShow(ctx *context.Context) { |
|
|
if page <= 0 { |
|
|
if page <= 0 { |
|
|
page = 1 |
|
|
page = 1 |
|
|
} |
|
|
} |
|
|
VersionListTasks, VersionListCount, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ |
|
|
|
|
|
ListOptions: models.ListOptions{ |
|
|
|
|
|
Page: page, |
|
|
|
|
|
PageSize: setting.UI.IssuePagingNum, |
|
|
|
|
|
}, |
|
|
|
|
|
RepoID: repo.ID, |
|
|
|
|
|
Type: models.TypeCloudBrainTwo, |
|
|
|
|
|
JobType: string(models.JobTypeTrain), |
|
|
|
|
|
JobID: jobID, |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
task, err := models.GetCloudbrainByJobID(jobID) |
|
|
|
|
|
|
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetVersionListTasks(%s) failed:%v", jobID, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) |
|
|
|
|
|
|
|
|
log.Error("GetInferenceTask(%s) failed:%v", jobID, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobShow, nil) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
//设置权限 |
|
|
//设置权限 |
|
|
canNewJob, err := canUserCreateTrainJobVersion(ctx, VersionListTasks[0].UserID) |
|
|
|
|
|
|
|
|
canNewJob, err := canUserCreateTrainJobVersion(ctx, task.UserID) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("canNewJob failed", err) |
|
|
ctx.ServerError("canNewJob failed", err) |
|
|
return |
|
|
return |
|
|
@@ -1915,90 +1905,79 @@ func InferenceJobShow(ctx *context.Context) { |
|
|
ctx.Data["canNewJob"] = canNewJob |
|
|
ctx.Data["canNewJob"] = canNewJob |
|
|
|
|
|
|
|
|
//将运行参数转化为epoch_size = 3, device_target = Ascend的格式 |
|
|
//将运行参数转化为epoch_size = 3, device_target = Ascend的格式 |
|
|
for i, _ := range VersionListTasks { |
|
|
|
|
|
|
|
|
|
|
|
var parameters models.Parameters |
|
|
|
|
|
|
|
|
|
|
|
err := json.Unmarshal([]byte(VersionListTasks[i].Parameters), ¶meters) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
log.Error("Failed to Unmarshal Parameters: %s (%v)", VersionListTasks[i].Parameters, err) |
|
|
|
|
|
trainJobNewDataPrepare(ctx) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var parameters models.Parameters |
|
|
|
|
|
err = json.Unmarshal([]byte(task.Parameters), ¶meters) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
log.Error("Failed to Unmarshal Parameters: %s (%v)", task.Parameters, err) |
|
|
|
|
|
trainJobNewDataPrepare(ctx) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if len(parameters.Parameter) > 0 { |
|
|
|
|
|
paramTemp := "" |
|
|
|
|
|
for _, Parameter := range parameters.Parameter { |
|
|
|
|
|
param := Parameter.Label + " = " + Parameter.Value + "; " |
|
|
|
|
|
paramTemp = paramTemp + param |
|
|
|
|
|
} |
|
|
|
|
|
VersionListTasks[i].Parameters = paramTemp[:len(paramTemp)-2] |
|
|
|
|
|
} else { |
|
|
|
|
|
VersionListTasks[i].Parameters = "" |
|
|
|
|
|
|
|
|
if len(parameters.Parameter) > 0 { |
|
|
|
|
|
paramTemp := "" |
|
|
|
|
|
for _, Parameter := range parameters.Parameter { |
|
|
|
|
|
param := Parameter.Label + " = " + Parameter.Value + "; " |
|
|
|
|
|
paramTemp = paramTemp + param |
|
|
} |
|
|
} |
|
|
|
|
|
task.Parameters = paramTemp[:len(paramTemp)-2] |
|
|
|
|
|
} else { |
|
|
|
|
|
task.Parameters = "" |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
pager := context.NewPagination(VersionListCount, setting.UI.IssuePagingNum, page, 5) |
|
|
pager := context.NewPagination(VersionListCount, setting.UI.IssuePagingNum, page, 5) |
|
|
pager.SetDefaultParams(ctx) |
|
|
pager.SetDefaultParams(ctx) |
|
|
ctx.Data["Page"] = pager |
|
|
ctx.Data["Page"] = pager |
|
|
ctx.Data["jobID"] = jobID |
|
|
ctx.Data["jobID"] = jobID |
|
|
ctx.Data["jobName"] = VersionListTasks[0].JobName |
|
|
|
|
|
ctx.Data["version_list_task"] = VersionListTasks |
|
|
|
|
|
ctx.Data["version_list_count"] = VersionListCount |
|
|
|
|
|
ctx.HTML(http.StatusOK, tplModelArtsTrainJobShow) |
|
|
|
|
|
|
|
|
ctx.Data["jobName"] = task.JobName |
|
|
|
|
|
ctx.Data["task"] = task |
|
|
|
|
|
ctx.HTML(http.StatusOK, tplModelArtsInferenceJobShow) |
|
|
} |
|
|
} |
|
|
func InferenceJobStop(ctx *context.Context) { |
|
|
func InferenceJobStop(ctx *context.Context) { |
|
|
var jobID = ctx.Params(":jobid") |
|
|
var jobID = ctx.Params(":jobid") |
|
|
task, err := models.GetCloudbrainByJobID(jobID) |
|
|
task, err := models.GetCloudbrainByJobID(jobID) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) |
|
|
log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) |
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) |
|
|
|
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobIndex, nil) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
_, err = modelarts.StopTrainJob(jobID, strconv.FormatInt(task.VersionID, 10)) |
|
|
_, err = modelarts.StopTrainJob(jobID, strconv.FormatInt(task.VersionID, 10)) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("StopTrainJob(%s) failed:%v", task.JobName, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) |
|
|
|
|
|
|
|
|
log.Error("StopInferenceJob(%s) failed:%v", task.JobName, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobIndex, nil) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/train-job") |
|
|
|
|
|
|
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/inference-job") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func InferenceJobDel(ctx *context.Context) { |
|
|
func InferenceJobDel(ctx *context.Context) { |
|
|
var jobID = ctx.Params(":jobid") |
|
|
var jobID = ctx.Params(":jobid") |
|
|
repo := ctx.Repo.Repository |
|
|
repo := ctx.Repo.Repository |
|
|
|
|
|
|
|
|
VersionListTasks, _, err := models.CloudbrainsVersionList(&models.CloudbrainsOptions{ |
|
|
|
|
|
RepoID: repo.ID, |
|
|
|
|
|
Type: models.TypeCloudBrainTwo, |
|
|
|
|
|
JobType: string(models.JobTypeTrain), |
|
|
|
|
|
JobID: jobID, |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
task, err := models.GetCloudbrainByJobID(jobID) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
ctx.ServerError("get VersionListTasks failed", err) |
|
|
|
|
|
|
|
|
log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobIndex, nil) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//删除modelarts上的任务记录 |
|
|
//删除modelarts上的任务记录 |
|
|
_, err = modelarts.DelTrainJob(jobID) |
|
|
_, err = modelarts.DelTrainJob(jobID) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("DelTrainJob(%s) failed:%v", jobID, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobIndex, nil) |
|
|
|
|
|
|
|
|
log.Error("DelInferenceJob(%s) failed:%v", jobID, err.Error()) |
|
|
|
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsInferenceJobIndex, nil) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//删除数据库Cloudbrain表的记录 |
|
|
//删除数据库Cloudbrain表的记录 |
|
|
for _, task := range VersionListTasks { |
|
|
|
|
|
err = models.DeleteJob(&task.Cloudbrain) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
ctx.ServerError("DeleteJob failed", err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
err = models.DeleteJob(&task.Cloudbrain) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
ctx.ServerError("DeleteJob failed", err) |
|
|
|
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/train-job") |
|
|
|
|
|
|
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/inference-job") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func ResultDownload(ctx *context.Context) { |
|
|
func ResultDownload(ctx *context.Context) { |
|
|
@@ -2007,17 +1986,14 @@ func ResultDownload(ctx *context.Context) { |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
var jobID = ctx.Params(":jobid") |
|
|
var jobID = ctx.Params(":jobid") |
|
|
versionName := ctx.Query("version_name") |
|
|
|
|
|
parentDir := ctx.Query("parent_dir") |
|
|
parentDir := ctx.Query("parent_dir") |
|
|
fileName := ctx.Query("file_name") |
|
|
fileName := ctx.Query("file_name") |
|
|
log.Info("DownloadSingleModelFile start.") |
|
|
|
|
|
task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) |
|
|
|
|
|
|
|
|
log.Info("DownloadResult start.") |
|
|
|
|
|
task, err := models.GetCloudbrainByJobID(jobID) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
ctx.Data["error"] = err.Error() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, setting.OutPutPath, versionName, parentDir, fileName), "/") |
|
|
|
|
|
|
|
|
path := strings.TrimPrefix(path.Join(setting.TrainJobModelPath, task.JobName, modelarts.ResultPath, parentDir, fileName), "/") |
|
|
log.Info("Download path is:%s", path) |
|
|
log.Info("Download path is:%s", path) |
|
|
|
|
|
|
|
|
url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path) |
|
|
url, err := storage.GetObsCreateSignedUrlByBucketAndKey(setting.Bucket, path) |
|
|
|