From 47ef9051e590e285fb0fef1869d4677540c1dab8 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 3 Mar 2020 15:41:19 -0800 Subject: [PATCH 01/22] Update Onnx version to 1.2 --- build/Dependencies.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/Dependencies.props b/build/Dependencies.props index 46c90c481e..6ca726efe5 100644 --- a/build/Dependencies.props +++ b/build/Dependencies.props @@ -16,7 +16,7 @@ 3.10.1 2.2.3 2.1.0 - 1.1.2 + 1.2 0.0.0.9 2.1.3 4.5.0 From 7f5c219a4914bea148b66f99cbee38a6b9a34700 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 3 Mar 2020 15:42:13 -0800 Subject: [PATCH 02/22] Added onnx 1.2 private feed --- Directory.Build.props | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 62d5272a9b..f09591fdd4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -19,7 +19,7 @@ https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json; https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; https://dotnet.myget.org/F/roslyn-analyzers/api/v3/index.json; - https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json; + \\LOTUS-WIN\nuget\1.2\GPU @@ -42,7 +42,7 @@ $(BaseOutputPath)$(PlatformConfig)\$(MSBuildProjectName)\ $(ObjDir)/packages/ - + $(BinDir)packages_noship/ $(BinDir)packages/ @@ -55,7 +55,7 @@ $(RepoRoot)Tools/ - @@ -87,16 +87,16 @@ $(LatestCommit) - - + 8.0 4.7 true - + true From e09c233b4504302c69d00ed17fbd001c63fb5fae Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 3 Mar 2020 15:43:00 -0800 Subject: [PATCH 03/22] Added dependencies to GPU package only --- .../Microsoft.ML.OnnxTransformer.nupkgproj | 2 +- .../Microsoft.ML.OnnxTransformer.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj b/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj index c924ef4aba..9bb73233af 100644 --- a/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj +++ b/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj @@ -8,7 +8,7 @@ - + diff --git a/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj b/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj index d2f51a9429..13ca564765 100644 --- a/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj +++ b/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj @@ -9,7 +9,7 @@ - + From 68e719f3869acada04213cecc7671e6baef6005f Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 3 Mar 2020 15:43:41 -0800 Subject: [PATCH 04/22] Actually use gpuDeviceId when applying ONNX model --- src/Microsoft.ML.OnnxTransformer/OnnxUtils.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.ML.OnnxTransformer/OnnxUtils.cs b/src/Microsoft.ML.OnnxTransformer/OnnxUtils.cs index a0fe800860..ca9110260c 100644 --- a/src/Microsoft.ML.OnnxTransformer/OnnxUtils.cs +++ b/src/Microsoft.ML.OnnxTransformer/OnnxUtils.cs @@ -179,9 +179,19 @@ public OnnxModel(string modelFile, int? gpuDeviceId = null, bool fallbackToCpu = if (gpuDeviceId != null) { - // The onnxruntime v1.0 currently does not support running on the GPU on all of ML.NET's supported platforms. - // This code path will be re-enabled when there is appropriate support in onnxruntime - throw new NotSupportedException("Running Onnx models on a GPU is temporarily not supported!"); + try + { + _session = new InferenceSession(modelFile, + SessionOptions.MakeSessionOptionWithCudaProvider(gpuDeviceId.Value)); + } + catch(OnnxRuntimeException) + { + if (fallbackToCpu) + _session = new InferenceSession(modelFile); + else + // If called from OnnxTransform, is caught and rethrown + throw; + } } else { From 94e19673a86c464012a5a7c2dea89e5e754d48c9 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 3 Mar 2020 15:43:56 -0800 Subject: [PATCH 05/22] Add gpuDeviceId parameters to OnnxConversionTests --- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 9801284e8b..7087698ffd 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -35,6 +35,8 @@ namespace Microsoft.ML.Tests { public class OnnxConversionTest : BaseTestBaseline { + private int _gpuid = 0; + private class AdultData { [LoadColumn(0, 10), ColumnName("FeatureVector")] @@ -89,7 +91,7 @@ public void SimpleEndToEndOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Step 3: 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); @@ -180,7 +182,7 @@ public void KmeansOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -235,7 +237,7 @@ public void RegressionTrainersOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxFileName); SaveOnnxModel(onnxModel, onnxModelPath, null); - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -296,7 +298,7 @@ public void BinaryClassificationTrainersOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); //compare scores @@ -329,7 +331,7 @@ public void TestVectorWhiteningOnnxConversionTest() if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("whitened1", "whitened1", transformedData, onnxResult); @@ -382,7 +384,7 @@ public void PlattCalibratorOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -429,7 +431,7 @@ public void PlattCalibratorOnnxConversionTest2() // Compare model scores produced by ML.NET and ONNX's runtime. if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Probability", "Probability", transformedData, onnxResult, 3); //compare probabilities @@ -462,7 +464,7 @@ public void TextNormalizingOnnxConversionTest() if (IsOnnxRuntimeSupported() && !RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("NormText", "NormText", transformedData, onnxResult); @@ -511,7 +513,7 @@ public void LpNormOnnxConversionTest( 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Features", "Features", transformedData, onnxResult, 3); @@ -578,7 +580,7 @@ public void KeyToVectorWithBagOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -899,7 +901,7 @@ public void ConcatenateOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxModelName); SaveOnnxModel(onnxModel, onnxModelPath, null); // 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Features", "Features", transformedData, onnxResult); @@ -951,7 +953,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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -1016,7 +1018,7 @@ public void TokenizingByCharactersOnnxConversionTest(bool useMarkerCharacters) 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("TokenizedText", "TokenizedText", transformedData, onnxResult); @@ -1091,7 +1093,7 @@ public void OnnxTypeConversionTest(DataKind fromKind, DataKind toKind) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); @@ -1128,7 +1130,7 @@ public void PcaOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("pca", "pca", transformedData, onnxResult); @@ -1187,7 +1189,7 @@ public void IndicateMissingValuesOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("MissingIndicator", "MissingIndicator", transformedData, onnxResult); @@ -1230,7 +1232,7 @@ public void ValueToKeyMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Key", "Key", mlnetResult, onnxResult); @@ -1279,7 +1281,7 @@ public void KeyToValueMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Value", "Value", mlnetResult, onnxResult); @@ -1320,7 +1322,7 @@ public void WordTokenizerOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("Tokens", "Tokens", transformedData, onnxResult); @@ -1384,7 +1386,7 @@ public void NgramOnnxConversionTest( if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); var columnName = i == pipelines.Length - 1 ? "Tokens" : "NGrams"; @@ -1452,7 +1454,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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Label", "Label", outputData, onnxResult); @@ -1519,7 +1521,7 @@ public void MulticlassTrainersOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("PredictedLabel", "PredictedLabel", transformedData, onnxResult); @@ -1552,7 +1554,7 @@ public void CopyColumnsOnnxTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Target", "Target1", transformedData, onnxResult); @@ -1613,7 +1615,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: _gpuid); var onnxResult = onnxEstimator.Fit(reloadedData).Transform(reloadedData); // Step 6: Compare results to an onnx model created using the mappedData IDataView @@ -1625,7 +1627,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: _gpuid); var onnxResult2 = onnxEstimator2.Fit(originalData).Transform(originalData); var stdSuffix = ".output"; @@ -1678,7 +1680,7 @@ public void FeatureSelectionOnnxTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("FeatureSelectMIScalarFloat", "FeatureSelectMIScalarFloat", transformedData, onnxResult); @@ -1726,7 +1728,7 @@ public void SelectColumnsOnnxTest() // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); From c91dd19c6c6858af08dced526b91132cccf43edb Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 14:16:00 -0800 Subject: [PATCH 06/22] Use OnnxRuntime.Managed in OnnxTransformer --- .../Microsoft.ML.OnnxTransformer.nupkgproj | 2 +- .../Microsoft.ML.OnnxTransformer.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj b/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj index 9bb73233af..3c7d9f2ccd 100644 --- a/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj +++ b/pkg/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.nupkgproj @@ -8,7 +8,7 @@ - + diff --git a/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj b/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj index 13ca564765..7612f974ea 100644 --- a/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj +++ b/src/Microsoft.ML.OnnxTransformer/Microsoft.ML.OnnxTransformer.csproj @@ -9,7 +9,7 @@ - + From 509211944b268ee9ba92a307774fedb0ad048223 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 14:26:50 -0800 Subject: [PATCH 07/22] Added AI Infra for ONNX 1.2 nightly nugets --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index f09591fdd4..4c30f448cf 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -19,7 +19,7 @@ https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json; https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; https://dotnet.myget.org/F/roslyn-analyzers/api/v3/index.json; - \\LOTUS-WIN\nuget\1.2\GPU + https://aiinfra.pkgs.visualstudio.com/_packaging/OnnxRuntime%40Local/nuget/v3/index.json; From 75427b7dc32ef53a6dbf45ad4557e6021b11d783 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 14:27:08 -0800 Subject: [PATCH 08/22] Added onnxruntime new references for experiment --- .../Microsoft.ML.Functional.Tests.csproj | 1 + test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/test/Microsoft.ML.Functional.Tests/Microsoft.ML.Functional.Tests.csproj b/test/Microsoft.ML.Functional.Tests/Microsoft.ML.Functional.Tests.csproj index 2e31450e8d..624384d9b5 100644 --- a/test/Microsoft.ML.Functional.Tests/Microsoft.ML.Functional.Tests.csproj +++ b/test/Microsoft.ML.Functional.Tests/Microsoft.ML.Functional.Tests.csproj @@ -40,6 +40,7 @@ + diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 0e0414cf5c..39d994e8ff 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,6 +49,7 @@ + From 45b5709da2e7cdb0dad807307200be132b9abc12 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 14:33:41 -0800 Subject: [PATCH 09/22] Updated ML.Tests dependency for experiment on CI --- test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 39d994e8ff..583fc6a853 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,7 +49,7 @@ - + From 477bdfe9bb7531fecdeaf0bddd0c29d73dff1770 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 17:09:50 -0800 Subject: [PATCH 10/22] Reverted mistake I made in Directory.Build.props --- Directory.Build.props | 1 + 1 file changed, 1 insertion(+) diff --git a/Directory.Build.props b/Directory.Build.props index 4c30f448cf..299ea06e7d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -19,6 +19,7 @@ https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json; https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; 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://aiinfra.pkgs.visualstudio.com/_packaging/OnnxRuntime%40Local/nuget/v3/index.json; From 0cc8006db183b77ec66dd81699aad2d63cd5afd0 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Wed, 4 Mar 2020 17:10:14 -0800 Subject: [PATCH 11/22] Update ML.Samples dependency --- docs/samples/Microsoft.ML.Samples/Microsoft.ML.Samples.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/samples/Microsoft.ML.Samples/Microsoft.ML.Samples.csproj b/docs/samples/Microsoft.ML.Samples/Microsoft.ML.Samples.csproj index 812114e7a5..5951c4bbd1 100644 --- a/docs/samples/Microsoft.ML.Samples/Microsoft.ML.Samples.csproj +++ b/docs/samples/Microsoft.ML.Samples/Microsoft.ML.Samples.csproj @@ -968,6 +968,7 @@ + From 081b91c9c8914491acd9edca088aee56d27f51e2 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Thu, 5 Mar 2020 12:54:50 -0800 Subject: [PATCH 12/22] Update ort feed --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 299ea06e7d..bfa59b4675 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -20,7 +20,7 @@ https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; 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://aiinfra.pkgs.visualstudio.com/_packaging/OnnxRuntime%40Local/nuget/v3/index.json; + https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/nuget/v3/index.json; From fa5a2ceedff3495964d93559609018c0562a6647 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Thu, 5 Mar 2020 13:31:29 -0800 Subject: [PATCH 13/22] Second experiment --- .../Microsoft.ML.OnnxTransformerTest.csproj | 1 + test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/Microsoft.ML.OnnxTransformerTest/Microsoft.ML.OnnxTransformerTest.csproj b/test/Microsoft.ML.OnnxTransformerTest/Microsoft.ML.OnnxTransformerTest.csproj index bc16e60ad3..4dcc9cdfc9 100644 --- a/test/Microsoft.ML.OnnxTransformerTest/Microsoft.ML.OnnxTransformerTest.csproj +++ b/test/Microsoft.ML.OnnxTransformerTest/Microsoft.ML.OnnxTransformerTest.csproj @@ -10,6 +10,7 @@ + diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 583fc6a853..39d994e8ff 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,7 +49,7 @@ - + From 2ecb7b5669b013426b93c6ee52ee75cbab1326e1 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Thu, 5 Mar 2020 14:17:40 -0800 Subject: [PATCH 14/22] Update ML.Test to depend on Onnxruntime (no GPU) --- test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 39d994e8ff..583fc6a853 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,7 +49,7 @@ - + From 94741fe8d4baa885645959a0993a1fa9d0e72ca8 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Thu, 5 Mar 2020 14:18:39 -0800 Subject: [PATCH 15/22] Revert "Add gpuDeviceId parameters to OnnxConversionTests" This reverts commit 94e19673a86c464012a5a7c2dea89e5e754d48c9. --- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 7087698ffd..9801284e8b 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -35,8 +35,6 @@ namespace Microsoft.ML.Tests { public class OnnxConversionTest : BaseTestBaseline { - private int _gpuid = 0; - private class AdultData { [LoadColumn(0, 10), ColumnName("FeatureVector")] @@ -91,7 +89,7 @@ public void SimpleEndToEndOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Step 3: Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); @@ -182,7 +180,7 @@ public void KmeansOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -237,7 +235,7 @@ public void RegressionTrainersOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxFileName); SaveOnnxModel(onnxModel, onnxModelPath, null); - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -298,7 +296,7 @@ public void BinaryClassificationTrainersOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); //compare scores @@ -331,7 +329,7 @@ public void TestVectorWhiteningOnnxConversionTest() if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("whitened1", "whitened1", transformedData, onnxResult); @@ -384,7 +382,7 @@ public void PlattCalibratorOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -431,7 +429,7 @@ public void PlattCalibratorOnnxConversionTest2() // Compare model scores produced by ML.NET and ONNX's runtime. if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Probability", "Probability", transformedData, onnxResult, 3); //compare probabilities @@ -464,7 +462,7 @@ public void TextNormalizingOnnxConversionTest() if (IsOnnxRuntimeSupported() && !RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("NormText", "NormText", transformedData, onnxResult); @@ -513,7 +511,7 @@ public void LpNormOnnxConversionTest( if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Features", "Features", transformedData, onnxResult, 3); @@ -580,7 +578,7 @@ public void KeyToVectorWithBagOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -901,7 +899,7 @@ public void ConcatenateOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxModelName); SaveOnnxModel(onnxModel, onnxModelPath, null); // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Features", "Features", transformedData, onnxResult); @@ -953,7 +951,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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -1018,7 +1016,7 @@ public void TokenizingByCharactersOnnxConversionTest(bool useMarkerCharacters) if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("TokenizedText", "TokenizedText", transformedData, onnxResult); @@ -1093,7 +1091,7 @@ public void OnnxTypeConversionTest(DataKind fromKind, DataKind toKind) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); @@ -1130,7 +1128,7 @@ public void PcaOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("pca", "pca", transformedData, onnxResult); @@ -1189,7 +1187,7 @@ public void IndicateMissingValuesOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("MissingIndicator", "MissingIndicator", transformedData, onnxResult); @@ -1232,7 +1230,7 @@ public void ValueToKeyMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Key", "Key", mlnetResult, onnxResult); @@ -1281,7 +1279,7 @@ public void KeyToValueMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Value", "Value", mlnetResult, onnxResult); @@ -1322,7 +1320,7 @@ public void WordTokenizerOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("Tokens", "Tokens", transformedData, onnxResult); @@ -1386,7 +1384,7 @@ public void NgramOnnxConversionTest( if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); var columnName = i == pipelines.Length - 1 ? "Tokens" : "NGrams"; @@ -1454,7 +1452,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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Label", "Label", outputData, onnxResult); @@ -1521,7 +1519,7 @@ public void MulticlassTrainersOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("PredictedLabel", "PredictedLabel", transformedData, onnxResult); @@ -1554,7 +1552,7 @@ public void CopyColumnsOnnxTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Target", "Target1", transformedData, onnxResult); @@ -1615,7 +1613,7 @@ public void UseKeyDataViewTypeAsUInt32InOnnxInput() if (IsOnnxRuntimeSupported()) { // Step 5: Apply Onnx Model - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxResult = onnxEstimator.Fit(reloadedData).Transform(reloadedData); // Step 6: Compare results to an onnx model created using the mappedData IDataView @@ -1627,7 +1625,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, gpuDeviceId: _gpuid); + var onnxEstimator2 = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath2); var onnxResult2 = onnxEstimator2.Fit(originalData).Transform(originalData); var stdSuffix = ".output"; @@ -1680,7 +1678,7 @@ public void FeatureSelectionOnnxTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("FeatureSelectMIScalarFloat", "FeatureSelectMIScalarFloat", transformedData, onnxResult); @@ -1728,7 +1726,7 @@ public void SelectColumnsOnnxTest() // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. 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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); From d4501a0b9aa172b917f1295a152820d6061b66d8 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 9 Mar 2020 18:30:08 -0700 Subject: [PATCH 16/22] Update ORT feed --- Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index bfa59b4675..e57bfbba2a 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -20,7 +20,7 @@ https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; 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://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/nuget/v3/index.json; + https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Rel-Candidate/nuget/v3/index.json; From dd9f56d980051ffb5a83c23f447434b1ce7fcde8 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 9 Mar 2020 19:27:22 -0700 Subject: [PATCH 17/22] Revert "Update ML.Test to depend on Onnxruntime (no GPU)" This reverts commit 2ecb7b5669b013426b93c6ee52ee75cbab1326e1. --- test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 583fc6a853..39d994e8ff 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,7 +49,7 @@ - + From 68b5489a4b01ee075d0bdd44a2aa17b9de66b645 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 9 Mar 2020 19:28:57 -0700 Subject: [PATCH 18/22] Revert "Revert "Add gpuDeviceId parameters to OnnxConversionTests"" This reverts commit 94741fe8d4baa885645959a0993a1fa9d0e72ca8. --- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 56 ++++++++++--------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 9801284e8b..7087698ffd 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -35,6 +35,8 @@ namespace Microsoft.ML.Tests { public class OnnxConversionTest : BaseTestBaseline { + private int _gpuid = 0; + private class AdultData { [LoadColumn(0, 10), ColumnName("FeatureVector")] @@ -89,7 +91,7 @@ public void SimpleEndToEndOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Step 3: 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); @@ -180,7 +182,7 @@ public void KmeansOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -235,7 +237,7 @@ public void RegressionTrainersOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxFileName); SaveOnnxModel(onnxModel, onnxModelPath, null); - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -296,7 +298,7 @@ public void BinaryClassificationTrainersOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); //compare scores @@ -329,7 +331,7 @@ public void TestVectorWhiteningOnnxConversionTest() if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("whitened1", "whitened1", transformedData, onnxResult); @@ -382,7 +384,7 @@ public void PlattCalibratorOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -429,7 +431,7 @@ public void PlattCalibratorOnnxConversionTest2() // Compare model scores produced by ML.NET and ONNX's runtime. if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Probability", "Probability", transformedData, onnxResult, 3); //compare probabilities @@ -462,7 +464,7 @@ public void TextNormalizingOnnxConversionTest() if (IsOnnxRuntimeSupported() && !RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("NormText", "NormText", transformedData, onnxResult); @@ -511,7 +513,7 @@ public void LpNormOnnxConversionTest( 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Features", "Features", transformedData, onnxResult, 3); @@ -578,7 +580,7 @@ public void KeyToVectorWithBagOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -899,7 +901,7 @@ public void ConcatenateOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxModelName); SaveOnnxModel(onnxModel, onnxModelPath, null); // 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Features", "Features", transformedData, onnxResult); @@ -951,7 +953,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: _gpuid); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -1016,7 +1018,7 @@ public void TokenizingByCharactersOnnxConversionTest(bool useMarkerCharacters) 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("TokenizedText", "TokenizedText", transformedData, onnxResult); @@ -1091,7 +1093,7 @@ public void OnnxTypeConversionTest(DataKind fromKind, DataKind toKind) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); @@ -1128,7 +1130,7 @@ public void PcaOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("pca", "pca", transformedData, onnxResult); @@ -1187,7 +1189,7 @@ public void IndicateMissingValuesOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("MissingIndicator", "MissingIndicator", transformedData, onnxResult); @@ -1230,7 +1232,7 @@ public void ValueToKeyMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Key", "Key", mlnetResult, onnxResult); @@ -1279,7 +1281,7 @@ public void KeyToValueMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Value", "Value", mlnetResult, onnxResult); @@ -1320,7 +1322,7 @@ public void WordTokenizerOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("Tokens", "Tokens", transformedData, onnxResult); @@ -1384,7 +1386,7 @@ public void NgramOnnxConversionTest( if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); var columnName = i == pipelines.Length - 1 ? "Tokens" : "NGrams"; @@ -1452,7 +1454,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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Label", "Label", outputData, onnxResult); @@ -1519,7 +1521,7 @@ public void MulticlassTrainersOnnxConversionTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("PredictedLabel", "PredictedLabel", transformedData, onnxResult); @@ -1552,7 +1554,7 @@ public void CopyColumnsOnnxTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Target", "Target1", transformedData, onnxResult); @@ -1613,7 +1615,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: _gpuid); var onnxResult = onnxEstimator.Fit(reloadedData).Transform(reloadedData); // Step 6: Compare results to an onnx model created using the mappedData IDataView @@ -1625,7 +1627,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: _gpuid); var onnxResult2 = onnxEstimator2.Fit(originalData).Transform(originalData); var stdSuffix = ".output"; @@ -1678,7 +1680,7 @@ public void FeatureSelectionOnnxTest() 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("FeatureSelectMIScalarFloat", "FeatureSelectMIScalarFloat", transformedData, onnxResult); @@ -1726,7 +1728,7 @@ public void SelectColumnsOnnxTest() // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. 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: _gpuid); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); From 60b899beac2c6d87d5b5397a622795d9ada11d55 Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 9 Mar 2020 20:10:32 -0700 Subject: [PATCH 19/22] Revert "Revert "Update ML.Test to depend on Onnxruntime (no GPU)"" This reverts commit dd9f56d980051ffb5a83c23f447434b1ce7fcde8. --- test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj index 39d994e8ff..583fc6a853 100644 --- a/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj +++ b/test/Microsoft.ML.Tests/Microsoft.ML.Tests.csproj @@ -49,7 +49,7 @@ - + From 932d6ed3d123ca53a03b6cebb22e52f6745df75a Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Mon, 9 Mar 2020 20:51:59 -0700 Subject: [PATCH 20/22] Revert "Revert "Revert "Add gpuDeviceId parameters to OnnxConversionTests""" This reverts commit 68b5489a4b01ee075d0bdd44a2aa17b9de66b645. --- test/Microsoft.ML.Tests/OnnxConversionTest.cs | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/test/Microsoft.ML.Tests/OnnxConversionTest.cs b/test/Microsoft.ML.Tests/OnnxConversionTest.cs index 7087698ffd..9801284e8b 100644 --- a/test/Microsoft.ML.Tests/OnnxConversionTest.cs +++ b/test/Microsoft.ML.Tests/OnnxConversionTest.cs @@ -35,8 +35,6 @@ namespace Microsoft.ML.Tests { public class OnnxConversionTest : BaseTestBaseline { - private int _gpuid = 0; - private class AdultData { [LoadColumn(0, 10), ColumnName("FeatureVector")] @@ -91,7 +89,7 @@ public void SimpleEndToEndOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Step 3: Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); @@ -182,7 +180,7 @@ public void KmeansOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -237,7 +235,7 @@ public void RegressionTrainersOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxFileName); SaveOnnxModel(onnxModel, onnxModelPath, null); - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -298,7 +296,7 @@ public void BinaryClassificationTrainersOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); //compare scores @@ -331,7 +329,7 @@ public void TestVectorWhiteningOnnxConversionTest() if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("whitened1", "whitened1", transformedData, onnxResult); @@ -384,7 +382,7 @@ public void PlattCalibratorOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Score", "Score", transformedData, onnxResult, 3); @@ -431,7 +429,7 @@ public void PlattCalibratorOnnxConversionTest2() // Compare model scores produced by ML.NET and ONNX's runtime. if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Probability", "Probability", transformedData, onnxResult, 3); //compare probabilities @@ -464,7 +462,7 @@ public void TextNormalizingOnnxConversionTest() if (IsOnnxRuntimeSupported() && !RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("NormText", "NormText", transformedData, onnxResult); @@ -513,7 +511,7 @@ public void LpNormOnnxConversionTest( if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Features", "Features", transformedData, onnxResult, 3); @@ -580,7 +578,7 @@ public void KeyToVectorWithBagOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -901,7 +899,7 @@ public void ConcatenateOnnxConversionTest() var onnxModelPath = GetOutputPath(onnxModelName); SaveOnnxModel(onnxModel, onnxModelPath, null); // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Features", "Features", transformedData, onnxResult); @@ -953,7 +951,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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(data); var onnxResult = onnxTransformer.Transform(data); CompareSelectedColumns("Score", "Score", transformedData, onnxResult); @@ -1018,7 +1016,7 @@ public void TokenizingByCharactersOnnxConversionTest(bool useMarkerCharacters) if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("TokenizedText", "TokenizedText", transformedData, onnxResult); @@ -1093,7 +1091,7 @@ public void OnnxTypeConversionTest(DataKind fromKind, DataKind toKind) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); @@ -1130,7 +1128,7 @@ public void PcaOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("pca", "pca", transformedData, onnxResult); @@ -1189,7 +1187,7 @@ public void IndicateMissingValuesOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("MissingIndicator", "MissingIndicator", transformedData, onnxResult); @@ -1232,7 +1230,7 @@ public void ValueToKeyMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Key", "Key", mlnetResult, onnxResult); @@ -1281,7 +1279,7 @@ public void KeyToValueMappingOnnxConversionTest(DataKind valueType) if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Value", "Value", mlnetResult, onnxResult); @@ -1322,7 +1320,7 @@ public void WordTokenizerOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns>("Tokens", "Tokens", transformedData, onnxResult); @@ -1386,7 +1384,7 @@ public void NgramOnnxConversionTest( if (IsOnnxRuntimeSupported()) { - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxFilePath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); var columnName = i == pipelines.Length - 1 ? "Tokens" : "NGrams"; @@ -1454,7 +1452,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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareResults("Label", "Label", outputData, onnxResult); @@ -1521,7 +1519,7 @@ public void MulticlassTrainersOnnxConversionTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("PredictedLabel", "PredictedLabel", transformedData, onnxResult); @@ -1554,7 +1552,7 @@ public void CopyColumnsOnnxTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("Target", "Target1", transformedData, onnxResult); @@ -1615,7 +1613,7 @@ public void UseKeyDataViewTypeAsUInt32InOnnxInput() if (IsOnnxRuntimeSupported()) { // Step 5: Apply Onnx Model - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxResult = onnxEstimator.Fit(reloadedData).Transform(reloadedData); // Step 6: Compare results to an onnx model created using the mappedData IDataView @@ -1627,7 +1625,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, gpuDeviceId: _gpuid); + var onnxEstimator2 = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath2); var onnxResult2 = onnxEstimator2.Fit(originalData).Transform(originalData); var stdSuffix = ".output"; @@ -1680,7 +1678,7 @@ public void FeatureSelectionOnnxTest() if (IsOnnxRuntimeSupported()) { // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. - var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); CompareSelectedColumns("FeatureSelectMIScalarFloat", "FeatureSelectMIScalarFloat", transformedData, onnxResult); @@ -1728,7 +1726,7 @@ public void SelectColumnsOnnxTest() // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline. 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, gpuDeviceId: _gpuid); + var onnxEstimator = mlContext.Transforms.ApplyOnnxModel(outputNames, inputNames, onnxModelPath); var onnxTransformer = onnxEstimator.Fit(dataView); var onnxResult = onnxTransformer.Transform(dataView); From 2f30fd552f9e09b8bad6d35d0947441e1518e4ab Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 10 Mar 2020 15:37:36 -0700 Subject: [PATCH 21/22] Removed ORT custom feed --- Directory.Build.props | 1 - 1 file changed, 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index e57bfbba2a..ea17b66f8f 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -20,7 +20,6 @@ https://dotnet.myget.org/F/dotnet-core/api/v3/index.json; 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://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Rel-Candidate/nuget/v3/index.json; From 98c0dff0d8e11d5a0602aa34312d9470f585d68d Mon Sep 17 00:00:00 2001 From: Antonio Velazquez Date: Tue, 10 Mar 2020 15:42:25 -0700 Subject: [PATCH 22/22] Removed whitespaces --- Directory.Build.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index ea17b66f8f..62d5272a9b 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -42,7 +42,7 @@ $(BaseOutputPath)$(PlatformConfig)\$(MSBuildProjectName)\ $(ObjDir)/packages/ - + $(BinDir)packages_noship/ $(BinDir)packages/ @@ -55,7 +55,7 @@ $(RepoRoot)Tools/ - @@ -87,16 +87,16 @@ $(LatestCommit) - - + 8.0 4.7 true - + true