|
- package modelarts
-
- import (
- "path"
- "strconv"
-
- "code.gitea.io/gitea/models"
- "code.gitea.io/gitea/modules/context"
- "code.gitea.io/gitea/modules/log"
- "code.gitea.io/gitea/modules/setting"
- )
-
- const (
- //notebook
- storageTypeOBS = "obs"
- autoStopDuration = 4 * 60 * 60
- flavor = "modelarts.kat1.xlarge"
- profileID = "Python3-ascend910-arm"
-
- DataSetMountPath = "/home/ma-user/work"
- NotebookEnv = "Python3"
- NotebookType = "Ascend"
- FlavorInfo = "Ascend: 1*Ascend 910 CPU: 24 核 96GiB (modelarts.kat1.xlarge)"
-
- //train-job
- engineID = 118
-
- Engine = "Ascend-Powered-Engine"
- EngineVersions = "{\"version\":[{\"id\":118,\"value\":\"MindSpore-1.0.0-c75-python3.7-euleros2.8-aarch64\"}," +
- "{\"id\":119,\"value\":\"MindSpore-1.1.1-c76-python3.7-euleros2.8-aarch64\"}" +
- "{\"id\":120,\"value\":\"MindSpore-1.1.1-c76-tr5-python3.7-euleros2.8-aarch64\"}" +
- "{\"id\":117,\"value\":\"TF-1.15-c75-python3.7-euleros2.8-aarch64\"}" +
- "]}"
- FlavorInfos = "{\"flavor\":[{\"id\":1,\"value\":\"Ascend : 2 * Ascend 910 CPU:48 核 512GiB\"}," +
- "{\"id\":2,\"value\":\"Ascend : 8 * Ascend 910 CPU:192 核 2048GiB\"}" +
- "{\"id\":3,\"value\":\"Ascend : 4 * Ascend 910 CPU:96 核 1024GiB\"}" +
- "{\"id\":4,\"value\":\"Ascend : 1 * Ascend 910 CPU:24 核 256GiB\"}" +
- "]}"
- CodePath = "/code/"
- OutputPath = "/output/"
- JobPath = "/job/"
- )
-
- type GenerateTrainJobReq struct {
- JobName string
- Uuid string
- Description string
- CodeObsPath string
- BootFile string
- DataUrl string
- TrainUrl string
- WorkServerNumber int
- EngineID int64
- }
-
- type VersionInfo struct {
- Version []struct {
- ID int `json:"id"`
- Value string `json:"value"`
- } `json:"version"`
- }
-
- type Flavor struct {
- Info []struct {
- ID int `json:"id"`
- Value string `json:"value"`
- } `json:"flavor"`
- }
-
- func GenerateTask(ctx *context.Context, jobName, uuid, description string) error {
- dataActualPath := setting.Bucket + "/" + setting.BasePath + path.Join(uuid[0:1], uuid[1:2]) + "/" + uuid + "/"
- jobResult, err := createNotebook(models.CreateNotebookParams{
- JobName: jobName,
- Description:description,
- ProfileID: profileID,
- Flavor: flavor,
- Spec: models.Spec{
- Storage: models.Storage{
- Type: storageTypeOBS,
- Location:models.Location{
- Path: dataActualPath,
- },
- },
- AutoStop: models.AutoStop{
- Enable: true,
- Duration: autoStopDuration,
- },
- },
-
- })
- if err != nil {
- log.Error("CreateJob failed: %v", err.Error())
- return err
- }
-
- err = models.CreateCloudbrain(&models.Cloudbrain{
- Status: string(models.JobWaiting),
- UserID: ctx.User.ID,
- RepoID: ctx.Repo.Repository.ID,
- JobID: jobResult.ID,
- JobName: jobName,
- JobType: string(models.JobTypeDebug),
- Type: models.TypeCloudBrainNotebook,
- })
-
- if err != nil {
- return err
- }
-
- return nil
- }
-
- func GenerateTrainJob(ctx *context.Context, req *GenerateTrainJobReq) error {
- jobResult, err := createTrainJob(models.CreateTrainJobParams{
- JobName: req.JobName,
- Description: req.Description,
- Config: models.Config{
- WorkServerNum: req.WorkServerNumber,
- AppUrl: req.CodeObsPath,
- BootFileUrl: req.CodeObsPath + req.BootFile,
- DataUrl: req.DataUrl,
- EngineID: req.EngineID,
- TrainUrl: req.TrainUrl,
- },
-
- })
- if err != nil {
- log.Error("CreateJob failed: %v", err.Error())
- return err
- }
-
- err = models.CreateCloudbrain(&models.Cloudbrain{
- Status: strconv.Itoa(jobResult.Status),
- UserID: ctx.User.ID,
- RepoID: ctx.Repo.Repository.ID,
- JobID: strconv.FormatInt(jobResult.JobID, 10),
- JobName: req.JobName,
- JobType: string(models.JobTypeDebug),
- Type: models.TypeCloudBrainTrainJob,
- })
-
- if err != nil {
- return err
- }
-
- return nil
- }
|