ML.NET 更新

点击上方蓝字

关注我们

(本文阅读时间:5分钟)

ML.NET是一款面向.NET开发人员的开源,跨平台机器学习框架,可以将自定义机器学习集成到.NET应用中。我们很开心地向您介绍我们在过去几个月中所做的工作。

  • ML.NET:

    https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet?ocid=AID3045631

ba5ffe6968906976f91e7260bed273a5.png

AutoML更新 

ea5bbfa9f9f168e3801b98072f5408b5.png

自动化机器学习(AutoML)通过更容易地为您适合的场景和数据集找到最佳算法,从而使该过程自动化。AutoML是支持模型生成器和ML.NET CLI训练经验的后端。去年,我们宣布在我们的模型生成器和基于神经网络智能 (NNI) 的 ML.NET CLI 工具以及 Microsoft Research 的快速轻量级 AutoML (FLAML) 技术中对 AutoML 实施进行了更新。与之前的解决方案相比,这些更新提供了一些好处和改进,包括:

  • 探索的模型数量增加。

  • 提高了超时错误率。

  • 改进的性能指标(例如,准确性和r平方)。

直到最近,您还只能在我们的工具中利用这些AutoML改进。

我们很兴奋地宣布,我们已经将AutoML的NNI / FLAML实现集成到ML.NET框架中,这样你就可以从代码优先的体验中使用它们。

要开始使用AutoML API,请使用ML.NET daily feed安装Microsoft.ML和Microsoft.ML.Auto NuGet包的微软最新的预发布版本。

  • 神经网络智能 (NNI):

    https://github.com/Microsoft/nni

  • 快速轻量级 AutoML (FLAML):

    https://github.com/Microsoft/flaml

895095fc35883f2f9e4009d35e115724.png

实验的API 

2fe7d132cd91af1e3764edcdf5b4e26d.png

实验是训练或试验的集合。每次试验都会产生关于自身的信息,例如:

  • 评估指标:用于评估模型的预测能力的指标。

  • 流水线:用于训练模型的算法和超参数。

实验API为AutoML提供了一组默认值,使您更容易将其添加到训练管道中。

// 配置AutoML管道
var experimentPipeline =    
    dataPrepPipeline
        .Append(mlContext.Auto().Regression(labelColumnName: "fare_amount"));
// 配置实验
var experiment = mlContext.Auto().CreateExperiment()
                   .SetPipeline(experimentPipeline)
                   .SetTrainingTimeInSeconds(50)
                   .SetDataset(trainTestSplit.TrainSet, validateTestSplit.TrainSet)
                   .SetEvaluateMetric(RegressionMetric.RSquared, "fare_amount", "Score");
// 运行实验
var result = await experiment.Run();

在这个代码片段中,dataprepipeline是一系列转换,用于将数据转换为适合训练的格式。训练回归模型的AutoML组件被附加到该管道上。同样的概念也适用于其他受支持的场景,比如分类。

当您使用已定义的训练管道创建实验时,您可以自定义的设置包括训练时间、训练和验证集以及优化的评估指标。

定义了管道和实验之后,调用Run方法开始训练。

搜索空间和可清除估计器

如果需要对超参数搜索空间有更多的控制,可以定义搜索空间,并使用可清除的估计器将其添加到训练管道中。

// 配置搜索空间
var searchSpace = new SearchSpace<LgbmOption>();




// 初始化估计器管道
var sweepingEstimatorPipeline =
    dataPrepPipeline
        .Append(mlContext.Auto().CreateSweepableEstimator((context, param) =>
                 {
                     var option = new LightGbmRegressionTrainer.Options()
                     {
                         NumberOfLeaves = param.NumberOfLeaves,
                         NumberOfIterations = param.NumberOfTrees,
                         MinimumExampleCountPerLeaf = param.MinimumExampleCountPerLeaf,
                         LearningRate = param.LearningRate,
                         LabelColumnName = "fare_amount",
                         FeatureColumnName = "Features",
                         HandleMissingValue = true
                     };




                     return context.Regression.Trainers.LightGbm(option);
                 }, searchSpace));

搜索空间定义了用于搜索的超参数范围。

可清理评估器使您能够像使用其他评估器一样使用ML.NET管道中的搜索空间。

要创建和运行实验,您需要使用CreateExperiment和run方法的相同过程。

0e3146366bfe5c57867ef0b264d78fdc.png

模型生成器和ML.NET CLI更新

f6c310d28e31eb4d9aba91be045f2d1a.png

我们已经对模型生成器和ML.NET CLI做了几个更新。其中我想强调的两个是:

  • 时间序列预测场景的模型生成器

  • .NET CLI的新版本

时间序列预测场景(预览)

时间序列预测是在与时间相关的观测中确定模式,并对未来几个时期作出预测的过程。现实世界的用例有:

  • 预测产品需求

  • 能源消费预测

在ML.NET中,选择时间序列预测的训练师并不太难,因为你只有一个选择,ForecastBySsa。困难的部分在于找到参数,如分析的时间窗口和预测未来的距离。找到正确的参数是一个实验过程,这是AutoML的一项出色工作。对我们的AutoML实现的更新使通过超参数进行智能搜索成为可能,从而简化了训练时间序列预测模型的过程。

作为这些努力的结果,我们很高兴地与大家分享,您现在可以在模型生成器中训练时间序列预测模型。

74fbae1cbc4eabc315d9250d974a03d1.png

下载或更新到模型生成器的最新版本,开始训练您的时间序列预测模型。

ML.NET CLI的新版本

ML.NET CLI是我们的跨平台.NET全局工具,它利用AutoML在运行Windows、MacOS和Linux的x64和ARM64设备上训练机器学习模型。几个月前,我们发布了ML.NET CLI的新版本,它带来了:

  • .NET 6 支持

  • 支持 ARM64 架构

  • 新场景

  • 图像分类(针对 x64 架构)

  • 建议

  • 预测

安装 ML.NET CLI 并从命令行开始训练模型。

  • ForecastBySsa:

    https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.ml.timeseriescatalog.forecastbyssa?view=ml-dotnet?ocid=AID3045631

  • 下载或更新到模型生成器的最新版本:

    https://docs.microsoft.com/zh-cn/dotnet/machine-learning/how-to-guides/install-model-builder?tabs=visual-studio-2019?ocid=AID3045631

  • 安装 ML.NET CLI:

    https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/install-ml-net-cli?tabs=windows?ocid=AID3045631

f9d01798d606067bbcfeaa9a5ed8df39.png

Notebooks的键盘快捷键 

fddd61ad56125dfc87a9f86eacb54d80.png

Interactive Notebooks广泛应用于数据科学和机器学习。它们对于数据探索和准备、实验、模型解释和教育都很有用。

去年10月,我们发布了基于.NET Interactive的Visual Studio Notebook Editor扩展。在过去的几个月里,我们一直在改进性能和稳定性。

在我们的最新版本中,我们通过启用键盘快捷键让您无需离开键盘就能更轻松地工作。如果你以前使用过notebooks,你应该对其中的许多快捷方式很熟悉。

指令

K

向上移动焦点

J

向下移动焦点

A

在上面插入单元格

B

在下面插入单元格

DD

删除单元格

Ctrl + Z

撤销

Ctrl + S

保存

Ctrl + C

复制单元格

Ctrl + X

剪切单元格

Ctrl + V

粘贴单元格

L

切换行号

O

开关输出

II

取消单元格执行

00

启动内核

Ctrl + Shift + -

分割单元格

Ctrl+ Enter

执行/运行单元格

Shift + Enter

执行/运行单元格,并将焦点向下移动

表中的键是大写的,但大写不是必需的。

安装最新版本的Notebook编辑器,并开始在Visual Studio中创建Notebook。

  • .NET Interactive:

    https://github.com/dotnet/interactive

  • Visual Studio Notebook Editor扩展:

    https://devblogs.microsoft.com/dotnet/ml-net-and-model-builder-october-updates/#notebook-editor-in-visual-studio?ocid=AID3045631

  • Notebook编辑器:

    https://marketplace.visualstudio.com/items?itemName=MLNET.notebook

02933a7e4a4f738fa0a6e7e70c38700e.png

ML.NET的下一个目标是什么? 

2c803af5a936a12cd77f460566d983b9.png

我们正积极朝着路线图中所概述的领域努力。

深度学习

几个月前,我们分享了深度学习的计划。该计划的很大一部分围绕着改善ONNX的消费体验,并通过TorchSharp(一个提供对驱动PyTorch的库的访问的.NET库)实现新的场景。我们在实现这一计划方面取得的一些进展包括:

  • 为ONNX推断启用全局GPU标志。在此更新之前,当你想使用GPU对ONNX模型进行推断时,ApplyOnnxModel转换中的FallbackToCpu和GpuDeviceId标志没有被保存为管道的一部分。因此,每次都必须安装管道。我们已经使这些标志可作为MLContext的一部分访问,因此您可以将它们保存为模型的一部分。

  • TorchSharp 面向 .NET 标准。TorchSharp最初的目标是.NET 5。作为我们将TorchSharp集成到ML.NET的工作的一部分,我们更新为TorchSharp面向.NET标准。

在接下来的几周里,我们很高兴与大家分享我们在TorchSharp与ML.NET集成方面取得的进展。

  • 路线图:

    https://github.com/dotnet/machinelearning/blob/main/ROADMAP.md

  • 深度学习的计划:

    https://github.com/dotnet/machinelearning/issues/5918

  • TorchSharp:

    https://github.com/dotnet/TorchSharp

9e288f78f202fdac919b80efaf013dd0.png

.NET DataFrame 

478ac33dd8ce12d29629bc9164cf7312.png

清晰且具有代表性的数据有助于提高模型的性能。因此,理解、清理和准备训练数据的过程是机器学习工作流中的关键步骤。几年前,我们在.NET中引入了DataFrame类型,作为Microsoft.Data.Analysis NuGet包的预览。DataFrame仍处于预览阶段。我们理解使用工具来执行数据清理和处理任务是多么重要,并且已经开始组织和优先考虑反馈,因此我们解决了现有的稳定性和开发人员经验痛点。这些反馈被组织成GitHub问题的一部分。

我们创建这个跟踪问题是为了跟踪和组织反馈。如果您有任何想要与我们分享的反馈,请在描述中为个别问题投票或在跟踪问题中直接评论。

  • Microsoft.Data.Analysis:

    https://www.nuget.org/packages/Microsoft.Data.Analysis/

  • 跟踪问题:

    https://github.com/dotnet/machinelearning/issues/6144

  • https://pkgs.dev.azure.com/dnceng/public/_packaging/MachineLearning/nuget/v3/index.json

70439065fc5242ca7f79b0161ce263e6.png

MLOps 

39cc6d07c306bb10cff6301725f4ed19.png

机器学习操作(MLOps)就像机器学习生命周期的DevOps。这包括模型部署和管理以及数据跟踪,这有助于机器学习模型的产品化。我们一直在评估用ML.NET改善这种体验的方法。

最近我们发表了一篇博客文章,指导你完成设置Azure机器学习数据集、使用ML.NET CLI训练ML.NET模型以及使用Azure Devops配置再训练管道的过程。要了解更多细节,请参阅《在Azure ML中训练ML.NET模型》一文。

  • 《在Azure ML中训练ML.NET模型》:

    https://devblogs.microsoft.com/dotnet/training-a-ml-dotnet-model-with-azure-ml/?ocid=AID3045631

f14ae20824959b812073020c4cc9b2ca.png

入门和资源

6b7f86f7fc4bd1262d5c8dc562a2c858.png

在微软文档中详细了解 ML.NET、模型生成器和 ML.NET CLI。

如果您遇到任何问题,功能请求或反馈,请在GitHub上的ML.NET回购或ML.NET工具(Model Builder & ML.NET CLI)回购中提交问题。

  • 微软文档:

    https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/install-ml-net-cli?tabs=windows?ocid=AID3045631

  • ML.NET回购或ML.NET工具(Model Builder & ML.NET CLI)回购:

    https://github.com/dotnet/machinelearning-modelbuilder

f6b8505a9fcefe42455108d085b3a3a7.png

谢谢你读完了本文~相信你一定有一些感想、观点、问题想要表达。欢迎在评论区畅所欲言,期待听到你的“声音”哦!

同时,喜欢的内容也不要忘记转发给你的小伙伴们,谢谢你的支持!

d5bbd7be1a21948689060d87db933892.jpeg

长按识别二维码

关注微软中国MSDN

b6169173c654ce7baece63fef3c196b8.gif

点击「阅读原文」了解更多ML.NET信息~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值