From 96cba97a152b9c67da0a5860e920ab5a39887a94 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Fri, 8 Dec 2023 12:07:59 +0100 Subject: Add validator that checks if restart is needed due to Onnx model changes Validates changes and creates a restart action if needed and makes sure configs for cluster are marked as restartOnDeploy --- config-model-api/abi-spec.json | 33 ++++++++++++++++++++-- .../com/yahoo/config/model/api/ModelContext.java | 1 + .../com/yahoo/config/model/api/OnnxModelCost.java | 11 +++++++- 3 files changed, 41 insertions(+), 4 deletions(-) (limited to 'config-model-api') diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json index 8f5d0d37c21..ba483fb0421 100644 --- a/config-model-api/abi-spec.json +++ b/config-model-api/abi-spec.json @@ -1289,7 +1289,8 @@ "public boolean usePerDocumentThrottledDeleteBucket()", "public boolean alwaysMarkPhraseExpensive()", "public boolean createPostinglistWhenNonStrict()", - "public boolean useEstimateForFetchPostings()" + "public boolean useEstimateForFetchPostings()", + "public boolean restartOnDeployWhenOnnxModelChanges()" ], "fields" : [ ] }, @@ -1457,7 +1458,10 @@ "public abstract void registerModel(com.yahoo.config.application.api.ApplicationFile)", "public abstract void registerModel(com.yahoo.config.application.api.ApplicationFile, com.yahoo.config.model.api.OnnxModelOptions)", "public abstract void registerModel(java.net.URI)", - "public abstract void registerModel(java.net.URI, com.yahoo.config.model.api.OnnxModelOptions)" + "public abstract void registerModel(java.net.URI, com.yahoo.config.model.api.OnnxModelOptions)", + "public abstract java.util.Map models()", + "public abstract void setRestartOnDeploy()", + "public abstract boolean restartOnDeploy()" ], "fields" : [ ] }, @@ -1477,7 +1481,30 @@ "public void registerModel(com.yahoo.config.application.api.ApplicationFile)", "public void registerModel(com.yahoo.config.application.api.ApplicationFile, com.yahoo.config.model.api.OnnxModelOptions)", "public void registerModel(java.net.URI)", - "public void registerModel(java.net.URI, com.yahoo.config.model.api.OnnxModelOptions)" + "public void registerModel(java.net.URI, com.yahoo.config.model.api.OnnxModelOptions)", + "public java.util.Map models()", + "public void setRestartOnDeploy()", + "public boolean restartOnDeploy()" + ], + "fields" : [ ] + }, + "com.yahoo.config.model.api.OnnxModelCost$ModelInfo" : { + "superClass" : "java.lang.Record", + "interfaces" : [ ], + "attributes" : [ + "public", + "final", + "record" + ], + "methods" : [ + "public void (java.lang.String, long, long, java.util.Optional)", + "public final java.lang.String toString()", + "public final int hashCode()", + "public final boolean equals(java.lang.Object)", + "public java.lang.String modelId()", + "public long estimatedCost()", + "public long hash()", + "public java.util.Optional onnxModelOptions()" ], "fields" : [ ] }, diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java index f34f63a0cfc..e5cc13719c1 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java @@ -118,6 +118,7 @@ public interface ModelContext { @ModelFeatureFlag(owners = {"baldersheim"}) default boolean alwaysMarkPhraseExpensive() { return false; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean createPostinglistWhenNonStrict() { return true; } @ModelFeatureFlag(owners = {"baldersheim"}) default boolean useEstimateForFetchPostings() { return false; } + @ModelFeatureFlag(owners = {"hmusum"}) default boolean restartOnDeployWhenOnnxModelChanges() { return false; } } /** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */ diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/OnnxModelCost.java b/config-model-api/src/main/java/com/yahoo/config/model/api/OnnxModelCost.java index b98667457e4..c13ce4def09 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/OnnxModelCost.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/OnnxModelCost.java @@ -6,11 +6,12 @@ import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.provision.ApplicationId; import java.net.URI; +import java.util.Map; +import java.util.Optional; /** * @author bjorncs */ -// TODO: Rename public interface OnnxModelCost { Calculator newCalculator(ApplicationPackage appPkg, ApplicationId applicationId); @@ -21,8 +22,13 @@ public interface OnnxModelCost { void registerModel(ApplicationFile path, OnnxModelOptions onnxModelOptions); void registerModel(URI uri); void registerModel(URI uri, OnnxModelOptions onnxModelOptions); + Map models(); + void setRestartOnDeploy(); + boolean restartOnDeploy(); } + record ModelInfo(String modelId, long estimatedCost, long hash, Optional onnxModelOptions) {} + static OnnxModelCost disabled() { return new DisabledOnnxModelCost(); } class DisabledOnnxModelCost implements OnnxModelCost, Calculator { @@ -32,6 +38,9 @@ public interface OnnxModelCost { @Override public void registerModel(ApplicationFile path, OnnxModelOptions onnxModelOptions) {} @Override public void registerModel(URI uri) {} @Override public void registerModel(URI uri, OnnxModelOptions onnxModelOptions) {} + @Override public Map models() { return Map.of(); } + @Override public void setRestartOnDeploy() {} + @Override public boolean restartOnDeploy() { return false; } } } -- cgit v1.2.3