diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-03-08 11:46:06 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2024-03-08 12:23:42 +0100 |
commit | a233bda285eba331371cda4946c5d9873705889b (patch) | |
tree | 265e526bbe0399d79766f31917a766e906e18904 /config-model/src/main | |
parent | 38554f48dd242c4a9d269927b374708ba4d97bdf (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/src/main')
8 files changed, 88 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); } |