From 756967a6fd52aa83cb190e089896e6e5a078640b Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Thu, 6 Mar 2025 15:45:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B6=85=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=AF=BB=E4=BC=98=E5=AE=9E=E9=AA=8C=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/RayInsServiceImpl.java | 105 +++++++++--------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java index 8c81cb9a..0f6b7412 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java @@ -280,8 +280,8 @@ public class RayInsServiceImpl implements RayInsService { List> responses = JacksonUtil.parseJSONStr2MapList(s); List runIds = new ArrayList<>(); - for (Map response:responses) { - runIds.add((String)response.get("run_hash")); + for (Map response : responses) { + runIds.add((String) response.get("run_hash")); } String decode = AIM64EncoderUtil.decode(runIds); @@ -294,64 +294,65 @@ public class RayInsServiceImpl implements RayInsService { rayIns.setResultPath(endpoint + "/" + directoryPath); rayIns.setResultTxt(endpoint + "/" + directoryPath + "/result.txt"); - - String bucketName = directoryPath.substring(0, directoryPath.indexOf("/")); - String prefix = directoryPath.substring(directoryPath.indexOf("/") + 1, directoryPath.length()) + "/"; - List fileMaps = minioUtil.listRayFilesInDirectory(bucketName, prefix); - - if (!fileMaps.isEmpty()) { - List collect = fileMaps.stream().filter(map -> map.get("name").toString().startsWith("experiment_state")).collect(Collectors.toList()); - if (!collect.isEmpty()) { - Path experimentState = Paths.get(collect.get(0).get("name").toString()); - String content = minioUtil.readObjectAsString(bucketName, prefix + "/" + experimentState); - - String resultTxt = minioUtil.readObjectAsString(bucketName, prefix + "result.txt"); - String bestMetrics = getStringBetween(resultTxt, "Best metrics:", "Best result_df"); - Map bestMetricsMap = JsonUtils.jsonToMap(bestMetrics); - String bestTrialId = (String)bestMetricsMap.get("trial_id"); - - Map result = JsonUtils.jsonToMap(content); - ArrayList trial_data_list = (ArrayList) result.get("trial_data"); - ArrayList> trialList = new ArrayList<>(); - - for (ArrayList trial_data : trial_data_list) { - Map trial_data_0 = JsonUtils.jsonToMap((String) trial_data.get(0)); - Map trial_data_1 = JsonUtils.jsonToMap((String) trial_data.get(1)); - - String trialId = (String) trial_data_0.get("trial_id"); - Map trial = new HashMap<>(); - trial.put("trial_id", trialId); - trial.put("config", trial_data_0.get("config")); - trial.put("status", trial_data_0.get("status")); - - Map last_result = (Map) trial_data_1.get("last_result"); - Map metric_analysis = (Map) trial_data_1.get("metric_analysis"); - Map time_total_s = (Map) metric_analysis.get("time_total_s"); - - trial.put("training_iteration", last_result.get("training_iteration")); - trial.put("time_avg", time_total_s.get("avg")); - - Map param = JsonUtils.jsonToMap(rayIns.getParam()); - trial.put("metric_analysis", metric_analysis.get((String) param.get("metric"))); - trial.put("metric", param.get("metric")); - - for (Map fileMap : fileMaps) { - if (fileMap.get("name").toString().contains(trialId)) { - trial.put("file", fileMap); + try { + String bucketName = directoryPath.substring(0, directoryPath.indexOf("/")); + String prefix = directoryPath.substring(directoryPath.indexOf("/") + 1, directoryPath.length()) + "/"; + List fileMaps = minioUtil.listRayFilesInDirectory(bucketName, prefix); + + if (!fileMaps.isEmpty()) { + List collect = fileMaps.stream().filter(map -> map.get("name").toString().startsWith("experiment_state")).collect(Collectors.toList()); + if (!collect.isEmpty()) { + Path experimentState = Paths.get(collect.get(0).get("name").toString()); + String content = minioUtil.readObjectAsString(bucketName, prefix + "/" + experimentState); + + String resultTxt = minioUtil.readObjectAsString(bucketName, prefix + "result.txt"); + String bestMetrics = getStringBetween(resultTxt, "Best metrics:", "Best result_df"); + Map bestMetricsMap = JsonUtils.jsonToMap(bestMetrics); + String bestTrialId = (String) bestMetricsMap.get("trial_id"); + + Map result = JsonUtils.jsonToMap(content); + ArrayList trial_data_list = (ArrayList) result.get("trial_data"); + ArrayList> trialList = new ArrayList<>(); + + for (ArrayList trial_data : trial_data_list) { + Map trial_data_0 = JsonUtils.jsonToMap((String) trial_data.get(0)); + Map trial_data_1 = JsonUtils.jsonToMap((String) trial_data.get(1)); + + String trialId = (String) trial_data_0.get("trial_id"); + Map trial = new HashMap<>(); + trial.put("trial_id", trialId); + trial.put("config", trial_data_0.get("config")); + trial.put("status", trial_data_0.get("status")); + + Map last_result = (Map) trial_data_1.get("last_result"); + Map metric_analysis = (Map) trial_data_1.get("metric_analysis"); + Map time_total_s = (Map) metric_analysis.get("time_total_s"); + + trial.put("training_iteration", last_result.get("training_iteration")); + trial.put("time_avg", time_total_s.get("avg")); + + Map param = JsonUtils.jsonToMap(rayIns.getParam()); + trial.put("metric_analysis", metric_analysis.get((String) param.get("metric"))); + trial.put("metric", param.get("metric")); + + for (Map fileMap : fileMaps) { + if (fileMap.get("name").toString().contains(trialId)) { + trial.put("file", fileMap); + } } - } - try { if (bestTrialId.equals(trialId)) { trial.put("is_best", true); + trialList.add(0, trial); + } else { + trialList.add(trial); } - } catch (Exception e) { - logger.error("未找到结果文件:result.txt"); } - trialList.add(trial); + rayIns.setTrialList(trialList); } - rayIns.setTrialList(trialList); } + } catch (Exception e) { + logger.error("未找到结果文件:result.txt"); } }