Browse Source

#2701

update
tags/v1.22.9.1^2^2
chenyifan01 3 years ago
parent
commit
2d8f18129b
5 changed files with 65 additions and 20 deletions
  1. +45
    -0
      models/cloudbrain.go
  2. +4
    -3
      modules/modelarts_cd/modelarts.go
  3. +2
    -2
      routers/admin/cloudbrains.go
  4. +13
    -12
      routers/repo/modelarts.go
  5. +1
    -3
      routers/user/home.go

+ 45
- 0
models/cloudbrain.go View File

@@ -121,6 +121,7 @@ const (
//AI center //AI center
AICenterOfCloudBrainOne = "OpenIOne" AICenterOfCloudBrainOne = "OpenIOne"
AICenterOfCloudBrainTwo = "OpenITwo" AICenterOfCloudBrainTwo = "OpenITwo"
AICenterOfChengdu = "OpenIChengdu"


//ComputeResource //ComputeResource
GPU = "GPU" GPU = "GPU"
@@ -2421,3 +2422,47 @@ func GetCloudbrainCountByJobName(jobName, jobType string, typeCloudbrain int) (i
count, err := x.Where("job_name = ? and job_type= ? and type = ?", jobName, jobType, typeCloudbrain).Count(new(Cloudbrain)) count, err := x.Where("job_name = ? and job_type= ? and type = ?", jobName, jobType, typeCloudbrain).Count(new(Cloudbrain))
return int(count), err return int(count), err
} }

func LoadSpecs(tasks []*Cloudbrain) error {
cloudbrainIds := make([]int64, len(tasks))
for i, v := range tasks {
cloudbrainIds[i] = v.ID
}
specs := make([]*CloudbrainSpec, 0)
err := x.In("cloudbrain_id", cloudbrainIds).Find(&specs)
if err != nil {
return err
}
specMap := make(map[int64]*CloudbrainSpec)
for _, v := range specs {
specMap[v.SpecId] = v
}
for _, v := range tasks {
if specMap[v.ID] != nil {
v.Spec = specMap[v.ID].ConvertToSpecification()
}
}
return nil
}

func LoadSpecs4CloudbrainInfo(tasks []*CloudbrainInfo) error {
cloudbrainIds := make([]int64, len(tasks))
for i, v := range tasks {
cloudbrainIds[i] = v.Cloudbrain.ID
}
specs := make([]*CloudbrainSpec, 0)
err := x.In("cloudbrain_id", cloudbrainIds).Find(&specs)
if err != nil {
return err
}
specMap := make(map[int64]*CloudbrainSpec)
for _, v := range specs {
specMap[v.SpecId] = v
}
for _, v := range tasks {
if specMap[v.Cloudbrain.ID] != nil {
v.Cloudbrain.Spec = specMap[v.Cloudbrain.ID].ConvertToSpecification()
}
}
return nil
}

+ 4
- 3
modules/modelarts_cd/modelarts.go View File

@@ -88,7 +88,7 @@ type Parameters struct {
} `json:"parameter"` } `json:"parameter"`
} }


func GenerateNotebook(ctx *context.Context, displayJobName, jobName, uuid, description, flavor, imageId string) error {
func GenerateNotebook(ctx *context.Context, displayJobName, jobName, uuid, description, imageId string, spec *models.Specification) error {
imageName, err := GetNotebookImageName(imageId) imageName, err := GetNotebookImageName(imageId)
if err != nil { if err != nil {
log.Error("GetNotebookImageName failed: %v", err.Error()) log.Error("GetNotebookImageName failed: %v", err.Error())
@@ -98,7 +98,7 @@ func GenerateNotebook(ctx *context.Context, displayJobName, jobName, uuid, descr
jobResult, err := createNotebook(models.CreateNotebookWithoutPoolParams{ jobResult, err := createNotebook(models.CreateNotebookWithoutPoolParams{
JobName: jobName, JobName: jobName,
Description: description, Description: description,
Flavor: flavor,
Flavor: spec.SourceSpecId,
Duration: autoStopDurationMs, Duration: autoStopDurationMs,
ImageID: imageId, ImageID: imageId,
Feature: models.NotebookFeature, Feature: models.NotebookFeature,
@@ -134,7 +134,7 @@ func GenerateNotebook(ctx *context.Context, displayJobName, jobName, uuid, descr
RepoID: ctx.Repo.Repository.ID, RepoID: ctx.Repo.Repository.ID,
JobID: jobResult.ID, JobID: jobResult.ID,
JobName: jobName, JobName: jobName,
FlavorCode: flavor,
FlavorCode: spec.SourceSpecId,
DisplayJobName: displayJobName, DisplayJobName: displayJobName,
JobType: string(models.JobTypeDebug), JobType: string(models.JobTypeDebug),
Type: models.TypeCDCenter, Type: models.TypeCDCenter,
@@ -144,6 +144,7 @@ func GenerateNotebook(ctx *context.Context, displayJobName, jobName, uuid, descr
Description: description, Description: description,
CreatedUnix: createTime, CreatedUnix: createTime,
UpdatedUnix: createTime, UpdatedUnix: createTime,
Spec: spec,
} }


err = models.CreateCloudbrain(task) err = models.CreateCloudbrain(task)


+ 2
- 2
routers/admin/cloudbrains.go View File

@@ -92,13 +92,13 @@ func CloudBrains(ctx *context.Context) {
return return
} }


models.LoadSpecs4CloudbrainInfo(ciTasks)

for i, task := range ciTasks { for i, task := range ciTasks {
ciTasks[i].CanDebug = true ciTasks[i].CanDebug = true
ciTasks[i].CanDel = true ciTasks[i].CanDel = true
ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource
ciTasks[i].Cloudbrain.AiCenter = repo.GetCloudbrainAiCenter(task.Cloudbrain, ctx) ciTasks[i].Cloudbrain.AiCenter = repo.GetCloudbrainAiCenter(task.Cloudbrain, ctx)
_, cardType, _ := repo.GetCloudbrainCardNumAndType(task.Cloudbrain)
ciTasks[i].Cloudbrain.CardType = cardType
ciTasks[i].Cloudbrain.Cluster = repo.GetCloudbrainCluster(task.Cloudbrain, ctx) ciTasks[i].Cloudbrain.Cluster = repo.GetCloudbrainCluster(task.Cloudbrain, ctx)
} }




+ 13
- 12
routers/repo/modelarts.go View File

@@ -6,6 +6,7 @@ import (
"code.gitea.io/gitea/services/cloudbrain/resource" "code.gitea.io/gitea/services/cloudbrain/resource"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt"
"io" "io"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
@@ -131,11 +132,6 @@ func notebookNewDataPrepare(ctx *context.Context) error {
ctx.Data["attachments"] = attachs ctx.Data["attachments"] = attachs
ctx.Data["images"] = setting.StImageInfos.ImageInfo ctx.Data["images"] = setting.StImageInfos.ImageInfo


if modelarts.ImageInfos == nil {
json.Unmarshal([]byte(setting.ImageInfos), &modelarts.ImageInfos)
}
ctx.Data["images"] = modelarts.ImageInfos.ImageInfo

prepareCloudbrainTwoDebugSpecs(ctx) prepareCloudbrainTwoDebugSpecs(ctx)


ctx.Data["datasetType"] = models.TypeCloudBrainTwo ctx.Data["datasetType"] = models.TypeCloudBrainTwo
@@ -147,11 +143,15 @@ func notebookNewDataPrepare(ctx *context.Context) error {
} }


func prepareCloudbrainTwoDebugSpecs(ctx *context.Context) { func prepareCloudbrainTwoDebugSpecs(ctx *context.Context) {
aiCenterCode := models.AICenterOfCloudBrainTwo
if setting.ModelartsCD.Enabled {
aiCenterCode = models.AICenterOfChengdu
}
noteBookSpecs, _ := resource.FindAvailableSpecs(ctx.User.ID, models.FindSpecsOptions{ noteBookSpecs, _ := resource.FindAvailableSpecs(ctx.User.ID, models.FindSpecsOptions{
JobType: models.JobTypeDebug, JobType: models.JobTypeDebug,
ComputeResource: models.NPU, ComputeResource: models.NPU,
Cluster: models.OpenICluster, Cluster: models.OpenICluster,
AiCenterCode: models.AICenterOfCloudBrainTwo,
AiCenterCode: aiCenterCode,
}) })
ctx.Data["Specs"] = noteBookSpecs ctx.Data["Specs"] = noteBookSpecs
} }
@@ -240,23 +240,24 @@ func Notebook2Create(ctx *context.Context, form auth.CreateModelArtsNotebookForm
return return
} }
} }

var aiCenterCode = models.AICenterOfCloudBrainTwo
if setting.ModelartsCD.Enabled {
aiCenterCode = models.AICenterOfChengdu
}
spec, err := resource.GetAndCheckSpec(ctx.User.ID, form.SpecId, models.FindSpecsOptions{ spec, err := resource.GetAndCheckSpec(ctx.User.ID, form.SpecId, models.FindSpecsOptions{
JobType: models.JobTypeDebug, JobType: models.JobTypeDebug,
ComputeResource: models.NPU, ComputeResource: models.NPU,
Cluster: models.OpenICluster, Cluster: models.OpenICluster,
AiCenterCode: models.AICenterOfCloudBrainTwo})
AiCenterCode: aiCenterCode})
if err != nil || spec == nil { if err != nil || spec == nil {
notebookNewDataPrepare(ctx) notebookNewDataPrepare(ctx)
ctx.RenderWithErr("Resource specification not available", tplModelArtsNotebookNew, &form) ctx.RenderWithErr("Resource specification not available", tplModelArtsNotebookNew, &form)
return return
} }
err = modelarts.GenerateNotebook2(ctx, displayJobName, jobName, uuid, description, imageId, spec)

if setting.ModelartsCD.Enabled { if setting.ModelartsCD.Enabled {
err = modelarts_cd.GenerateNotebook(ctx, displayJobName, jobName, uuid, description, flavor, imageId)
err = modelarts_cd.GenerateNotebook(ctx, displayJobName, jobName, uuid, description, imageId, spec)
} else { } else {
err = modelarts.GenerateNotebook2(ctx, displayJobName, jobName, uuid, description, flavor, imageId)
err = modelarts.GenerateNotebook2(ctx, displayJobName, jobName, uuid, description, imageId, spec)
} }


if err != nil { if err != nil {


+ 1
- 3
routers/user/home.go View File

@@ -836,14 +836,12 @@ func Cloudbrains(ctx *context.Context) {
ctx.ServerError("Get job failed:", err) ctx.ServerError("Get job failed:", err)
return return
} }
models.LoadSpecs4CloudbrainInfo(ciTasks)
for i, task := range ciTasks { for i, task := range ciTasks {
ciTasks[i].CanDebug = true ciTasks[i].CanDebug = true
ciTasks[i].CanDel = true ciTasks[i].CanDel = true
ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource ciTasks[i].Cloudbrain.ComputeResource = task.ComputeResource
ciTasks[i].Cloudbrain.AiCenter = repo.GetCloudbrainAiCenter(task.Cloudbrain, ctx) ciTasks[i].Cloudbrain.AiCenter = repo.GetCloudbrainAiCenter(task.Cloudbrain, ctx)
_, cardType, _ := repo.GetCloudbrainCardNumAndType(task.Cloudbrain)
ciTasks[i].Cloudbrain.CardType = cardType
ciTasks[i].Cloudbrain.Cluster = repo.GetCloudbrainCluster(task.Cloudbrain, ctx) ciTasks[i].Cloudbrain.Cluster = repo.GetCloudbrainCluster(task.Cloudbrain, ctx)


} }


Loading…
Cancel
Save