Announcing ML.NET 1.0

Ankit Asthana

We are excited to announce the release of ML.NET 1.0 today.  ML.NET is a free, cross-platform and open source machine learning framework designed to bring the power of machine learning (ML) into .NET applications.

ML.NET Logo

https://github.com/dotnet/machinelearning Star

Get Started @ http://dot.net/ml

ML.NET allows you to train, build and ship custom machine learning models using C# or F# for scenarios such as sentiment analysis, issue classification, forecasting, recommendations and more.  You can check out these common scenarios and tasks at our ML.NET samples repo.

ML.NET was originally developed within Microsoft Research, and evolved into a significant framework used by many Microsoft products such as Windows Defender, Microsoft Office (Powerpoint design ideas, Excel Chart recommendations), Azure Machine Learning, PowerBI key influencers to name a few!

Since its launch ML.NET is being used by many organizations like SigParser (Spam Email Detection),  William Mullens (Legal Issue Classification) and Evolution Software (Moisture Level Detection for Hazelnuts). You can follow the journey of these and many other organisations using ML.NET at our ML.NET customer showcase.  These users tell us that the ease of use of ML.NET, ability to reuse their .NET skills and keeping their tech stack entirely in .NET are primary drivers for their use of ML.NET.

Along with the ML.NET 1.0 release we are also adding new preview features like the power of Automated machine learning (AutoML) and new tools like ML.NET CLI and ML.NET Model Builder which means adding machine learning models to your applications is now only a right click away!

ML.NET Logo The remainder of this post focuses on these new experiences.

ML.NET Core Components

ML.NET is aimed at providing the end-end workflow for consuming ML into .NET apps across various steps of machine learning (pre-processing, feature engineering, modeling, evaluation and operationalization). ML.NET 1.0 provides the following key components:

  • Data Representation
    • Fundamental ML data pipeline data-types such as IDataView – the fundamental data pipeline type
    • Readers to support reading data from delimited text files or IEnumerable of objects
  • Support for machine learning tasks:
    • Binary Classification
    • Multi-Class classification
    • Regression
    • Ranking
    • Anomaly Detection
    • Clustering
    • Recommendation (preview)
  • Data Transformation and featurization
    • Text
    • Categories
    • Feature Selection
    • Normalization and missing value handling
    • Image featurization
    • Time Series (preview)
    • Support for ONNX and TensorFlow model integration (preview)
  • Other
    • Model understanding and explainability
    • User-defined custom transformations
    • Schema operations
    • Support for dataset manipulation and cross-validation

 

Automated Machine Learning Preview

Getting started with machine learning today involves a steep learning curve.  When building custom machine learning models, you have to figure out which machine learning task to pick for your scenario (i.e. classification or regression?), transform your data into a format that ML algorithms can understand (e.g. textual data -> numeric vectors), and fine tune these ML algorithms to provide best performance. If you are new to ML each of these steps can be quite daunting!

Automated Machine Learning makes your journey with ML simpler by automatically figuring out how to transform your input data and selecting the best performing ML algorithm with the right settings allowing you to build best-in-class custom ML models easily.

AutoML support in ML.NET is in preview and we currently support Regression (used for scenarios like Price Prediction) and Classification (used for scenarios like Sentiment Analysis, Document Classification, Spam Detection etc.) ML tasks.

You can try out the AutoML experience in ML.NET in three form factors using ML.NET Model Builder, ML.NET CLI or by using the AutoML API directly (samples can be found here).

For users who are new to Machine Learning we recommend starting with the ML.NET Model Builder in Visual Studio and the ML.NET CLI on any platform.  The AutoML API is also very handy for scenarios where you want to build models on the fly.

Model Builder Preview

In order to simplify the journey of .NET developers to build ML Models, we are today also excited to announce ML.NET Model Builder. With ML.NET Model builder adding machine learning to your apps is only a right-click away!

Model Builder is a simple UI tool for developers which uses AutoML to build best in class ML models using the dataset you provide. In addition to this, Model Builder also generates model training and model consumption code for the best performing model allowing you to quickly add ML to your existing application.

ML.NET Model Builder

Learn more about the ML.NET Model Builder

Model Builder is currently in preview and we would love for you to try it out and tell us what you think!

ML.NET CLI Preview

The ML.NET CLI (command-line interface) is another new tool we are introducing today!

ML.NET CLI is a dotnet tool which allows for generating ML.NET Models using AutoML and ML.NET. The ML.NET CLI quickly iterates through your dataset for a specific ML Task (currently supports regression and classification) and produces the best model.

The CLI in addition to producing the best model also allows users to generate model training and model consumption code for the best performing model.

ML.NET CLI is cross-platform and is an easy add-on to the .NET CLI. The Model Builder Visual Studio extension also uses ML.NET CLI to provide model builder capabilities.

You can install the ML.NET CLI through this command.

 dotnet tool install -g mlnet

Following picture shows the ML.NET CLI building a sentiment analysis dataset.

ML.NET CLI

Learn more about the ML.NET CLI

ML.NET CLI is also currently in preview and we would love for you to try it out and share your thoughts below!

Get Started!

If you haven’t already, getting started with ML.NET is easy and you can do so in a few simple steps as shown below. The example below shows how you can perform sentiment analysis with ML.NET.

//Step 1. Create a ML Context
var ctx = new MLContext();

//Step 2. Read in the input data for model training
IDataView dataReader = ctx.Data
    .LoadFromTextFile(dataPath, hasHeader: true);

//Step 3. Build your estimator
IEstimator<ITransformer> est = ctx.Transforms.Text
    .FeaturizeText("Features", nameof(SentimentIssue.Text))
    .Append(ctx.BinaryClassification.Trainers
        .LbfgsLogisticRegression("Label", "Features"));

//Step 4. Train your Model
ITransformer trainedModel = est.Fit(dataReader);

//Step 5. Make predictions using your model
var predictionEngine = ctx.Model
    .CreatePredictionEngine<MyInput, MyOutput>(trainedModel);

var sampleStatement = new MyInput { Text = "This is a horrible movie" };

var prediction = predictionEngine.Predict(sampleStatement);

You can also explore various other learning resources like tutorials and resources for ML.NET along with ML.NET samples demonstrating popular scenarios like product recommendation, anomaly detection and more in action.

What’s next with ML.NET

While we are very excited to release ML.NET 1.0 today, the team is already hard at work towards enabling the following features for ML.NET release post 1.0.

  • AutoML experience for additional ML scenarios
  • Improved support for deep learning scenarios
  • Support for other additional sources like SQL Server, CosmosDB, Azure Blob storage and more.
  • Scale-out on Azure for model training and consumption
  • Support for additional ML scenarios and features when using Model Builder and CLI
  • Native integration for machine learning at scale with .NET for Apache Spark and ML.NET
  • New ML Types in .NET e.g. DataFrame

You helped build it

A special callout to these amazing contributors who have been with us on this journey for making machine learning accessible to .NET developers with ML.NET.

amiteshenoybeneyalbojanmisicCarauldan-drewsDAXaholicdhilmathydzban2137elbrunoendintiersf1x3d,feiyun0112forkiharshsaver, helloguohvitvedJongkeunJorgeAnddJoshuaLightjwood803kant2002kilickKy7m,llRandommalik97160MarcinJuraszekmareklinka, Matei13mfaticaearninmnboosnandaleiteNepomuceno nihitb06,Niladri24duttaPaulTFreedmanPielgrinpkulikovPotapy4Racing5372, rantrirantrirauhsrobosekross-p-smithSolyarA,SorriensuhailsinghbainsteropThePiranhaThomas-S-Btimitoctincannv-tsymbalistyi, van-tienhoangveikkoeeva,and yamachu

If you haven’t already, give ML.NET a try!

Your feedback is critical for us to help shape ML.NET and make .NET a great platform for machine learning.

Thanks, ML.NET team

7 comments

Discussion is closed. Login to edit/delete existing comments.

  • Diomedes Ignacio Domínguez Ureña 0

    So, this is just the core for something basic: not image processing nor cognitive servicess toolkit is integrated here.

    • Cesar De la TorreMicrosoft employee 0

      Machine Learning capabilities can be compared to Sickit-Learn in Python (machile learning models using DATA). But ML.NET runs as “native .NET”, very straightforward to be deployed in .NET apps (ASP.NET, etc.), easy to get started for .NET developers who might not know other languages/platforms such as Python.

      Related to Deep-Learning (your question on Image processing and Cognitive Services) you can run TensorFlow models or ONNX models with ML.NET API, but Scoring/inferencing only. In the future we might add the capability of training TensorFlow models from ML.NET, as well, but still TBD.

      Azure Cognitive Services is complementary. You can, for instance, train a Custom Vision model with Cognitive Services, esport it as a TensorFlow model and run it on any .NET app with the ML.NET API. 

    • Gleb KrivosheevMicrosoft employee 0

      On the subject of image processing, Scott Henselman has made quite an entertaining video on image processing with ML.NET that let’s you do something really imprtant: distinguish tacos from burritos! https://youtu.be/ojpxN64ibBE?t=2781

  • Adam Shakhabov 0

    ML.NET began adding AutoML feature? That is very cool!

  • Chinzorig Batsukh 0

    ML.NET CLI tool name should be dotnet-ml following other tool names.
    dotnet-counter, dotnet-ml, dotnet-ef etc

  • Yves Goergen 0

    Would it be possible to classify audio files? I’d like to classify music files in MP3 format (could decode them with NAudio) with attributes like speed, loudness, mood, maybe instruments and vocals etc.

    • Gleb KrivosheevMicrosoft employee 0

      Great question,  Yves.  Short answer is “yes.”  However it would require dev work.  ML.NET itself does not currently have components to work with wave forms directly.  On the other hand, if you are able to featurize audio – turn MP3 into a feature vector that represents the qualities of the track that you are interested in, such as spectral composition, loudness, tonal structure and so fourth, then you are easily able to feed that data into a classifier from ML.NET and made a predictive model. 
      Now, if you develop audio featurization components that you find useful, you are free to contribute it to the open source project.

Feedback usabilla icon