Browse Source

download

tags/v1.21.12.1
Gitea 4 years ago
parent
commit
e7efb31b67
8 changed files with 102 additions and 16 deletions
  1. +2
    -2
      modules/modelarts/modelarts.go
  2. +10
    -4
      modules/setting/setting.go
  3. +49
    -0
      modules/storage/obs.go
  4. +26
    -4
      routers/repo/cloudbrain.go
  5. +11
    -4
      routers/repo/modelarts.go
  6. +2
    -1
      routers/routes/routes.go
  7. +1
    -1
      templates/repo/modelarts/trainjob/index.tmpl
  8. +1
    -0
      templates/repo/modelarts/trainjob/list_model.tmpl

+ 2
- 2
modules/modelarts/modelarts.go View File

@@ -237,13 +237,13 @@ func TransTrainJobStatus(status int) string {
case 8:
return "RUNNING"
case 9:
return "STOPED"
return "STOPPED"
case 10:
return "COMPLETED"
case 11:
return "FAILED"
case 12:
return "STOPED"
return "STOPPED"
case 13:
return "CANCELED"
case 14:


+ 10
- 4
modules/setting/setting.go View File

@@ -473,6 +473,8 @@ var (
Bucket string
Location string
BasePath string
JobModelPath string
OutPutPath string
CodePathPrefix string
UserBasePath string

@@ -488,11 +490,12 @@ var (
ProfileID string
PoolInfos string
Flavor string
FlavorInfos string
//train-job
ResourcePools string
Engines string
EngineVersions string
FlavorInfos string
ResourcePools string
Engines string
EngineVersions string
TrainJobFlavorInfos string

//elk config
ElkUrl string
@@ -1252,6 +1255,8 @@ func NewContext() {
Bucket = sec.Key("BUCKET").MustString("testopendata")
Location = sec.Key("LOCATION").MustString("cn-south-222")
BasePath = sec.Key("BASE_PATH").MustString("attachment/")
JobModelPath = sec.Key("Job_Model_PATH").MustString("job/")
OutPutPath = sec.Key("OutPut_PATH").MustString("output/")
CodePathPrefix = sec.Key("CODE_PATH_PREFIX").MustString("code/")
UserBasePath = sec.Key("BASE_PATH_USER").MustString("users/")
PROXYURL = sec.Key("PROXY_URL").MustString("")
@@ -1272,6 +1277,7 @@ func NewContext() {
Engines = sec.Key("Engines").MustString("")
EngineVersions = sec.Key("Engine_Versions").MustString("")
FlavorInfos = sec.Key("FLAVOR_INFOS").MustString("")
TrainJobFlavorInfos = sec.Key("TrainJob_FLAVOR_INFOS").MustString("")

sec = Cfg.Section("elk")
ElkUrl = sec.Key("ELKURL").MustString("http://192.168.207.35:5601/internal/bsearch")


+ 49
- 0
modules/storage/obs.go View File

@@ -134,6 +134,7 @@ func ObsDownload(uuid string, fileName string) (io.ReadCloser, error) {
input := &obs.GetObjectInput{}
input.Bucket = setting.Bucket
input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/")
// input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid)), "/")
output, err := ObsCli.GetObject(input)
if err == nil {
log.Info("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n",
@@ -148,6 +149,54 @@ func ObsDownload(uuid string, fileName string) (io.ReadCloser, error) {
}
}

func ObsModelDownload(JobName string, fileName string) (io.ReadCloser, error) {
input := &obs.GetObjectInput{}
input.Bucket = setting.Bucket
input.Key = strings.TrimPrefix(path.Join(setting.JobModelPath, JobName, setting.OutPutPath, fileName), "/")
// input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid)), "/")
output, err := ObsCli.GetObject(input)
if err == nil {
log.Info("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n",
output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified)
return output.Body, nil
} else if obsError, ok := err.(obs.ObsError); ok {
fmt.Printf("Code:%s\n", obsError.Code)
fmt.Printf("Message:%s\n", obsError.Message)
return nil, obsError
} else {
return nil, err
}
}

func GetObsListObject(jobName string) ([]string, error) {
// jobName = "liuzx202110271830856"
input := &obs.ListObjectsInput{}
input.Bucket = setting.Bucket
input.Prefix = strings.TrimPrefix(path.Join(setting.JobModelPath, jobName, setting.OutPutPath), "/")
log.Info("input.Prefix:", input.Prefix)
output, err := ObsCli.ListObjects(input)
ModelListArr := make([]string, 0)
if err == nil {
fmt.Printf("RequestId:%s\n", output.RequestId)
for index, val := range output.Contents {
fmt.Printf("Content[%d]-OwnerId:%s, ETag:%s, Key:%s, LastModified:%s, Size:%d\n",
index, val.Owner.ID, val.ETag, val.Key, val.LastModified, val.Size)
str1 := strings.Split(val.Key, "/")
ModelList := str1[len(str1)-1]
ModelListArr = append(ModelListArr, ModelList)
}
return ModelListArr, err
} else {
if obsError, ok := err.(obs.ObsError); ok {
fmt.Println(obsError.Code)
fmt.Println(obsError.Message)
} else {
fmt.Println(err)
}
return nil, err
}
}

func ObsGenMultiPartSignedUrl(uuid string, uploadId string, partNumber int, fileName string) (string, error) {

input := &obs.CreateSignedUrlInput{}


+ 26
- 4
routers/repo/cloudbrain.go View File

@@ -580,7 +580,6 @@ func CloudBrainDownloadModel(ctx *context.Context) {
ctx.ServerError("PresignedGetURL", err)
return
}

http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently)
}

@@ -599,11 +598,34 @@ func CloudBrainDownloadModel(ctx *context.Context) {
// http.Redirect(ctx.Resp, ctx.Req.Request, url, http.StatusMovedPermanently)
// }

func TrainJobloadModel(ctx *context.Context) {
uuid := ctx.Query("uuid")
func TrainJobListModel(ctx *context.Context) {
ctx.Data["PageIsCloudBrain"] = true
jobID := ctx.Params(":jobid")
task, err := models.GetCloudbrainByJobID(jobID)
if err != nil {
log.Error("no such job!", ctx.Data["err"])
ctx.ServerError("no such job:", err)
return
}
TrainJobListModel, err := storage.GetObsListObject(task.JobName)
if err != nil {
log.Info("get TrainJobListModel failed:", err)
return
}
ctx.Data["task"] = task
ctx.Data["JobID"] = jobID
ctx.Data["TrainJobListModel"] = TrainJobListModel
ctx.HTML(200, tplModelArtsTrainJobListModel)
}

func TrainJobDownloadModel(ctx *context.Context) {
JobName := ctx.Query("JobName")
fileName := ctx.Query("file_name")

body, err := storage.ObsDownload(uuid, fileName)
// JobName = "liuzx202110271830856"
// fileName = "Untitled.ipynb"

body, err := storage.ObsModelDownload(JobName, fileName)
if err != nil {
log.Info("download error.")
} else {


+ 11
- 4
routers/repo/modelarts.go View File

@@ -36,9 +36,10 @@ const (
tplModelArtsNew base.TplName = "repo/modelarts/new"
tplModelArtsShow base.TplName = "repo/modelarts/show"

tplModelArtsTrainJobIndex base.TplName = "repo/modelarts/trainjob/index"
tplModelArtsTrainJobNew base.TplName = "repo/modelarts/trainjob/new"
tplModelArtsTrainJobShow base.TplName = "repo/modelarts/trainjob/show"
tplModelArtsTrainJobIndex base.TplName = "repo/modelarts/trainjob/index"
tplModelArtsTrainJobNew base.TplName = "repo/modelarts/trainjob/new"
tplModelArtsTrainJobShow base.TplName = "repo/modelarts/trainjob/show"
tplModelArtsTrainJobListModel base.TplName = "repo/modelarts/trainjob/list_model"
)

// MustEnableDataset check if repository enable internal cb
@@ -331,6 +332,7 @@ func NotebookNew(ctx *context.Context) {
json.Unmarshal([]byte(setting.FlavorInfos), &modelarts.FlavorInfos)
}
ctx.Data["flavors"] = modelarts.FlavorInfos.FlavorInfo

ctx.HTML(200, tplModelArtsNotebookNew)
}

@@ -610,7 +612,7 @@ func TrainJobNew(ctx *context.Context) {
ctx.Data["engine_versions"] = versionInfos.Version

var flavorInfos modelarts.Flavor
if err = json.Unmarshal([]byte(setting.FlavorInfos), &flavorInfos); err != nil {
if err = json.Unmarshal([]byte(setting.TrainJobFlavorInfos), &flavorInfos); err != nil {
ctx.ServerError("json.Unmarshal failed:", err)
return
}
@@ -899,6 +901,11 @@ func TrainJobShow(ctx *context.Context) {
} else {
result.TrainJobDuration = "00:00:00"
}
err = models.SetTrainJobStatusByJobID(jobID, modelarts.TransTrainJobStatus(result.IntStatus), int(result.Duration), string(result.TrainJobDuration))
if err != nil {
ctx.ServerError("UpdateJob failed", err)
return
}
result.Status = modelarts.TransTrainJobStatus(result.IntStatus)
result.DatasetName = attach.Name
}


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

@@ -991,7 +991,8 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Post("/stop", reqRepoCloudBrainWriter, repo.TrainJobStop)
m.Post("/del", reqRepoCloudBrainWriter, repo.TrainJobDel)
m.Get("/log", reqRepoCloudBrainReader, repo.TrainJobGetLog)
m.Get("/download_model", reqRepoCloudBrainReader, repo.TrainJobloadModel)
m.Get("/models", reqRepoCloudBrainReader, repo.TrainJobListModel)
m.Get("/download_model", reqRepoCloudBrainReader, repo.TrainJobDownloadModel)
})
m.Get("/create", reqRepoCloudBrainReader, repo.TrainJobNew)
m.Post("/create", reqRepoCloudBrainWriter, bindIgnErr(auth.CreateModelArtsTrainJobForm{}), repo.TrainJobCreate)


+ 1
- 1
templates/repo/modelarts/trainjob/index.tmpl View File

@@ -360,7 +360,7 @@
</div>
<div class="ui compact buttons" style="margin-right:10px;">
<!-- 模型下载 -->
<a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/download_model" target="_blank">
<a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank">
模型下载
</a>


+ 1
- 0
templates/repo/modelarts/trainjob/list_model.tmpl View File

@@ -0,0 +1 @@
shuchu

Loading…
Cancel
Save