From c0b74fafd2b742965504b88956daf26d45924bba Mon Sep 17 00:00:00 2001 From: cp3hnu <709011834@qq.com> Date: Wed, 23 Oct 2024 16:57:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=9E=E9=AA=8C=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/mapper/ExperimentInsDao.java | 2 + .../ExperimentInstanceStatusTask.java | 75 ++++++++++--------- .../platform/service/impl/AimServiceImpl.java | 15 +--- .../ExperimentInsDaoMapper.xml | 16 ++++ 4 files changed, 59 insertions(+), 49 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java index c9ef05bf..478d0f28 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java @@ -41,6 +41,8 @@ public interface ExperimentInsDao { long countTorE(@Param("experimentId") Integer experimentId, @Param("isTrain") Boolean isTrain); + List queryTorE(@Param("experimentId") Integer experimentId, @Param("isTrain") Boolean isTrain, @Param("pageable") Pageable pageable); + /* 统计实验实例总数 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index df339f73..fb72bc65 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -1,6 +1,5 @@ package com.ruoyi.platform.scheduling; -import com.ruoyi.platform.constant.Constant; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.mapper.ExperimentDao; @@ -48,50 +47,54 @@ public class ExperimentInstanceStatusTask { } //运行成功的实验实例记录指标数值 // if (Constant.Succeeded.equals(experimentIns.getStatus())) { - Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); - List> trainMetricRecords = (List>) metricRecord.get("train"); - List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); + Map metricRecord = JacksonUtil.parseJSONStr2Map(experimentIns.getMetricRecord()); + List> trainMetricRecords = (List>) metricRecord.get("train"); + List> evaluateMetricRecords = (List>) metricRecord.get("evaluate"); - HashMap metricValue = new HashMap<>(); - HashMap trainMetricValues = new HashMap<>(); - HashMap evaluateMetricValues = new HashMap<>(); + HashMap metricValue = new HashMap<>(); + HashMap trainMetricValues = new HashMap<>(); + HashMap evaluateMetricValues = new HashMap<>(); - if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { - for (Map trainMetricRecord : trainMetricRecords) { - HashMap trainMetricValue = new HashMap<>(); - String taskId = (String) trainMetricRecord.get("task_id"); - if (taskId.startsWith("model-train")) { - String runId = (String) trainMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpInfos1(true, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - trainMetricValue.putAll(metrics); - trainMetricValue.put("run_hash", expTrainInfo.getRunId()); - } + if (trainMetricRecords != null && !trainMetricRecords.isEmpty()) { + for (Map trainMetricRecord : trainMetricRecords) { + HashMap trainMetricValue = new HashMap<>(); + String taskId = (String) trainMetricRecord.get("task_id"); + if (taskId.startsWith("model-train")) { + String runId = (String) trainMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpInfos1(true, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + trainMetricValue.putAll(metrics); + trainMetricValue.put("run_hash", expTrainInfo.getRunId()); + } + if (trainMetricValue.size() > 0) { + trainMetricValues.put(taskId, trainMetricValue); } - trainMetricValues.put(taskId, trainMetricValue); } } + } - if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { - for (Map evaluateMetricRecord : evaluateMetricRecords) { - HashMap evaluateMetricValue = new HashMap<>(); - String taskId = (String) evaluateMetricRecord.get("task_id"); - if (taskId.startsWith("model-evaluate")) { - String runId = (String) evaluateMetricRecord.get("run_id"); - List expTrainInfos = aimService.getExpInfos1(false, experimentIns.getExperimentId(), runId); - for (InsMetricInfoVo expTrainInfo : expTrainInfos) { - Map metrics = expTrainInfo.getMetrics(); - evaluateMetricValue.putAll(metrics); - evaluateMetricValue.put("run_hash", expTrainInfo.getRunId()); - } + if (evaluateMetricRecords != null && !evaluateMetricRecords.isEmpty()) { + for (Map evaluateMetricRecord : evaluateMetricRecords) { + HashMap evaluateMetricValue = new HashMap<>(); + String taskId = (String) evaluateMetricRecord.get("task_id"); + if (taskId.startsWith("model-evaluate")) { + String runId = (String) evaluateMetricRecord.get("run_id"); + List expTrainInfos = aimService.getExpInfos1(false, experimentIns.getExperimentId(), runId); + for (InsMetricInfoVo expTrainInfo : expTrainInfos) { + Map metrics = expTrainInfo.getMetrics(); + evaluateMetricValue.putAll(metrics); + evaluateMetricValue.put("run_hash", expTrainInfo.getRunId()); + } + if (evaluateMetricValue.size() > 0) { + evaluateMetricValues.put(taskId, evaluateMetricValue); } - evaluateMetricValues.put(taskId, evaluateMetricValue); } } - metricValue.put("train", trainMetricValues); - metricValue.put("evaluate", evaluateMetricValues); - experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); + } + metricValue.put("train", trainMetricValues); + metricValue.put("evaluate", evaluateMetricValues); + experimentIns.setMetricValue(JsonUtils.mapToJson(metricValue)); // } experimentIns.setUpdateTime(new Date()); // 线程安全的添加操作 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java index b63fe369..70915655 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/AimServiceImpl.java @@ -155,22 +155,11 @@ public class AimServiceImpl implements AimService { public Page getExpInfos(boolean isTrain, Integer experimentId, int page, int size) { PageRequest pageRequest = PageRequest.of(page, size); - ExperimentIns query = new ExperimentIns(); - query.setExperimentId(experimentId); long count = experimentInsDao.countTorE(experimentId, isTrain); - List experimentInsList = experimentInsDao.queryAllByLimit(query, pageRequest); - - List collect = experimentInsList.stream().filter(ins -> { - Map metricRecord = JacksonUtil.parseJSONStr2Map(ins.getMetricRecord()); - if (isTrain) { - return metricRecord.get("train") != null; - } else { - return metricRecord.get("evaluate") != null; - } - }).collect(Collectors.toList()); + List experimentInsList = experimentInsDao.queryTorE(experimentId, isTrain, pageRequest); List aimRunInfoList = new ArrayList<>(); - for (ExperimentIns experimentIns : collect) { + for (ExperimentIns experimentIns : experimentInsList) { InsMetricInfoVo aimRunInfo = new InsMetricInfoVo(); aimRunInfo.setExperimentInsId(experimentIns.getId()); aimRunInfo.setStartTime(experimentIns.getCreateTime()); diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 87d06752..9930093d 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -263,6 +263,22 @@ + + insert into experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_result,nodes_logs,global_param,metric_record,metric_value,start_time,finish_time,create_by,create_time,update_by,update_time,state)