From 444cd969af3f78aab46ae0affadcfd0fa8bbd231 Mon Sep 17 00:00:00 2001 From: Michael Sharp Date: Wed, 17 Mar 2021 11:55:52 -0700 Subject: [PATCH 1/3] renamed master to main --- README.md | 24 ++--- build/vsts-ci.yml | 2 +- docs/README.md | 2 +- docs/building/MlNetMklDeps/README.md | 6 +- docs/building/unix-instructions.md | 2 +- docs/code/EntryPoints.md | 28 ++--- docs/project-docs/developer-guide.md | 4 +- docs/project-docs/release-process.md | 4 +- docs/release-notes/0.10/release-0.10.md | 16 +-- docs/release-notes/1.1.0/release-1.1.0.md | 30 +++--- docs/release-notes/1.2.0/release-1.2.0.md | 26 ++--- docs/release-notes/1.3.1/release-1.3.1.md | 20 ++-- .../1.4.0-preview/release-1.4.0-preview.md | 22 ++-- .../1.4.0-preview2/release-1.4.0-preview2.md | 10 +- docs/release-notes/1.4.0/release-1.4.0.md | 30 +++--- .../1.5.0-preview/release-1.5.0-preview.md | 16 +-- .../Dynamic/ModelOperations/OnnxConversion.cs | 2 +- .../Conversion/MapKeyToBinaryVector.cs | 6 +- .../Conversion/MapKeyToValueMultiColumn.cs | 8 +- .../Transforms/Conversion/MapKeyToVector.cs | 6 +- .../Conversion/MapKeyToVectorMultiColumn.cs | 4 +- .../Conversion/MapValueToKeyMultiColumn.cs | 4 +- docs/specs/mlnet-cli/MLNET-CLI-Specs.md | 100 +++++++++--------- .../Text/LdaTransform.cs | 2 +- src/Native/build.cmd | 2 +- 25 files changed, 188 insertions(+), 188 deletions(-) diff --git a/README.md b/README.md index 474113b97c..cd93f62c61 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Machine Learning for .NET -[ML.NET](https://www.microsoft.com/net/learn/apps/machine-learning-and-ai/ml-dotnet) is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers with the same code that powers machine learning across many Microsoft products, including Power BI, Windows Defender, and Azure. +[ML.NET](https://www.microsoft.com/net/learn/apps/machine-learning-and-ai/ml-dotnet) is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers with the same code that powers machine learning across many Microsoft products, including Power BI, Windows Defender, and Azure. ML.NET allows .NET developers to develop/train their own models and infuse custom machine learning into their applications using .NET, even without prior expertise in developing or tuning machine learning models. It provides data loading from files and databases, enables data transformations and includes many ML algorithms. @@ -14,13 +14,13 @@ If you are new to machine learning, start by learning the basics from this colle ## ML.NET Documentation, tutorials and reference -Please check our [documentation and tutorials](https://docs.microsoft.com/en-us/dotnet/machine-learning/). +Please check our [documentation and tutorials](https://docs.microsoft.com/en-us/dotnet/machine-learning/). See the [API Reference documentation](https://docs.microsoft.com/en-us/dotnet/api/?view=ml-dotnet). ## Sample apps -We have a GitHub repo with [ML.NET sample apps](https://github.com/dotnet/machinelearning-samples) with many scenarios such as Sentiment analysis, Fraud detection, Product Recommender, Price Prediction, Anomaly Detection, Image Classification, Object Detection and many more. +We have a GitHub repo with [ML.NET sample apps](https://github.com/dotnet/machinelearning-samples) with many scenarios such as Sentiment analysis, Fraud detection, Product Recommender, Price Prediction, Anomaly Detection, Image Classification, Object Detection and many more. In addition to the ML.NET samples provided by Microsoft, we're also highlighting many more samples created by the community showcased in this separate page [ML.NET Community Samples](https://github.com/dotnet/machinelearning-samples/blob/master/docs/COMMUNITY-SAMPLES.md) @@ -31,7 +31,7 @@ The [ML.NET videos playlist](https://aka.ms/mlnetyoutube) on YouTube contains se ## Operating systems and processor architectures supported by ML.NET -ML.NET runs on Windows, Linux, and macOS using [.NET Core](https://github.com/dotnet/core), or Windows using .NET Framework. +ML.NET runs on Windows, Linux, and macOS using [.NET Core](https://github.com/dotnet/core), or Windows using .NET Framework. 64 bit is supported on all platforms. 32 bit is supported on Windows, except for TensorFlow and LightGBM related functionality. @@ -67,17 +67,17 @@ Daily NuGet builds of the project are also available in our Azure DevOps feed: To build ML.NET from source please visit our [developers guide](docs/project-docs/developer-guide.md). -[![codecov](https://codecov.io/gh/dotnet/machinelearning/branch/master/graph/badge.svg?flag=production)](https://codecov.io/gh/dotnet/machinelearning) +[![codecov](https://codecov.io/gh/dotnet/machinelearning/branch/main/graph/badge.svg?flag=production)](https://codecov.io/gh/dotnet/machinelearning) | | Debug | Release | |:---|----------------:|------------------:| -|**CentOS**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Centos_x64_NetCoreApp31&configuration=Centos_x64_NetCoreApp31%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Centos_x64_NetCoreApp31&configuration=Centos_x64_NetCoreApp31%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**Ubuntu**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Ubuntu_x64_NetCoreApp21&configuration=Ubuntu_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Ubuntu_x64_NetCoreApp21&configuration=Ubuntu_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**macOS**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=MacOS_x64_NetCoreApp21&configuration=MacOS_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=MacOS_x64_NetCoreApp21&configuration=MacOS_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**Windows x64**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetCoreApp21&configuration=Windows_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetCoreApp21&configuration=Windows_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**Windows FullFramework**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetFx461&configuration=Windows_x64_NetFx461%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetFx461&configuration=Windows_x64_NetFx461%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**Windows x86**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x86_NetCoreApp21&configuration=Windows_x86_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x86_NetCoreApp21&configuration=Windows_x86_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| -|**Windows NetCore3.1**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetCoreApp31&configuration=Windows_x64_NetCoreApp31%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=master&jobName=Windows_x64_NetCoreApp31&configuration=Windows_x64_NetCoreApp31%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=master)| +|**CentOS**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Centos_x64_NetCoreApp31&configuration=Centos_x64_NetCoreApp31%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Centos_x64_NetCoreApp31&configuration=Centos_x64_NetCoreApp31%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**Ubuntu**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Ubuntu_x64_NetCoreApp21&configuration=Ubuntu_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Ubuntu_x64_NetCoreApp21&configuration=Ubuntu_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**macOS**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=MacOS_x64_NetCoreApp21&configuration=MacOS_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=MacOS_x64_NetCoreApp21&configuration=MacOS_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**Windows x64**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetCoreApp21&configuration=Windows_x64_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetCoreApp21&configuration=Windows_x64_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**Windows FullFramework**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetFx461&configuration=Windows_x64_NetFx461%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetFx461&configuration=Windows_x64_NetFx461%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**Windows x86**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x86_NetCoreApp21&configuration=Windows_x86_NetCoreApp21%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x86_NetCoreApp21&configuration=Windows_x86_NetCoreApp21%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| +|**Windows NetCore3.1**|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetCoreApp31&configuration=Windows_x64_NetCoreApp31%20Debug_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)|[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/dotnet/machinelearning/MachineLearning-CI?branchName=main&jobName=Windows_x64_NetCoreApp31&configuration=Windows_x64_NetCoreApp31%20Release_Build)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=104&branchName=main)| ## Release process and versioning diff --git a/build/vsts-ci.yml b/build/vsts-ci.yml index 66e5483ffd..2f8b1cca50 100644 --- a/build/vsts-ci.yml +++ b/build/vsts-ci.yml @@ -6,7 +6,7 @@ resources: containers: - container: CentosContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet-8bba86b-20190314145033 - +g phases: ################################################################################ - phase: Linux diff --git a/docs/README.md b/docs/README.md index 44ed54f306..5af9f276cc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,7 @@ Project Docs - [Strong Name Signing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/strong-name-signing.md) - [Public Signing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/public-signing.md) - [Project NuGet Dependencies](https://github.com/dotnet/buildtools/blob/master/Documentation/project-nuget-dependencies.md) -- [ML.NET Roadmap](https://github.com/dotnet/machinelearning/blob/master/README.md) +- [ML.NET Roadmap](https://github.com/dotnet/machinelearning/blob/main/README.md) - [ML.NET Cookbook](code/MlNetCookBook.md) - [ML.NET API Reference Documentation](https://docs.microsoft.com/en-us/dotnet/api/?view=ml-dotnet) diff --git a/docs/building/MlNetMklDeps/README.md b/docs/building/MlNetMklDeps/README.md index 8afca89f2a..27e54cd98d 100644 --- a/docs/building/MlNetMklDeps/README.md +++ b/docs/building/MlNetMklDeps/README.md @@ -15,10 +15,10 @@ ML.NET's repository takes a dependency of the MlNetMklDeps nuget, which contains * native (contains windows ia32 binaries) The .nuspec can be found on this folder: -https://github.com/dotnet/machinelearning/tree/master/docs/building/MlNetMklDeps +https://github.com/dotnet/machinelearning/tree/main/docs/building/MlNetMklDeps If actually publishing a new version of MlNetMklDeps, remember to update this other file to document any changes: -https://github.com/dotnet/machinelearning/blob/master/docs/building/MlNetMklDeps/version.md +https://github.com/dotnet/machinelearning/blob/main/docs/building/MlNetMklDeps/version.md # Instructions to build the binaries using Intel's MKL SDK ML.NET MKL implementation uses Intel MKL Custom Builder to produce the binaries for the functions that we select. Follow the instructions below to produce the binaries for each platform, which will then be added to the MlNetMklDeps nuget described on the previus section. @@ -65,5 +65,5 @@ https://software.intel.com/en-us/mkl 4. Run `make libintel64 name=libMklImports` (add `threading=sequential` if you are building without openmp) 5. Copy `libMklImports.dylib` from the builder directory to the folder containing the OSX binaries. 6. Fix the id and the rpath running the following commands: - * `sudo install_name_tool -id "@loader_path/libMklImports.dylib" libMklImports.dylib` + * `sudo install_name_tool -id "@loader_path/libMklImports.dylib" libMklImports.dylib` * `sudo install_name_tool -id "@rpath/libMklImports.dylib" libMklImports.dylib` \ No newline at end of file diff --git a/docs/building/unix-instructions.md b/docs/building/unix-instructions.md index c346c654b4..2d13dd7348 100644 --- a/docs/building/unix-instructions.md +++ b/docs/building/unix-instructions.md @@ -52,7 +52,7 @@ On macOS a few components are needed which are not provided by a default develop One way of obtaining CMake and other required libraries is via [Homebrew](https://brew.sh): ```sh -$ brew update && brew install cmake https://raw.githubusercontent.com/dotnet/machinelearning/master/build/libomp.rb mono-libgdiplus gettext && brew link gettext --force && brew link libomp --force +$ brew update && brew install cmake https://raw.githubusercontent.com/dotnet/machinelearning/main/build/libomp.rb mono-libgdiplus gettext && brew link gettext --force && brew link libomp --force ``` Please note that newer versions of Homebrew [don't allow installing directly from a URL](https://github.com/Homebrew/brew/issues/8791). If you run into this issue, you may need to download libomp.rb first and install it with the local file instead. diff --git a/docs/code/EntryPoints.md b/docs/code/EntryPoints.md index a59fee1414..c868f9099b 100644 --- a/docs/code/EntryPoints.md +++ b/docs/code/EntryPoints.md @@ -1,23 +1,23 @@ -# Entry Points And Helper Classes +# Entry Points And Helper Classes ## Overview Entry points are a way to interface with ML.NET components, by specifying an execution graph of connected inputs and outputs of those components. -Both the manifest describing available components and their inputs/outputs, and an "experiment" graph description, are expressed in JSON. -The recommended way of interacting with ML.NET through other, non-.NET programming languages, is by composing, and exchanging pipelines or experiment graphs. +Both the manifest describing available components and their inputs/outputs, and an "experiment" graph description, are expressed in JSON. +The recommended way of interacting with ML.NET through other, non-.NET programming languages, is by composing, and exchanging pipelines or experiment graphs. -Through the documentation, we also refer to entry points as 'entry points nodes', and that is because they are the nodes of the graph representing the experiment. -The graph 'variables', the various values of the experiment graph JSON properties, serve to describe the relationship between the entry point nodes. -The 'variables' are therefore the edges of the DAG (Directed Acyclic Graph). +Through the documentation, we also refer to entry points as 'entry points nodes', and that is because they are the nodes of the graph representing the experiment. +The graph 'variables', the various values of the experiment graph JSON properties, serve to describe the relationship between the entry point nodes. +The 'variables' are therefore the edges of the DAG (Directed Acyclic Graph). -All of ML.NET entry points are described by their manifest. The manifest is another JSON object that documents and describes the structure of an entry points. -Manifests are referenced to understand what an entry point does, and how it should be constructed, in a graph. +All of ML.NET entry points are described by their manifest. The manifest is another JSON object that documents and describes the structure of an entry points. +Manifests are referenced to understand what an entry point does, and how it should be constructed, in a graph. This document briefly describes the structure of the entry points, the structure of an entry point manifest, and mentions the ML.NET classes that help construct an entry point graph. ## EntryPoint manifest - the definition of an entry point -The components manifest is build by scanning the ML.NET assemblies through reflection and searching for types having the: `SignatureEntryPointModule` signature in their `LoadableClass` assembly attribute definition. +The components manifest is build by scanning the ML.NET assemblies through reflection and searching for types having the: `SignatureEntryPointModule` signature in their `LoadableClass` assembly attribute definition. An example of an entry point manifest object, specifically for the `ColumnTypeConverter` transform, is: ```javascript @@ -115,7 +115,7 @@ An example of an entry point manifest object, specifically for the `ColumnTypeCo { "Name": "OutputData", "Type": "DataView", - "Desc": "Transformed dataset" + "Desc": "Transformed dataset" }, { "Name": "Model", @@ -134,7 +134,7 @@ The respective entry point, constructed based on this manifest would be: { "Name": "Transforms.ColumnTypeConverter", "Inputs": { - "Column": [{ + "Column": [{ "Name": "Features", "Source": "Features" }], @@ -220,11 +220,11 @@ parameter. ## How to create an entry point for an existing ML.NET component -1. Add a `LoadableClass` assembly attribute with the `SignatureEntryPointModule` signature as shown [here](https://github.com/dotnet/machinelearning/blob/005fe05ebd8b0ffe66fe7e3d5b10983d363a4c35/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs#L26). +1. Add a `LoadableClass` assembly attribute with the `SignatureEntryPointModule` signature as shown [here](https://github.com/dotnet/machinelearning/blob/005fe05ebd8b0ffe66fe7e3d5b10983d363a4c35/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs#L26). 2. Create a public static method, that: 1. Takes an object representing the arguments of the component you want to expose as shown [here](https://github.com/dotnet/machinelearning/blob/005fe05ebd8b0ffe66fe7e3d5b10983d363a4c35/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs#L416) - 2. Initializes and runs the component, returning one of the nested classes of [`Microsoft.ML.EntryPoints.CommonOutputs`](https://github.com/dotnet/machinelearning/blob/master/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs) + 2. Initializes and runs the component, returning one of the nested classes of [`Microsoft.ML.EntryPoints.CommonOutputs`](https://github.com/dotnet/machinelearning/blob/main/src/Microsoft.ML.Data/EntryPoints/CommonOutputs.cs) 3. Is annotated with the [`TlcModule.EntryPoint`](https://github.com/dotnet/machinelearning/blob/005fe05ebd8b0ffe66fe7e3d5b10983d363a4c35/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs#L411) attribute -For an example of a transformer as an entrypoint, see [OneHotVectorizer](https://github.com/dotnet/machinelearning/blob/9db16c85888e7163c671543faee6ba1f47015d68/src/Microsoft.ML.Transforms/OneHotEncoding.cs#L283). +For an example of a transformer as an entrypoint, see [OneHotVectorizer](https://github.com/dotnet/machinelearning/blob/9db16c85888e7163c671543faee6ba1f47015d68/src/Microsoft.ML.Transforms/OneHotEncoding.cs#L283). For a trainer-estimator, see [LogisticRegression](https://github.com/dotnet/machinelearning/blob/005fe05ebd8b0ffe66fe7e3d5b10983d363a4c35/src/Microsoft.ML.StandardTrainers/Standard/LogisticRegression/LogisticRegression.cs#L411). diff --git a/docs/project-docs/developer-guide.md b/docs/project-docs/developer-guide.md index 1d13210a16..31c9932351 100644 --- a/docs/project-docs/developer-guide.md +++ b/docs/project-docs/developer-guide.md @@ -45,7 +45,7 @@ build.cmd -test **Note**: Before working on individual projects or test projects you **must** run `build` from the root once before beginning that work. It is also a good idea to run `build` whenever you pull a large set of unknown changes into your branch. -Under the src directory is a set of directories, each of which represents a particular assembly in ML.NET. +Under the src directory is a set of directories, each of which represents a particular assembly in ML.NET. For example the src\Microsoft.MachineLearning.Core directory holds the source code for the Microsoft.MachineLearning.Core.dll assembly. @@ -89,7 +89,7 @@ Steps to update `core_manifest.json` and `core_ep-list.tsv`: ### Running specifics unit tests on CI It may be necessary to run only specific unit tests on CI, and perhaps even run these tests back to back multiple times. The steps to run one or more unit tests are as follows: -1. Set `runSpecific: true` and `innerLoop: false` in [.vsts-dotnet-ci.yml](https://github.com/dotnet/machinelearning/blob/master/.vsts-dotnet-ci.yml) per each build you'd like to run the specifics tests on CI. +1. Set `runSpecific: true` and `innerLoop: false` in [.vsts-dotnet-ci.yml](https://github.com/dotnet/machinelearning/blob/main/.vsts-dotnet-ci.yml) per each build you'd like to run the specifics tests on CI. 2. Import `Microsoft.ML.TestFrameworkCommon.Attributes` in the unit test files that contain specific unit tests to be run. 3. Add the `[TestCategory("RunSpecificTest")]` to the unit test(s) you'd like to run specifically. diff --git a/docs/project-docs/release-process.md b/docs/project-docs/release-process.md index 7428b6b582..c7f6a670ba 100644 --- a/docs/project-docs/release-process.md +++ b/docs/project-docs/release-process.md @@ -6,7 +6,7 @@ This document describes the different kinds of ML. NET releases, how those relea Types of releases -------------------- -ML. NET NuGets (of which there are +ML. NET NuGets (of which there are approximately 25) are versioned with the following format: `A.B.C<-D>`, where `A`, `B`, and `C` are integers, and `D` is an optional string. - `A` - **version number**: If `A` is 0, this NuGet is considered a **work in progress (WIP)**, and could be deleted at any time. If `A` is greater than 0, then we plan to support the corresponding NuGet indefinitely. @@ -16,7 +16,7 @@ approximately 25) are versioned with the following format: `A.B.C<-D>`, where `A ML. NET has four kinds of releases: daily builds, previews, periodic general availability (GA), and fix. We detail each kind of release below. -1. **Daily builds:** these can be downloaded from [this NuGet feed](https://dev.azure.com/dnceng/public/_packaging?_a=feed&feed=MachineLearning), and are built automatically each time a commit is made to the `master` branch. +1. **Daily builds:** these can be downloaded from [this NuGet feed](https://dev.azure.com/dnceng/public/_packaging?_a=feed&feed=MachineLearning), and are built automatically each time a commit is made to the `main` branch. 1. **Preview:** These releases are built from the corresponding `A.B-preview-X` GitHub branch, and are expected to meet a higher quality bar than the daily builds. These can also be downloaded from [this NuGet feed](https://dev.azure.com/dnceng/public/_packaging?_a=feed&feed=MachineLearning), or within Visual Studio, as detailed below. When we introduce new API's in a preview release, we avoid doing a GA release at the same time (unless there are patches required for the last GA release). If there are no new API's, then we go straight to a GA release and skip the preview release. 1. **GA:** These releases are built from the corresponding `A.B` GitHub branch. They are rigorously tested, stable, and meant for general use. They are also the default choice when installing ML. NET via the `Install-Package Microsoft.ML` command, and are published to [nuget.org](https://www.nuget.org/packages/Microsoft.ML/) 1. **Fix:** These releases include patches for bugs in either the preview or GA releases. diff --git a/docs/release-notes/0.10/release-0.10.md b/docs/release-notes/0.10/release-0.10.md index ab363e7f9b..922673600d 100644 --- a/docs/release-notes/0.10/release-0.10.md +++ b/docs/release-notes/0.10/release-0.10.md @@ -4,7 +4,7 @@ We have also instrumented [code coverage](https://codecov.io/gh/dotnet/machinelearning) tools as part of our CI systems and will continue to push for stability and quality in the code. -One of the milestones that we have achieved in this release is moving `IDataView` into a new and separate assembly under `Microsoft.Data.DataView` namespace. For detailed documentation on `IDataView` please take a look at [IDataView design principles](https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewDesignPrinciples.md). +One of the milestones that we have achieved in this release is moving `IDataView` into a new and separate assembly under `Microsoft.Data.DataView` namespace. For detailed documentation on `IDataView` please take a look at [IDataView design principles](https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewDesignPrinciples.md). ### Installation @@ -27,7 +27,7 @@ Install-Package Microsoft.ML Below are a few of the highlights from this release. There are many other improvements in the API. -* DataView moved into a separate assembly and NuGet package +* DataView moved into a separate assembly and NuGet package ([#2220](https://github.com/dotnet/machinelearning/pull/2220)) * Improvements in the API for prediction engine @@ -38,20 +38,20 @@ Below are a few of the highlights from this release. There are many other improv - Better naming for NuGet packages based on the scenario (Recommendations) instead of the trainer's name * Support multiple 'feature columns' in FFM (Field-aware Factorization Machines) -([#2205](https://github.com/dotnet/machinelearning/pull/2205)) +([#2205](https://github.com/dotnet/machinelearning/pull/2205)) - Allows multiple feature column names in advanced trainer arguments so certain FFM trainers can support multiple multiple feature columns as explained in [#2179](https://github.com/dotnet/machinelearning/issues/2179) issue * Added support for loading map from file through dataview by using ValueMapperTransformer -([#2232](https://github.com/dotnet/machinelearning/pull/2232)) +([#2232](https://github.com/dotnet/machinelearning/pull/2232)) - This provides support for additional scenarios like a Text/NLP scenario ([#747](https://github.com/dotnet/machinelearning/issues/747)) in TensorFlowTransform where model's expected input is vector of integers * Added support for running benchmarks on .NET Framework in addition to .NET Core. -([#2157](https://github.com/dotnet/machinelearning/pull/2157)) - - Benchmarks can be based on [Microsoft.ML.Benchmarks](https://github.com/dotnet/machinelearning/tree/master/test/Microsoft.ML.Benchmarks) +([#2157](https://github.com/dotnet/machinelearning/pull/2157)) + - Benchmarks can be based on [Microsoft.ML.Benchmarks](https://github.com/dotnet/machinelearning/tree/main/test/Microsoft.ML.Benchmarks) - This fixes issues like [#1945](https://github.com/dotnet/machinelearning/issues/1945) -* Added Tensorflow unfrozen models support in GetModelSchema -([#2112](https://github.com/dotnet/machinelearning/pull/2112)) +* Added Tensorflow unfrozen models support in GetModelSchema +([#2112](https://github.com/dotnet/machinelearning/pull/2112)) - Fixes issue [#2102](https://github.com/dotnet/machinelearning/issues/2102) * Providing API for properly inspecting trees ([#2243](https://github.com/dotnet/machinelearning/pull/2243)) diff --git a/docs/release-notes/1.1.0/release-1.1.0.md b/docs/release-notes/1.1.0/release-1.1.0.md index 17931dd10b..44baea3935 100644 --- a/docs/release-notes/1.1.0/release-1.1.0.md +++ b/docs/release-notes/1.1.0/release-1.1.0.md @@ -1,6 +1,6 @@ -# [ML.NET](http://dot.net/ml) 1.1.0 +# [ML.NET](http://dot.net/ml) 1.1.0 ## **New Features** -- **Image type support in IDataView** +- **Image type support in IDataView** [PR#3263](https://github.com/dotnet/machinelearning/pull/3263) added support for in-memory image as a type in IDataView. Previously it was not possible to use an image directly in IDataView, and the user had to specify the file path @@ -14,16 +14,16 @@ [3460](https://github.com/dotnet/machinelearning/issues/3460), [2121](https://github.com/dotnet/machinelearning/issues/2121), [2495](https://github.com/dotnet/machinelearning/issues/2495), - [3784](https://github.com/dotnet/machinelearning/issues/3784). + [3784](https://github.com/dotnet/machinelearning/issues/3784). - Image type support in IDataView was a much requested feature by the users. + Image type support in IDataView was a much requested feature by the users. [Sample to convert gray scale image in-Memory](https://github.com/dotnet/machinelearning/blob/02a857a7646188fec2d1cba5e187a6c9d0838e23/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/ImageAnalytics/ConvertToGrayScaleInMemory.cs) | [Sample for custom mapping with in-memory using custom type](https://github.com/dotnet/machinelearning/blob/02a857a7646188fec2d1cba5e187a6c9d0838e23/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/CustomMappingWithInMemoryCustomType.cs) -- **Super-Resolution based Anomaly Detector (preview, please provide feedback)** +- **Super-Resolution based Anomaly Detector (preview, please provide feedback)** [PR#3693](https://github.com/dotnet/machinelearning/pull/3693) adds a new anomaly detection algorithm to the [Microsoft.ML.TimeSeries](https://www.nuget.org/packages/Microsoft.ML.TimeSeries/) @@ -44,11 +44,11 @@ SR | 0.601 | 0.670 | 0.634 | 2625 | 4370 | 3915 | WindowSize=64, BackAddWindowSize=5, LookaheadWindowSize=5, AveragingWindowSize=3, JudgementWindowSize=64, Threshold=0.45 [Sample for anomaly detection by - SRCNN](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/DetectAnomalyBySrCnn.cs) + SRCNN](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/DetectAnomalyBySrCnn.cs) | [Sample for anomaly detection by SRCNN using batch - prediction](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/DetectAnomalyBySrCnnBatchPrediction.cs) + prediction](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/DetectAnomalyBySrCnnBatchPrediction.cs) -- **Time Series Forecasting (preview, please provide feedback)** +- **Time Series Forecasting (preview, please provide feedback)** [PR#1900](https://github.com/dotnet/machinelearning/pull/1900) introduces a framework for time series forecasting models and exposes an API for Singular Spectrum Analysis(SSA) based forecasting model in the @@ -61,18 +61,18 @@ requested feature by the github community since September 2018. With this change [Microsoft.ML.TimeSeries](https://www.nuget.org/packages/Microsoft.ML.TimeSeries/) - nuget is feature complete for RTM. + nuget is feature complete for RTM. [Sample for - forecasting](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/Forecasting.cs) + forecasting](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/Forecasting.cs) | [Sample for forecasting using confidence - intervals](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/ForecastingWithConfidenceInterval.cs) + intervals](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries/ForecastingWithConfidenceInterval.cs) ## **Bug Fixes** ### Serious - **Math Kernel Library fails to load with latest libomp:** Fixed by [PR#3721](https://github.com/dotnet/machinelearning/pull/3721) this bug made - it impossible for anyone to check code into master branch because it was + it impossible for anyone to check code into main branch because it was causing build failures. - **Transform Wrapper fails at deserialization:** Fixed by @@ -80,13 +80,13 @@ affected first party(1P) customer. A model trained using [NimbusML](https://github.com/microsoft/NimbusML)(Python bindings for [ML.NET](http://dot.net/ml)) and then loaded for scoring/inferencing using - ML.NET will hit this bug. + ML.NET will hit this bug. - **Index out of bounds exception in KeyToVector transformer:** Fixed by [PR#3763](https://github.com/dotnet/machinelearning/pull/3763) this bug closes following github issues: [3757](https://github.com/dotnet/machinelearning/issues/3757),[1751](https://github.com/dotnet/machinelearning/issues/1751),[2678](https://github.com/dotnet/machinelearning/issues/2678). - It affected first party customer and also github users. + It affected first party customer and also github users. ### Other - Download images only when not present on disk and print warning messages when @@ -125,7 +125,7 @@ None - Sample for WithOnFitDelegate by [PR#3738](https://github.com/dotnet/machinelearning/pull/3738) - Sample for loading data using text loader using various techniques by - [PR#3793](https://github.com/dotnet/machinelearning/pull/3793) + [PR#3793](https://github.com/dotnet/machinelearning/pull/3793) ## **Remarks** - [Microsoft.ML.TensorFlow](https://www.nuget.org/packages/Microsoft.ML.TensorFlow/), diff --git a/docs/release-notes/1.2.0/release-1.2.0.md b/docs/release-notes/1.2.0/release-1.2.0.md index c6b703e434..8214ede8d8 100644 --- a/docs/release-notes/1.2.0/release-1.2.0.md +++ b/docs/release-notes/1.2.0/release-1.2.0.md @@ -1,6 +1,6 @@ # [ML.NET](http://dot.net/ml) 1.2.0 ## **General Availability** -- **Microsoft.ML.TimeSeries** +- **Microsoft.ML.TimeSeries** - Anomaly detection algorithms (Spike and Change Point): - Independent and identically distributed. - Singular spectrum analysis. @@ -10,17 +10,17 @@ - Prediction Engine for online learning - Enables updating time series model with new observations at scoring so that the user does not have to re-train the time series with old data each time. - [Samples](https://github.com/dotnet/machinelearning/tree/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries) + [Samples](https://github.com/dotnet/machinelearning/tree/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TimeSeries) -- **Microsoft.ML.OnnxTransformer** +- **Microsoft.ML.OnnxTransformer** Enables scoring of ONNX models in the learning pipeline. Uses ONNX Runtime v0.4. - - [Sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/ApplyOnnxModel.cs) -- **Microsoft.ML.TensorFlow** - Enables scoring of TensorFlow models in the learning pipeline. Uses TensorFlow v1.13. Very useful for image and text classification. Users can featurize images or text using DNN models and feed the result into a classical machine learning model like a decision tree or logistic regression trainer. + [Sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/ApplyOnnxModel.cs) - [Samples](https://github.com/dotnet/machinelearning/tree/master/docs/samples/Microsoft.ML.Samples/Dynamic/TensorFlow) +- **Microsoft.ML.TensorFlow** + Enables scoring of TensorFlow models in the learning pipeline. Uses TensorFlow v1.13. Very useful for image and text classification. Users can featurize images or text using DNN models and feed the result into a classical machine learning model like a decision tree or logistic regression trainer. + + [Samples](https://github.com/dotnet/machinelearning/tree/main/docs/samples/Microsoft.ML.Samples/Dynamic/TensorFlow) ## **New Features** - **Tree-based featurization** ([#3812](https://github.com/dotnet/machinelearning/pull/3812)) @@ -29,13 +29,13 @@ - The leaves it falls into. It's a binary vector with ones happens at the indexes of reached leaves, - The paths that the input vector passes before hitting the leaves, and - The reached leaves values. - + Here are two references. - [p. 9](https://www.csie.ntu.edu.tw/~r01922136/kaggle-2014-criteo.pdf) (a Kaggle solution adopted by FB below). - [Section 3](http://www.quinonero.net/Publications/predicting-clicks-facebook.pdf). (Facebook) - [Section of Entity-level personalization with GLMix](https://engineering.linkedin.com/blog/2019/04/ai-behind-linkedin-recruiter-search-and-recommendation-systems). (LinkedIn) - [Samples](https://github.com/dotnet/machinelearning/tree/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TreeFeaturization) + [Samples](https://github.com/dotnet/machinelearning/tree/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/TreeFeaturization) - **Microsoft.Extensions.ML integration package.** ([#3827](https://github.com/dotnet/machinelearning/pull/3827)) @@ -51,7 +51,7 @@ ### Serious - **Time series Sequential Transform needs to have a binding mechanism:** This bug made it impossible to use time series in NimbusML. ([#3875](https://github.com/dotnet/machinelearning/pull/3875)) -- **Build errors resulting from upgrading to VS2019 compilers:** The default CMAKE_C_FLAG for debug configuration sets /ZI to generate a PDB capable of edit and continue. In the new compilers, this is incompatible with /guard:cf which we set for security reasons. ([#3894](https://github.com/dotnet/machinelearning/pull/3894)) +- **Build errors resulting from upgrading to VS2019 compilers:** The default CMAKE_C_FLAG for debug configuration sets /ZI to generate a PDB capable of edit and continue. In the new compilers, this is incompatible with /guard:cf which we set for security reasons. ([#3894](https://github.com/dotnet/machinelearning/pull/3894)) - **LightGBM Evaluation metric parameters:** In LightGbm EvaluateMetricType where if a user specified EvaluateMetricType.Default, the metric would not get added to the options Dictionary, and LightGbmWrappedTraining would throw because of that. ([#3815](https://github.com/dotnet/machinelearning/pull/3815)) @@ -66,10 +66,10 @@ None - Fixes the Hardcoded Sigmoid value from -0.5 to the value specified during training. ([#3850](https://github.com/dotnet/machinelearning/pull/3850)) - Fix TextLoader constructor and add exception message. ([#3788](https://github.com/dotnet/machinelearning/pull/3788)) - Introduce the `FixZero` argument to the LogMeanVariance normalizer. ([#3916](https://github.com/dotnet/machinelearning/pull/3916)) -- Ensembles trainer now work with ITrainerEstimators instead of ITrainers. ([#3796](https://github.com/dotnet/machinelearning/pull/3796)) +- Ensembles trainer now work with ITrainerEstimators instead of ITrainers. ([#3796](https://github.com/dotnet/machinelearning/pull/3796)) - LightGBM Unbalanced Data Argument. ([#3925](https://github.com/dotnet/machinelearning/pull/3925)) - Tree based trainers implement ICanGetSummaryAsIDataView. ([#3892](https://github.com/dotnet/machinelearning/pull/3892)) - + - **CLI and AutoML API** - Internationalization fixes to generate proper [ML.NET](dot.net/ml) C# code. ([#3725](https://github.com/dotnet/machinelearning/pull/3725)) - Automatic Cross Validation for small datasets, and CV stability fixes. ([#3794](https://github.com/dotnet/machinelearning/pull/3794)) diff --git a/docs/release-notes/1.3.1/release-1.3.1.md b/docs/release-notes/1.3.1/release-1.3.1.md index 30c2e05525..ae210deaee 100644 --- a/docs/release-notes/1.3.1/release-1.3.1.md +++ b/docs/release-notes/1.3.1/release-1.3.1.md @@ -1,7 +1,7 @@ # [ML.NET](http://dot.net/ml) 1.3.1 ## **New Features** -- **Deep Neural Networks Training (PREVIEW)** ([#4057](https://github.com/dotnet/machinelearning/pull/4057)) +- **Deep Neural Networks Training (PREVIEW)** ([#4057](https://github.com/dotnet/machinelearning/pull/4057)) Introduces in-preview 0.15.1 `Microsoft.ML.DNN` package that enables full DNN model retraining and transfer learning in .NET using C# bindings for tensorflow provided by Tensorflow .NET. The goal of this package is to allow high level DNN training and scoring tasks such as image classification, text classification, object detection, etc using simple yet powerful APIs that are framework agnostic but currently they only uses Tensorflow as the backend. The below APIs are in early preview and we hope to get customer feedback that we can incorporate in the next iteration. ![DNN stack](dnn_stack.jpg) @@ -43,21 +43,21 @@ [Design specification](https://github.com/dotnet/machinelearning/blob/cd591dd492833964b6829e8bb2411fb81665ac6d/docs/specs/DNN/dnn_api_spec.md) - [Image classification (Inception V3) sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/InceptionV3TransferLearning.cs) + [Image classification (Inception V3) sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/InceptionV3TransferLearning.cs) - [Image classification (Resnet V2 101) sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearning.cs) + [Image classification (Resnet V2 101) sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearning.cs) -- **Database Loader (PREVIEW)** ([#4035](https://github.com/dotnet/machinelearning/pull/4035)) - Introduces Database loader that enables training on databases. This loader supports any relational database supported by System.Data in .NET Framework or .NET Core, meaning that you can use many RDBMS such as SQL Server, Azure SQL Database, Oracle, PostgreSQL, MySQL, etc. This feature is in early preview and can be accessed via `Microsoft.ML.Experimental` nuget. +- **Database Loader (PREVIEW)** ([#4035](https://github.com/dotnet/machinelearning/pull/4035)) + Introduces Database loader that enables training on databases. This loader supports any relational database supported by System.Data in .NET Framework or .NET Core, meaning that you can use many RDBMS such as SQL Server, Azure SQL Database, Oracle, PostgreSQL, MySQL, etc. This feature is in early preview and can be accessed via `Microsoft.ML.Experimental` nuget. - [Design specification](https://github.com/dotnet/machinelearning/pull/3857) - - [Sample](https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/DatabaseLoaderTests.cs) + [Design specification](https://github.com/dotnet/machinelearning/pull/3857) + + [Sample](https://github.com/dotnet/machinelearning/blob/main/test/Microsoft.ML.Tests/DatabaseLoaderTests.cs) ```cs public static DatabaseLoader CreateDatabaseLoader(this DataOperationsCatalog catalog, params DatabaseLoader.Column[] columns) - ``` + ``` ## **Bug Fixes** ### Serious @@ -82,7 +82,7 @@ None - Farewell to the Static API ([4009](https://github.com/dotnet/machinelearning/pull/4009)) - AVX and FMA intrinsics in Factorization Machine ([3940](https://github.com/dotnet/machinelearning/pull/3940)) - + ## **CLI and AutoML API** - Bug fixes. diff --git a/docs/release-notes/1.4.0-preview/release-1.4.0-preview.md b/docs/release-notes/1.4.0-preview/release-1.4.0-preview.md index 003fbcde6c..d51a683409 100644 --- a/docs/release-notes/1.4.0-preview/release-1.4.0-preview.md +++ b/docs/release-notes/1.4.0-preview/release-1.4.0-preview.md @@ -1,7 +1,7 @@ # [ML.NET](http://dot.net/ml) 1.4.0-preview ## **New Features** -- **Deep Neural Networks Training (0.16.0-preview)** ([#4151](https://github.com/dotnet/machinelearning/pull/4151)) +- **Deep Neural Networks Training (0.16.0-preview)** ([#4151](https://github.com/dotnet/machinelearning/pull/4151)) Improves the in-preview `ImageClassification` API further: - Increases DNN training speed by ~10x compared to the same API in 0.15.1 release. @@ -39,18 +39,18 @@ [Design specification](https://github.com/dotnet/machinelearning/blob/cd591dd492833964b6829e8bb2411fb81665ac6d/docs/specs/DNN/dnn_api_spec.md) - [Sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) + [Sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) -- **Database Loader (0.16.0-preview)** ([#4070](https://github.com/dotnet/machinelearning/pull/4070),[#4091](https://github.com/dotnet/machinelearning/pull/4091),[#4138](https://github.com/dotnet/machinelearning/pull/4138)) +- **Database Loader (0.16.0-preview)** ([#4070](https://github.com/dotnet/machinelearning/pull/4070),[#4091](https://github.com/dotnet/machinelearning/pull/4091),[#4138](https://github.com/dotnet/machinelearning/pull/4138)) Additional DatabaseLoader support: - Support DBNull. - Add `CreateDatabaseLoader` to map columns from a .NET Type. - Read multiple columns into a single vector - [Design specification](https://github.com/dotnet/machinelearning/pull/3857) - - [Sample](https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/getting-started/DatabaseLoader) + [Design specification](https://github.com/dotnet/machinelearning/pull/3857) + + [Sample](https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/DatabaseLoader) ```cs string connectionString = "YOUR_RELATIONAL_DATABASE_CONNECTION_STRING"; @@ -58,10 +58,10 @@ string commandText = "SELECT * from URLClicks"; DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader(); - - DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, - connectionString, - commandText); + + DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, + connectionString, + commandText); IDataView dataView = loader.Load(dbSource); ``` @@ -83,7 +83,7 @@ None ## **Enhancements** None. - + ## **CLI and AutoML API** - AutoML codebase has moved from feature branch to master branch ([#3882](https://github.com/dotnet/machinelearning/pull/3882)). diff --git a/docs/release-notes/1.4.0-preview2/release-1.4.0-preview2.md b/docs/release-notes/1.4.0-preview2/release-1.4.0-preview2.md index 584e27b78d..cd6e6eb697 100644 --- a/docs/release-notes/1.4.0-preview2/release-1.4.0-preview2.md +++ b/docs/release-notes/1.4.0-preview2/release-1.4.0-preview2.md @@ -10,9 +10,9 @@ - GPU support on Windows and Linux ([#4270](https://github.com/dotnet/machinelearning/pull/4270), [#4277](https://github.com/dotnet/machinelearning/pull/4277)) - Upgraded [TensorFlow .NET](https://github.com/SciSharp/TensorFlow.NET) version to 0.11.3 ([#4205](https://github.com/dotnet/machinelearning/pull/4205)) - [In-memory image inferencing sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) - [Early stopping sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningEarlyStopping.cs) - [GPU samples](https://github.com/dotnet/machinelearning/tree/master/docs/samples/Microsoft.ML.Samples.GPU) + [In-memory image inferencing sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) + [Early stopping sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/ImageClassification/ResnetV2101TransferLearningEarlyStopping.cs) + [GPU samples](https://github.com/dotnet/machinelearning/tree/main/docs/samples/Microsoft.ML.Samples.GPU) - **New ONNX Exporters (1.4.0-preview2)** - LpNormNormalizing transformer ([#4161](https://github.com/dotnet/machinelearning/pull/4161)) @@ -39,13 +39,13 @@ None. ## **Enhancements** - Improve exception message in LightGBM ([#4214](https://github.com/dotnet/machinelearning/pull/4214)) - FeaturizeText should allow only outputColumnName to be defined ([#4211](https://github.com/dotnet/machinelearning/pull/4211)) -- Fix NgramExtractingTransformer GetSlotNames to not allocate a new delegate on every invoke ([#4247](https://github.com/dotnet/machinelearning/pull/4247)) +- Fix NgramExtractingTransformer GetSlotNames to not allocate a new delegate on every invoke ([#4247](https://github.com/dotnet/machinelearning/pull/4247)) - Resurrect broken code coverage build and re-enable code coverage for pull request ([#4261](https://github.com/dotnet/machinelearning/pull/4261)) - NimbusML entrypoint for permutation feature importance ([#4232](https://github.com/dotnet/machinelearning/pull/4232)) - Reuse memory when copying outputs from TensorFlow graph ([#4260](https://github.com/dotnet/machinelearning/pull/4260)) - DateTime to DateTime standard conversion ([#4273](https://github.com/dotnet/machinelearning/pull/4273)) - CodeCov version upgraded to 1.7.2 ([#4291](https://github.com/dotnet/machinelearning/pull/4291)) - + ## **CLI and AutoML API** None. diff --git a/docs/release-notes/1.4.0/release-1.4.0.md b/docs/release-notes/1.4.0/release-1.4.0.md index 2b343cc958..ac62441b03 100644 --- a/docs/release-notes/1.4.0/release-1.4.0.md +++ b/docs/release-notes/1.4.0/release-1.4.0.md @@ -1,10 +1,10 @@ # [ML.NET](http://dot.net/ml) 1.4.0 ## **New Features** -- **General Availability of [Image Classification API](https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.visioncatalog.imageclassification?view=ml-dotnet#Microsoft_ML_VisionCatalog_ImageClassification_Microsoft_ML_MulticlassClassificationCatalog_MulticlassClassificationTrainers_System_String_System_String_System_String_System_String_Microsoft_ML_IDataView_)** +- **General Availability of [Image Classification API](https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.visioncatalog.imageclassification?view=ml-dotnet#Microsoft_ML_VisionCatalog_ImageClassification_Microsoft_ML_MulticlassClassificationCatalog_MulticlassClassificationTrainers_System_String_System_String_System_String_System_String_Microsoft_ML_IDataView_)** Introduces [`Microsoft.ML.Vision`](https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.vision?view=ml-dotnet) package that enables image classification by leveraging an existing pre-trained deep neural network model. Here the API trains the last classification layer using TensorFlow by using its C# bindings from TensorFlow .NET. This is a high level API that is simple yet powerful. Below are some of the key features: - - `GPU training`: Supported on Windows and Linux, more information [here](https://github.com/dotnet/machinelearning/blob/master/docs/api-reference/tensorflow-usage.md). - - `Early stopping`: Saves time by stopping training automatically when model has been stabelized. + - `GPU training`: Supported on Windows and Linux, more information [here](https://github.com/dotnet/machinelearning/blob/main/docs/api-reference/tensorflow-usage.md). + - `Early stopping`: Saves time by stopping training automatically when model has been stabelized. - `Learning rate scheduler`: Learning rate is an integral and potentially difficult part of deep learning. By providing learning rate schedulers, we give users a way to optimize the learning rate with high initial values which can decay over time. High initial learning rate helps to introduce randomness into the system, allowing the Loss function to better find the global minima. While the decayed learning rate helps to stabilize the loss over time. We have implemented [Exponential Decay Learning rate scheduler](https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/exponential_decay) and [Polynomial Decay Learning rate scheduler](https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/polynomial_decay). - `Pre-trained DNN Architectures`: The supported DNN architectures used internally for `transfer learning` are below: - Inception V3. @@ -24,17 +24,17 @@ #### Samples - [Defaults](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ImageClassificationDefault.cs) + [Defaults](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ImageClassificationDefault.cs) - [Learning rate scheduling](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/LearningRateSchedulingCifarResnetTransferLearning.cs) + [Learning rate scheduling](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/LearningRateSchedulingCifarResnetTransferLearning.cs) - [Early stopping](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ResnetV2101TransferLearningEarlyStopping.cs) + [Early stopping](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ResnetV2101TransferLearningEarlyStopping.cs) - [ResNet V2 101 train-test split](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) + [ResNet V2 101 train-test split](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Trainers/MulticlassClassification/ImageClassification/ResnetV2101TransferLearningTrainTestSplit.cs) - [End-to-End](https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/getting-started/DeepLearning_ImageClassification_Training) + [End-to-End](https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/DeepLearning_ImageClassification_Training) -- **General Availability of [Database Loader](https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.databaseloadercatalog?view=ml-dotnet)** +- **General Availability of [Database Loader](https://docs.microsoft.com/en-us/dotnet/api/microsoft.ml.databaseloadercatalog?view=ml-dotnet)** The database loader enables to load data from databases into the `IDataView` and therefore enables model training directly against relational databases. This loader supports any relational database provider supported by System.Data in .NET Core or .NET Framework, meaning that you can use any RDBMS such as SQL Server, Azure SQL Database, Oracle, SQLite, PostgreSQL, MySQL, Progress, etc. It is important to highlight that in the same way as when training from files, when training with a database ML .NET also supports data streaming, meaning that the whole database doesn’t need to fit into memory, it’ll be reading from the database as it needs so you can handle very large databases (i.e. 50GB, 100GB or larger). @@ -61,20 +61,20 @@ public string FeedbackText; public string Label; } - ``` + ``` + + [Design specification](https://github.com/dotnet/machinelearning/pull/3857) - [Design specification](https://github.com/dotnet/machinelearning/pull/3857) - [Sample](https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/getting-started/DatabaseLoader) [How to doc](https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/load-data-ml-net#load-data-from-a-relational-database) -- **General Availability of PredictionEnginePool for scalable deployment** +- **General Availability of PredictionEnginePool for scalable deployment** When deploying an ML model into multi-threaded and scalable .NET Core web applications and services (such as ASP .NET Core web apps, WebAPIs or an Azure Function) it is recommended to use the PredictionEnginePool instead of directly creating the PredictionEngine object on every request due to performance and scalability reasons. For further background information on why the PredictionEnginePool is recommended, read [this](https://devblogs.microsoft.com/cesardelatorre/how-to-optimize-and-run-ml-net-models-on-scalable-asp-net-core-webapis-or-web-apps/) blog post. - + [Sample](https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/end-to-end-apps/ScalableMLModelOnWebAPI-IntegrationPkg) -- **General Availability of Enhanced for .NET Core 3.0** +- **General Availability of Enhanced for .NET Core 3.0** This means ML .NET can take advantage of the new features when running in a .NET Core 3.0 application. The first new feature we are using is the new hardware intrinsics feature, which allows .NET code to accelerate math operations by using processor specific instructions. ## **Bug Fixes** diff --git a/docs/release-notes/1.5.0-preview/release-1.5.0-preview.md b/docs/release-notes/1.5.0-preview/release-1.5.0-preview.md index d445544af4..55a928fefb 100644 --- a/docs/release-notes/1.5.0-preview/release-1.5.0-preview.md +++ b/docs/release-notes/1.5.0-preview/release-1.5.0-preview.md @@ -3,7 +3,7 @@ ## **New Features (IN-PREVIEW, please provide feedback)** - **Export-to-ONNX for below components:** - WordTokenizingTransformer ([#4451](https://github.com/dotnet/machinelearning/pull/4451)) - - NgramExtractingTransformer ([#4451](https://github.com/dotnet/machinelearning/pull/4451)) + - NgramExtractingTransformer ([#4451](https://github.com/dotnet/machinelearning/pull/4451)) - OptionalColumnTransform ([#4454](https://github.com/dotnet/machinelearning/pull/4454)) - KeyToValueMappingTransformer ([#4455](https://github.com/dotnet/machinelearning/pull/4455)) - LbfgsMaximumEntropyMulticlassTrainer ([4462](https://github.com/dotnet/machinelearning/pull/4462)) @@ -17,13 +17,13 @@ - **DateTime Transformer** ([#4521](https://github.com/dotnet/machinelearning/pull/4521)) - **Loader and Saver for [SVMLight file format](http://svmlight.joachims.org/)** ([#4190](https://github.com/dotnet/machinelearning/pull/4190)) - - [Sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/DataOperations/LoadingSvmLight.cs) -- **Expression transformer** ([#4548](https://github.com/dotnet/machinelearning/pull/4548)) + + [Sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/DataOperations/LoadingSvmLight.cs) +- **Expression transformer** ([#4548](https://github.com/dotnet/machinelearning/pull/4548)) The expression transformer takes the expression in the form of text using syntax of a simple expression language, and performs the operation defined in the expression on the input columns in each row of the data. The transformer supports having a vector input column, in which case it applies the expression to each slot of the vector independently. The expression language is extendable to user defined operations. - - [Sample](https://github.com/dotnet/machinelearning/blob/master/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Expression.cs) - + + [Sample](https://github.com/dotnet/machinelearning/blob/main/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Expression.cs) + ## **Bug Fixes** - Fix using permutation feature importance with Binary Prediction Transformer and CalibratedModelParametersBase loaded from disk. ([#4306](https://github.com/dotnet/machinelearning/pull/4306)) - Fixed model saving and loading of OneVersusAllTrainer to include SoftMax. ([#4472](https://github.com/dotnet/machinelearning/pull/4472)) @@ -55,7 +55,7 @@ - Create SafeBoosterHandle and SafeDataSetHandle. ([#4539](https://github.com/dotnet/machinelearning/pull/4539)) - Add IterationDataAttribute. ([#4561](https://github.com/dotnet/machinelearning/pull/4561)) - Add tests for ParameterSet equality. ([#4550](https://github.com/dotnet/machinelearning/pull/4550)) -- Add a test handler for AppDomain.UnhandledException. ([#4557](https://github.com/dotnet/machinelearning/commit/f1f8942a8272a9c87373d11bc89467461c8ecad1)) +- Add a test handler for AppDomain.UnhandledException. ([#4557](https://github.com/dotnet/machinelearning/commit/f1f8942a8272a9c87373d11bc89467461c8ecad1)) ## **Breaking Changes** None diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/ModelOperations/OnnxConversion.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/ModelOperations/OnnxConversion.cs index 2296e0cd29..cbd4162385 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/ModelOperations/OnnxConversion.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/ModelOperations/OnnxConversion.cs @@ -74,7 +74,7 @@ public static void Example() //However, you can also specify a custom OpSet version by using the following code //Currently, we support OpSet versions 9 for most transformers, but there are certain transformers that require a higher OpSet version //Please refer to the following link for most update information of what OpSet version we support - //https://github.com/dotnet/machinelearning/blob/master/src/Microsoft.ML.OnnxConverter/OnnxExportExtensions.cs + //https://github.com/dotnet/machinelearning/blob/main/src/Microsoft.ML.OnnxConverter/OnnxExportExtensions.cs int customOpSetVersion = 9; using (var stream = File.Create("sample_onnx_conversion_2.onnx")) mlContext.Model.ConvertToOnnx(transformer, originalData, customOpSetVersion, stream); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToBinaryVector.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToBinaryVector.cs index 57ae091124..9933ef030e 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToBinaryVector.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToBinaryVector.cs @@ -8,11 +8,11 @@ namespace Samples.Dynamic class MapKeyToBinaryVector { /// This example demonstrates the use of MapKeyToVector by mapping keys to - /// floats[] of 0 and 1, representing the number in binary format. + /// floats[] of 0 and 1, representing the number in binary format. /// Because the ML.NET KeyType maps the missing value to zero, counting /// starts at 1, so the uint values converted to KeyTypes will appear - /// skewed by one. - /// See https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewTypeSystem.md#key-types + /// skewed by one. + /// See https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types public static void Example() { // Create a new ML context, for ML.NET operations. It can be used for diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToValueMultiColumn.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToValueMultiColumn.cs index bc7e2fded9..41eb6929b4 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToValueMultiColumn.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToValueMultiColumn.cs @@ -7,7 +7,7 @@ namespace Samples.Dynamic { /// This example demonstrates the use of the ValueToKeyMappingEstimator, by /// mapping KeyType values to the original strings. For more on ML.NET KeyTypes - /// see: https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewTypeSystem.md#key-types + /// see: https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types public class MapKeyToValueMultiColumn { public static void Example() @@ -26,7 +26,7 @@ public static void Example() // by ML.NET API. var dataView = mlContext.Data.LoadFromEnumerable(examples); - // Create a pipeline. + // Create a pipeline. var pipeline = // Convert the string labels into key types. mlContext.Transforms.Conversion.MapValueToKey("Label") @@ -34,8 +34,8 @@ public static void Example() .Append(mlContext.MulticlassClassification.Trainers. SdcaMaximumEntropy()); - // Train the model and do predictions on same data set. - // Typically predictions would be in a different, validation set. + // Train the model and do predictions on same data set. + // Typically predictions would be in a different, validation set. var dataWithPredictions = pipeline.Fit(dataView).Transform(dataView); // At this point, the Label column is transformed from strings, to diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVector.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVector.cs index f9a4809fa5..fd1646f014 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVector.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVector.cs @@ -11,7 +11,7 @@ class MapKeyToVector /// This example demonstrates the use of MapKeyToVector by mapping keys to /// floats[]. Because the ML.NET KeyType maps the missing value to zero, /// counting starts at 1, so the uint values converted to KeyTypes will - /// appear skewed by one. See https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewTypeSystem.md#key-types + /// appear skewed by one. See https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types public static void Example() { // Create a new ML context, for ML.NET operations. It can be used for @@ -50,7 +50,7 @@ public static void Example() // Fits the pipeline to the data. IDataView transformedData = pipeline.Fit(data).Transform(data); - + // Getting the resulting data as an IEnumerable. // This will contain the newly created columns. IEnumerable features = mlContext.Data.CreateEnumerable< @@ -62,7 +62,7 @@ public static void Example() foreach (var featureRow in features) Console.WriteLine(featureRow.Timeframe + " " + string.Join(',', featureRow.TimeframeVector.Select(x=>x)) + " " - + string.Join(',', featureRow.PartsCount.Select(x => x)) + + + string.Join(',', featureRow.PartsCount.Select(x => x)) + " " + string.Join(',', featureRow.PartsNoCount.Select( x => x))); diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVectorMultiColumn.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVectorMultiColumn.cs index 606c371497..aa8df148aa 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVectorMultiColumn.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapKeyToVectorMultiColumn.cs @@ -10,8 +10,8 @@ public class MapKeyToVectorMultiColumn /// This example demonstrates the use of MapKeyToVector by mapping keys to /// floats[] for multiple columns at once. Because the ML.NET KeyType maps /// the missing value to zero, counting starts at 1, so the uint values - /// converted to KeyTypes will appear skewed by one. - /// See https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewTypeSystem.md#key-types + /// converted to KeyTypes will appear skewed by one. + /// See https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types public static void Example() { // Create a new ML context, for ML.NET operations. It can be used for diff --git a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapValueToKeyMultiColumn.cs b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapValueToKeyMultiColumn.cs index 8e8c0e62bd..6d94eb53c6 100644 --- a/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapValueToKeyMultiColumn.cs +++ b/docs/samples/Microsoft.ML.Samples/Dynamic/Transforms/Conversion/MapValueToKeyMultiColumn.cs @@ -8,7 +8,7 @@ public static class MapValueToKeyMultiColumn { /// This example demonstrates the use of the ValueToKeyMappingEstimator, by /// mapping strings to KeyType values. For more on ML.NET KeyTypes see: - /// https://github.com/dotnet/machinelearning/blob/master/docs/code/IDataViewTypeSystem.md#key-types + /// https://github.com/dotnet/machinelearning/blob/main/docs/code/IDataViewTypeSystem.md#key-types /// It is possible to have multiple values map to the same category. public static void Example() { @@ -64,7 +64,7 @@ public static void Example() // are not found in the lookup IDataView they will get mapped to the // missing value, 0. The keyData are shared among the columns, therefore // the keys are not contiguous for the column. Create the lookup map - // data IEnumerable. + // data IEnumerable. var lookupData = new[] { new LookupMap { Key = "0-4yrs" }, new LookupMap { Key = "6-11yrs" }, diff --git a/docs/specs/mlnet-cli/MLNET-CLI-Specs.md b/docs/specs/mlnet-cli/MLNET-CLI-Specs.md index 6a4f13469a..077b6308ac 100644 --- a/docs/specs/mlnet-cli/MLNET-CLI-Specs.md +++ b/docs/specs/mlnet-cli/MLNET-CLI-Specs.md @@ -9,7 +9,7 @@ The CLI will be branded as the ML.NET CLI since this CLI will also have addition The .NET AutoML API (.NET based) will be part of the [ML.NET](https://github.com/dotnet/machinelearning) API. AutoML features will be used for certain important foundational features of the ML.NET CLI. -This specs-doc focuses most of all on the CLI features related to AutoML, but it will also consider (in less detail) the scenarios where AutoML is not needed, so the CLI syntax will be consistent end-to-end for all the possible scenarios in the future. +This specs-doc focuses most of all on the CLI features related to AutoML, but it will also consider (in less detail) the scenarios where AutoML is not needed, so the CLI syntax will be consistent end-to-end for all the possible scenarios in the future. # Problem to solve @@ -17,9 +17,9 @@ Customers (.NET developers) have tolds us through many channels that they can ge The subset of .NET developers who at the same time are skilled on data science and machine learning in general is very small compared to the total number of regular .NET developers. -We need a way to enable regular .NET developers to easily use [ML.NET](https://github.com/dotnet/machinelearning) to create custom models solving typical ML scenarios in the enterprise. +We need a way to enable regular .NET developers to easily use [ML.NET](https://github.com/dotnet/machinelearning) to create custom models solving typical ML scenarios in the enterprise. -If we don't provide a really simple way to use [ML.NET](https://github.com/dotnet/machinelearning) for regular developers (almost no data science knowledge at all), then we won't be able to really "democratize" machine learning for .NET developers. +If we don't provide a really simple way to use [ML.NET](https://github.com/dotnet/machinelearning) for regular developers (almost no data science knowledge at all), then we won't be able to really "democratize" machine learning for .NET developers. ## Evidence @@ -66,24 +66,24 @@ The business goals are the following, depending on the possible scenarios: The goals for the features is to automate the following steps when building a model to achieve the above business goals: -**Foundational features:** +**Foundational features:** - Provide an end-to-end **ML.NET CLI** for developers (i.e. *"mlnet new"*) to generate either the final trained model and the pipeline's C#/ML.NET implementation code in a similar fashion to the [.NET Core CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/?tabs=netcore2x). The CLI is also a foundation upon which higher-level tools, such as Integrated Development Environments (IDEs) can rest. - Automatic selection of best columns (input variables) to be used by the model -- Automatic featurization and feature engineering +- Automatic featurization and feature engineering - Automatic learner sweeping and selection - Automatic hyperparameter sweeping and selection - + # Solution -The solution that can target any kind of developer and fits especially well when generating code is a CLI (Command-Line Interface). +The solution that can target any kind of developer and fits especially well when generating code is a CLI (Command-Line Interface). The main support reasons are: - A CLI can be the foundation where other higher level tooling (UI, IDEs) can also rest on. - A CLI makes sense as a tool for "code generation". For the end-user experience, just using a C# API to generate C# code would not make sense and would feel a bit weird for the developer experience used to .NET approaches. -- A CLI is aligned to modern cross-platform frameworks experience such as .NET Core, Python, Node, etc. +- A CLI is aligned to modern cross-platform frameworks experience such as .NET Core, Python, Node, etc. ## Positioning the CLI and AutoML in ML.NET @@ -110,7 +110,7 @@ The .NET AutoML API will be used for the most important foundational features th - The CLI proposed here will not provide for “continue sweeping” after sweeping has ended. - When running locally with the by default behavior (no Azure), the CLI will be able to work without needing to make any remote service call or requiring any authentication from the user. - The CLI will provide feedback output (such as % work done or high level details on what's happening under the covers) while working on the long-running tasks. -- The ML.NET CLI will be aligned and integrated to the [.NET Core CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/?tabs=netcore2x). A good approach is to implement the ML.NET CLI as a [.NET Core Global Tool](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools) (i.e. named "mlnet" package) on top of the "dotnet CLI". +- The ML.NET CLI will be aligned and integrated to the [.NET Core CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/?tabs=netcore2x). A good approach is to implement the ML.NET CLI as a [.NET Core Global Tool](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools) (i.e. named "mlnet" package) on top of the "dotnet CLI". - [System-Command-Line](https://github.com/dotnet/command-line-api) package can precisely help on those typical CLI console apps features (CLI plumbing) so if can be implemented a lot easier than by implementing a CLI app from scratch in features like command line parsing, invocation and rendering of terminal output. Otherwise, a CLI implementation starting from scratch can be significantly more costly to develop. ### CLI default behaviour and overridability @@ -136,13 +136,13 @@ The conditions for each version are incremental on top of previous versions. - NuGet package available at any private NuGet feed ([Azure DevOps?](https://docs.microsoft.com/en-us/azure/devops/artifacts/get-started-nuget?view=azure-devops&tabs=new-nav) [MyGet?](https://docs.myget.org/docs/reference/security)) with daily drops from CI/CD pipelines. -- Add telemetry for the CLI NuGet package. +- Add telemetry for the CLI NuGet package. - Minimum MVP functionality for users to test custom datasets. Implementation of the CLI arguments especified for v0.1 in the syntax section and code generation section. - Documentation: Have needed documentation for users to get started autonomously and provide feedback (Installation, getting started and test without help from the dev team). -- Test with ML.NET Samples: Quality of generated code/models targeting the samples should improve the current published samples. +- Test with ML.NET Samples: Quality of generated code/models targeting the samples should improve the current published samples. Nice to have for v0.1: @@ -188,7 +188,7 @@ Nice to have for v0.1: - `weight-column` // indicates the weight/importance of training example. Related: `sample_weight` argument for training data such as in [Python AutoML here](https://docs.microsoft.com/en-us/python/api/azureml-train-automl/azureml.train.automl.automl?view=azure-ml-py). - Add additonal commands to do *"machine learning without code"*: - - *train*: It will only generate the best model .ZIP file. For example: + - *train*: It will only generate the best model .ZIP file. For example: - `mlnet train --ml-task Regression --dataset "/MyDataSets/Sales.csv"` - *predict*: Having a serialized model .ZIP file, you can test a single prediction. For example: @@ -229,7 +229,7 @@ Nice to have for v0.1: ## Tool name -**mlnet** +**mlnet** ## Installing the tool @@ -255,9 +255,9 @@ mlnet - A new project or group of projects (by default, a single console app) with the generated .NET code. - The "best model" (or multiple "best models") as serialized files. -- An analysis report of the generated models. +- An analysis report of the generated models. -By default (with no app template parameter), the CLI will create a single console application containing either the training code and the model scoring code. However, in next ML.NET CLI versions (heading v1.0), when the user provides an app-type template argument (such as `mlnet new web`), it will be able to generate different application type projects (web, console, desktop, Unity, etc.) for the model scoring code. +By default (with no app template parameter), the CLI will create a single console application containing either the training code and the model scoring code. However, in next ML.NET CLI versions (heading v1.0), when the user provides an app-type template argument (such as `mlnet new web`), it will be able to generate different application type projects (web, console, desktop, Unity, etc.) for the model scoring code. ## Examples @@ -293,7 +293,7 @@ Create and train a model based on parameters specified in the .rsp file plus mor (*Release v1.0 examples*) -CLI command specifying to run AutoML compute in Azure's cloud +CLI command specifying to run AutoML compute in Azure's cloud ` mlnet new --ml-task BinaryClassification --dataset "/MyDataSets/Cars.csv" --label-column-name "InsuranceRisk" --azure-automl-service-key "key-value"` @@ -304,7 +304,7 @@ Syntax should be aligned to [dotnet new](https://docs.microsoft.com/en-us/dotnet #### Syntax ```console -mlnet new +mlnet new --------------- (v0.1) ------------------- @@ -380,7 +380,7 @@ There should be a pre-validation of the arguments with basic rules in the CLI to `--ml-task` (string) (*Release 0.1*) -A single string providing the ML problem to solve. For instance, any of the following depending on the supported tasks in .NET AutoML: +A single string providing the ML problem to solve. For instance, any of the following depending on the supported tasks in .NET AutoML: *Release 0.1* - `regression` - Choose if the ML Model will be used to predict a numeric value @@ -417,7 +417,7 @@ This argument provides the filepath to either one of the following: File path pointing to the test dataset file, for example when using a 80% - 20% approach when making regular validations to obtain accuracy metrics. -If using `--test-dataset`, then `--dataset` is also required. +If using `--test-dataset`, then `--dataset` is also required. The `--test-dataset` argument is optional unless the --validation-dataset is used. In that case, the user must use the three arguments. @@ -431,7 +431,7 @@ If using a `validation dataset`, this is how the behaviour should be: - The `test-dataset` and `--dataset` arguments are also required. -- The `validation-dataset` dataset is used to estimate prediction error for model selection. +- The `validation-dataset` dataset is used to estimate prediction error for model selection. - The `test-dataset` is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis. @@ -439,7 +439,7 @@ Basically, when using a `validation dataset` plus the `test dataset`, the valida 1. In the first part you just look at your models and select the best performing approach using the validation data (=validation) 2. Then you estimate the accuracy of the selected approach (=test). - + Hence, the separation of data could be 80/10/10 or 75/15/10. For example: - `training-dataset` file should have 75% of the data. @@ -452,7 +452,7 @@ In any case, those percentages will be decided by the user using the CLI who wil `--label-column-name` (string) (*Release 0.1*) -With this argument, a specifc objective/target column (the variable that you want to predict) can be specified by using the column's name set in the dataset's header. +With this argument, a specifc objective/target column (the variable that you want to predict) can be specified by using the column's name set in the dataset's header. If you do not explicitly specify a label column, the CLI will automatically infer what's the label column in the dataset (To be implemented in v0.2 or v1.0). @@ -475,11 +475,11 @@ This argument is used only for supervised ML task such as a *classification prob `--has-header` (bool) (*Release 0.1*) Specify if the dataset file(s) have a header row. -Possible values are: +Possible values are: - `true` - `false` -The by default value is `true`. +The by default value is `true`. In order to use the `--label-column-name` argument you need to have a header in the file. @@ -498,7 +498,7 @@ Therefore, if `--max-exploration-time` is very short (say less than 1 minute), t `--name` (string) (*Release 0.1*) -The name for the created output project or solution. If no name is specified, the name 'Sample' is used. +The name for the created output project or solution. If no name is specified, the name 'Sample' is used. The ML.NET model file (.ZIP file) will get the same name, as well. @@ -514,11 +514,11 @@ Location/folder to place the generated output. The default is the current direct `--verbosity` (string) - (*Release 0.1*) -Sets the verbosity level of the in the std output. +Sets the verbosity level of the in the std output. Allowed values are: -- `q[uiet]` +- `q[uiet]` - `m[inimal]` (by default) - `diag[nostic]` (logging information level) @@ -586,13 +586,13 @@ Path to .YAML file (internally it might be easier and more robust to internally All these parameters must be optional (opt-in). If not provided by the user, AutoML should infer all of them based on the provided dataset. -However, this advanced configuration allows the users with knowledge on its dataset and ML skills to provide "shortcuts" and improvements so AutoML can work on a more oppinionated direction for a specific model in less time. +However, this advanced configuration allows the users with knowledge on its dataset and ML skills to provide "shortcuts" and improvements so AutoML can work on a more oppinionated direction for a specific model in less time. -These parameters should be similar to the ones provided by the .NET AutoML API, probably also similar to the [Python AutoMLConfig class](https://docs.microsoft.com/en-us/python/api/azureml-train-automl/azureml.train.automl.automlconfig(class)?view=azure-ml-py) where the user can drill down and specify more specific configuration such as number of `iterations`, `primary-metric`, `n_cross_validations`, `enable_cache`, etc. +These parameters should be similar to the ones provided by the .NET AutoML API, probably also similar to the [Python AutoMLConfig class](https://docs.microsoft.com/en-us/python/api/azureml-train-automl/azureml.train.automl.automlconfig(class)?view=azure-ml-py) where the user can drill down and specify more specific configuration such as number of `iterations`, `primary-metric`, `n_cross_validations`, `enable_cache`, etc. In cases where a parameter in this file coincides with a CLI argument (i.e. label-column-name, etc.), the parameter in the .YAML file will be overriden by the CLI argument which has higher priority. -*TO BE DEFINED*: If there's a 1:1 mapping between the first level of paramenters in the .YAML file and the CLI arguments, how do we deal with expected syntax/naming of the args?: +*TO BE DEFINED*: If there's a 1:1 mapping between the first level of paramenters in the .YAML file and the CLI arguments, how do we deal with expected syntax/naming of the args?: - `--test-dataset` vs. `test_dataset` *IMPORTANT: The whole list and explanation of each advanced AutoML config parameters still have to be defined.* @@ -675,11 +675,11 @@ Sample JSON **Matching CLI arguments with first level of .YAML file elements** The first level items in the YAML file must match the CLI arguments. -The CLI arguments will always override the items in the YAML file. +The CLI arguments will always override the items in the YAML file. **Embeding .YAML text as inline text in the CLI** (v1.0) -Since the first level elements of the .YAML file should match the arguments, it should be possible to embed YAML text directly in-line as arguments, in a similar way than the original MAML.exe CLI does. +Since the first level elements of the .YAML file should match the arguments, it should be possible to embed YAML text directly in-line as arguments, in a similar way than the original MAML.exe CLI does. Sample CLI command with embeded extended: @@ -691,15 +691,15 @@ mlnet new --ml-task Regression --dataset "/MyDataSets/Sales.csv" --label-column ---------------------------------------------------------- `@args-response-file` (string) (*Release 0.2*) -Path to `.rsp` file containing the arguments/parameters to be used by the CLI. +Path to `.rsp` file containing the arguments/parameters to be used by the CLI. In this case we use the `@` syntax so it is consistent to other CLIs using the `.rsp` files, such as the [C# Compiler Options](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/response-file-compiler-option), etc. This `.rsp` file should provide the same arguments than the ones supported by the CLI command (`mlnet new` arguments), except the `--args-config-file` argument, logically. -The advantage of using an `.rsp` file for loading existing arguments, compared to a .YAML or .JSON file, is that we can use exactly the same argument names than the ones used in the CLI, such as `--label-column-name`, `--test-dataset` instead of having to map argument names to JSON-style names such as `labelColumnName` or `testDataset` or .YAML style and having to maitain two different schemas. +The advantage of using an `.rsp` file for loading existing arguments, compared to a .YAML or .JSON file, is that we can use exactly the same argument names than the ones used in the CLI, such as `--label-column-name`, `--test-dataset` instead of having to map argument names to JSON-style names such as `labelColumnName` or `testDataset` or .YAML style and having to maitain two different schemas. -The parameters provided in the `.rsp` file will be overriden by any parameter provided in the CLI command itself. +The parameters provided in the `.rsp` file will be overriden by any parameter provided in the CLI command itself. *Sample .rsp file with CLI arguments and optional configuration* @@ -730,11 +730,11 @@ Lists application types supported, such as 'console', 'web', etc. *NOTE: For the 0.1 preview version, only the `console` app-type (by default) will be implemented.* -The app-type project to generate the code when the command is invoked. +The app-type project to generate the code when the command is invoked. If `--app-type` argument is not provided, the `console` template will be used by default. -The command `new` will contain a default list of templates. Use `--list-app-types` to obtain a list of the available templates. The following table shows the templates that could come built-in with the ML.NET CLI. +The command `new` will contain a default list of templates. Use `--list-app-types` to obtain a list of the available templates. The following table shows the templates that could come built-in with the ML.NET CLI. The default language for the template is shown inside the brackets. @@ -783,8 +783,8 @@ As introduced, the CLI will generate the following assets as result of the opera The training code for a single generated console app project should be similar to the following sample app: - Sentiment Analysis sample: https://github.com/dotnet/machinelearning-samples/blob/master/samples/csharp/getting-started/BinaryClassification_SentimentAnalysis/SentimentAnalysis/SentimentAnalysisConsoleApp/Program.cs - - Notes: + + Notes: - This sample code is evolving when upgrading to upcoming preview versions, such as 0.10, 0.11, etc.) - Columns being loaded, instead of being explicit in the TextLoader, they should use a class such as this: @@ -796,7 +796,7 @@ For v0.1, it must load data from text file using the data-structure (observation // Read the data into a data view. var dataView = mlContext.Data.ReadFromTextFile(dataPath, hasHeader: true); -// The data model. This type will be used from multiple code. +// The data model. This type will be used from multiple code. private class InspectedRow { [LoadColumn(0)] @@ -819,7 +819,7 @@ When having tens, hundreds or thousands of contiguous numeric columns (usually o hasHeader: true ); - var trainData = reader.Read(trainDatasetFileNamePath)); + var trainData = reader.Read(trainDatasetFileNamePath)); ``` Rules to follow: @@ -844,11 +844,11 @@ If you have more than a few dozens of columns, those columns should be grouped i Related sample code is available in the following ML.NET tests: -Loading data: -https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs#L375 +Loading data: +https://github.com/dotnet/machinelearning/blob/main/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs#L375 Data observation class: -https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs#L700 +https://github.com/dotnet/machinelearning/blob/main/test/Microsoft.ML.Tests/ScenariosWithDirectInstantiation/TensorflowTests.cs#L700 ### Generated code for solution with multiple projects (Since v1.0) @@ -857,12 +857,12 @@ By v1.0, the CLI should be able to generate solutions with multiple projects. Fo Solution: - Training project: Console project with model-training ML.NET code - Class library project with common code (Data/Observation class, Prediction class, etc.) -- End-user project with model-scoring ML.NET code, such as any of the following (Depending on the supported app-types): +- End-user project with model-scoring ML.NET code, such as any of the following (Depending on the supported app-types): - Web app project (ASP.NET Core Razor app) - Web API project (ASP.NET Core Web API) - Console project - Unity project - - WPF project + - WPF project ## Results report (HTML) @@ -885,7 +885,7 @@ The visualization of results by class is very nice. - Clustering plotting showing the identified clusters per model. - Other related plotting for Ranking, Recommendations and Anomaly detection. -It is important to always show reports and visual charts comparing quality metrics and performance for the best ranked models, meaning having reports with comparisons between multiple models. +It is important to always show reports and visual charts comparing quality metrics and performance for the best ranked models, meaning having reports with comparisons between multiple models. Some report results can be comparable to the [results in AutoML for Python](https://docs.microsoft.com/en-us/azure/machine-learning/service/tutorial-auto-train-models#explore-the-results): @@ -902,17 +902,17 @@ Some report results can be comparable to the [results in AutoML for Python](http ### Results/reports: Viewable and exportable (v1.0 or vNext) -Results (reports) should be both viewable and exportable. Often you want to do results processing automation so would be nice to export the reports data as a .json file, then later can be viewed by a vieweer. +Results (reports) should be both viewable and exportable. Often you want to do results processing automation so would be nice to export the reports data as a .json file, then later can be viewed by a vieweer. Comparable references from other CLIs: - TLC exe's results processor and result visualization tab. -- [Uber Ludwig](https://uber.github.io/ludwig/getting_started/#programmatic-api): +- [Uber Ludwig](https://uber.github.io/ludwig/getting_started/#programmatic-api): `ludwig visualize --visualization compare_performance --test_statistics path/to/test_statistics_model_1.json path/to/test_statistics_model_2.json` # Open questions -- If there's a 1:1 mapping between the first level of paramenters in the .YAML file and the CLI arguments, how do we deal with expected syntax/naming of the args? Same IDs/text?: +- If there's a 1:1 mapping between the first level of paramenters in the .YAML file and the CLI arguments, how do we deal with expected syntax/naming of the args? Same IDs/text?: - `--test-dataset` vs. `test_dataset` - If we were using a sub-command for the ML-Task (such as `mlnet new regression`) instead of a regular argument (such as `mlnet new --ml-task regression`), how can a sub-command be specified in the response file? diff --git a/src/Microsoft.ML.Transforms/Text/LdaTransform.cs b/src/Microsoft.ML.Transforms/Text/LdaTransform.cs index 10fced0601..330b57a6a6 100644 --- a/src/Microsoft.ML.Transforms/Text/LdaTransform.cs +++ b/src/Microsoft.ML.Transforms/Text/LdaTransform.cs @@ -44,7 +44,7 @@ namespace Microsoft.ML.Transforms.Text // and open source implementation: // https://github.com/Microsoft/LightLDA // - // See + // See // for an example on how to use LatentDirichletAllocationTransformer. /// /// resulting from fitting a . diff --git a/src/Native/build.cmd b/src/Native/build.cmd index f7c2286e3e..529006a03f 100644 --- a/src/Native/build.cmd +++ b/src/Native/build.cmd @@ -60,7 +60,7 @@ if "%VisualStudioVersion%"=="16.0" ( :MissingVersion :: Can't find VS 2015, 2017 or 2019 echo Error: Visual Studio 2015, 2017 or 2019 required -echo Please see https://github.com/dotnet/machinelearning/tree/master/Documentation for build instructions. +echo Please see https://github.com/dotnet/machinelearning/tree/main/Documentation for build instructions. exit /b 1 :VS2019 From 0c033d001505b39592f097ed59896e73113115bb Mon Sep 17 00:00:00 2001 From: Michael Sharp <51342856+michaelgsharp@users.noreply.github.com> Date: Wed, 17 Mar 2021 12:05:38 -0700 Subject: [PATCH 2/3] Update vsts-ci.yml --- build/vsts-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build/vsts-ci.yml b/build/vsts-ci.yml index 2f8b1cca50..a6c730106f 100644 --- a/build/vsts-ci.yml +++ b/build/vsts-ci.yml @@ -6,7 +6,7 @@ resources: containers: - container: CentosContainer image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet-8bba86b-20190314145033 -g + phases: ################################################################################ - phase: Linux @@ -281,4 +281,4 @@ phases: # Terminate all dotnet build processes. - script: $(Build.SourcesDirectory)/.dotnet/dotnet.exe build-server shutdown - displayName: Dotnet Server Shutdown \ No newline at end of file + displayName: Dotnet Server Shutdown From 6e181289db496667df90a6c67170d803f4299633 Mon Sep 17 00:00:00 2001 From: Michael Sharp Date: Wed, 17 Mar 2021 12:44:51 -0700 Subject: [PATCH 3/3] updated urls --- docs/README.md | 4 ++-- docs/project-docs/contributing.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 5af9f276cc..d38b86b439 100644 --- a/docs/README.md +++ b/docs/README.md @@ -11,8 +11,8 @@ Project Docs - [Developer Guide](project-docs/developer-guide.md) - [Contributing to ML.NET](project-docs/contributing.md) -- [Strong Name Signing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/strong-name-signing.md) -- [Public Signing](https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/public-signing.md) +- [Strong Name Signing](https://github.com/dotnet/runtime/blob/main/docs/project/strong-name-signing.md) +- [Public Signing](https://github.com/dotnet/runtime/blob/main/docs/project/public-signing.md) - [Project NuGet Dependencies](https://github.com/dotnet/buildtools/blob/master/Documentation/project-nuget-dependencies.md) - [ML.NET Roadmap](https://github.com/dotnet/machinelearning/blob/main/README.md) - [ML.NET Cookbook](code/MlNetCookBook.md) diff --git a/docs/project-docs/contributing.md b/docs/project-docs/contributing.md index d34ef1a123..1e2b0d94e1 100644 --- a/docs/project-docs/contributing.md +++ b/docs/project-docs/contributing.md @@ -6,7 +6,7 @@ This document describes contribution guidelines that are specific to Machine Lea Coding Style Changes -------------------- -We intend to bring dotnet/machinelearning into full conformance with the style guidelines described in [Coding Style](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md). We plan to do that with tooling, in a holistic way. In the meantime, please: +We intend to bring dotnet/machinelearning into full conformance with the style guidelines described in [Coding Style](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md). We plan to do that with tooling, in a holistic way. In the meantime, please: * **DO NOT** send PRs for style changes. For example, do not send PRs that are focused on changing usage of ```Int32``` to ```int```. * **DO NOT** send PRs for upgrading code to use newer language features, though it's ok to use newer language features as part of new code that's written. For example, it's ok to use expression-bodied members as part of new code you write, but do not send a PR focused on changing existing properties or methods to use the feature.