ML.NET 更新

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

AutoML更新

自动化机器学习(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包的微软最新的预发布版本。

实验的API

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

  • 评估指标:用于评估模型的预测能力的指标。
  • 流水线:用于训练模型的算法和超参数。
    实验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();


// 初始化估计器管道
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方法的相同过程。

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

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

  • 时间序列预测场景的模型生成器
  • .NET CLI的新版本

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

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

  • 预测产品需求
  • 能源消费预测

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

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

ML.NET 更新_第1张图片

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

▌ML.NET CLI的新版本

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

  • .NET 6 支持
  • 支持 ARM64 架构
  • 新场景
    图像分类(针对 x64 架构)
    建议
    预测

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

Notebooks的键盘快捷键

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

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

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

ML.NET 更新_第2张图片

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

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

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

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

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

▌深度学习

几个月前,我们分享了深度学习的计划。该计划的很大一部分围绕着改善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集成方面取得的进展。

.NET DataFrame

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

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

MLOps

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

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

入门和资源

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

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



长按识别二维码
关注微软中国MSDN

点击了解更多ML.NET信息~

你可能感兴趣的