in frontend/server/src/main/java/com/amazonaws/ml/mms/wlm/ModelManager.java [86:142]
public ModelArchive registerModel(
String url,
String modelName,
Manifest.RuntimeType runtime,
String handler,
int batchSize,
int maxBatchDelay,
int responseTimeout,
String defaultModelName,
String preloadModel)
throws ModelException, IOException, InterruptedException, ExecutionException,
TimeoutException {
ModelArchive archive = ModelArchive.downloadModel(configManager.getModelStore(), url);
if (modelName == null || modelName.isEmpty()) {
if (archive.getModelName() == null || archive.getModelName().isEmpty()) {
archive.getManifest().getModel().setModelName(defaultModelName);
}
modelName = archive.getModelName();
} else {
archive.getManifest().getModel().setModelName(modelName);
}
if (runtime != null) {
archive.getManifest().setRuntime(runtime);
}
if (handler != null) {
archive.getManifest().getModel().setHandler(handler);
} else if (archive.getHandler() == null || archive.getHandler().isEmpty()) {
archive.getManifest()
.getModel()
.setHandler(configManager.getMmsDefaultServiceHandler());
}
archive.validate();
Model model = new Model(archive, configManager.getJobQueueSize(), preloadModel);
model.setBatchSize(batchSize);
model.setMaxBatchDelay(maxBatchDelay);
model.setResponseTimeout(responseTimeout);
Model existingModel = models.putIfAbsent(modelName, model);
if (existingModel != null) {
// model already exists
throw new ConflictStatusException("Model " + modelName + " is already registered.");
}
if (configManager.isDebug()) {
model.setPort(9000);
} else {
startBackendServer(model);
}
models.put(modelName, model);
logger.info("Model {} loaded.", model.getModelName());
return archive;
}