Browse Source

update

tags/v1.22.1.2
liuzx 3 years ago
parent
commit
5b110544d6
3 changed files with 43 additions and 119 deletions
  1. +0
    -50
      routers/repo/ai_model_manage.go
  2. +43
    -67
      routers/repo/modelarts.go
  3. +0
    -2
      routers/routes/routes.go

+ 0
- 50
routers/repo/ai_model_manage.go View File

@@ -586,53 +586,3 @@ func ModifyModelInfo(ctx *context.Context) {
} }


} }

func QueryModelListForPredict(ctx *context.Context) {
repoId := ctx.Repo.Repository.ID
modelResult, count, err := models.QueryModel(&models.AiModelQueryOptions{
ListOptions: models.ListOptions{
Page: -1,
PageSize: -1,
},
RepoID: repoId,
Type: -1,
New: -1,
})
if err != nil {
ctx.ServerError("Cloudbrain", err)
return
}
log.Info("query return count=" + fmt.Sprint(count))

nameList := make([]string, 0)

nameMap := make(map[string][]*models.AiModelManage)
for _, model := range modelResult {
if _, value := nameMap[model.Name]; !value {
models := make([]*models.AiModelManage, 0)
models = append(models, model)
nameMap[model.Name] = models
nameList = append(nameList, model.Name)
} else {
nameMap[model.Name] = append(nameMap[model.Name], model)
}
}

mapInterface := make(map[string]interface{})
mapInterface["nameList"] = nameList
mapInterface["nameMap"] = nameMap
ctx.JSON(http.StatusOK, mapInterface)
}

func QueryModelFileForPredict(ctx *context.Context) {
id := ctx.Query("ID")
model, err := models.QueryModelById(id)
if err != nil {
log.Error("no such model!", err.Error())
ctx.ServerError("no such model:", err)
return
}
prefix := model.Path[len(setting.Bucket)+2:]
fileinfos, err := storage.GetAllObjectByBucketAndPrefix(setting.Bucket, prefix)
ctx.JSON(http.StatusOK, fileinfos)
}

+ 43
- 67
routers/repo/modelarts.go View File

@@ -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), &parameters)
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), &parameters)
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)


+ 0
- 2
routers/routes/routes.go View File

@@ -988,8 +988,6 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Get("/show_model_child_api", repo.ShowOneVersionOtherModel) m.Get("/show_model_child_api", repo.ShowOneVersionOtherModel)
m.Get("/query_train_job", reqRepoCloudBrainReader, repo.QueryTrainJobList) m.Get("/query_train_job", reqRepoCloudBrainReader, repo.QueryTrainJobList)
m.Get("/query_train_job_version", reqRepoCloudBrainReader, repo.QueryTrainJobVersionList) m.Get("/query_train_job_version", reqRepoCloudBrainReader, repo.QueryTrainJobVersionList)
m.Get("/query_model_for_predict", reqRepoCloudBrainReader, repo.QueryModelListForPredict)
m.Get("/query_modelfile_for_predict", reqRepoCloudBrainReader, repo.QueryModelFileForPredict)
m.Group("/:ID", func() { m.Group("/:ID", func() {
m.Get("", repo.ShowSingleModel) m.Get("", repo.ShowSingleModel)
m.Get("/downloadsingle", repo.DownloadSingleModelFile) m.Get("/downloadsingle", repo.DownloadSingleModelFile)


Loading…
Cancel
Save