aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2023-07-19 12:58:43 +0200
committerGitHub <noreply@github.com>2023-07-19 12:58:43 +0200
commitf08bf20647a657316e5ed391016603c8d667165d (patch)
treea019ead02b3adb58e61fc05290fa63d09cde4e0c
parentf92dcf5dbf2ddd3179b70c1c85d29c12b1a199ad (diff)
parent7a468c9c61bbad485bd6b38d9f18510382409fb1 (diff)
Merge pull request #27820 from vespa-engine/mpolden/add-warning
Log GPU configuration
-rw-r--r--model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java18
1 files changed, 14 insertions, 4 deletions
diff --git a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
index 02fa7b68dc4..627f450502f 100644
--- a/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
+++ b/model-integration/src/main/java/ai/vespa/modelintegration/evaluator/OnnxEvaluator.java
@@ -15,6 +15,8 @@ import com.yahoo.tensor.TensorType;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import static ai.vespa.modelintegration.evaluator.OnnxRuntime.isCudaError;
@@ -26,6 +28,8 @@ import static ai.vespa.modelintegration.evaluator.OnnxRuntime.isCudaError;
*/
public class OnnxEvaluator implements AutoCloseable {
+ private static final Logger LOG = Logger.getLogger(OnnxEvaluator.class.getName());
+
private final ReferencedOrtSession session;
OnnxEvaluator(String modelPath, OnnxEvaluatorOptions options, OnnxRuntime runtime) {
@@ -130,19 +134,25 @@ public class OnnxEvaluator implements AutoCloseable {
}
}
- private static ReferencedOrtSession createSession(
- ModelPathOrData model, OnnxRuntime runtime, OnnxEvaluatorOptions options, boolean tryCuda) {
+ private static ReferencedOrtSession createSession(ModelPathOrData model, OnnxRuntime runtime,
+ OnnxEvaluatorOptions options, boolean tryCuda) {
if (options == null) {
options = new OnnxEvaluatorOptions();
}
try {
- return runtime.acquireSession(model, options, tryCuda && options.requestingGpu());
+ boolean loadCuda = tryCuda && options.requestingGpu();
+ ReferencedOrtSession session = runtime.acquireSession(model, options, loadCuda);
+ if (loadCuda) {
+ LOG.log(Level.INFO, "Created session with CUDA using GPU device " + options.gpuDeviceNumber());
+ }
+ return session;
} catch (OrtException e) {
if (e.getCode() == OrtException.OrtErrorCode.ORT_NO_SUCHFILE) {
throw new IllegalArgumentException("No such file: " + model.path().get());
}
if (tryCuda && isCudaError(e) && !options.gpuDeviceRequired()) {
- // Failed in CUDA native code, but GPU device is optional, so we can proceed without it
+ LOG.log(Level.WARNING, "Failed to create session with CUDA using GPU device " +
+ options.gpuDeviceNumber() + ". Falling back to CPU", e);
return createSession(model, runtime, options, false);
}
if (isCudaError(e)) {