in frontend/server/src/main/java/com/amazonaws/ml/mms/ModelServer.java [125:232]
private void initModelStore() {
WorkLoadManager wlm = new WorkLoadManager(configManager, serverGroups.getBackendGroup());
ModelManager.init(configManager, wlm);
Set<String> startupModels = ModelManager.getInstance().getStartupModels();
String defaultModelName;
String loadModels = configManager.getLoadModels();
if (loadModels == null || loadModels.isEmpty()) {
return;
}
ModelManager modelManager = ModelManager.getInstance();
int workers = configManager.getDefaultWorkers();
if ("ALL".equalsIgnoreCase(loadModels)) {
String modelStore = configManager.getModelStore();
if (modelStore == null) {
logger.warn("Model store is not configured.");
return;
}
File modelStoreDir = new File(modelStore);
if (!modelStoreDir.exists()) {
logger.warn("Model store path is not found: {}", modelStore);
return;
}
// Check folders to see if they can be models as well
File[] files = modelStoreDir.listFiles();
if (files != null) {
for (File file : files) {
if (file.isHidden()) {
continue;
}
String fileName = file.getName();
if (file.isFile()
&& !fileName.endsWith(".mar")
&& !fileName.endsWith(".model")) {
continue;
}
try {
logger.debug(
"Loading models from model store: {} preload_model: {}",
file.getName(),
configManager.getPreloadModel());
defaultModelName = getDefaultModelName(fileName);
ModelArchive archive =
modelManager.registerModel(
file.getName(),
defaultModelName,
configManager.getPreloadModel());
modelManager.updateModel(archive.getModelName(), workers, workers);
startupModels.add(archive.getModelName());
} catch (ModelException
| IOException
| InterruptedException
| ExecutionException
| TimeoutException e) {
logger.warn("Failed to load model: " + file.getAbsolutePath(), e);
}
}
}
return;
}
String[] models = loadModels.split(",");
for (String model : models) {
String[] pair = model.split("=", 2);
String modelName = null;
String url;
if (pair.length == 1) {
url = pair[0];
} else {
modelName = pair[0];
url = pair[1];
}
if (url.isEmpty()) {
continue;
}
try {
logger.info(
"Loading initial models: {} preload_model: {}",
url,
configManager.getPreloadModel());
defaultModelName = getDefaultModelName(url);
ModelArchive archive =
modelManager.registerModel(
url,
modelName,
null,
null,
1,
100,
configManager.getDefaultResponseTimeout(),
defaultModelName,
configManager.getPreloadModel());
modelManager.updateModel(archive.getModelName(), workers, workers);
startupModels.add(archive.getModelName());
} catch (ModelException
| IOException
| InterruptedException
| ExecutionException
| TimeoutException e) {
logger.warn("Failed to load model: " + url, e);
}
}
}