summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-08 11:46:06 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-03-08 12:23:42 +0100
commita233bda285eba331371cda4946c5d9873705889b (patch)
tree265e526bbe0399d79766f31917a766e906e18904 /config-model
parent38554f48dd242c4a9d269927b374708ba4d97bdf (diff)
- Replace rank profile list
- Replace rank expression list. - Replace rank constant list. - Replace rank onnx model list. None of these are intended for append.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java10
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/FileDistributedConstants.java23
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java46
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java25
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java16
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java1
9 files changed, 89 insertions, 65 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
index bc1c097ea4b..e303e878550 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
@@ -12,6 +12,7 @@ import com.yahoo.schema.RankProfileRegistry;
import com.yahoo.schema.Schema;
import com.yahoo.schema.derived.validation.Validation;
import com.yahoo.vespa.config.search.AttributesConfig;
+import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.model.container.search.QueryProfiles;
@@ -126,10 +127,15 @@ public class DerivedConfiguration {
}
public void exportConstants(String toDirectory) throws IOException {
- RankingConstantsConfig.Builder b = new RankingConstantsConfig.Builder();
- rankProfileList.getConfig(b);
+ var b = new RankingConstantsConfig.Builder()
+ .constant(rankProfileList.getConstantsConfig());
exportCfg(b.build(), toDirectory + "/" + "ranking-constants.cfg");
}
+ public void exportOnnxModels(String toDirectory) throws IOException {
+ var b = new OnnxModelsConfig.Builder()
+ .model(rankProfileList.getOnnxConfig());
+ exportCfg(b.build(), toDirectory + "/" + "onnx-models.cfg");
+ }
private static void exportCfg(ConfigInstance instance, String fileName) throws IOException {
Writer writer = null;
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedConstants.java b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedConstants.java
index 91ab1ad9172..275fbe82ad4 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedConstants.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedConstants.java
@@ -10,6 +10,7 @@ import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -25,7 +26,7 @@ public class FileDistributedConstants {
public FileDistributedConstants(FileRegistry fileRegistry, Collection<RankProfile.Constant> constants) {
Map<String, DistributableConstant> distributableConstants = new LinkedHashMap<>();
for (var constant : constants) {
- if ( ! constant.valuePath().isPresent()) continue;
+ if (constant.valuePath().isEmpty()) continue;
var distributableConstant = new DistributableConstant(constant.name().simpleArgument().get(),
constant.type(),
@@ -41,23 +42,21 @@ public class FileDistributedConstants {
/** Returns a read-only map of the constants in this indexed by name. */
public Map<String, DistributableConstant> asMap() { return constants; }
- public void getConfig(RankingConstantsConfig.Builder builder) {
- for (var constant : constants.values()) {
- builder.constant(new RankingConstantsConfig.Constant.Builder()
- .name(constant.getName())
- .fileref(constant.getFileReference())
- .type(constant.getType()));
- }
+ private static RankingConstantsConfig.Constant.Builder toConfig(DistributableConstant constant) {
+ return new RankingConstantsConfig.Constant.Builder()
+ .name(constant.getName())
+ .fileref(constant.getFileReference())
+ .type(constant.getType());
+ }
+
+ public List<RankingConstantsConfig.Constant.Builder> getConfig() {
+ return constants.values().stream().map(FileDistributedConstants::toConfig).toList();
}
public static class DistributableConstant extends DistributableResource {
private final TensorType tensorType;
- public DistributableConstant(String name, TensorType type, String fileName) {
- this(name, type, fileName, PathType.FILE);
- }
-
public DistributableConstant(String name, TensorType type, String fileName, PathType pathType) {
super(name, fileName, pathType);
this.tensorType = type;
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java
index 1cc33cc4180..6c990eec04b 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/FileDistributedOnnxModels.java
@@ -5,9 +5,11 @@ import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.schema.OnnxModel;
import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
+import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
@@ -16,7 +18,7 @@ import java.util.logging.Logger;
*
* @author bratseth
*/
-public class FileDistributedOnnxModels extends Derived implements OnnxModelsConfig.Producer {
+public class FileDistributedOnnxModels extends Derived {
private static final Logger log = Logger.getLogger(FileDistributedOnnxModels.class.getName());
@@ -47,30 +49,36 @@ public class FileDistributedOnnxModels extends Derived implements OnnxModelsConf
public Map<String, OnnxModel> asMap() { return models; }
- public void getConfig(OnnxModelsConfig.Builder builder) {
+ private static OnnxModelsConfig.Model.Builder toConfig(OnnxModel model) {
+ OnnxModelsConfig.Model.Builder builder = new OnnxModelsConfig.Model.Builder();
+ builder.dry_run_on_setup(true);
+ builder.name(model.getName());
+ builder.fileref(model.getFileReference());
+ model.getInputMap().forEach((name, source) -> builder.input(new OnnxModelsConfig.Model.Input.Builder().name(name).source(source)));
+ model.getOutputMap().forEach((name, as) -> builder.output(new OnnxModelsConfig.Model.Output.Builder().name(name).as(as)));
+ if (model.getStatelessExecutionMode().isPresent())
+ builder.stateless_execution_mode(model.getStatelessExecutionMode().get());
+ if (model.getStatelessInterOpThreads().isPresent())
+ builder.stateless_interop_threads(model.getStatelessInterOpThreads().get());
+ if (model.getStatelessIntraOpThreads().isPresent())
+ builder.stateless_intraop_threads(model.getStatelessIntraOpThreads().get());
+ if (model.getGpuDevice().isPresent()) {
+ builder.gpu_device(model.getGpuDevice().get().deviceNumber());
+ builder.gpu_device_required(model.getGpuDevice().get().required());
+ }
+ return builder;
+ }
+
+ public List<OnnxModelsConfig.Model.Builder> getConfig() {
+ List<OnnxModelsConfig.Model.Builder> cfgList = new ArrayList<>();
for (OnnxModel model : models.values()) {
if ("".equals(model.getFileReference()))
log.warning("Illegal file reference " + model); // Let tests pass ... we should find a better way
else {
- OnnxModelsConfig.Model.Builder modelBuilder = new OnnxModelsConfig.Model.Builder();
- modelBuilder.dry_run_on_setup(true);
- modelBuilder.name(model.getName());
- modelBuilder.fileref(model.getFileReference());
- model.getInputMap().forEach((name, source) -> modelBuilder.input(new OnnxModelsConfig.Model.Input.Builder().name(name).source(source)));
- model.getOutputMap().forEach((name, as) -> modelBuilder.output(new OnnxModelsConfig.Model.Output.Builder().name(name).as(as)));
- if (model.getStatelessExecutionMode().isPresent())
- modelBuilder.stateless_execution_mode(model.getStatelessExecutionMode().get());
- if (model.getStatelessInterOpThreads().isPresent())
- modelBuilder.stateless_interop_threads(model.getStatelessInterOpThreads().get());
- if (model.getStatelessIntraOpThreads().isPresent())
- modelBuilder.stateless_intraop_threads(model.getStatelessIntraOpThreads().get());
- if (model.getGpuDevice().isPresent()) {
- modelBuilder.gpu_device(model.getGpuDevice().get().deviceNumber());
- modelBuilder.gpu_device_required(model.getGpuDevice().get().required());
- }
- builder.model(modelBuilder);
+ cfgList.add(toConfig(model));
}
}
+ return cfgList;
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java b/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java
index 0a419768aaf..575b24934a4 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/RankProfileList.java
@@ -4,6 +4,7 @@ package com.yahoo.schema.derived;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.schema.RankingExpressionBody;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.schema.LargeRankingExpressions;
import com.yahoo.schema.OnnxModel;
@@ -32,6 +33,7 @@ import java.util.concurrent.Future;
*
* @author bratseth
*/
+//TODO Remove implements RankProfilesConfig.Producer, that is only necessary due to some test magic
public class RankProfileList extends Derived implements RankProfilesConfig.Producer {
private final Map<String, RawRankProfile> rankProfiles;
@@ -201,21 +203,26 @@ public class RankProfileList extends Derived implements RankProfilesConfig.Produ
@Override
public void getConfig(RankProfilesConfig.Builder builder) {
- for (RawRankProfile rank : rankProfiles.values() ) {
- rank.getConfig(builder);
- }
+ // Replace
+ builder.rankprofile(rankProfiles.values().stream().map(RawRankProfile::getConfig).toList());
+ }
+
+ private static RankingExpressionsConfig.Expression.Builder toConfig(RankingExpressionBody expr) {
+ return new RankingExpressionsConfig.Expression.Builder()
+ .name(expr.getName())
+ .fileref(expr.getFileReference());
}
- public void getConfig(RankingExpressionsConfig.Builder builder) {
- largeRankingExpressions.expressions().forEach((expr) -> builder.expression.add(new RankingExpressionsConfig.Expression.Builder().name(expr.getName()).fileref(expr.getFileReference())));
+ public List<RankingExpressionsConfig.Expression.Builder> getExpressionsConfig() {
+ return largeRankingExpressions.expressions().stream().map(RankProfileList::toConfig).toList();
}
- public void getConfig(RankingConstantsConfig.Builder builder) {
- constants.getConfig(builder);
+ public List<RankingConstantsConfig.Constant.Builder> getConstantsConfig() {
+ return constants.getConfig();
}
- public void getConfig(OnnxModelsConfig.Builder builder) {
- onnxModels.getConfig(builder);
+ public List<OnnxModelsConfig.Model.Builder> getOnnxConfig() {
+ return onnxModels.getConfig();
}
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java
index db76d6397fc..b057624f055 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/RawRankProfile.java
@@ -43,7 +43,7 @@ import java.util.Set;
*
* @author bratseth
*/
-public class RawRankProfile implements RankProfilesConfig.Producer {
+public class RawRankProfile {
/** A reusable compressor with default settings */
private static final Compressor compressor = new Compressor();
@@ -130,12 +130,11 @@ public class RawRankProfile implements RankProfilesConfig.Producer {
*/
public List<Pair<String, String>> configProperties() { return decompress(compressedProperties); }
- @Override
- public void getConfig(RankProfilesConfig.Builder builder) {
+ public RankProfilesConfig.Rankprofile.Builder getConfig() {
RankProfilesConfig.Rankprofile.Builder b = new RankProfilesConfig.Rankprofile.Builder().name(getName());
getRankProperties(b);
buildNormalizers(b);
- builder.rankprofile(b);
+ return b;
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
index ffd346f704f..41a09d9af8e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
@@ -60,20 +60,20 @@ public class ContainerModelEvaluation implements
@Override
public void getConfig(RankingConstantsConfig.Builder builder) {
- rankProfileList.getConfig(builder);
+ builder.constant(rankProfileList.getConstantsConfig());
}
@Override
public void getConfig(OnnxModelsConfig.Builder builder) {
if (onnxModels != null) {
- onnxModels.getConfig(builder);
+ builder.model(onnxModels.getConfig());
} else {
- rankProfileList.getConfig(builder);
+ builder.model(rankProfileList.getOnnxConfig());
}
}
public void getConfig(RankingExpressionsConfig.Builder builder) {
- rankProfileList.getConfig(builder);
+ builder.expression(rankProfileList.getExpressionsConfig());
}
public static Handler getHandler() {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
index 800e766706b..5e7a7d738d4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ml/ModelsEvaluatorTester.java
@@ -121,21 +121,21 @@ public class ModelsEvaluatorTester {
}
private static RankingConstantsConfig getRankingConstantConfig(RankProfileList rankProfileList) {
- RankingConstantsConfig.Builder builder = new RankingConstantsConfig.Builder();
- rankProfileList.getConfig(builder);
- return builder.build();
+ return new RankingConstantsConfig.Builder()
+ .constant(rankProfileList.getConstantsConfig())
+ .build();
}
private static RankingExpressionsConfig getRankingExpressionsConfig(RankProfileList rankProfileList) {
- RankingExpressionsConfig.Builder builder = new RankingExpressionsConfig.Builder();
- rankProfileList.getConfig(builder);
- return builder.build();
+ return new RankingExpressionsConfig.Builder()
+ .expression(rankProfileList.getExpressionsConfig())
+ .build();
}
private static OnnxModelsConfig getOnnxModelsConfig(RankProfileList rankProfileList) {
- OnnxModelsConfig.Builder builder = new OnnxModelsConfig.Builder();
- rankProfileList.getConfig(builder);
- return builder.build();
+ return new OnnxModelsConfig.Builder()
+ .model(rankProfileList.getOnnxConfig())
+ .build();
}
private static FileAcquirer createFileAcquirer(MockFileRegistry fileRegistry, File appDir) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
index 334f8d4314a..9a1a5faf9b0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DocumentDatabase.java
@@ -68,14 +68,18 @@ public class DocumentDatabase extends AnyConfigProducer implements
// These methods append as multiple databases join config => TODO will loose information - not good
@Override public void getConfig(AttributesConfig.Builder builder) { derivedCfg.getConfig(builder); }
- @Override public void getConfig(RankProfilesConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); }
-
- // These methods append, TODO unknown usage and consequences
- @Override public void getConfig(RankingExpressionsConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); }
- @Override public void getConfig(RankingConstantsConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); }
- @Override public void getConfig(OnnxModelsConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); }
// Below methods will replace config completely
+ @Override public void getConfig(OnnxModelsConfig.Builder builder) {
+ builder.model(derivedCfg.getRankProfileList().getOnnxConfig());
+ }
+ @Override public void getConfig(RankingExpressionsConfig.Builder builder) {
+ builder.expression(derivedCfg.getRankProfileList().getExpressionsConfig());
+ }
+ @Override public void getConfig(RankingConstantsConfig.Builder builder) {
+ builder.constant(derivedCfg.getRankProfileList().getConstantsConfig());
+ }
+ @Override public void getConfig(RankProfilesConfig.Builder builder) { derivedCfg.getRankProfileList().getConfig(builder); }
@Override public void getConfig(IndexschemaConfig.Builder builder) { derivedCfg.getIndexSchema().getConfig(builder); }
@Override public void getConfig(JuniperrcConfig.Builder builder) { derivedCfg.getJuniperrc().getConfig(builder); }
@Override public void getConfig(SummaryConfig.Builder builder) { derivedCfg.getSummaries().getConfig(builder); }
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
index 7686289f11c..7d7ed2b23eb 100644
--- a/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/schema/derived/AbstractExportingTestCase.java
@@ -70,6 +70,7 @@ public abstract class AbstractExportingTestCase extends AbstractSchemaTestCase {
DerivedConfiguration.exportDocuments(new DocumentTypes().produce(builder.getModel(), new DocumenttypesConfig.Builder()), path);
DerivedConfiguration.exportQueryProfiles(builder.getQueryProfileRegistry(), path);
config.exportConstants(path);
+ config.exportOnnxModels(path);
return config;
}