【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

微软机器学习最新进展

  • 2021-05-18
  • 本文字数:2366 字

    阅读完需:约 8 分钟

微软机器学习最新进展

本文是微软 VB 实验室/英伟达 GTC 洞察力系列文章的一部分。


随着人工智能和机器学习技术的飞速发展,微软在今年英伟达GTC活动中的存在感一如既往地强势,这并不是什么稀奇事。


微软的公司代表在多场会议上分享了他们最新的机器学习成果,包括规模推理、在混合环境中训练机器学习模型的新能力,以及首次亮相的、可以帮助数据科学家们更高效地分析和排除 ML 性能问题的新型 PyTorch Profiler。


微软的这三项创新成果均结合了微软自己的科技(如 Azure),开源工具与英伟达 GPU 硬件科技。

机器推理规模化


关于数据收集和机器学习模型训练的成本,人们的讨论很热烈。的确,这些计算的开销不是小数目,尤其是对于一些大型项目来说,高达数百万美元的计算花费并不少见。但在这些关于 AI 花销的讨论中,机器推理,一个基本可以算作是训练后 ML 模型的应用,却甚少被提及。随着深度学习模型越来越复杂,即使是在机器进行推理时,也涉及大量的数学表达式和浮点运算。


机器推理是人工智能中非常有趣的分支之一,因为它是微软 Azure 等团队为用户提供切实体验的阶梯。其中一个例子便是,Azure 团队与英伟达合作,优化改进微软 Word 中由AI助力的语法检查器。这项任务的目的不是为了训练模型以提供更优秀的语法检查,而是为了增强实际执行语法检查的推理引擎。


考虑到 Word 庞大的用户群体,该语法检查器需要进行数十亿次的推理,是属于计算密集型的任务。这就带来了两个互相关联的难题:一是技术问题,二则是财务问题。如果想要降低成本,我们就需要更加强大且高效的技术。


英伟达开发的Triton推理服务器,可以充分利用其 GPU 的运算能力,供给Azure机器学习模型进行推理。在二者的结合下,工作负载得到了优化,运行也更加流畅。该推理服务器支持所有常用框架,包括 PyTorch、TensorFlow、MXNet 以及ONNX


ONNX Runtime作为一款高性能推理引擎,利用多种硬件加速器以达到在不同硬件配置上的最佳性能表现。在微软与英伟达的紧密合作下,ONNX Runtime 集成了用于在英伟达 GPU 上进行模型加速的 TensorRT 加速器。ONNX Runtime 也被用做 Triton 服务器的后端之一。


Azure 机器学习是一个托管的平台即服务平台,为用户做大部分的管理工作。这涉及到规模问题,这也是许多人工智能项目陷入困境甚至失败的关键所在,也是技术问题有时会与财务问题发生冲突的地方,而 Triton 和 Azure 机器学习就是为了解决这一痛点而建立的。

Kubernetes:让跨企业内部/混合与多云训练 ML 模型变得更容易


混合训练环境的搭建并非易事,而扩展资源密集型的 ML 模型训练规模的需求则会使问题变得更加棘手。灵活、敏捷以及治理都是至关重要的需求。


Azure Arc基础设施允许拥有 Kubernetes 资源的客户在“单一虚拟管理平台”上应用策略,执行安全监控等一系列操作。Azure 机器学习与 Kubernetes 的集成通过扩展 Kubernetes API 的形式,搭建在 Azure Arc 的基础设施上。除此之外,通过原生 Kubernetes 代码概念(如操作符和 CI/CDs)以及运行在集群之上的“代理”,客户得以使用 Azuer 机器学习进行 ML 模型训练。


无论用户混合使用了什么集群,Azure 机器学习都让他们可以轻松地切换目标。Azure 机器学习的 Kubernetes 本地代理支持的框架包括 SciKit、TensorFlow、PyTorch 和 MPI。


本地代理也让这套系统的运行更加顺滑。它免去了数据科学家们学习 Kubernetes 的需要,也让了解 Kubernetes 的 IT 操作员免去了学习机器学习的功夫。

PyTorch Profiler


全新的 PyTorch Profiler 是一款由微软与 Facebook 合作开发的开源工具,为常用 ML 框架 PyTorch 提供 GPU 的性能调试功能。这款故障排除工具有望帮助数据科学家们和开发者们以更高效的方式分析和排查大规模深度学习模型的性能问题,最大限度地提高昂贵的计算资源(硬件)的使用率。


在机器学习中,分析(profiling)负责检查模型的性能。这与模型预测的准确性不同,性能在这里指的是模型对计算机硬件资源的使用效率与使用率。


新型的 Profiler 以 PyTorch 原有的 autograd 分析器为基础构建,通过高保真的 GPU 分析引擎的加强,使用户能够捕捉并关联有关 PyTorch 操作的信息和 GPU 硬件级的详细信息。


PyTorch Profiler 的配置和使用都不需要花费太多精力。它完完全全是集成的产物,结合了全新 Profiler 的 profile 模块、全新 libkineto 库,以及 PyTorch Tensorboard Profiler 的插件。你在 Visual StudioCode 将这一切全部可视化。它不仅适合初学者,也适合经验丰富的从业者,它的应用横跨研究到生产的各种用例,它是对英伟达更先进的NSight的补充。


PyTorch Profiler 的主要功能之一是它的时间线追踪。简单来说,它可以显示 CPU 与 GPU 的活动,让用户可以放大并观察每个活动的具体情况。在这里,你可以看到所有典型的 PyTorch 操作符,以及更高级的 Python 模型和 GPU 时间线。


用户在 PyTorch Profiler 的可视化窗口中观察 GPU 利用率的情况时,可能会注意到一些小的“缺口”。这些小缺口代表着 GPU 可能会有约 40 毫秒的空闲,而用户会希望优化这些空闲时间,让 GPU 有事可做。PyTorch Profiler 可以让用户更深入地了解 GPU 的运作,看看有哪些依赖关系,以及在这个空闲间隙之前有哪些事件。如果将问题追溯到 CPU,用户可能会发现它才是瓶颈所在,而 GPU 则干坐在那里等待系统的另一部分读取完它需要的数据。


在这样微观的层面上检测 GPU 效率或许看起来微不足道,但如果一个步骤只需要 150 毫秒,那么此时 GPU 中的 40 毫秒空闲将会占据相当大的比例。再考虑一下,如果一个项目一次运行需要数小时,甚至是数周时,那么斤斤计较每一步中的损失就变得必要了,因为那意味着你在计算周期中付出的金钱变得低效了。


PyTorch Profiler 同时还提供建议功能,用于指导模型构建者们解决常见的问题和可能遇见的情况。在本文关于 GPU 利用率的例子中,你要做的可能只是调整 DataLoader 的 worker 数量,以确保 GPU 能够保持忙碌状态。


原文链接:


https://venturebeat.com/2021/04/22/microsoft-details-the-latest-developments-in-machine-learning-at-gtc-21/

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-05-18 15:001506
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 493.0 次阅读, 收获喜欢 1966 次。

关注

评论

发布
暂无评论
发现更多内容

我赌一包辣条这是全网最详细的代码审计(没有之一)

网络安全学海

黑客 网络安全 信息安全 代码审计 漏洞分析

业务架构模块8作业:设计消息队列存储消息数据的MySQL 表格

好吃不贵

架构实战营-模块8作业-消息队列MySQL表格

Lane

Go 学习笔记之 Map

架构精进之路

Go 语言 7月日更

只更新代码,然后发布版本:基于 Serverless Devs 原子化操作阿里云函数计算

Serverless Devs

进来偷学一招,数据归档二三事儿

楼下小黑哥

Java 数据库 系统设计

ACM金牌选手整理的【LeetCode刷题顺序】

编程熊

Java 面试 算法 面经 笔试

架构实战营 模块八课后作业

iProcess

架构实战营

TEMS模型--衡量你的人生资源

俞凡

认知

正式加入字节跳动!如何才能更容易拿到大厂Offer

欢喜学安卓

android 程序员 面试 移动开发

Ta想做一粒智慧的种子

白洞计划

模块8作业

杨彬

#架构实战营

暑假期间快手将重点整治平台:短视频平台如何完善内容审核机制

石头IT视角

第二周作业-熊猫潘戈项目利益相关方

小夏

产品经理训练营 邱岳

记录一次Neokylin_Server_V5系统已有分区的扩容操作

星河寒水

分区扩容

模块一作业

架构0期-Bingo

图像的模板匹配,Python OpenCV 取经之旅第 29 天

梦想橡皮擦

7月日更

推荐系统的未来发展(三十三)

数据与智能

价值观 推荐系统

Linux之find命令的参数详解

入门小站

Linux

Kats-Facebook最新开源的时序分析工具

好孩子

在线脑图思维导图生成工具

入门小站

工具

自建开发工具系列-Webkit内存动量监控UI(二)

Tim

typescript 大前端 YARN ES5

架构实战营 - 模块 8- 作业

请弄脏我的身体

架构实战营

架构训练营模块 1 作业 - 1班助教

听闻

网络攻防学习笔记 Day70

穿过生命散发芬芳

网络攻防 7月日更

【LeetCode】基于时间的键值存储Java题解

Albert

算法 LeetCode 7月日更

王者荣耀商城异地多活架构设计

thewangzl

公司内部使用的数仓开发规范

白程序员的自习室

数据仓库 开发规范 数仓规范 7月日更

我为什么要学习业务建模?

escray

学习 极客时间 7月日更 如何落地业务建模

全面了解Java并发编程基础!超详细!

程序员的时光

Java 并发编程

直接上干货!这些细节在Android面试上要注意了

欢喜学安卓

android 程序员 面试 移动开发

微软机器学习最新进展_AI&大模型_VB Staff_InfoQ精选文章