Skip to content

Commit d6fe628

Browse files
committed
Merge branch 'master' into faster-calls-2
2 parents 956a80d + 25f8c5b commit d6fe628

File tree

95 files changed

+33997
-681
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+33997
-681
lines changed

.vsts-dotnet-ci.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ jobs:
6464
_includeBenchmarkData: true
6565
_targetFramework: netcoreapp3.0
6666
innerLoop: true
67+
vsTestConfiguration: "/Framework:.NETCoreApp,Version=v3.0"
6768
pool:
6869
name: Hosted VS2017
6970

@@ -72,6 +73,7 @@ jobs:
7273
name: Windows_x64_NetCoreApp21
7374
buildScript: build.cmd
7475
innerLoop: true
76+
vsTestConfiguration: "/Framework:.NETCoreApp,Version=v2.1"
7577
pool:
7678
name: Hosted VS2017
7779

@@ -91,6 +93,7 @@ jobs:
9193
_includeBenchmarkData: false
9294
_targetFramework: win-x64
9395
innerLoop: true
96+
vsTestConfiguration: "/Framework:.NETCoreApp,Version=v4.0"
9497
pool:
9598
name: Hosted VS2017
9699

@@ -100,5 +103,6 @@ jobs:
100103
architecture: x86
101104
buildScript: build.cmd
102105
innerLoop: true
106+
vsTestConfiguration: "/Framework:.NETCoreApp,Version=v2.1"
103107
pool:
104108
name: Hosted VS2017

build/.night-build.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,12 @@ jobs:
3838
Debug_Build:
3939
_configuration: Debug-netcoreapp3_0
4040
_config_short: DI
41+
_targetFramework: netcoreapp3.0
4142
_includeBenchmarkData: false
4243
Release_Build:
4344
_configuration: Release-netcoreapp3_0
4445
_config_short: RI
46+
_targetFramework: netcoreapp3.0
4547
_includeBenchmarkData: true
4648
nightlyBuild: true
4749
pool:

build/BranchInfo.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
<MajorVersion>1</MajorVersion>
3232
<MinorVersion>5</MinorVersion>
3333
<PatchVersion>0</PatchVersion>
34-
<PreReleaseLabel>preview2</PreReleaseLabel>
34+
<PreReleaseLabel>preview3</PreReleaseLabel>
3535
</PropertyGroup>
3636
<PropertyGroup Condition="'$(IsStableProject)' != 'true'">
3737
<MajorVersion>0</MajorVersion>
3838
<MinorVersion>17</MinorVersion>
3939
<PatchVersion>0</PatchVersion>
40-
<PreReleaseLabel>preview2</PreReleaseLabel>
40+
<PreReleaseLabel>preview3</PreReleaseLabel>
4141
</PropertyGroup>
4242
</Project>

build/Dependencies.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<GoogleProtobufPackageVersion>3.10.1</GoogleProtobufPackageVersion>
1717
<LightGBMPackageVersion>2.2.3</LightGBMPackageVersion>
1818
<MicrosoftExtensionsPackageVersion>2.1.0</MicrosoftExtensionsPackageVersion>
19-
<MicrosoftMLOnnxRuntimePackageVersion>1.1.2</MicrosoftMLOnnxRuntimePackageVersion>
19+
<MicrosoftMLOnnxRuntimePackageVersion>1.2</MicrosoftMLOnnxRuntimePackageVersion>
2020
<MlNetMklDepsPackageVersion>0.0.0.9</MlNetMklDepsPackageVersion>
2121
<ParquetDotNetPackageVersion>2.1.3</ParquetDotNetPackageVersion>
2222
<SystemDrawingCommonPackageVersion>4.5.0</SystemDrawingCommonPackageVersion>

build/ci/job-template.yml

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ parameters:
99
innerLoop: false
1010
runSpecific: false
1111
container: ''
12+
useVSTestTask: false
1213

1314
jobs:
1415
- job: ${{ parameters.name }}
1516
${{ if eq(parameters.nightlyBuild, 'true') }}:
16-
timeoutInMinutes: 20
17+
timeoutInMinutes: 30
1718
${{ if and(eq(parameters.nightlyBuild, 'false'), eq(parameters.codeCoverage, 'false')) }}:
1819
timeoutInMinutes: 75
1920
${{ if eq(parameters.codeCoverage, 'true') }}:
@@ -23,9 +24,10 @@ jobs:
2324
dotnetPath: $(Build.SourcesDirectory)/Tools/dotnetcli/dotnet
2425
nugetFeed: https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json
2526
nightlyBuildProjPath: $(Build.SourcesDirectory)/test/Microsoft.ML.NightlyBuild.Tests/Microsoft.ML.NightlyBuild.Tests.csproj
26-
nightlyBuildRunPath: (Build.SourcesDirectory)/bin/AnyCPU.(_configuration)/Microsoft.ML.NightlyBuild.Tests/(_targetFramework)
27+
nightlyBuildRunPath: $(Build.SourcesDirectory)/bin/AnyCPU.$(_configuration)/Microsoft.ML.NightlyBuild.Tests/$(_targetFramework)
2728
packageUpdaterProjPath: $(Build.SourcesDirectory)/test/Microsoft.ML.NugetPackageVersionUpdater/Microsoft.ML.NugetPackageVersionUpdater.csproj
2829
versionFilePath: $(Build.SourcesDirectory)/test/Microsoft.ML.NugetPackageVersionUpdater/latest_versions.txt
30+
PROCDUMP_PATH: '$(Build.SourcesDirectory)/Tools/procdump/'
2931
strategy:
3032
matrix:
3133
${{ if eq(parameters.customMatrixes, '') }}:
@@ -52,7 +54,7 @@ jobs:
5254
displayName: Install build dependencies
5355
- ${{ if and( eq(parameters.nightlyBuild, 'true'), eq(parameters.pool.name, 'Hosted Ubuntu 1604')) }}:
5456
- bash: echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$(nightlyBuildRunPath):$LD_LIBRARY_PATH"
55-
displayName: Set LD_LIBRARY_PATH for Ubuntu to locate Native shared library in current running path
57+
displayName: Set LD_LIBRARY_PATH for Ubuntu and CentOS to locate Native shared library in current running path
5658
- script: ${{ parameters.buildScript }} -$(_configuration) -buildArch=${{ parameters.architecture }}
5759
displayName: Build
5860
- ${{ if eq(parameters.nightlyBuild, 'true') }}:
@@ -62,6 +64,15 @@ jobs:
6264
displayName: List latest package versions
6365
- script: $(dotnetPath) run --project $(packageUpdaterProjPath)
6466
displayName: Update package versions for nightly build
67+
- ${{ if eq(parameters.buildScript, 'build.cmd') }}:
68+
- powershell: |
69+
Get-ChildItem -Path '.\bin\AnyCPU.*' -Recurse |
70+
Select -ExpandProperty FullName |
71+
Where {$_ -notlike '*\Microsoft.ML.NightlyBuild.Tests*'} |
72+
sort length -Descending |
73+
Remove-Item -force
74+
Write-Output "Done cleaning up usless project..."
75+
displayName: Clean up useless project
6576
- script: $(dotnetPath) msbuild -restore $(nightlyBuildProjPath) /p:ReferenceTypeForTestFramework="Nuget" /p:Configuration=$(_configuration) /p:TargetArchitecture=${{ parameters.architecture }}
6677
displayName: Build Nightly-Build Project with latest package versions
6778
- script: ${{ parameters.buildScript }} -$(_configuration) -runnightlybuildtests
@@ -70,12 +81,33 @@ jobs:
7081
- script: ${{ parameters.buildScript }} -- /t:DownloadExternalTestFiles /p:IncludeBenchmarkData=$(_includeBenchmarkData)
7182
displayName: Download Benchmark Data
7283
- ${{ if eq(parameters.innerLoop, 'false') }}:
73-
- ${{ if eq(parameters.runSpecific, 'false') }}:
84+
- ${{ if and(eq(parameters.runSpecific, 'false'), eq(parameters.useVSTestTask, 'false')) }}:
7485
- script: ${{ parameters.buildScript }} -$(_configuration) -runtests -coverage=${{ parameters.codeCoverage }}
7586
displayName: Run All Tests.
76-
- ${{ if eq(parameters.runSpecific, 'true') }}:
87+
- ${{ if and(eq(parameters.runSpecific, 'true'), eq(parameters.useVSTestTask, 'false')) }}:
7788
- script: ${{ parameters.buildScript }} -$(_configuration) -runSpecificTests -coverage=${{ parameters.codeCoverage }}
7889
displayName: Run Specific Tests.
90+
- ${{ if and(eq(parameters.buildScript, 'build.cmd'), eq(parameters.useVSTestTask, 'true')) }}:
91+
- task: VSTest@2
92+
displayName: Run Tests with VSTest
93+
inputs:
94+
testSelector: testAssemblies
95+
testAssemblyVer2: |
96+
**\*test.dll
97+
**\*tests.dll
98+
!**\obj\**
99+
runSettingsFile: $(Build.SourcesDirectory)/tools-local/vstest.runsettings
100+
searchFolder: '$(System.DefaultWorkingDirectory)'
101+
vstestLocationMethod: 'version'
102+
vsTestVersion: 'latest'
103+
runInParallel: False
104+
runTestsInIsolation: True
105+
codeCoverageEnabled: ${{ parameters.codeCoverage }}
106+
otherConsoleOptions: ${{ parameters.vsTestConfiguration }}
107+
dontDistribute: True
108+
diagnosticsEnabled: False
109+
collectDumpOn: onAbortOnly
110+
publishRunAttachments: true
79111
- ${{ if eq(parameters.innerLoop, 'true') }}:
80112
- script: ${{ parameters.buildScript }} -$(_configuration) -runCITests -coverage=${{ parameters.codeCoverage }}
81113
displayName: Run CI Tests.
@@ -114,7 +146,7 @@ jobs:
114146
inputs:
115147
sourceFolder: $(Build.SourcesDirectory)
116148
contents: |
117-
CrashDumps/*.dmp
149+
*.dmp
118150
bin/**/*.pdb
119151
targetFolder: $(Build.ArtifactStagingDirectory)
120152
- task: PublishBuildArtifacts@1

docs/api-reference/time-series-pvalue.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The lower its value, the more likely it is a spike. The p-value score is always
77

88
This score is the p-value of the current computed raw score according to a distribution of raw scores.
99
Here, the distribution is estimated based on the most recent raw score values up to certain depth back in the history.
10-
More specifically, this distribution is estimated using [kernel density estimation (https://en.wikipedia.org/wiki/Kernel_density_estimation) with the Gaussian [kernels](https://en.wikipedia.org/wiki/Kernel_(statistics)#In_non-parametric_statistics) of adaptive bandwidth.
10+
More specifically, this distribution is estimated using [kernel density estimation](https://en.wikipedia.org/wiki/Kernel_density_estimation) with the Gaussian [kernels](https://en.wikipedia.org/wiki/Kernel_(statistics)#In_non-parametric_statistics) of adaptive bandwidth.
1111

1212
If the p-value score exceeds $1 - \frac{\text{confidence}}{100}$, the associated timestamp may get a non-zero alert value in spike detection, which means a spike point is detected.
1313
Note that $\text{confidence}$ is defined in the signatures of [DetectIidSpike](xref:Microsoft.ML.TimeSeriesCatalog.DetectIidSpike(Microsoft.ML.TransformsCatalog,System.String,System.String,System.Int32,System.Int32,Microsoft.ML.Transforms.TimeSeries.AnomalySide))

docs/project-docs/developer-guide.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,13 @@ Steps to update `core_manifest.json` and `core_ep-list.tsv`:
7878
3. Verify the changes to `core_manifest.json` and `core_ep-list.tsv` are correct.
7979
4. Re-enable the skip attribute on the `RegenerateEntryPointCatalog` test.
8080
5. Commit the updated `core_manifest.json` and `core_ep-list.tsv` files to your branch.
81+
82+
### Running unit tests through VSTest Task & Collecting memory dumps
83+
84+
During development, there may also arise a need to debug hanging tests. In this scenario, it can be beneficial to collect the memory dump while a given test is hanging.
85+
86+
In this case, the given needs needs to be implemented according to the Microsoft test framework. Please check out the [Microsoft test framework walkthrough](https://docs.microsoft.com/en-us/visualstudio/test/walkthrough-creating-and-running-unit-tests-for-managed-code?view=vs-2019) and the VSTest [sample](https://github.com/dotnet/samples/tree/master/core/getting-started/unit-testing-using-mstest) demonstrating the "TestClass", "TestMethod", "DataTestMethod", and "DataRow" attributes.
87+
88+
Once the unit test(s) are implemented according to VSTest and ready to be debugged, the `useVSTestTask` parameter in `build\ci\job-template.yml` needs to be set to `True`. Once these steps are completed and pushed in your pull request, the unit test(s) will run and produce a full memory dump. At the end of a run, the memory dump `.dmp` file will be availible for downloading and inspection in the published artifacts of the build, in the folder `TestResults`.
89+
90+
Note: this is only supported on Windows builds, as [ProcDump](https://docs.microsoft.com/en-us/sysinternals/downloads/procdump) is officially only available on Windows.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# [ML.NET](http://dot.net/ml) 1.5.0-preview2
2+
3+
## **New Features (IN-PREVIEW, please provide feedback)**
4+
- **TimeSeriesImputer** ([#4623](https://github.com/dotnet/machinelearning/pull/4623)) This data transformer can be used to impute missing rows in time series data.
5+
- **LDSVM Trainer** ([#4060](https://github.com/dotnet/machinelearning/pull/4060)) The "Local Deep SVM" usess trees as its SVM kernel to create a non-linear binary trainer. A sample can be found [here](https://github.com/dotnet/machinelearning/blob/c819d77e9250c68883713d5f1cd79b8971a11faf/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/BinaryClassification/LdSvm.cs).
6+
- **Onnxruntime updated to v1.2** This also includes support for GPU execution of onnx models
7+
- **Export-to-ONNX for below components:**
8+
- SlotsDroppingTransformer ([#4562](https://github.com/dotnet/machinelearning/pull/4562))
9+
- ColumnSelectingTransformer ([#4590](https://github.com/dotnet/machinelearning/pull/4590))
10+
- VectorWhiteningTransformer ([#4577](https://github.com/dotnet/machinelearning/pull/4577))
11+
- NaiveBayesMulticlassTrainer ([#4636](https://github.com/dotnet/machinelearning/pull/4636))
12+
- PlattCalibratorTransformer ([#4699](https://github.com/dotnet/machinelearning/pull/4699))
13+
- TokenizingByCharactersTransformer ([#4805](https://github.com/dotnet/machinelearning/pull/4805))
14+
- TextNormalizingTransformer ([#4781](https://github.com/dotnet/machinelearning/pull/4781))
15+
16+
17+
## **Bug Fixes**
18+
- Fix issue in WaiterWaiter caused by race condition ([#4829](https://github.com/dotnet/machinelearning/pull/4829))
19+
- Onnx Export change to allow for running inference on multiple rows in OnnxRuntime ([#4783](https://github.com/dotnet/machinelearning/pull/4783))
20+
- Data splits to default to MLContext seed when not specified ([#4764](https://github.com/dotnet/machinelearning/pull/4764))
21+
- Add Seed property to MLContext and use as default for data splits ([#4775](https://github.com/dotnet/machinelearning/pull/4775))
22+
- **Onnx bug fixes**
23+
- Updating onnxruntime version ([#4882](https://github.com/dotnet/machinelearning/pull/4882))
24+
- Calculate ReduceSum row by row in ONNX model from OneVsAllTrainer ([#4904](https://github.com/dotnet/machinelearning/pull/4904))
25+
- Several onnx export fixes related to KeyToValue and ValueToKey transformers ([#4900](https://github.com/dotnet/machinelearning/pull/4900), [#4866](https://github.com/dotnet/machinelearning/pull/4866), [#4841](https://github.com/dotnet/machinelearning/pull/4841), [#4889](https://github.com/dotnet/machinelearning/pull/4889), [#4878](https://github.com/dotnet/machinelearning/pull/4878), [#4797](https://github.com/dotnet/machinelearning/pull/4797))
26+
- Fixes to onnx export for text related transforms ([#4891](https://github.com/dotnet/machinelearning/pull/4891), [#4813](https://github.com/dotnet/machinelearning/pull/4813))
27+
- Fixed bugs in OptionalColumnTransform and ColumnSelecting ([#4887](https://github.com/dotnet/machinelearning/pull/4887), [#4815](https://github.com/dotnet/machinelearning/pull/4815))
28+
- Alternate solution for ColumnConcatenatingTransformer ([#4875](https://github.com/dotnet/machinelearning/pull/4875))
29+
- Added slot names support for OnnxTransformer ([#4857](https://github.com/dotnet/machinelearning/pull/4857))
30+
- Fixed output schema of OnnxTransformer ([#4849](https://github.com/dotnet/machinelearning/pull/4849))
31+
- Changed Binarizer node to be cast to the type of the predicted label … ([#4818](https://github.com/dotnet/machinelearning/pull/4818))
32+
- Fix for OneVersusAllTrainer ([#4698](https://github.com/dotnet/machinelearning/pull/4698))
33+
- Enable OnnxTransformer to accept KeyDataViewTypes as if they were UInt32 ([#4824](https://github.com/dotnet/machinelearning/pull/4824))
34+
- Fix off by 1 error with the cats_int64s attribute for the OneHotEncoder ONNX operator ([#4827](https://github.com/dotnet/machinelearning/pull/4827))
35+
- Changed Binarizer node to be cast to the type of the predicted label … ([#4818](https://github.com/dotnet/machinelearning/pull/4818))
36+
- Updated handling of missing values with LightGBM, and added ability to use (0) as missing value ([#4695](https://github.com/dotnet/machinelearning/pull/4695))
37+
- Double cast to float for some onnx estimators ([#4745](https://github.com/dotnet/machinelearning/pull/4745))
38+
- Fix onnx output name for GcnTransform ([#4786](https://github.com/dotnet/machinelearning/pull/4786))
39+
- Added support to run PFI on uncalibrated binary classification models ([#4587](https://github.com/dotnet/machinelearning/pull/4587))
40+
- Fix bug in WordBagEstimator when training on empty data ([#4696](https://github.com/dotnet/machinelearning/pull/4696))
41+
- Added Cancellation mechanism to Image Classification (through the experimental nuget) (fixes #4632) ([#4650](https://github.com/dotnet/machinelearning/pull/4650))
42+
- Changed F1 score to return 0 instead of NaN when Precision + Recall is 0 ([#4674](https://github.com/dotnet/machinelearning/pull/4674))
43+
- TextLoader, BinaryLoader and SvmLightLoader now check the existence of the input file before training ([#4665](https://github.com/dotnet/machinelearning/pull/4665))
44+
- ImageLoadingTransformer now checks the existence of input folder before training ([#4691]( https://github.com/dotnet/machinelearning/pull/4691))
45+
- Use random file name for AutoML experiment folder ([#4657](https://github.com/dotnet/machinelearning/pull/4657))
46+
- Using invariance culture when converting to string ([#4635](https://github.com/dotnet/machinelearning/pull/4635))
47+
- Fix NullReferenceException when it comes to Recommendation in AutoML and CodeGenerator ([#4774](https://github.com/dotnet/machinelearning/pull/4774))
48+
49+
## **Enhancements**
50+
- Added in support for System.DateTime type for the DateTimeTransformer ([#4661](https://github.com/dotnet/machinelearning/pull/4661))
51+
- Additional changes to ExpressionTransformer ([#4614](https://github.com/dotnet/machinelearning/pull/4614))
52+
- Optimize generic MethodInfo for Func<TResult> ([#4588](https://github.com/dotnet/machinelearning/pull/4588))
53+
- Data splits to default to MLContext seed when not specified ([#4764](https://github.com/dotnet/machinelearning/pull/4764))
54+
- Added in DateTime type support for TimeSeriesImputer ([#4812](https://github.com/dotnet/machinelearning/pull/4812))
55+
56+
## **Test updates**
57+
- **Code analysis updates**
58+
- Update analyzer test library ([#4740](https://github.com/dotnet/machinelearning/pull/4740))
59+
- Enable the internal code analyzer for test projects ([#4731](https://github.com/dotnet/machinelearning/pull/4731))
60+
- Implement MSML_ExtendBaseTestClass (Test classes should be derived from BaseTestClass) ([#4746](https://github.com/dotnet/machinelearning/pull/4746))
61+
- Enable MSML_TypeParamName for the full solution ([#4762](https://github.com/dotnet/machinelearning/pull/4762))
62+
- Enable MSML_ParameterLocalVarName for the full solution ([#4833](https://github.com/dotnet/machinelearning/pull/4833))
63+
- Enable MSML_SingleVariableDeclaration for the full solution ([#4765](https://github.com/dotnet/machinelearning/pull/4765))
64+
- **Better logging from tests**
65+
- Ensure tests capture the full log ([#4710](https://github.com/dotnet/machinelearning/pull/4710))
66+
- Fix failure to capture test failures ([#4716](https://github.com/dotnet/machinelearning/pull/4716))
67+
- Collect crash dump upload dump and pdb to artifact ([#4666](https://github.com/dotnet/machinelearning/pull/4666))
68+
- Enable Conditional Numerical Reproducibility for tests ([#4569](https://github.com/dotnet/machinelearning/pull/4569))
69+
- Changed all MLContext creation to include a fixed seed ([#4736](https://github.com/dotnet/machinelearning/pull/4736))
70+
- Fix incorrect SynchronizationContext use in TestSweeper ([#4779](https://github.com/dotnet/machinelearning/pull/4779))
71+
72+
## **Documentation Updates**
73+
- Update cookbook to latest API ([#4706](https://github.com/dotnet/machinelearning/pull/4706))
74+
- Update documentation to stop mentioning interfaces that no longer exist ([#4673](https://github.com/dotnet/machinelearning/pull/4673))
75+
- Roadmap update ([#4704](https://github.com/dotnet/machinelearning/pull/4704))
76+
- Added release process documentation to README.md ([#4402](https://github.com/dotnet/machinelearning/pull/4402))
77+
- Fix documentation of SvmLightLoader ([#4616](https://github.com/dotnet/machinelearning/pull/4616))
78+
- Correct KMeans scoring function doc ([#4705](https://github.com/dotnet/machinelearning/pull/4705))
79+
- Several typo fixes thanks to [@MaherJendoubi](https://github.com/MaherJendoubi) ([#4627](https://github.com/dotnet/machinelearning/pull/4627), [#4631](https://github.com/dotnet/machinelearning/pull/4631), [#4626](https://github.com/dotnet/machinelearning/pull/4626) [#4617](https://github.com/dotnet/machinelearning/pull/4617), [#4633](https://github.com/dotnet/machinelearning/pull/4633), [#4629](https://github.com/dotnet/machinelearning/pull/4629), [#4642](https://github.com/dotnet/machinelearning/pull/4642))
80+
- Other typo fixes: ([#4628](https://github.com/dotnet/machinelearning/pull/4628), [#4685](https://github.com/dotnet/machinelearning/pull/4685), [#4885](https://github.com/dotnet/machinelearning/pull/4885))
81+
82+
83+
## **Breaking Changes**
84+
- None
85+
86+
87+
88+
89+

0 commit comments

Comments
 (0)