Browse Source

自动机器学习开发

dev-automl
chenzhihang 1 year ago
parent
commit
9af40754e7
4 changed files with 34 additions and 8 deletions
  1. +6
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java
  2. +2
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java
  3. +8
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java
  4. +18
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlServiceImpl.java

+ 6
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/autoML/AutoMlInsController.java View File

@@ -52,4 +52,10 @@ public class AutoMlInsController extends BaseController {
public GenericsAjaxResult<Boolean> terminateAutoMlIns(@PathVariable("id") Long id) { public GenericsAjaxResult<Boolean> terminateAutoMlIns(@PathVariable("id") Long id) {
return genericsSuccess(this.autoMLInsService.terminateAutoMlIns(id)); return genericsSuccess(this.autoMLInsService.terminateAutoMlIns(id));
} }

@GetMapping("{id}")
@ApiOperation("查看实验实例详情")
public GenericsAjaxResult<AutoMlIns> getDetailById(@PathVariable("id") Long id) {
return genericsSuccess(this.autoMLInsService.getDetailById(id));
}
} }

+ 2
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/AutoMlInsService.java View File

@@ -21,4 +21,6 @@ public interface AutoMlInsService {
AutoMlIns queryStatusFromArgo(AutoMlIns autoMlIns); AutoMlIns queryStatusFromArgo(AutoMlIns autoMlIns);


boolean terminateAutoMlIns(Long id); boolean terminateAutoMlIns(Long id);

AutoMlIns getDetailById(Long id);
} }

+ 8
- 4
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlInsServiceImpl.java View File

@@ -87,7 +87,6 @@ public class AutoMlInsServiceImpl implements AutoMlInsService {
public AutoMlIns queryStatusFromArgo(AutoMlIns ins) { public AutoMlIns queryStatusFromArgo(AutoMlIns ins) {
String namespace = ins.getArgoInsNs(); String namespace = ins.getArgoInsNs();
String name = ins.getArgoInsName(); String name = ins.getArgoInsName();
Long id = ins.getId();


// 创建请求数据map // 创建请求数据map
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
@@ -140,11 +139,11 @@ public class AutoMlInsServiceImpl implements AutoMlInsService {
ins.setNodeStatus(nodeStatusJson); ins.setNodeStatus(nodeStatusJson);


//终止态为终止不改 //终止态为终止不改
if (!StringUtils.equals(ins.getStatus(), "Terminated")) {
ins.setStatus(StringUtils.isNotEmpty((String) status.get("phase")) ? (String) status.get("phase") : "Pending");
if (!StringUtils.equals(ins.getStatus(), Constant.Terminated)) {
ins.setStatus(StringUtils.isNotEmpty((String) status.get("phase")) ? (String) status.get("phase") : Constant.Pending);
} }
if (StringUtils.equals(ins.getStatus(), "Error")) { if (StringUtils.equals(ins.getStatus(), "Error")) {
ins.setStatus("Failed");
ins.setStatus(Constant.Failed);
} }
return ins; return ins;
} catch (Exception e) { } catch (Exception e) {
@@ -223,4 +222,9 @@ public class AutoMlInsServiceImpl implements AutoMlInsService {
throw new RuntimeException("终止实例错误: " + e.getMessage(), e); throw new RuntimeException("终止实例错误: " + e.getMessage(), e);
} }
} }

@Override
public AutoMlIns getDetailById(Long id) {
return null;
}
} }

+ 18
- 4
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AutoMlServiceImpl.java View File

@@ -27,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -43,6 +44,9 @@ public class AutoMlServiceImpl implements AutoMlService {
@Value("${argo.workflowRun}") @Value("${argo.workflowRun}")
private String argoWorkflowRun; private String argoWorkflowRun;


@Value("${minio.endpoint}")
private String minioEndpoint;

@Resource @Resource
private AutoMlDao autoMlDao; private AutoMlDao autoMlDao;


@@ -81,8 +85,7 @@ public class AutoMlServiceImpl implements AutoMlService {
} }
AutoMl autoMl = new AutoMl(); AutoMl autoMl = new AutoMl();
BeanUtils.copyProperties(autoMlVo, autoMl); BeanUtils.copyProperties(autoMlVo, autoMl);
// String username = SecurityUtils.getLoginUser().getUsername();
String username = "admin";
String username = SecurityUtils.getLoginUser().getUsername();
autoMl.setUpdateBy(username); autoMl.setUpdateBy(username);
String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset()); String datasetJson = JacksonUtil.toJSONString(autoMlVo.getDataset());
autoMl.setDataset(datasetJson); autoMl.setDataset(datasetJson);
@@ -123,8 +126,7 @@ public class AutoMlServiceImpl implements AutoMlService {
public Map<String, String> upload(MultipartFile file, String uuid) throws Exception { public Map<String, String> upload(MultipartFile file, String uuid) throws Exception {
Map<String, String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();


// String username = SecurityUtils.getLoginUser().getUsername();
String username = "admin";
String username = SecurityUtils.getLoginUser().getUsername();
String fileName = file.getOriginalFilename(); String fileName = file.getOriginalFilename();
String path = localPath + "temp/" + username + "/automl_data/" + uuid; String path = localPath + "temp/" + username + "/automl_data/" + uuid;
long sizeInBytes = file.getSize(); long sizeInBytes = file.getSize();
@@ -186,6 +188,18 @@ public class AutoMlServiceImpl implements AutoMlService {
//替换argoInsName //替换argoInsName
String outputString = JsonUtils.mapToJson(output); String outputString = JsonUtils.mapToJson(output);
autoMlIns.setNodeResult(outputString.replace("{{workflow.name}}", (String) metadata.get("name"))); autoMlIns.setNodeResult(outputString.replace("{{workflow.name}}", (String) metadata.get("name")));

Map<String, Object> param_output = (Map<String, Object>) output.get("param_output");
List output1 = (ArrayList) param_output.values().toArray()[0];
Map<String, String> output2 = (Map<String, String>) output1.get(0);
String outputPath = minioEndpoint + "/" + output2.get("path").replace("{{workflow.name}}", (String) metadata.get("name")) + "/";
autoMlIns.setModelPath(outputPath + "save_model.joblib");
if (Constant.AutoMl_Classification.equals(autoMl.getTaskType())) {
autoMlIns.setImgPath(outputPath + "Auto-sklearn_accuracy_over_time.png" + "," + outputPath + "Train_Confusion_Matrix.png" + "," + outputPath + "Test_Confusion_Matrix.png");
} else {
autoMlIns.setImgPath(outputPath + "Auto-sklearn_accuracy_over_time.png" + "," + outputPath + "regression.png");
}

autoMlInsDao.insert(autoMlIns); autoMlInsDao.insert(autoMlIns);


} catch (Exception e) { } catch (Exception e) {


Loading…
Cancel
Save