Machine Learning has primarily been the domain of Python, and for good reason, due to Python’s ability to manipulate and reshape data. Microsoft is attempting to bring similar capabilities to C# and F# with ML.Net
ML.Net v0.1.0 was mentioned in the keynote of Build this year giving a hint to the importance of this framework in the long term. The framework is currently on v0.6.0 as Microsoft works towards creating an ML framework with all of the basic features required to see general usage. The following chart shows the capabilities available at release:
In subsequent versions, Microsoft has added some great features. Here are some of the highlights:
- Clustering support adds an unsupervised task that groups items into sets based on features.
- Cross Model Validation tests how a model statistically performs.
- CollectionDataSource adds the ability to use a collection of objects as input to the Learning Pipeline instead of a file.
- Support for the ONNX-ML format to enable sharing of models across toolkits.
- LightGBM adds the capability of doing binary classification, multiclass classification, and regression.
- Ensemble learners enable multiple learners in one model allowing models to be chained together.
- Latent Dirichlet Allocation transforms to infer topical structure of text data.
- Word Embedding transforms to capture the meaning of text in numeric vectors.
- Import of Tensorflow models to ML.Net
- Strongly Typed ML.Net API deprecating the Learning Pipeline
- Azure Functions support
Microsoft has made great strides building out this machine learning framework and I’m guessing (no insider knowledge) that a v1.0 release will be announced at Build 2019. There are just a few features that I need before I can start to use it for day to day work. Better GPU support is the biggest missing feature, once work gets serious the horsepower of a GPU is the only way to build models in reasonable time constraints. Currently, the process to get GPU working requires many manual steps and manually matched versions. DNN (Deep Neural Network) support is critical allowing this library to be a competitor with Keras. Finally, support for Tensorboard or some other similar visualization tool is needed. This is Tensorflow’s secret sauce, saving tons of time and allowing developers to get an intuitive feel for their models and to understand the impact of changes.
The Roadmap for ML.Net looks very promising having most of these features planning in the short and long term. For now, I’ll continue working with CNTK and Keras in Python, but I look forward to this framework maturing enough to allow my stack to be CNTK and ML.Net in C#!
Create your own neural network, even if you have no AI experience!! On October 24th I’m giving a workshop at Microsoft in Milwaukee where you’ll gain an understanding of Neural Network terminology and techniques, by creating and training a Neural Network of your own. Click here to learn more!