当前位置: 首页 > news >正文

宣布推出 ML.NET 3.0

作者:Jeff Handley
排版:Alan Wang

ML.NET 是面向 .NET 开发人员的开源、跨平台的机器学习框架,可将自定义机器学习模型集成到 .NET 应用程序中。ML.NET 3.0 版本现已发布,其中包含大量新功能和增强功能!

此版本中的深度学习场景得到了大幅扩展,新增了对象检测、命名实体识别和问答等新功能。所有这一切都归功于与 TorchSharp 和 ONNX 模型的集成和互操作性。我们还将与 LightGBM 的集成更新到最新版本。

通过对 DataFrame 的大量增强和错误修复以及新的 IDataView 互操作性功能,数据处理场景得到了极大的改善。加载、检查、转换和可视化数据的重要步骤更加强大。

本文重点介绍了 ML.NET 3.0 版本的几个方面,有关完整的更新列表可在发行说明中找到。

深度学习

过去一年,我们都见证了深度学习场景和能力的加速增长。借助 ML.NET 3.0,您可以在 .NET 应用程序中利用其中的许多改进。

对象检测

对象检测是一个计算机视觉问题。虽然与图像分类密切相关,但对象检测以更细粒度的尺度执行图像分类。对象检测对图像中的实体进行定位和分类。当图像包含多个不同类型的对象时,最好使用对象检测功能。

我们在今年早些时候发布了 ML.NET Model Builder 中的对象检测功能。这些功能建立在ML.NET 3.0 ( PR #6605 )中引入的 TorchSharp 驱动的对象检测 API 的基础之上。

在底层,对象检测 API 利用了 Microsoft Research 的一些最新技术,并由使用 TorchSharp 构建的基于 Transformer 的神经网络架构提供支持。有关底层模型的更多详细信息,请参阅搜索 Vision Transformer 空间论文。

对象检测包含在 Microsoft.ML.TorchSharp 3.0.0 包中的 Microsoft.ML.TorchSharp 和 Microsoft.ML.TorchSharp.AutoFormerV2 命名空间中。您可以阅读文章- ML.NET Model Builder 中的对象检测以深入了解。

var chain = new EstimatorChain<ITransformer>();var filteredPipeline = chain. Append(mlContext.Transforms.Text.TokenizeIntoWords(labelColumnName, separators: [',']),TransformerScope.Training).Append(mlContext.Transforms.Conversion.MapValueToKey(labelColumnName),TransformerScope.Training).Append(mlContext.Transforms.Text.TokenizeIntoWords(boundingBoxColumnName, separators: [',']),TransformerScope.Training).Append(mlContext.Transforms.Conversion.ConvertType(boundingBoxColumnName),TransformerScope.Training).Append(mlContext.Transforms.LoadImages("Image", imageFolder, "ImagePath")).Append(mlContext.MulticlassClassification.Trainers.ObjectDetection(labelColumnName, predictedLabelColumnName, scoreColumnName,boundingBoxColumnName, predictedBoundingBoxColumnName,imageColumnName, maxEpoch)).Append(mlContext.Transforms.Conversion.MapKeyToValue(predictedLabelColumnName));var options = new ObjectDetectionTrainer.Options()
{LabelColumnName = labelColumnName,BoundingBoxColumnName = boundingBoxColumnName,ScoreThreshold = .5,MaxEpoch = maxEpoch,LogEveryNStep = 1,
};var pipeline = mlContext.Transforms.Text.TokenizeIntoWords(labelColumnName, separators: [',']).Append(mlContext.Transforms.Conversion.MapValueToKey(labelColumnName)).Append(mlContext.Transforms.Text.TokenizeIntoWords(boundingBoxColumnName, separators: [','])).Append(mlContext.Transforms.Conversion.ConvertType(boundingBoxColumnName)).Append(mlContext.Transforms.LoadImages("Image", imageFolder, "ImagePath")).Append(mlContext.MulticlassClassification.Trainers.ObjectDetection(options)).Append(mlContext.Transforms.Conversion.MapKeyToValue(predictedLabelColumnName));var model = pipeline.Fit(data);
var idv = model.Transform(data);var metrics = ML.MulticlassClassification.EvaluateObjectDetection(idv, idv.Schema[2], idv.Schema[boundingBoxColumnName], idv.Schema[predictedLabelColumnName],idv.Schema[predictedBoundingBoxColumnName], idv.Schema[scoreColumnName]
);

命名实体识别和问答

自然语言处理(Natural Language Processing)是软件中最常见的 ML 需求之一。NLP 最重要的两个进步领域是问答 (QA) 和命名实体识别 (NER)。在 ML.NET 3.0中,这两种场景通过在ML.NET 2.0中引入的现有 TorchSharp RoBERTa 文本分类功能的基础上进行构建,从而得以实现。

NER 和 QA 训练器都包含在 Microsoft.ML.TorchSharp 3.0.0 包和 Microsoft.ML.TorchSharp 命名空间中。

// QA 训练器
var chain = new EstimatorChain<ITransformer>();
var estimatorQA = chain.Append(mlContext.MulticlassClassification.Trainers.QuestionAnswer(contextColumnName, questionColumnName, trainingAnswerColumnName,answerIndexColumnName, predictedAnswerColumnName, scoreColumnName,topK, batchSize, maxEpochs, architecture, validationSet
));// NER 训练器
var estimatorNER = chain.Append(mlContext.Transforms.Conversion.MapValueToKey("Label", keyData)).Append(mlContext.MulticlassClassification.Trainers.NameEntityRecognition(labelColumnName, outputColumnName, sentence1ColumnName,batchSize, maxEpochs, architecture, validationSet)).Append(mlContext.Transforms.Conversion.MapKeyToValue(outputColumn));

Intel oneDAL 训练加速

在我们发布 ML.NET 2.0 后不久,我们宣布了由 Intel oneDAL 支持的训练硬件加速,作为 ML.NET 3.0 首个预览版的一部分。Intel oneDAL(Intel oneAPI 数据分析库)是一个通过为数据分析和机器学习过程的所有阶段提供高度优化的算法构建块,帮助加快数据分析速度的库。Intel oneDAL 在 64 位架构中利用 SIMD 扩展,这是 Intel 和 AMD CPU 中的特色功能。

有关此功能集的更多信息,请参阅文章-使用 Intel oneDAL 加速 ML.NET 培训。

自动机器学习(Automated Machine Learning)(AutoML)

自动机器学习 (AutoML) 实现将机器学习应用于数据的过程自动化。AutoML 增强了Model Builder和 ML.NET CLI 中的体验。

借助 ML.NET 3.0,AutoML 体验获得了多项新功能。AutoML Sweeper 现在支持句子相似性、问答和对象检测。社区成员 Antti “Andy” Törrönen (@torronen) 实现了采样键列名称 (SamplingKeyColumnName),它可以与 SetDataset 一起使用,以便更轻松地设置采样键名称。AutoZero 调谐器现在可用于 BinaryClassification 实验。用于实验的最大模型数量可以通过 ExperimentSettings.MaxModel 指定。

感谢社区成员 Andras Fuchs (@andrasfuchs),通过 AutoML.IMonitor 实现持续资源监控。这允许监视内存需求、虚拟内存使用情况和剩余磁盘空间。使用这种监控,可以通过自定义 IMonitor 实现来控制长时间运行的实验,以避免崩溃和失败的试验。

DataFrame

此版本包括对 DataFrame 的一系列显著更新,其中许多更新是由社区成员 Aleksei Smirnov (@asmirnov82) 完成的。我们非常感谢 Aleksei 的贡献,相信您也会喜欢!

为了实现更多的 IDataView <-> DataFrame 转换,添加了对 String 和 VBuffer 列类型的支持。字符串值作为 ReadOnlyMemory处理,并且 VBufferDataFrameColumn列类型支持所有受支持基元。列现在可以存储超过 2 GB 的数据,之前的限制已被移除。Apache Arrow Date64 列数据现在也可以识别。

ML.NET 3.0 中扩展了 DataFrame 的数据加载场景。感谢社区成员 Andrei Faber (@andrei-faber),现在可以从 SQL 数据库导入和导出数据。这是使用 ADO.NET 完成的,它支持大量与 SQL 兼容的数据库。作为此实现的一部分,还可以从任何 IEnumerable 集合加载数据并将数据导出到 System.Data.DataTable。当列名匹配时,可以将一个 DataFrame 中的数据附加到另一个 DataFrame 中,从而放宽了之前对列排序的限制。通过 DataFrame.LoadCsv 加载的逗号分隔数据现在还可以处理重复的列名称,并可以选择重命名重复的列。

DataFrame 还有许多其他增强和修复功能。在列克隆和二进制比较场景中,算术性能得到了改进。在执行算术运算时,对空值的处理得到了改进,减少了转换和清理数据的步骤。甚至还对调试器进行了改进,为具有长名称的列生成更具可读性的输出。

Tensor Primitives 集成

Tensor Primitives 是 System.Numerics.Tensors.TensorPrimitives 的缩写,是一组新的 API,引入了对 tensor 运算的支持。作为 .NET 8 的一部分,我们的团队发布了一个新的 System.Numerics.Tensors 包,其中引入了 Tensor Primitives。Tensor Primitives API 是 .NET 中 AI 数值演进的下一步,它建立在硬件内在函数和通用数学的基础上。

虽然与 Tensor Primitives 的集成纯粹是一个细节实现,并不会影响 ML.NET 的公共接口,但它带来了一些显着的性能改进。以下基准测试结果说明了针对 .NET 8 时的收益。
在这里插入图片描述

更多详细信息和 .NET Framework 基准测试结果都包含在 dotnet/machinelearning#6875 中。

除了提升这些性能之外,我们还利用这次集成机会来测试 TensorPrimitives API 的 API 形状、可用性、功能和正确性。证明 API 可以满足 ML.NET 场景是将 System.Numerics.Tensors 包从预览版过渡到稳定版本 8.0.0 的重要一步。

下一步计划

随着 .NET 8 和 ML.NET 3.0 版本的完成,我们开始制定.NET 9 和 ML.NET 4.0 的计划。不过在那之前,您可以期待 Model Builder 和 ML.NET CLI 将会更新以使用 ML.NET 3.0 版本。

我们将继续扩展深度学习场景和集成、增强 DataFrame,以及扩展 System.Numerics.Tensors 中可用的 API,并将它们集成到 ML.NET 中。请继续关注更详细的 ML.NET 4.0 计划。

入门和资源

您可以在 Microsoft Learn 中了解有关 ML.NET、Model Builder 和 ML.NET CLI 的更多信息。

如果您遇到任何问题、功能请求或反馈,请在 ML.NET 存储库中提出问题。

您可以加入 ML.NET Community Discord 或 .NET Development Discord 上的 #machine-learning 频道。

您可以在每周三上午 10 点(太平洋时间)收看 Machine Learning .NET Community Standup。

相关文章:

宣布推出 ML.NET 3.0

作者&#xff1a;Jeff Handley 排版&#xff1a;Alan Wang ML.NET 是面向 .NET 开发人员的开源、跨平台的机器学习框架&#xff0c;可将自定义机器学习模型集成到 .NET 应用程序中。ML.NET 3.0 版本现已发布&#xff0c;其中包含大量新功能和增强功能&#xff01; 此版本中的深…...

常见的排序算法---快速排序算法

快速排序算法 快排是基于分治的思想来的&#xff0c;快速排序就是在元素序列中选择一个元素作为基准值&#xff0c;每趟总数据元素的两端开始交替排序&#xff0c;将小于基准值的交换的序列前端&#xff0c;大于基准值的交换到序列后端&#xff0c;介于两者之间的位置称为基准值…...

hive企业级调优策略之分组聚合优化

测试用表准备 hive企业级调优策略测试数据 (阿里网盘下载链接)&#xff1a;https://www.alipan.com/s/xsqK6971Mrs 订单表(2000w条数据) 表结构 建表语句 drop table if exists order_detail; create table order_detail(id string comment 订单id,user_id …...

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日&#xff0c;“凝心聚力&#xff0c;共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动&#xff0c;市场总监李甘来先生现场发表了题为《AI哨兵&#xff0c;为铁路安全运营站好第一道岗》的精彩主题演讲&…...

【openssl】Linux升级openssl-1.0.1到1.1.1

文章目录 前言一、openssl是什么&#xff1f;二、使用步骤1.下载2.编译安装3.一些问题 总结 前言 记录一次openssl的升级&#xff0c;1.0.1升级到1.1.1 一、openssl是什么&#xff1f; OpenSSL是一个开源的加密工具包&#xff0c;广泛用于安全套接层&#xff08;SSL&#xff…...

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍&#xff1a; FMVSS是美国《联邦机动车安全标准》&#xff0c;由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准&#xff0c;旨在提高机动车的安全性能&#xff0c;减少交通事故中的人员伤亡。F…...

龙迅LT6211B,HDMI1.4转LVDS,应用于AR/VR市场

产品描述 LT6211B 是一款用于 VR/ 显示应用的高性能 HDMI1.4 至 LVDS 芯片。 对于 LVDS 输出&#xff0c;LT6211B 可配置为单端口、双端口或四端口。对于2D视频流&#xff0c;同一视频流可以映射到两个单独的面板&#xff0c;对于3D视频格式&#xff0c;左侧数据可以发送到一个…...

解决docker拉取镜像错误 missing signature key 问题

核心原因&#xff1a;本地docker版本过低&#xff0c;需要&#xff1a; 1. 彻底卸载本地docker文件 2. 配置yum 镜像文件&#xff0c; 重新安装最新版本 相信教程可参考&#xff1a; CentOS安装Docker(超详细)_centos 安装docker-CSDN博客...

倒计数器:CountDownLatch

CountDownLatch 是 Java 中用于多线程编程的一个同步工具。 它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。 CountDownLatch 通过一个计数器来实现&#xff0c; 该计数器初始化为一个正整数&#xff0c;每当一个线程完成了指定操作&#xff0c;计数器就会减一。…...

vue内容渲染

内容渲染指令用来辅助开发者渲染DOM元素的文本内容。常用的内容渲染指令有3个 1.v-text 缺点&#xff1a;会覆盖元素内部原有的内容 2.{{}}&#xff1a;插值表达式在实际开发中用的最多&#xff0c;只是内容的占位符&#xff0c;不会覆盖内容 3.v-html&#xff1a;可以把带有标…...

Kafka为什么能高效读写数据

1&#xff09;Kafka 本身是分布式集群&#xff0c;可以采用分区技术&#xff0c;并行度高&#xff08;生产消费方并行度高&#xff09;&#xff1b; 2&#xff09;读数据采用稀疏索引&#xff0c;可以快速定位要消费的数据&#xff1b; 3&#xff09;顺序写磁盘&#xff1b; …...

Flink系列之:Table API Connectors之Debezium

Flink系列之&#xff1a;Table API Connectors之Debezium 一、Debezium二、依赖三、使用Debezium Format四、可用元数据五、Format参数六、重复的变更事件七、消费 Debezium Postgres Connector 产生的数据八、数据类型映射 一、Debezium Debezium 是一个 CDC&#xff08;Chan…...

【Python基础】文件读写

文章目录 [toc]打开文件open()函数参数解析示例 文件路径绝对路径示例 相对路径示例 打开文件的模式常用模式 读文件示例 写文件示例 按行读写文件readline()示例 readlines()示例 writelines()示例 关闭文件示例finally语句示例 上下文管理器示例 自定义读写类示例 打开文件 …...

电脑风扇控制软件Macs Fan Control mac支持多个型号

Macs Fan Control mac是一款专门为 Mac 用户设计的软件&#xff0c;它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度&#xff0c;以提高设备的散热效果&#xff0c;减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…...

clangd:Couldn‘t build compiler instance

在使用vscode clangd 搭建RK3588 5.10版本linux内核代码开发环境时&#xff0c;使用bear生成 compile_commands.json时&#xff0c;clangd生成标签失败代码无法跳转&#xff0c;查看clangd日志&#xff0c;发现标签生成失败&#xff0c;失败原因&#xff1a;Couldnt build comp…...

Springboot启动出现Error to process server push response的解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法前言 注意,此篇博客只提供一种bug排查思路,毕竟每个项目引起的依赖包冲突都不一致! 1. 问题所示 启动Springboot的时候,5秒刷一次这个,大致如下: 2023-12-17 13:02:01.166 WARN 20196 --- [ main] o.s.boot.ac…...

P2P网络下分布式文件共享场景的测试

P2P网络介绍 P2P是Peer-to-Peer的缩写&#xff0c;“Peer”在英语里有“对等者、伙伴、对端”的意义。因此&#xff0c;从字面意思来看&#xff0c;P2P可以理解为对等网络。国内一些媒体将P2P翻译成“点对点”或者“端对端”&#xff0c;学术界则统一称为对等网络(Peer-to-Pee…...

计算机组成原理综合1

1、完整的计算机系统应包括______。D A. 运算器、存储器和控制器 B. 外部设备和主机 C. 主机和实用程序 D. 配套的硬件设备和软件系统 2、计算机系统中的存储器系统是指______。D A. RAM存储器 B. ROM存储器 C. 主存储器 …...

探秘 AJAX:让网页变得更智能的异步技术(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

CentOs7.x安装部署SeaTunnelWeb遇到的坑

CentOs7.x安装部署SeaTunnelWeb遇到的坑 文章目录 1. 环境2. SeaTunnel安装部署2.1下载安装包2.2 设置环境变量2.3 安装连接器插件2.4 拷贝jar包到lib下2.5 启动命令2.6 执行官方client提交任务demo 3. SeaTunnel-Web安装部署3.1 下载安装包3.2 初始化数据库脚本或修改配置appl…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

git: early EOF

macOS报错&#xff1a; Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...