use of com.tencent.angel.model.MatrixSaveContext in project angel by Tencent.
the class AMModelSaver method split.
private Map<ParameterServerId, PSMatricesSaveContext> split(int requestId, ModelSaveContext saveContext) {
List<MatrixSaveContext> matricesContext = saveContext.getMatricesContext();
Map<ParameterServerId, List<PSMatrixSaveContext>> psIdToContextsMap = new HashMap<>();
int size = matricesContext.size();
for (int i = 0; i < size; i++) {
Map<ParameterServerId, PSMatrixSaveContext> psIdToContextMap = split(matricesContext.get(i));
for (Map.Entry<ParameterServerId, PSMatrixSaveContext> matrixEntry : psIdToContextMap.entrySet()) {
List<PSMatrixSaveContext> contexts = psIdToContextsMap.get(matrixEntry.getKey());
if (contexts == null) {
contexts = new ArrayList<>();
psIdToContextsMap.put(matrixEntry.getKey(), contexts);
}
contexts.add(matrixEntry.getValue());
}
}
Map<ParameterServerId, PSMatricesSaveContext> ret = new HashMap<>(psIdToContextsMap.size());
int subRequestId = 0;
for (Map.Entry<ParameterServerId, List<PSMatrixSaveContext>> modelEntry : psIdToContextsMap.entrySet()) {
Path psPath = new Path(new Path(new Path(saveContext.getTmpSavePath()), ModelFilesConstent.resultDirName), modelEntry.getKey().toString());
List<PSMatrixSaveContext> psMatrixContexts = modelEntry.getValue();
for (PSMatrixSaveContext matrixContext : psMatrixContexts) {
matrixContext.setSavePath(new Path(psPath, context.getMatrixMetaManager().getMatrix(matrixContext.getMatrixId()).getName()).toString());
}
ret.put(modelEntry.getKey(), new PSMatricesSaveContext(requestId, subRequestId++, modelEntry.getValue()));
}
return ret;
}
Aggregations