From ebe7d16ce50a0a087dceb85c1afb3499b5ea68da Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 22 Sep 2020 12:45:48 -0700 Subject: [PATCH 1/5] Added variables to tests to control Gpu settings --- test/Microsoft.ML.Functional.Tests/ONNX.cs | 11 ++++-- .../OnnxTransformTests.cs | 37 +++++++++++-------- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 19 ++++++---- 3 files changed, 41 insertions(+), 26 deletions(-) diff --git a/test/Microsoft.ML.Functional.Tests/ONNX.cs b/test/Microsoft.ML.Functional.Tests/ONNX.cs index 32ce4cb036..106acd7949 100644 --- a/test/Microsoft.ML.Functional.Tests/ONNX.cs +++ b/test/Microsoft.ML.Functional.Tests/ONNX.cs @@ -16,6 +16,11 @@ namespace Microsoft.ML.Functional.Tests { public class ONNX : FunctionalTestBaseClass { + // These two members are meant to be changed + // Only when manually testing the Onnx GPU nuggets + private const bool _fallbackToCpu = true; + private int? _gpuDeviceId = null; + public ONNX(ITestOutputHelper output) : base(output) { } @@ -52,7 +57,7 @@ public void SaveOnnxModelLoadAndScoreFastTree() // Therefore the VectorScoreColumn class (which contains a float [] field called Score) is used for the return // type on the Prediction engine. // See #2980 and #2981 for more information. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxModel = onnxEstimator.Fit(data); // Create prediction engine and test predictions. @@ -98,7 +103,7 @@ public void SaveOnnxModelLoadAndScoreKMeans() mlContext.Model.ConvertToOnnx(model, data, file); // Load the model as a transform. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxModel = onnxEstimator.Fit(data); // TODO #2980: ONNX outputs don't match the outputs of the model, so we must hand-correct this for now. @@ -150,7 +155,7 @@ public void SaveOnnxModelLoadAndScoreSDCA() mlContext.Model.ConvertToOnnx(model, data, file); // Load the model as a transform. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(modelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxModel = onnxEstimator.Fit(data); // Create prediction engine and test predictions. diff --git a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs index df681a0ffb..a9f61e172a 100644 --- a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs +++ b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs @@ -23,6 +23,11 @@ namespace Microsoft.ML.Tests { public class OnnxTransformTests : TestDataPipeBase { + // These two members are meant to be changed + // Only when manually testing the Onnx GPU nuggets + private const bool _fallbackToCpu = true; + private int? _gpuDeviceId = null; + private const int InputSize = 150528; private class TestData @@ -134,7 +139,7 @@ public void TestSimpleCase() var xyData = new List { new TestDataXY() { A = new float[InputSize] } }; var stringData = new List { new TestDataDifferntType() { data_0 = new string[InputSize] } }; var sizeData = new List { new TestDataSize() { data_0 = new float[2] } }; - var pipe = ML.Transforms.ApplyOnnxModel(new[] { "softmaxout_1" }, new[] { "data_0" }, modelFile); + var pipe = ML.Transforms.ApplyOnnxModel(new[] { "softmaxout_1" }, new[] { "data_0" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var invalidDataWrongNames = ML.Data.LoadFromEnumerable(xyData); var invalidDataWrongTypes = ML.Data.LoadFromEnumerable(stringData); @@ -231,7 +236,7 @@ public void OnnxWorkout() var pipe = ML.Transforms.LoadImages("data_0", imageFolder, "imagePath") .Append(ML.Transforms.ResizeImages("data_0", imageHeight, imageWidth)) .Append(ML.Transforms.ExtractPixels("data_0", interleavePixelColors: true)) - .Append(ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile)); + .Append(ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu)); TestEstimatorCore(pipe, data); @@ -292,7 +297,7 @@ public void OnnxModelScenario() } }); - var pipeline = ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(dataView); var onnx = onnxTransformer.Transform(dataView); var scoreCol = onnx.Schema["softmaxout_1"]; @@ -325,7 +330,7 @@ public void OnnxModelMultiInput() inb = new float[] {1,2,3,4,5} } }); - var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outa", "outb" }, new[] { "ina", "inb" }, modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outa", "outb" }, new[] { "ina", "inb" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(dataView); var onnx = onnxTransformer.Transform(dataView); @@ -365,7 +370,7 @@ public void OnnxModelOutputDifferentOrder() } }); // The model returns the output columns in the order outa, outb. We are doing the opposite here, making sure the name mapping is correct. - var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outb", "outa" }, new[] { "ina", "inb" }, modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outb", "outa" }, new[] { "ina", "inb" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(dataView); var onnx = onnxTransformer.Transform(dataView); @@ -391,7 +396,7 @@ public void OnnxModelOutputDifferentOrder() (onnxTransformer as IDisposable)?.Dispose(); // The model returns the output columns in the order outa, outb. We are doing only a subset, outb, to make sure the mapping works. - pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outb" }, new[] { "ina", "inb" }, modelFile); + pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outb" }, new[] { "ina", "inb" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); onnxTransformer = pipeline.Fit(dataView); onnx = onnxTransformer.Transform(dataView); @@ -425,7 +430,7 @@ public void TestUnknownDimensions() new TestDataUnknownDimensions(){input = new float[] {-1.1f, -1.3f, 1.2f }}, }; var idv = mlContext.Data.LoadFromEnumerable(data); - var pipeline = ML.Transforms.ApplyOnnxModel(modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(idv); var transformedValues = onnxTransformer.Transform(idv); var predictions = mlContext.Data.CreateEnumerable(transformedValues, reuseRowObject: false).ToArray(); @@ -451,7 +456,7 @@ public void TestOnnxNoneDimValue() new TestDataNoneDimension(){features = new float[] { 6.3f, 3.3f, 6.0f, 2.5f }}, }; var idv = mlContext.Data.LoadFromEnumerable(data); - var pipeline = ML.Transforms.ApplyOnnxModel(modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(idv); var transformedValues = onnxTransformer.Transform(idv); var predictions = mlContext.Data.CreateEnumerable(transformedValues, reuseRowObject: false).ToArray(); @@ -526,7 +531,7 @@ public void OnnxModelInMemoryImage() // "softmaxout_1" are model input and output names stored in the used ONNX model file. Users may need to inspect their own models to // get the right input and output column names. var pipeline = ML.Transforms.ExtractPixels("data_0", "Image") // Map column "Image" to column "data_0" - .Append(ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile)); // Map column "data_0" to column "softmaxout_1" + .Append(ML.Transforms.ApplyOnnxModel("softmaxout_1", "data_0", modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu)); // Map column "data_0" to column "softmaxout_1" var model = pipeline.Fit(dataView); var onnx = model.Transform(dataView); @@ -576,7 +581,7 @@ public void TestOnnxZipMapWithInt64Keys() }; var dataView = ML.Data.LoadFromEnumerable(dataPoints); - var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "output" }, new[] { "input" }, modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "output" }, new[] { "input" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(dataView); var transformedDataView = onnxTransformer.Transform(dataView); @@ -629,7 +634,7 @@ public void TestOnnxZipMapWithStringKeys() }; var dataView = ML.Data.LoadFromEnumerable(dataPoints); - var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "output" }, new[] { "input" }, modelFile); + var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "output" }, new[] { "input" }, modelFile, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = pipeline.Fit(dataView); var transformedDataView = onnxTransformer.Transform(dataView); @@ -794,19 +799,19 @@ public void TestOnnxTransformWithCustomShapes() // Test 1. pipeline[0] = ML.Transforms.ApplyOnnxModel( new[] { nameof(PredictionWithCustomShape.argmax) }, new[] { nameof(InputWithCustomShape.input) }, - modelFile, shapeDictionary); + modelFile, shapeDictionary, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); onnxTransformer[0] = pipeline[0].Fit(dataView); transformedDataViews[0] = onnxTransformer[0].Transform(dataView); // Test 2. pipeline[1] = ML.Transforms.ApplyOnnxModel( nameof(PredictionWithCustomShape.argmax), nameof(InputWithCustomShape.input), - modelFile, shapeDictionary); + modelFile, shapeDictionary, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); onnxTransformer[1] = pipeline[1].Fit(dataView); transformedDataViews[1] = onnxTransformer[1].Transform(dataView); // Test 3. - pipeline[2] = ML.Transforms.ApplyOnnxModel(modelFile, shapeDictionary); + pipeline[2] = ML.Transforms.ApplyOnnxModel(modelFile, shapeDictionary, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); onnxTransformer[2] = pipeline[2].Fit(dataView); transformedDataViews[2] = onnxTransformer[2].Transform(dataView); @@ -856,7 +861,7 @@ private void TryModelWithCustomShapesHelper(IDictionary shapeDict // Define a ONNX transform, trains it, and apply it to the input data. var pipeline = ML.Transforms.ApplyOnnxModel(new[] { "outa", "outb" }, new[] { "ina", "inb" }, - modelFile, shapeDictionary); + modelFile, shapeDictionary, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); } /// @@ -956,7 +961,7 @@ public void TestOnnxTransformSaveAndLoadWithCustomShapes() var dataView = ML.Data.LoadFromEnumerable(dataPoints); var pipeline = ML.Transforms.ApplyOnnxModel(nameof(PredictionWithCustomShape.argmax), - nameof(InputWithCustomShape.input), modelFile, shapeDictionary); + nameof(InputWithCustomShape.input), modelFile, shapeDictionary, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var model = pipeline.Fit(dataView); diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 1c4ef5608a..c8adf85f00 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -33,6 +33,11 @@ namespace Microsoft.ML.Tests { public class OnnxConversionTest : BaseTestBaseline { + // These two members are meant to be changed + // Only when manually testing the Onnx GPU nuggets + private const bool _fallbackToCpu = true; + private int? _gpuDeviceId = null; + private class AdultData { [LoadColumn(0, 10), ColumnName("FeatureVector")] @@ -811,7 +816,7 @@ public void RemoveVariablesInPipelineTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareResults("Score", "Score", transformedData, onnxResult, isRightColumnOnnxScalar: true); @@ -973,7 +978,7 @@ public void PcaOnnxConversionTest(int customOpSetVersion) if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("pca", "pca", transformedData, onnxResult); @@ -1338,7 +1343,7 @@ public void NgramOnnxConversionTest( if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); var columnName = i == pipelines.Length - 1 ? "Tokens" : "NGrams"; @@ -1455,7 +1460,7 @@ public void OptionalColumnOnnxTest(DataKind dataKind) { string[] inputNames = onnxModel.Graph.Input.Select(valueInfoProto => valueInfoProto.Name).ToArray(); string[] outputNames = onnxModel.Graph.Output.Select(valueInfoProto => valueInfoProto.Name).ToArray(); - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Label", "Label", outputData, onnxResult, isRightColumnOnnxScalar: true); @@ -1589,7 +1594,7 @@ public void UseKeyDataViewTypeAsUInt32InOnnxInput() if (IsOnnxRuntimeSupported()) { // Step 5: Apply Onnx Model - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(reloadedData); var onnxResult = onnxTransformer.Transform(reloadedData); @@ -1602,7 +1607,7 @@ public void UseKeyDataViewTypeAsUInt32InOnnxInput() string onnxModelPath2 = GetOutputPath("onnxmodel2-kdvt-as-uint32.onnx"); using (FileStream stream = new FileStream(onnxModelPath2, FileMode.Create)) mlContext.Model.ConvertToOnnx(model, mappedData, stream); - var onnxEstimator2 = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath2); + var onnxEstimator2 = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath2, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer2 = onnxEstimator2.Fit(originalData); var onnxResult2 = onnxTransformer2.Transform(originalData); @@ -2034,7 +2039,7 @@ private void TestPipeline(EstimatorChain pip if (IsOnnxRuntimeSupported() && columnsToCompare != null) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = ML.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = ML.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuDeviceId, fallbackToCpu: _fallbackToCpu); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); From 5cb7fa94cd223c1b9b9740ffe2e9384b0fcc4b9d Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 22 Sep 2020 12:46:22 -0700 Subject: [PATCH 2/5] Added dependency to prerelease --- Directory.Build.props | 1 + build/Dependencies.props | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 5ef129c098..0bfc9fb656 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -25,6 +25,7 @@ https://dotnet.myget.org/F/roslyn-analyzers/api/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/machinelearning-testdata/nuget/v3/index.json; + https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/nuget/v3/index.json; diff --git a/build/Dependencies.props b/build/Dependencies.props index e9aa31db0c..1305ce081b 100644 --- a/build/Dependencies.props +++ b/build/Dependencies.props @@ -16,7 +16,7 @@ 3.10.1 2.2.3 2.1.0 - 1.3.0 + 1.5.0-dev-20200921-0940-5b5bcba9e 0.0.0.9 2.1.3 4.5.0 From a64813d311b34f3919111f73b1205c0878e6947f Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 28 Sep 2020 14:00:38 -0700 Subject: [PATCH 3/5] Updated to 1.5.1 --- build/Dependencies.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dependencies.props b/build/Dependencies.props index 1305ce081b..196d7b9bad 100644 --- a/build/Dependencies.props +++ b/build/Dependencies.props @@ -16,7 +16,7 @@ 3.10.1 2.2.3 2.1.0 - 1.5.0-dev-20200921-0940-5b5bcba9e + 1.5.1 0.0.0.9 2.1.3 4.5.0 From f6e491352bdaa90f58904d8ca2afd13e8fb972ed Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 29 Sep 2020 22:05:24 -0700 Subject: [PATCH 4/5] Remove prerelease feed --- Directory.Build.props | 1 - 1 file changed, 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 0bfc9fb656..5ef129c098 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -25,7 +25,6 @@ https://dotnet.myget.org/F/roslyn-analyzers/api/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json; https://pkgs.dev.azure.com/dnceng/public/_packaging/machinelearning-testdata/nuget/v3/index.json; - https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/nuget/v3/index.json; From 10a760e3e5cc8e68d72d962aaddbc136318ff237 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 29 Sep 2020 23:36:37 -0700 Subject: [PATCH 5/5] Nit on GPU variables --- test/Microsoft.ML.Functional.Tests/ONNX.cs | 2 +- .../OnnxTransformTests.cs | 2 +- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 2 +- .../OnnxSequenceTypeWithAttributesTest.cs | 11 +++++++++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/test/Microsoft.ML.Functional.Tests/ONNX.cs b/test/Microsoft.ML.Functional.Tests/ONNX.cs index 106acd7949..28e5993424 100644 --- a/test/Microsoft.ML.Functional.Tests/ONNX.cs +++ b/test/Microsoft.ML.Functional.Tests/ONNX.cs @@ -19,7 +19,7 @@ public class ONNX : FunctionalTestBaseClass // These two members are meant to be changed // Only when manually testing the Onnx GPU nuggets private const bool _fallbackToCpu = true; - private int? _gpuDeviceId = null; + private static int? _gpuDeviceId = null; public ONNX(ITestOutputHelper output) : base(output) { diff --git a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs index a9f61e172a..2e3f95693b 100644 --- a/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs +++ b/test/Microsoft.ML.OnnxTransformerTest/OnnxTransformTests.cs @@ -26,7 +26,7 @@ public class OnnxTransformTests : TestDataPipeBase // These two members are meant to be changed // Only when manually testing the Onnx GPU nuggets private const bool _fallbackToCpu = true; - private int? _gpuDeviceId = null; + private static int? _gpuDeviceId = null; private const int InputSize = 150528; diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index c8adf85f00..69dbbe57e5 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -36,7 +36,7 @@ public class OnnxConversionTest : BaseTestBaseline // These two members are meant to be changed // Only when manually testing the Onnx GPU nuggets private const bool _fallbackToCpu = true; - private int? _gpuDeviceId = null; + private static int? _gpuDeviceId = null; private class AdultData { diff --git a/test/Microsoft.ML.Tests/OnnxSequenceTypeWithAttributesTest.cs b/test/Microsoft.ML.Tests/OnnxSequenceTypeWithAttributesTest.cs index b7f7e8190f..7ca7395050 100644 --- a/test/Microsoft.ML.Tests/OnnxSequenceTypeWithAttributesTest.cs +++ b/test/Microsoft.ML.Tests/OnnxSequenceTypeWithAttributesTest.cs @@ -19,6 +19,9 @@ namespace Microsoft.ML.Tests { public class OnnxSequenceTypeWithAttributesTest : BaseTestBaseline { + private const bool _fallbackToCpu = true; + private static int? _gpuDeviceId = null; + public class OutputObj { [ColumnName("output")] @@ -42,7 +45,9 @@ public static PredictionEngine LoadModel(string onnxModel var pipeline = ctx.Transforms.ApplyOnnxModel( modelFile: onnxModelFilePath, - outputColumnNames: new[] { "output" }, inputColumnNames: new[] { "input" }); + outputColumnNames: new[] { "output" }, inputColumnNames: new[] { "input" }, + gpuDeviceId: _gpuDeviceId, + fallbackToCpu: _fallbackToCpu); var model = pipeline.Fit(dataView); return ctx.Model.CreatePredictionEngine(model); @@ -79,7 +84,9 @@ public static PredictionEngine LoadModelWithWrongCus var pipeline = ctx.Transforms.ApplyOnnxModel( modelFile: onnxModelFilePath, - outputColumnNames: new[] { "output" }, inputColumnNames: new[] { "input" }); + outputColumnNames: new[] { "output" }, inputColumnNames: new[] { "input" }, + gpuDeviceId: _gpuDeviceId, + fallbackToCpu: _fallbackToCpu); var model = pipeline.Fit(dataView); return ctx.Model.CreatePredictionEngine(model);