|
|
|
@@ -23,8 +23,6 @@ import java.util.stream.Collectors; |
|
|
|
public class AimServiceImpl implements AimService { |
|
|
|
@Resource |
|
|
|
private ExperimentInsService experimentInsService; |
|
|
|
@Resource |
|
|
|
private ModelDependencyService modelDependencyService; |
|
|
|
|
|
|
|
@Value("${aim.url}") |
|
|
|
private String aimUrl; |
|
|
|
@@ -44,7 +42,7 @@ public class AimServiceImpl implements AimService { |
|
|
|
@Override |
|
|
|
public String getExpMetrics(List<String> runIds) throws Exception { |
|
|
|
String decode = AIM64EncoderUtil.decode(runIds); |
|
|
|
return aimUrl+"/api/runs/search/run?query="+decode; |
|
|
|
return aimUrl+"/metrics?select="+decode; |
|
|
|
} |
|
|
|
|
|
|
|
private List<InsMetricInfoVo> getAimRunInfos(boolean isTrain,Integer experimentId) throws Exception { |
|
|
|
@@ -56,6 +54,7 @@ public class AimServiceImpl implements AimService { |
|
|
|
String url = aimProxyUrl+"/api/runs/search/run?query="+encodedUrlString; |
|
|
|
String s = HttpUtils.sendGetRequest(url); |
|
|
|
List<Map<String, Object>> response = JacksonUtil.parseJSONStr2MapList(s); |
|
|
|
System.out.println("response: "+JacksonUtil.toJSONString(response)); |
|
|
|
if (response == null || response.size() == 0){ |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
@@ -103,20 +102,15 @@ public class AimServiceImpl implements AimService { |
|
|
|
aimRunInfo.setStatus(ins.getStatus()); |
|
|
|
aimRunInfo.setStartTime(ins.getCreateTime()); |
|
|
|
Map<String, Object> metricRecordMap = JacksonUtil.parseJSONStr2Map(metricRecordString); |
|
|
|
|
|
|
|
//metricRecord 格式为{"train":[{"task_id":"model-train-35303690","run_id":"5560d78f54314672b60304c8d6ba03b8","experiment_name":"experiment-30-train"}],"evaluate":[{"task_id":"model-train-35303690","run_id":"5560d78f54314672b60304c8d6ba03b8","experiment_name":"experiment-30-train"}]} |
|
|
|
//遍历metricRecord,找到当前task_id对应的ModelDependency |
|
|
|
|
|
|
|
if (isTrain){ |
|
|
|
List<Map<String, Object>> trainList = (List<Map<String, Object>>) metricRecordMap.get("train"); |
|
|
|
List<String> trainDateSet = getTrainDateSet(trainList, ins.getId(), isTrain); |
|
|
|
aimRunInfo.setDataset(trainDateSet); |
|
|
|
List<Map<String, Object>> records = (List<Map<String, Object>>) metricRecordMap.get("train"); |
|
|
|
List<String> datasetList = getTrainDateSet(records, aimrunId); |
|
|
|
aimRunInfo.setDataset(datasetList); |
|
|
|
}else { |
|
|
|
List<Map<String, Object>> trainList = (List<Map<String, Object>>) metricRecordMap.get("evaluate"); |
|
|
|
List<String> trainDateSet = getTrainDateSet(trainList, ins.getId(), isTrain); |
|
|
|
aimRunInfo.setDataset(trainDateSet); |
|
|
|
List<Map<String, Object>> records = (List<Map<String, Object>>) metricRecordMap.get("evaluate"); |
|
|
|
List<String> datasetList = getTrainDateSet(records, aimrunId); |
|
|
|
aimRunInfo.setDataset(datasetList); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
aimRunInfoList.add(aimRunInfo); |
|
|
|
@@ -143,33 +137,21 @@ public class AimServiceImpl implements AimService { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private List<String> getTrainDateSet(List<Map<String, Object>> trainList,Integer expInsId,boolean isTrain){ |
|
|
|
if (trainList == null || trainList.size() == 0){ |
|
|
|
return new ArrayList<>(); |
|
|
|
} |
|
|
|
private List<String> getTrainDateSet(List<Map<String, Object>> records, String aimrunId){ |
|
|
|
List<String> datasetList = new ArrayList<>(); |
|
|
|
for (Map<String, Object> trainMap : trainList) { |
|
|
|
String task_id = (String) trainMap.get("task_id"); |
|
|
|
//modelDependency取到数据集文件 |
|
|
|
ModelDependency modelDependency = modelDependencyService.queryByInsAndTrainTaskId(expInsId, task_id); |
|
|
|
//把数据集文件组装成String后放进List |
|
|
|
String datasetString = ""; |
|
|
|
if (isTrain){ |
|
|
|
datasetString = modelDependency.getTrainDataset(); |
|
|
|
}else { |
|
|
|
datasetString = modelDependency.getTestDataset(); |
|
|
|
} |
|
|
|
List<Map<String, Object>> datasetListMap = JacksonUtil.parseJSONStr2MapList(datasetString); |
|
|
|
|
|
|
|
if (datasetListMap != null && datasetListMap.size() > 0){ |
|
|
|
for (Map<String, Object> datasetMap : datasetListMap) { |
|
|
|
//[{"dataset_id":20,"dataset_version":"v0.1.0","dataset_name":"手写体识别模型依赖测试训练数据集"}] |
|
|
|
String datasetName = (String) datasetMap.get("dataset_name")+":"+(String) datasetMap.get("dataset_version"); |
|
|
|
for (Map<String, Object> record : records) { |
|
|
|
if (StringUtils.equals(aimrunId, (String)record.get("run_id"))) { |
|
|
|
List<Map<String, Object>> datasets = (List<Map<String, Object>>) record.get("datasets"); |
|
|
|
if (datasets == null || datasets.size() == 0){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
for (Map<String, Object> dataset : datasets){ |
|
|
|
String datasetName = (String) dataset.get("dataset_name")+":"+(String) dataset.get("dataset_version"); |
|
|
|
datasetList.add(datasetName); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
return datasetList; |
|
|
|
} |
|
|
|
|
|
|
|
} |