summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-09-09 22:56:02 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-09-09 22:56:02 +0200
commitcd5ce1396a9b7f56ce33aaeee4819bfc0de58fb4 (patch)
treea978206215a5c00a3a23af4a45d283fb2518eef2 /config-model/src/main/java/com/yahoo
parent63dd94db0e2566317cecff9dc67d796432702f55 (diff)
Also wire in executor to global rank profile generation.
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java42
1 files changed, 29 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
index 3f1cf130aff..c6c2fea5900 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java
@@ -2,7 +2,6 @@
package com.yahoo.vespa.model;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModel;
-import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.collections.Pair;
import com.yahoo.component.Version;
import com.yahoo.config.ConfigInstance;
@@ -78,6 +77,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
@@ -184,8 +185,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
VespaModelBuilder builder = new VespaDomBuilder();
root = builder.getRoot(VespaModel.ROOT_CONFIGID, deployState, this);
- createGlobalRankProfiles(deployState.getDeployLogger(), deployState.getImportedModels(),
- deployState.rankProfileRegistry(), deployState.getQueryProfiles());
+ createGlobalRankProfiles(deployState);
rankProfileList = new RankProfileList(null, // null search -> global
rankingConstants,
largeRankExpressions,
@@ -291,18 +291,24 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
* Creates a rank profile not attached to any search definition, for each imported model in the application package,
* and adds it to the given rank profile registry.
*/
- private void createGlobalRankProfiles(DeployLogger deployLogger, ImportedMlModels importedModels,
- RankProfileRegistry rankProfileRegistry,
- QueryProfiles queryProfiles) {
- if ( ! importedModels.all().isEmpty()) { // models/ directory is available
- for (ImportedMlModel model : importedModels.all()) {
+ private void createGlobalRankProfiles(DeployState deployState) {
+ var importedModels = deployState.getImportedModels().all();
+ DeployLogger deployLogger = deployState.getDeployLogger();
+ RankProfileRegistry rankProfileRegistry = deployState.rankProfileRegistry();
+ QueryProfiles queryProfiles = deployState.getQueryProfiles();
+ List <Future<ConvertedModel>> futureModels = new ArrayList<>();
+ if ( ! importedModels.isEmpty()) { // models/ directory is available
+ for (ImportedMlModel model : importedModels) {
// Due to automatic naming not guaranteeing unique names, there must be a 1-1 between OnnxModels and global RankProfiles.
OnnxModels onnxModels = onnxModelInfoFromSource(model);
RankProfile profile = new RankProfile(model.name(), this, deployLogger, rankProfileRegistry, onnxModels);
rankProfileRegistry.add(profile);
- ConvertedModel convertedModel = ConvertedModel.fromSource(new ModelName(model.name()),
- model.name(), profile, queryProfiles.getRegistry(), model);
- convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ futureModels.add(deployState.getExecutor().submit(() -> {
+ ConvertedModel convertedModel = ConvertedModel.fromSource(new ModelName(model.name()),
+ model.name(), profile, queryProfiles.getRegistry(), model);
+ convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ return convertedModel;
+ }));
}
}
else { // generated and stored model information may be available instead
@@ -314,8 +320,18 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri
OnnxModels onnxModels = onnxModelInfoFromStore(modelName);
RankProfile profile = new RankProfile(modelName, this, deployLogger, rankProfileRegistry, onnxModels);
rankProfileRegistry.add(profile);
- ConvertedModel convertedModel = ConvertedModel.fromStore(new ModelName(modelName), modelName, profile);
- convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ futureModels.add(deployState.getExecutor().submit(() -> {
+ ConvertedModel convertedModel = ConvertedModel.fromStore(new ModelName(modelName), modelName, profile);
+ convertedModel.expressions().values().forEach(f -> profile.addFunction(f, false));
+ return convertedModel;
+ }));
+ }
+ }
+ for (var futureConvertedModel : futureModels) {
+ try {
+ futureConvertedModel.get();
+ } catch (ExecutionException |InterruptedException e) {
+ throw new RuntimeException(e);
}
}
new Processing().processRankProfiles(deployLogger, rankProfileRegistry, queryProfiles, true, false);