diff options
author | Arnstein Ressem <aressem@gmail.com> | 2018-09-12 02:00:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-12 02:00:30 +0200 |
commit | c5ac946420c209ea2994ee957d2308ec613acc01 (patch) | |
tree | aeef61c162db3fed683927dbec36f57dfaa4e526 | |
parent | b3801a78cdda4a4f8a9135ac269c8d8f6b2bbbdc (diff) | |
parent | 449e5e0f8ed1ecf9c28b5ffb7bd46d0aac04d4d3 (diff) |
Merge pull request #6915 from vespa-engine/revert-6907-bratseth/add-model-evaluation-element
Revert "Add model-evaluation tag"
18 files changed, 115 insertions, 191 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java index 9deb03495f2..d67cb0c29c3 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java @@ -90,10 +90,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase { if (standaloneZooKeeper) { parent = new ClusterControllerCluster(parent, "standalone"); } - ContainerCluster cluster = new ContainerCluster(parent, - "cluster-controllers", - "cluster-controllers", - new ClusterControllerClusterVerifier()); + ContainerCluster cluster = new ContainerCluster(parent, "cluster-controllers", "cluster-controllers", new ClusterControllerClusterVerifier(), RankProfileList.empty); ContainerModelBuilder.addDefaultHandler_legacyBuilder(cluster); List<Container> containers = new ArrayList<>(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java index 25d184d148a..291a2824e46 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java @@ -98,7 +98,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { // Creates a container cluster 'logserver-cluster' with 1 container on logserver host // for setting up a handler for getting logs from logserver private void createAdditionalContainerOnLogserverHost(Admin admin, HostResource hostResource) { - ContainerCluster logServerCluster = new ContainerCluster(admin, "logserver-cluster", "logserver-cluster"); + ContainerCluster logServerCluster = new ContainerCluster(admin, "logserver-cluster", "logserver-cluster", RankProfileList.empty); ContainerModel logserverClusterModel = new ContainerModel(context.withParent(admin).withId(logServerCluster.getSubId())); logserverClusterModel.setCluster(logServerCluster); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index f0724306e9c..fbe86d26b02 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.container; +import ai.vespa.models.evaluation.ModelsEvaluator; import com.yahoo.cloud.config.ClusterInfoConfig; import com.yahoo.cloud.config.ConfigserverConfig; import com.yahoo.cloud.config.RoutingProviderConfig; @@ -40,6 +41,7 @@ import com.yahoo.search.config.IndexInfoConfig; import com.yahoo.search.config.QrStartConfig; import com.yahoo.search.pagetemplates.PageTemplatesConfig; import com.yahoo.search.query.profile.config.QueryProfilesConfig; +import com.yahoo.searchdefinition.derived.RankProfileList; import com.yahoo.vespa.config.search.RankProfilesConfig; import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig; @@ -155,7 +157,6 @@ public final class ContainerCluster private ContainerDocproc containerDocproc; private ContainerDocumentApi containerDocumentApi; private SecretStore secretStore; - private ContainerModelEvaluation modelEvaluation; private MbusParams mbusParams; private boolean rpcServerEnabled = true; @@ -172,6 +173,9 @@ public final class ContainerCluster private final ContainerClusterVerifier clusterVerifier; private final boolean isHostedVespa; + /** Global rank profiles, aka models */ + private final RankProfileList rankProfileList; + private Map<String, String> concreteDocumentTypes = new LinkedHashMap<>(); private MetricDefaultsConfig.Factory.Enum defaultMetricConsumerFactory; @@ -196,16 +200,30 @@ public final class ContainerCluster } } - /** Creates a container cluster */ - public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name) { - this(parent, subId, name, new AcceptAllVerifier()); + /** + * Creates a container cluster + * + * @param rankProfileList the list ofd global rank profiles containing models that should be available in + * container clusters + */ + public ContainerCluster(AbstractConfigProducer<?> parent, + String subId, + String name, + RankProfileList rankProfileList) { + this(parent, subId, name, new AcceptAllVerifier(), rankProfileList); } - /** Creates a container cluster */ + /** + * Creates a container cluster + * + * @param rankProfileList the list ofd global rank profiles containing models that should be available in + * container clusters + */ public ContainerCluster(AbstractConfigProducer<?> parent, String subId, String name, - ContainerClusterVerifier verifier) { + ContainerClusterVerifier verifier, + RankProfileList rankProfileList) { super(parent, subId); this.clusterVerifier = verifier; this.name = name; @@ -215,12 +233,14 @@ public final class ContainerCluster componentGroup = new ComponentGroup<>(this, "component"); restApiGroup = new ConfigProducerGroup<>(this, "rest-api"); servletGroup = new ConfigProducerGroup<>(this, "servlet"); + this.rankProfileList = Objects.requireNonNull(rankProfileList, "rankProfileList cannot be null"); addComponent(new StatisticsComponent()); addSimpleComponent(AccessLog.class); // TODO better modelling addSimpleComponent(ThreadPoolProvider.class); addSimpleComponent(com.yahoo.concurrent.classlock.ClassLocking.class); + addSimpleComponent(ModelsEvaluator.class.getName(), null, "model-evaluation"); addSimpleComponent("com.yahoo.jdisc.http.filter.SecurityFilterInvoker"); addSimpleComponent(SIMPLE_LINGUISTICS_PROVIDER); addSimpleComponent("com.yahoo.container.jdisc.SecretStoreProvider"); @@ -340,8 +360,7 @@ public final class ContainerCluster public void prepare() { addAndSendApplicationBundles(); - if (modelEvaluation != null) - modelEvaluation.prepare(containers); + rankProfileList.sendConstantsTo(containers); sendUserConfiguredFiles(); setApplicationMetaData(); for (RestApi restApi : restApiGroup.getComponents()) @@ -438,10 +457,6 @@ public final class ContainerCluster this.containerSearch = containerSearch; } - public void setModelEvaluation(ContainerModelEvaluation modelEvaluation) { - this.modelEvaluation = modelEvaluation; - } - public void setHttp(Http http) { this.http = http; addChild(http); @@ -536,13 +551,13 @@ public final class ContainerCluster } @Override - public void getConfig(ComponentsConfig.Builder builder) { + public final void getConfig(ComponentsConfig.Builder builder) { builder.components.addAll(ComponentsConfigGenerator.generate(getAllComponents())); builder.components(new ComponentsConfig.Components.Builder().id("com.yahoo.container.core.config.HandlersConfigurerDi$RegistriesHack")); } @Override - public void getConfig(JdiscBindingsConfig.Builder builder) { + public final void getConfig(JdiscBindingsConfig.Builder builder) { builder.handlers.putAll(DiscBindingsConfigGenerator.generate(getHandlers())); } @@ -637,37 +652,47 @@ public final class ContainerCluster @Override public void getConfig(DocprocConfig.Builder builder) { - if (containerDocproc != null) containerDocproc.getConfig(builder); + if (containerDocproc != null) { + containerDocproc.getConfig(builder); + } } @Override public void getConfig(PageTemplatesConfig.Builder builder) { - if (containerSearch != null) containerSearch.getConfig(builder); + if (containerSearch != null) { + containerSearch.getConfig(builder); + } } @Override public void getConfig(SemanticRulesConfig.Builder builder) { - if (containerSearch != null) containerSearch.getConfig(builder); + if (containerSearch != null) { + containerSearch.getConfig(builder); + } } @Override public void getConfig(QueryProfilesConfig.Builder builder) { - if (containerSearch != null) containerSearch.getConfig(builder); + if (containerSearch != null) { + containerSearch.getConfig(builder); + } } @Override public void getConfig(SchemamappingConfig.Builder builder) { - if (containerDocproc != null) containerDocproc.getConfig(builder); + if (containerDocproc!=null) containerDocproc.getConfig(builder); } @Override public void getConfig(IndexInfoConfig.Builder builder) { - if (containerSearch != null) containerSearch.getConfig(builder); + if (containerSearch!=null) containerSearch.getConfig(builder); } @Override public void getConfig(FeederConfig.Builder builder) { - if (containerDocumentApi != null) containerDocumentApi.getConfig(builder); + if (containerDocumentApi != null) { + containerDocumentApi.getConfig(builder); + } } @Override @@ -686,20 +711,19 @@ public final class ContainerCluster @Override public void getConfig(RankProfilesConfig.Builder builder) { - if (modelEvaluation != null) modelEvaluation.getConfig(builder); + rankProfileList.getConfig(builder); } @Override - public void getConfig(RankingConstantsConfig.Builder builder) { - if (modelEvaluation != null) modelEvaluation.getConfig(builder); - } + public void getConfig(RankingConstantsConfig.Builder builder) { rankProfileList.getConfig(builder); } public void setMbusParams(MbusParams mbusParams) { this.mbusParams = mbusParams; } public void initialize(Map<String, AbstractSearchCluster> clusterMap) { - if (containerSearch != null) containerSearch.connectSearchClusters(clusterMap); + if (containerSearch != null) + containerSearch.connectSearchClusters(clusterMap); } public void addDefaultSearchAccessLog() { @@ -717,7 +741,9 @@ public final class ContainerCluster @Override public void getConfig(MetricDefaultsConfig.Builder builder) { - if (defaultMetricConsumerFactory != null) builder.factory(defaultMetricConsumerFactory); + if (defaultMetricConsumerFactory != null) { + builder.factory(defaultMetricConsumerFactory); + } } @Override @@ -827,5 +853,4 @@ public final class ContainerCluster this.containerCoreMemory = containerCoreMemory; } } - } 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 deleted file mode 100644 index 09990c7b9de..00000000000 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.model.container; - -import ai.vespa.models.evaluation.ModelsEvaluator; -import com.yahoo.searchdefinition.derived.RankProfileList; -import com.yahoo.vespa.config.search.RankProfilesConfig; -import com.yahoo.vespa.config.search.core.RankingConstantsConfig; - -import java.util.List; -import java.util.Objects; - -/** - * Configuration of components for stateless model evaluation - * - * @author bratseth - */ -public class ContainerModelEvaluation implements RankProfilesConfig.Producer, RankingConstantsConfig.Producer { - - /** Global rank profiles, aka models */ - private final RankProfileList rankProfileList; - - public ContainerModelEvaluation(ContainerCluster cluster, RankProfileList rankProfileList) { - this.rankProfileList = Objects.requireNonNull(rankProfileList, "rankProfileList cannot be null"); - cluster.addSimpleComponent(ModelsEvaluator.class.getName(), null, "model-evaluation"); - } - - public void prepare(List<Container> containers) { - rankProfileList.sendConstantsTo(containers); - } - - @Override - public void getConfig(RankProfilesConfig.Builder builder) { - rankProfileList.getConfig(builder); - } - - @Override - public void getConfig(RankingConstantsConfig.Builder builder) { - rankProfileList.getConfig(builder); - } - -} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java index 9a984ca1917..73430d8e453 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChain.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.model.container.component.chain.Chain; * Represents a processing chain in the config model * * @author bratseth + * @since 5.1.6 */ public class ProcessingChain extends Chain<Processor> { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java index 32f0f373a92..644316ff652 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java @@ -12,14 +12,14 @@ import java.util.List; * Root config producer for processing * * @author bratseth + * @since 5.1.6 */ public class ProcessingChains extends Chains<ProcessingChain> { - - public static final String[] defaultBindings = new String[] {"http://*/processing/*", "https://*/processing/*"}; + public static final String[] defaultBindings = new String[] + {"http://*/processing/*", "https://*/processing/*"}; public ProcessingChains(AbstractConfigProducer parent, String subId) { super(parent, subId); } - } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java index 3ad6484aaec..e4f46be914b 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/Processor.java @@ -9,6 +9,7 @@ import com.yahoo.vespa.model.container.component.chain.ChainedComponent; * Representation of a Processor in the configuration model * * @author bratseth + * @since 5.1.6 */ public class Processor extends ChainedComponent<ChainedComponentModel> { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java index 36feba34680..c711f268534 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/ContainerSearch.java @@ -35,10 +35,11 @@ public class ContainerSearch extends ContainerSubsystem<SearchChains> QrStartConfig.Producer, QueryProfilesConfig.Producer, SemanticRulesConfig.Producer, - PageTemplatesConfig.Producer { + PageTemplatesConfig.Producer +{ private final List<AbstractSearchCluster> systems = new LinkedList<>(); - private final Options options; + private Options options = null; // For legacy qrs clusters only. private BinaryScaledAmount totalCacheSize = new BinaryScaledAmount(); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 2d3f3036ccc..cb4cf92a223 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -45,7 +45,6 @@ import com.yahoo.vespa.model.clients.ContainerDocumentApi; import com.yahoo.vespa.model.container.Container; import com.yahoo.vespa.model.container.ContainerCluster; import com.yahoo.vespa.model.container.ContainerModel; -import com.yahoo.vespa.model.container.ContainerModelEvaluation; import com.yahoo.vespa.model.container.IdentityProvider; import com.yahoo.vespa.model.container.SecretStore; import com.yahoo.vespa.model.container.component.Component; @@ -149,7 +148,11 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { return new VespaDomBuilder.DomConfigProducerBuilder<ContainerCluster>() { @Override protected ContainerCluster doBuild(AbstractConfigProducer ancestor, Element producerSpec) { - return new ContainerCluster(ancestor, modelContext.getProducerId(), modelContext.getProducerId()); + return new ContainerCluster(ancestor, + modelContext.getProducerId(), + modelContext.getProducerId(), + modelContext.vespaModel() != null ? modelContext.vespaModel().rankProfileList() + : RankProfileList.empty); } }.build(modelContext.getParentProducer(), spec); } @@ -163,7 +166,6 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { addServlets(spec, cluster); addProcessing(spec, cluster); addSearch(spec, cluster, context.getDeployState().getQueryProfiles(), context.getDeployState().getSemanticRules()); - addModelEvaluation(spec, cluster, context); addDocproc(spec, cluster); addDocumentApi(spec, cluster); // NOTE: Must be done after addSearch @@ -353,56 +355,50 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { } private void addServlets(Element spec, ContainerCluster cluster) { - for (Element servletElem : XML.getChildren(spec, "servlet")) - cluster.addServlet(new ServletBuilder().build(cluster, servletElem)); + for (Element servletElem : XML.getChildren(spec, "servlet")) { + cluster.addServlet( + new ServletBuilder().build(cluster, servletElem)); + } } private void addDocumentApi(Element spec, ContainerCluster cluster) { ContainerDocumentApi containerDocumentApi = buildDocumentApi(cluster, spec); - if (containerDocumentApi == null) return; - - cluster.setDocumentApi(containerDocumentApi); + if (containerDocumentApi != null) { + cluster.setDocumentApi(containerDocumentApi); + } } private void addDocproc(Element spec, ContainerCluster cluster) { ContainerDocproc containerDocproc = buildDocproc(cluster, spec); - if (containerDocproc == null) return; - cluster.setDocproc(containerDocproc); + if (containerDocproc != null) { + cluster.setDocproc(containerDocproc); - ContainerDocproc.Options docprocOptions = containerDocproc.options; - cluster.setMbusParams(new ContainerCluster.MbusParams( - docprocOptions.maxConcurrentFactor, docprocOptions.documentExpansionFactor, docprocOptions.containerCoreMemory)); + ContainerDocproc.Options docprocOptions = containerDocproc.options; + cluster.setMbusParams(new ContainerCluster.MbusParams( + docprocOptions.maxConcurrentFactor, docprocOptions.documentExpansionFactor, docprocOptions.containerCoreMemory)); + } } private void addSearch(Element spec, ContainerCluster cluster, QueryProfiles queryProfiles, SemanticRules semanticRules) { Element searchElement = XML.getChild(spec, "search"); - if (searchElement == null) return; - - addIncludes(searchElement); - cluster.setSearch(buildSearch(cluster, searchElement, queryProfiles, semanticRules)); + if (searchElement != null) { + addIncludes(searchElement); + cluster.setSearch(buildSearch(cluster, searchElement, queryProfiles, semanticRules)); - addSearchHandler(cluster, searchElement); - addGUIHandler(cluster); - validateAndAddConfiguredComponents(cluster, searchElement, "renderer", ContainerModelBuilder::validateRendererElement); - } - - private void addModelEvaluation(Element spec, ContainerCluster cluster, ConfigModelContext context) { - Element modelEvaluationElement = XML.getChild(spec, "model-evaluation"); - if (modelEvaluationElement == null) return; - - RankProfileList profiles = - context.vespaModel() != null ? context.vespaModel().rankProfileList() : RankProfileList.empty; - cluster.setModelEvaluation(new ContainerModelEvaluation(cluster, profiles)); + addSearchHandler(cluster, searchElement); + addGUIHandler(cluster); + validateAndAddConfiguredComponents(cluster, searchElement, "renderer", ContainerModelBuilder::validateRendererElement); + } } private void addProcessing(Element spec, ContainerCluster cluster) { Element processingElement = XML.getChild(spec, "processing"); - if (processingElement == null) return; - - addIncludes(processingElement); - cluster.setProcessingChains(new DomProcessingBuilder(null).build(cluster, processingElement), - serverBindings(processingElement, ProcessingChains.defaultBindings)); - validateAndAddConfiguredComponents(cluster, processingElement, "renderer", ContainerModelBuilder::validateRendererElement); + if (processingElement != null) { + addIncludes(processingElement); + cluster.setProcessingChains(new DomProcessingBuilder(null).build(cluster, processingElement), + serverBindings(processingElement, ProcessingChains.defaultBindings)); + validateAndAddConfiguredComponents(cluster, processingElement, "renderer", ContainerModelBuilder::validateRendererElement); + } } private ContainerSearch buildSearch(ContainerCluster containerCluster, Element producerSpec, diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java index ec68243ec9d..d3709e88f29 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/Content.java @@ -299,7 +299,7 @@ public class Content extends ConfigModel { AbstractConfigProducer parent = root.getChildren().get(ContainerModel.DOCPROC_RESERVED_NAME); if (parent == null) parent = new SimpleConfigProducer(root, ContainerModel.DOCPROC_RESERVED_NAME); - ContainerCluster indexingCluster = new ContainerCluster(parent, "cluster." + indexerName, indexerName); + ContainerCluster indexingCluster = new ContainerCluster(parent, "cluster." + indexerName, indexerName, RankProfileList.empty); ContainerModel indexingClusterModel = new ContainerModel(modelContext.withParent(parent).withId(indexingCluster.getSubId())); indexingClusterModel.setCluster(indexingCluster); modelContext.getConfigModelRepoAdder().add(indexingClusterModel); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java index f15ba547894..cce367ed611 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java @@ -443,7 +443,8 @@ public class ContentCluster extends AbstractConfigProducer implements ContainerCluster clusterControllers = new ContainerCluster(parent, name, name, - new ClusterControllerClusterVerifier()); + new ClusterControllerClusterVerifier(), + RankProfileList.empty); List<Container> containers = new ArrayList<>(); // Add a cluster controller on each config server (there is always at least one). if (clusterControllers.getContainers().isEmpty()) { diff --git a/config-model/src/main/resources/schema/containercluster.rnc b/config-model/src/main/resources/schema/containercluster.rnc index 52d71574f82..a8c763e43b7 100644 --- a/config-model/src/main/resources/schema/containercluster.rnc +++ b/config-model/src/main/resources/schema/containercluster.rnc @@ -16,7 +16,6 @@ ContainerServices = SearchInContainer? & DocprocInContainer? & ProcessingInContainer? & - ModelEvaluation? & DocumentApi? & Components* & Component* & @@ -86,10 +85,6 @@ SecretStore = element secret-store { } + } -ModelEvaluation = element model-evaluation { - empty -} - # REST-API: RestApi = element rest-api { diff --git a/config-model/src/test/cfg/application/ml_serving/services.xml b/config-model/src/test/cfg/application/ml_serving/services.xml index 41f44e04c99..42528336bc5 100644 --- a/config-model/src/test/cfg/application/ml_serving/services.xml +++ b/config-model/src/test/cfg/application/ml_serving/services.xml @@ -3,7 +3,6 @@ <services version="1.0"> <container version="1.0"> - <model-evaluation/> <nodes> <node hostalias="node1" /> </nodes> diff --git a/config-model/src/test/cfg/application/ml_serving_name_collision/services.xml b/config-model/src/test/cfg/application/ml_serving_name_collision/services.xml index 41f44e04c99..42528336bc5 100644 --- a/config-model/src/test/cfg/application/ml_serving_name_collision/services.xml +++ b/config-model/src/test/cfg/application/ml_serving_name_collision/services.xml @@ -3,7 +3,6 @@ <services version="1.0"> <container version="1.0"> - <model-evaluation/> <nodes> <node hostalias="node1" /> </nodes> diff --git a/config-model/src/test/cfg/application/ml_serving_not_activated/models/xgboost.2.2.json b/config-model/src/test/cfg/application/ml_serving_not_activated/models/xgboost.2.2.json deleted file mode 100644 index f8949b47e52..00000000000 --- a/config-model/src/test/cfg/application/ml_serving_not_activated/models/xgboost.2.2.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { "nodeid": 0, "depth": 0, "split": "f29", "split_condition": -0.1234567, "yes": 1, "no": 2, "missing": 1, "children": [ - { "nodeid": 1, "depth": 1, "split": "f56", "split_condition": -0.242398, "yes": 3, "no": 4, "missing": 3, "children": [ - { "nodeid": 3, "leaf": 1.71218 }, - { "nodeid": 4, "leaf": -1.70044 } - ]}, - { "nodeid": 2, "depth": 1, "split": "f109", "split_condition": 0.8723473, "yes": 5, "no": 6, "missing": 5, "children": [ - { "nodeid": 5, "leaf": -1.94071 }, - { "nodeid": 6, "leaf": 1.85965 } - ]} - ]}, - { "nodeid": 0, "depth": 0, "split": "f60", "split_condition": -0.482947, "yes": 1, "no": 2, "missing": 1, "children": [ - { "nodeid": 1, "depth": 1, "split": "f29", "split_condition": -4.2387498, "yes": 3, "no": 4, "missing": 3, "children": [ - { "nodeid": 3, "leaf": 0.784718 }, - { "nodeid": 4, "leaf": -0.96853 } - ]}, - { "nodeid": 2, "leaf": -6.23624 } - ]} -]
\ No newline at end of file diff --git a/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml b/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml deleted file mode 100644 index 9d8b7a81201..00000000000 --- a/config-model/src/test/cfg/application/ml_serving_not_activated/services.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --> -<services version="1.0"> - - <container version="1.0"> - <!-- No <model-evaluation/> tag --> - <nodes> - <node hostalias="node1" /> - </nodes> - - </container> - -</services> diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java index 756a0c53485..850fd91e151 100755 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java @@ -81,7 +81,7 @@ public class ContainerClusterTest { .zone(new Zone(SystemName.cd, Environment.test, RegionName.from("some-region"))) .build(); MockRoot root = new MockRoot("foo", state); - ContainerCluster cluster = new ContainerCluster(root, "container0", "container1"); + ContainerCluster cluster = new ContainerCluster(root, "container0", "container1", RankProfileList.empty); ConfigserverConfig.Builder builder = new ConfigserverConfig.Builder(); cluster.getConfig(builder); ConfigserverConfig config = new ConfigserverConfig(builder); @@ -112,8 +112,8 @@ public class ContainerClusterTest { MockRoot root = new MockRoot("foo", state); ContainerCluster cluster = extraComponents.isPresent() - ? new ContainerCluster(root, "container0", "container1", extraComponents.get()) - : new ContainerCluster(root, "container0", "container1"); + ? new ContainerCluster(root, "container0", "container1", extraComponents.get(), RankProfileList.empty) + : new ContainerCluster(root, "container0", "container1", RankProfileList.empty); if (isCombinedCluster) cluster.setHostClusterId("test-content-cluster"); cluster.setMemoryPercentage(memoryPercentage); @@ -258,7 +258,7 @@ public class ContainerClusterTest { public void requireThatRoutingProviderIsDisabledForNonHosted() { DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(false).build()).build(); MockRoot root = new MockRoot("foo", state); - ContainerCluster cluster = new ContainerCluster(root, "container0", "container1"); + ContainerCluster cluster = new ContainerCluster(root, "container0", "container1", RankProfileList.empty); RoutingProviderConfig.Builder builder = new RoutingProviderConfig.Builder(); cluster.getConfig(builder); RoutingProviderConfig config = new RoutingProviderConfig(builder); @@ -282,7 +282,7 @@ public class ContainerClusterTest { } private static ContainerCluster newContainerCluster() { - ContainerCluster cluster = new ContainerCluster(null, "subId", "name"); + ContainerCluster cluster = new ContainerCluster(null, "subId", "name", RankProfileList.empty); addContainer(cluster, "c1", "host-c1"); addContainer(cluster, "c2", "host-c2"); return cluster; diff --git a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java index b7b3fc99e20..35e6642d7cb 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/ml/ModelEvaluationTest.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.model.ml; import ai.vespa.models.evaluation.Model; import ai.vespa.models.evaluation.ModelsEvaluator; import ai.vespa.models.evaluation.RankProfilesConfigImporter; -import com.yahoo.component.ComponentId; import com.yahoo.config.FileReference; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.filedistribution.fileacquirer.FileAcquirer; @@ -17,6 +16,7 @@ import com.yahoo.vespa.config.search.RankProfilesConfig; import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.container.ContainerCluster; +import org.junit.After; import org.junit.Test; import java.io.IOException; @@ -25,7 +25,6 @@ import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; /** @@ -33,15 +32,21 @@ import static org.junit.Assert.assertTrue; */ public class ModelEvaluationTest { + private static final Path appDir = Path.fromString("src/test/cfg/application/ml_serving"); + + @After + public void removeGeneratedModelFiles() { + IOUtils.recursiveDeleteDir(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile()); + } + @Test - public void testMl_serving() throws IOException { - Path appDir = Path.fromString("src/test/cfg/application/ml_serving"); + public void testMl_ServingApplication() throws IOException { + ImportedModelTester tester = new ImportedModelTester("ml_serving", appDir); + assertHasMlModels(tester.createVespaModel()); + + // At this point the expression is stored - copy application to another location which do not have a models dir Path storedAppDir = appDir.append("copy"); try { - ImportedModelTester tester = new ImportedModelTester("ml_serving", appDir); - assertHasMlModels(tester.createVespaModel()); - - // At this point the expression is stored - copy application to another location which do not have a models dir storedAppDir.toFile().mkdirs(); IOUtils.copy(appDir.append("services.xml").toString(), storedAppDir.append("services.xml").toString()); IOUtils.copyDirectory(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile(), @@ -50,35 +55,12 @@ public class ModelEvaluationTest { assertHasMlModels(storedTester.createVespaModel()); } finally { - IOUtils.recursiveDeleteDir(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile()); IOUtils.recursiveDeleteDir(storedAppDir.toFile()); } } - /** Tests that we do not load models (which will waste memory) when not requested */ - @Test - public void testMl_serving_not_activated() throws IOException { - Path appDir = Path.fromString("src/test/cfg/application/ml_serving_not_activated"); - try { - ImportedModelTester tester = new ImportedModelTester("ml_serving", appDir); - VespaModel model = tester.createVespaModel(); - ContainerCluster cluster = model.getContainerClusters().get("container"); - assertNull(cluster.getComponentsMap().get(new ComponentId(ModelsEvaluator.class.getName()))); - - RankProfilesConfig.Builder b = new RankProfilesConfig.Builder(); - cluster.getConfig(b); - RankProfilesConfig config = new RankProfilesConfig(b); - - assertEquals(0, config.rankprofile().size()); - } - finally { - IOUtils.recursiveDeleteDir(appDir.append(ApplicationPackage.MODELS_GENERATED_DIR).toFile()); - } - } - private void assertHasMlModels(VespaModel model) { ContainerCluster cluster = model.getContainerClusters().get("container"); - assertNotNull(cluster.getComponentsMap().get(new ComponentId(ModelsEvaluator.class.getName()))); RankProfilesConfig.Builder b = new RankProfilesConfig.Builder(); cluster.getConfig(b); |