.NET团队在 2023.11.28 在博客上正式发布了 ML.NET 3.0::https://devblogs.microsoft.com/dotnet/announcing-ml-net-3-0/[1],强调了两个主要的兴趣点,即深度学习和数据处理,使开发人员能够完全在 .NET 生态系统中创建注入 AI 的应用程序。开源 ML.NET 框架[2]的主要卖点,旨在帮助开发人员能够使用C#和F#构建自定义ML模型并将其集成到应用程序中。这是通过命令行 (CLI) 和模型生成器等工具完成的,或者创建像大型语言模型 (LLM) 这样的结构来完成,这些模型为 ChatGPT 和 无处不在的“Copilot”AI 助手提供支持。
深度学习
深度学习是机器学习的一个子集,使用松散地类似于人脑行为的人工神经网络,以便从大量数据甚至非结构化数据等输入中“学习”。深度学习场景在v3.0版本中得到了大幅扩展,在三个领域具有新功能:对象检测、命名实体识别和问答。
ML.NET 3.0 中的对象检测是一种高级形式的图像分类,它不仅可以对图像中的实体进行分类,还可以对它们进行定位,因此非常适合图像包含多个不同类型的对象的场景。在v3.0中,通过与TorchSharp和ONNX模型的集成,对象检测功能得到了提升,Microsoft特别指出了TorchSharp支持的对象检测API。这些代表了在 ML.NET 框架内利用深度学习技术的重要一步。
对象检测API的底层技术包括微软研究院开发的基于Transformer的神经网络架构技术。这种方法表明了深度学习的现代趋势,特别是在计算机视觉方面。
TorchSharp 还有助于增强命名实体识别和问答,这两个常见的 ML 领域是自然语言处理 (NLP)的一部分。在 ML.NET 3.0 中,通过利用之前引入的 TorchSharp RoBERTa 文本分类功能,解锁了这两种方案的增强功能。“NER和QA训练器都包含在 Microsoft.ML.TorchSharp 3.0.0包[3]和命名空间Microsoft.ML.TorchSharp
中。
数据处理
数据处理方面主要是通过对 DataFrame(一种用于存储和操作数据的结构)以及新的 IDataView 互操作性功能的许多增强功能和 bug 修复,改进了方案。加载、检查、转换和可视化数据的重要步骤要强大得多。
具体注意事项包括:
- 增强的 <-> 转化:
IDataView
DataFrame
添加了对 ReadOnlyMemory<char>和 VBufferDataFrameColumn<T>列类型的支持,其中的值作为并支持所有支持基元。 - 增加列数据容量:列现在可以存储超过 2 GB 的数据,从而消除了以前的限制。
- Apache Arrow 集成:识别 Apache Arrow 的
Date64
列数据。 - 扩展的数据加载功能:包括使用 ADO.NET 的 SQL 数据库的导入和导出功能。此外,可以从任何
IEnumerable
集合加载数据并将其导出到System.Data.DataTable
. - 在 DataFrame 之间追加数据:当
DataFrame
列名匹配时,允许将数据从一个追加到另一个,从而放宽了对列顺序的约束。 - 重复列名的处理:
DataFrame.LoadCsv
增强了管理重复列名的功能,提供了重命名它们的选项。 - 改进了算术性能和空值处理:列克隆、二进制比较方案和算术运算的优化。
- 调试器增强功能:调试器中具有长名称的列的可读性更好。
Microsoft还指出了新的张量基元集成,它们不会直接影响开发任务,但确实提供了显着的性能改进。AutoML 可自动将机器学习应用于数据的过程,也得到了增强,增强了模型生成器和 ML.NET CLI 中的相关体验。
有关上述所有更改和其他更改的更多信息,请参见 发行说明[4] .
展望未来,开发团队现在正在制定 .NET 9 和 ML.NET 4.0 的计划,模型生成器和 ML.NET CLI 预计将更快地更新,以便使用 ML.NET 3.0 版本。继续扩展深度学习场景和集成,我们将继续增强DataFrame,
相关链接
[1] Announcing ML.NET 3.0:https://devblogs.microsoft.com/dotnet/announcing-ml-net-3-0/
[2]开源 ML.NET 框架: https://github.com/dotnet/machinelearning
[3]Microsoft.ML.TorchSharp 3.0.0包: https://www.nuget.org/packages/Microsoft.ML.TorchSharp/3.0.0
[4]ML.NET 发行说明:https://github.com/dotnet/machinelearning/blob/main/docs/release-notes/3.0/release-3.0.0.md