|
|
@@ -7,6 +7,7 @@ import ( |
|
|
"code.gitea.io/gitea/modules/storage" |
|
|
"code.gitea.io/gitea/modules/storage" |
|
|
"encoding/json" |
|
|
"encoding/json" |
|
|
"errors" |
|
|
"errors" |
|
|
|
|
|
"fmt" |
|
|
"github.com/unknwon/com" |
|
|
"github.com/unknwon/com" |
|
|
"io" |
|
|
"io" |
|
|
"net/http" |
|
|
"net/http" |
|
|
@@ -257,6 +258,15 @@ func NotebookDel(ctx *context.Context) { |
|
|
|
|
|
|
|
|
func TrainJobIndex(ctx *context.Context) { |
|
|
func TrainJobIndex(ctx *context.Context) { |
|
|
MustEnableModelArts(ctx) |
|
|
MustEnableModelArts(ctx) |
|
|
|
|
|
|
|
|
|
|
|
can, err := canUserCreateTrainJob(ctx.User.ID) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
ctx.ServerError("canUserCreateTrainJob", err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ctx.Data["CanCreate"] = can |
|
|
|
|
|
|
|
|
repo := ctx.Repo.Repository |
|
|
repo := ctx.Repo.Repository |
|
|
page := ctx.QueryInt("page") |
|
|
page := ctx.QueryInt("page") |
|
|
if page <= 0 { |
|
|
if page <= 0 { |
|
|
@@ -288,6 +298,18 @@ func TrainJobIndex(ctx *context.Context) { |
|
|
func TrainJobNew(ctx *context.Context) { |
|
|
func TrainJobNew(ctx *context.Context) { |
|
|
ctx.Data["PageIsTrainJob"] = true |
|
|
ctx.Data["PageIsTrainJob"] = true |
|
|
|
|
|
|
|
|
|
|
|
can, err := canUserCreateTrainJob(ctx.User.ID) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
ctx.ServerError("canUserCreateTrainJob", err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if !can { |
|
|
|
|
|
log.Error("the user can not create train-job") |
|
|
|
|
|
ctx.ServerError("the user can not create train-job", fmt.Errorf("the user can not create train-job")) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
t := time.Now() |
|
|
t := time.Now() |
|
|
var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] |
|
|
var jobName = cutString(ctx.User.Name, 5) + t.Format("2006010215") + strconv.Itoa(int(t.Unix()))[5:] |
|
|
ctx.Data["job_name"] = jobName |
|
|
ctx.Data["job_name"] = jobName |
|
|
@@ -352,6 +374,18 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) |
|
|
logObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.LogPath |
|
|
logObsPath := "/" + setting.Bucket + modelarts.JobPath + jobName + modelarts.LogPath |
|
|
dataPath := "/" + setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" |
|
|
dataPath := "/" + setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/" |
|
|
|
|
|
|
|
|
|
|
|
can, err := canUserCreateTrainJob(ctx.User.ID) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
ctx.ServerError("canUserCreateTrainJob", err) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if !can { |
|
|
|
|
|
log.Error("the user can not create train-job") |
|
|
|
|
|
ctx.RenderWithErr("the user can not create train-job", tplModelArtsTrainJobNew, &form) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//param check |
|
|
//param check |
|
|
if err := paramCheckCreateTrainJob(form); err != nil { |
|
|
if err := paramCheckCreateTrainJob(form); err != nil { |
|
|
log.Error("paramCheckCreateTrainJob failed:(%v)", err) |
|
|
log.Error("paramCheckCreateTrainJob failed:(%v)", err) |
|
|
@@ -460,7 +494,7 @@ func TrainJobCreate(ctx *context.Context, form auth.CreateModelArtsTrainJobForm) |
|
|
Parameters: param, |
|
|
Parameters: param, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
err := modelarts.GenerateTrainJob(ctx, req) |
|
|
|
|
|
|
|
|
err = modelarts.GenerateTrainJob(ctx, req) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GenerateTrainJob failed:%v", err.Error()) |
|
|
log.Error("GenerateTrainJob failed:%v", err.Error()) |
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) |
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobNew, &form) |
|
|
@@ -624,7 +658,7 @@ func TrainJobGetLog(ctx *context.Context) { |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
result, err := modelarts.GetTrainJobLog(jobID, strconv.FormatInt(task.VersionID, 10), baseLine, logFileName, order, 20) |
|
|
|
|
|
|
|
|
result, err := modelarts.GetTrainJobLog(jobID, strconv.FormatInt(task.VersionID, 10), baseLine, logFileName, order, modelarts.Lines) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetTrainJobLog(%s) failed:%v", jobID, err.Error()) |
|
|
log.Error("GetTrainJobLog(%s) failed:%v", jobID, err.Error()) |
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) |
|
|
ctx.RenderWithErr(err.Error(), tplModelArtsTrainJobShow, nil) |
|
|
@@ -648,7 +682,7 @@ func trainJobGetLog(jobID string) (*models.GetTrainJobLogFileNamesResult, *model |
|
|
return nil, nil, err |
|
|
return nil, nil, err |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
result, err := modelarts.GetTrainJobLog(jobID, strconv.FormatInt(task.VersionID, 10), "", resultLogFile.LogFileList[0], modelarts.OrderDesc, 20) |
|
|
|
|
|
|
|
|
result, err := modelarts.GetTrainJobLog(jobID, strconv.FormatInt(task.VersionID, 10), "", resultLogFile.LogFileList[0], modelarts.OrderDesc, modelarts.Lines) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
log.Error("GetTrainJobLog(%s) failed:%v", jobID, err.Error()) |
|
|
log.Error("GetTrainJobLog(%s) failed:%v", jobID, err.Error()) |
|
|
return nil, nil, err |
|
|
return nil, nil, err |
|
|
@@ -700,3 +734,13 @@ func TrainJobStop(ctx *context.Context) { |
|
|
|
|
|
|
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/train-job") |
|
|
ctx.Redirect(setting.AppSubURL + ctx.Repo.RepoLink + "/modelarts/train-job") |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func canUserCreateTrainJob(uid int64) (bool, error) { |
|
|
|
|
|
org, err := models.GetOrgByName(setting.AllowedOrg) |
|
|
|
|
|
if err != nil { |
|
|
|
|
|
log.Error("get allowed org failed: ", setting.AllowedOrg) |
|
|
|
|
|
return false, err |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return org.IsOrgMember(uid) |
|
|
|
|
|
} |