Browse Source

提交代码。

Signed-off-by: zouap <zouap@pcl.ac.cn>
tags/v1.22.7.1
zouap 3 years ago
parent
commit
1df51b8c1b
1 changed files with 60 additions and 8 deletions
  1. +60
    -8
      routers/repo/ai_model_convert.go

+ 60
- 8
routers/repo/ai_model_convert.go View File

@@ -1,9 +1,11 @@
package repo

import (
"bufio"
"encoding/json"
"errors"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
@@ -11,6 +13,7 @@ import (
"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/cloudbrain"
"code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/modelarts"
"code.gitea.io/gitea/modules/setting"
@@ -36,6 +39,8 @@ const (
PytorchBootFile = "convert_pytorch.py"
MindsporeBootFile = "convert_mindspore.py"

ConvertRepoPath = "https://git.openi.org.cn/zouap/npu_test"

REPO_ID = 33267
)

@@ -105,7 +110,6 @@ func SaveModelConvert(ctx *context.Context) {
}

func createNpuTrainJob(modelConvert *models.AiModelConvert, ctx *context.Context, modelRelativePath string) {
repo, _ := models.GetRepositoryByID(REPO_ID)
VersionOutputPath := "V0001"
codeLocalPath := setting.JobPath + modelConvert.ID + modelarts.CodePath
codeObsPath := "/" + setting.Bucket + modelarts.JobPath + modelConvert.ID + modelarts.CodePath
@@ -117,20 +121,20 @@ func createNpuTrainJob(modelConvert *models.AiModelConvert, ctx *context.Context
if err == nil {
os.RemoveAll(codeLocalPath)
}
if err := downloadCode(repo, codeLocalPath, DefaultBranchName); err != nil {
log.Error("downloadCode failed, server timed out: %s (%v)", repo.FullName(), err)
if err := downloadConvertCode(ConvertRepoPath, codeLocalPath, DefaultBranchName); err != nil {
log.Error("downloadCode failed, server timed out: %s (%v)", ConvertRepoPath, err)
return
}
if err := obsMkdir(setting.CodePathPrefix + modelConvert.ID + modelarts.OutputPath + VersionOutputPath + "/"); err != nil {
log.Error("Failed to obsMkdir_output: %s (%v)", repo.FullName(), err)
log.Error("Failed to obsMkdir_output: %s (%v)", modelConvert.ID+modelarts.OutputPath, err)
return
}
if err := obsMkdir(setting.CodePathPrefix + modelConvert.ID + modelarts.LogPath + VersionOutputPath + "/"); err != nil {
log.Error("Failed to obsMkdir_log: %s (%v)", repo.FullName(), err)
log.Error("Failed to obsMkdir_log: %s (%v)", modelConvert.ID+modelarts.LogPath, err)
return
}
if err := uploadCodeToObs(codeLocalPath, modelConvert.ID, ""); err != nil {
log.Error("Failed to uploadCodeToObs: %s (%v)", repo.FullName(), err)
log.Error("Failed to uploadCodeToObs: %s (%v)", modelConvert.ID, err)
return
}
intputshape := strings.Split(modelConvert.InputShape, ",")
@@ -195,8 +199,56 @@ func createNpuTrainJob(modelConvert *models.AiModelConvert, ctx *context.Context
models.UpdateModelConvertCBTI(modelConvert.ID, fmt.Sprint(result.JobID))
}

func downloadConvertCode(repopath string, codePath, branchName string) error {
//add "file:///" prefix to make the depth valid
if err := git.Clone(repopath, codePath, git.CloneRepoOptions{Branch: branchName, Depth: 1}); err != nil {
log.Error("Failed to clone repository: %s (%v)", repopath, err)
return err
}
log.Info("srcPath=" + repopath + " codePath=" + codePath)
configFile, err := os.OpenFile(codePath+"/.git/config", os.O_RDWR, 0666)
if err != nil {
log.Error("open file(%s) failed:%v", codePath+"/,git/config", err)
return err
}

defer configFile.Close()

pos := int64(0)
reader := bufio.NewReader(configFile)
for {
line, err := reader.ReadString('\n')
if err != nil {
if err == io.EOF {
log.Error("not find the remote-url")
return nil
} else {
log.Error("read error: %v", err)
return err
}
}

if strings.Contains(line, "url") && strings.Contains(line, ".git") {
originUrl := "\turl = " + repopath + "\n"
if len(line) > len(originUrl) {
originUrl += strings.Repeat(" ", len(line)-len(originUrl))
}
bytes := []byte(originUrl)
_, err := configFile.WriteAt(bytes, pos)
if err != nil {
log.Error("WriteAt failed:%v", err)
return err
}
break
}

pos += int64(len(line))
}

return nil
}

func createGpuTrainJob(modelConvert *models.AiModelConvert, ctx *context.Context, modelRelativePath string) error {
repo, _ := models.GetRepositoryByID(REPO_ID)
command := ""
if modelConvert.SrcEngine == PYTORCH_ENGINE {
command = getPytorchModelConvertCommand(modelConvert.ID, modelConvert.ModelPath, modelConvert)
@@ -204,7 +256,7 @@ func createGpuTrainJob(modelConvert *models.AiModelConvert, ctx *context.Context
log.Info("command=" + command)

codePath := setting.JobPath + modelConvert.ID + CodeMountPath
downloadCode(repo, codePath, DefaultBranchName)
downloadConvertCode(ConvertRepoPath, codePath, DefaultBranchName)

uploadCodeToMinio(codePath+"/", modelConvert.ID, CodeMountPath+"/")



Loading…
Cancel
Save