ML.NET 和 Model Builder 2021年三月更新

ML.NET是一个开源的跨平台机器学习框架,适合 .NET 开发人员。它允许将机器学习集成到 .NET 应用中,而无需离开 .NET 生态系统,甚至拥有 ML 或数据科学背景。ML.NET 和Model Builder 在三月有了新的更新发布。

Model Builder 预览版

此预览中 Model Builder 带来了许多重大更改,其中包括:

  • 基于配置生成训练代码文件
  • 重构的高级数据选项
  • 重新设计的消费步骤

您可以在aka.ms/blog-mb-preview注册预览版。

基于配置生成训练代码文件

Model Builder 体验有了较大改进!在 Solution Explorer 中,沿着"Add > Machine Learning"路径右键单击项目时,点击"Add New Item Dialog" 打开对话窗添加 ML.NET 模型。

添加模型后,Model Builder UI 打开,并在解决方案资源管理器中显示新项目(*.mbconfig 文件)。

在使用 Model Builder 时的任何时间点,如果关闭 UI 可以双击解决方案资源管理器 *.mbconfig文件,它再次将 UI 打开到上次保存的状态。

训练后在*.mbconfig文件下生成两个文件:

  • Model.consumption.cs:此文件包含模型输入和模型输出计划以及为应用模型生成 Predict 的功能。
  • Model.training.cs:此文件包含 Model Builder 为训练模型而选择的训练管道(数据转换、算法、算法超参数)。您可以使用此管道重新训练模型。
  • Model.zip:这是一个序列化的并且训练好的 ML.NET 模型文件。

以前,这些文件被添加为两个新项目(用于模型消费代码的类库和用于训练管道的控制台应用程序)。新体验类似于在 Windows 应用程序中添加新Form窗口界面,其中Form后面有类文件,并双击Form打开设计器。

如果您打开该*.mbconfig文件,则可以看到它只是一个带有状态信息的 JSON 文件:

{
  "TrainingConfigurationVersion": 0,
  "TrainingTime": 10,
  "Scenario": {
    "ScenarioType": "Classification"
  },
  "DataSource": {
    "DataSourceType": "TabularFile",
    "FileName": "C:\Desktop\Datasets\yelp_labelled.txt",
    "Delimiter": "t",
    "DecimalMarker": ".",
    "HasHeader": true,
    "ColumnProperties": [
      {
        "ColumnName": "Comment",
        "ColumnPurpose": "Feature",
        "ColumnDataFormat": "String",
        "IsCategorical": false
      },
      {
        "ColumnName": "Sentiment",
        "ColumnPurpose": "Label",
        "ColumnDataFormat": "String",
        "IsCategorical": true
      }
    ]
  },
  "Environment": {
    "EnvironmentType": "LocalCPU"
  },
  "Artifact": {
    "Type": "LocalArtifact",
    "MLNetModelPath": "C:\source\repos\ConsoleApp8\ConsoleApp8\MLModel1.zip"
  },
  "RunHistory": {
    "Trials": [
      {
        "TrainerName": "AveragedPerceptronOva",
        "Score": 0.8059,
        "RuntimeInSeconds": 4.4
      }
    ],
    "Pipeline": "[{"EstimatorType":"MapValueToKey","Name":null,"Inputs":["Sentiment"],"Outputs":["Sentiment"]},{"EstimatorType":"FeaturizeText","Name":null,"Inputs":["Comment"],"Outputs":["Comment_tf"]},{"EstimatorType":"CopyColumns","Name":null,"Inputs":["Comment_tf"],"Outputs":["Features"]},{"EstimatorType":"NormalizeMinMax","Name":null,"Inputs":["Features"],"Outputs":["Features"]},{"LabelColumnName":"Sentiment","EstimatorType":"AveragedPerceptronOva","Name":null,"Inputs":null,"Outputs":null},{"EstimatorType":"MapKeyToValue","Name":null,"Inputs":["PredictedLabel"],"Outputs":["PredictedLabel"]}]",
    "MetricName": "MicroAccuracy"
  }
}

这种新的 Model Builder 体验带来了许多好处。您可以:

  • 指定模型的名称和生成的代码。
  • 在解决方案中拥有多个生成的模型。
  • 保存状态并返回到最后保存的状态。如果你花了一个小时的训练和关闭 Model Builder,现在你不必重新开始。
  • 共享*.mbconfig文件并通过源控制在同一 Model Builder 实例上进行协作。
  • 即将推出在 Model Builder 和 ML.NET CLI 中使用相同的*.mbconfig文件!

重构的高级数据选项

在上一个 Model Builder 版本中,我们为数据加载添加了高级数据选项,使您对列设置和数据格式有更大的控制。

在此版本中,我们添加了多个选项并重新组织了选项,以便更轻松地选择列设置:

  • 目的:选择该列是 Feature 列、Label 列还是训练期间忽略的列。
  • 数据类型:选择列中的数据是字符串、Single浮点还是布尔值。
  • 分类:选择列是否是一组类别。

  

重新设计的消费步骤

我们重新设计了消费步骤,以便从训练和评估模型平稳过渡到使用该模型在最终用户应用程序中进行预测。

UI 中提供了 Predict 代码片段,其中演示了如何设置模型输入以及如何使用生成的函数返回预测输出。

每个模型输入属性都填写了数据集第一行的示例数据。您可以使用右上角的复制按钮复制整个代码片段:然后一旦将此代码粘贴到最终用户应用程序中,您可以修改模型输入字段以获取真实数据以输入到模型中。

此外,还有一个新的示例项目部分,该部分生成了使用模型并将项目添加到解决方案中的应用程序。在以前的 Model Builder 版本中,示例控制台应用自动添加到解决方案中,现在可以选择是否要添加一个新项目来使用模型。

目前,只有添加控制台应用程序的选项,但在未来计划增加对 Web API、Azure 功能等的支持。

ML.NET v1.5.5

此版本的 ML.NET 带来了许多错误修复和增强以及以下新功能:

  • 新的API,接受 double 类型的置信度,这有助于使用比 int 更高的精度。
  • 支持向 ONNX 输出 ValueMapping 估计器。
  • 新的API来指定TensorFlow的输出是否为 batch(以前 ML.NET 总是假设它是一个 batch,若不是则会导致错误)。

有关详细信息,请查看发布说明

Virtual ML.NET 社区会议

5月7日,第二届 Virtual ML.NET 社区年会 为期两天的会议即将开始,会议探讨 ML.NET 的多个方面,同时也正在寻找以下主题的讲师:

  • MLOps
  • 案例研究和实际使用案例
  • Jupyter 交互式计算
  • 基于 ONNX 的 ML.NET
  • ML.NET 和 IoT 设备
  • ML.NET 与 F#
  • 大数据和 ML.NET
  • 从实验到生产的全过程体验
  • 任何其他 ML.NET 相关的,只要你能想到的!

这是一个100%免费的社区活动。您可以通过这里提交演讲

资源

从本教程中的 ML.NET 开始。在微软文档了解更多关于 ML.NET 和 Model Builder 。

posted on 2021-03-28 17:04  Bean.Hsiang  阅读(691)  评论(0编辑  收藏  举报