当前位置: 首页 > 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…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

若依登录用户名和密码加密

/*** 获取公钥&#xff1a;前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...