动态张量运算自动优化技术解析

news/2025/10/8 22:25:05/文章来源:https://www.cnblogs.com/codeshare1135/p/19130213

自动优化动态张量运算的执行

深度学习模型核心依赖于涉及张量(矩阵的高维类比)的代数运算,这些运算可能重复数万次。高效学习需要优化频繁重复的张量运算。但涉及不同形状张量(如32x32、64x64、128x128等)的运算必须单独优化。

自动调度器是学习优化形状的程序,这些形状在当前的张量运算库中实现可能不够优化。然而,现有的自动调度器在处理形状变化的工作负载时表现不佳。例如,许多自然语言处理应用程序接受任意长度的输入,这意味着任意形状的张量。

在今年机器学习与系统会议(MLSys)上,我们和同事展示了一个名为DietCode的新型自动调度器,它比前代产品更高效地处理动态形状工作负载。现有的自动编码器必须单独优化每个可能的形状,而DietCode构建了一个形状通用的搜索空间,使其能够同时优化所有可能的形状。

我们在一个自然语言处理任务上测试了方法,该任务可以接受大小从1到128个令牌不等的输入。当使用反映合理真实世界分布的输入大小随机抽样时,相对于先前最佳的自动调度器,我们将优化过程加速了近六倍。当我们考虑所有可能的形状时,加速比增加到94倍以上。

尽管速度更快,DietCode还提高了生成代码的性能,相对于先前的自动调度器提高了70%,相对于现有张量运算库中手动优化的代码提高了19%。因此,它有望加速客户的动态形状机器学习工作负载。

动态工作负载

处理任意长度文本字符串的自然语言处理模型是动态设计模型的例子,这些模型允许可变大小的输入。但其他应用程序也需要动态工作负载。

例如,神经架构搜索通过从不同形状的组件构建它们来尝试不同的深度学习架构,这需要不同形状张量的运算。一些模型(例如BERT语言模型)在网络的不同层应用相同的运算,这些层具有不同数量的节点。

微内核

自动调度器通常依赖于计算内核——程序模板,其使用大大加速了评估不同候选优化的速度。然而,奇怪形状的工作负载可能无法精确适应内核。例如,如果张量在其中一个维度上有513个元素,但内核容量只有512,那么必须将两个内核拼接在一起以适应张量。

然而,拼接后的内核在相关维度上的组合容量为1,024,而输入张量只有513。因此,必须对输入张量进行填充以填满内核。这种填充可能显著减慢优化过程,因为它导致不必要的计算,然后必须从结果中修剪掉。

DietCode使用根据可用硬件而非输入形状调整大小的微内核,这有助于针对该硬件进行优化。对于给定的硬件配置,DietCode还可以生成一系列不同的微内核形状和大小,这些可以组合使用。

微内核足够小,通常可以平铺在输入上,以更精确地适应其形状。这可能仍然需要在边缘进行一些填充,但比更大的内核需要的填充少得多。

然而,微内核的真正优势是使DietCode能够同时优化多个形状的运算符。标准的自动调度器将获取工作负载形状,根据需要填充以适应其拼接的内核,然后使用提取程序特征(如循环结构和内存访问模式)的成本模型来估计不同实现的效率。然后它将为下一个形状重复该过程。

相比之下,DietCode将运算符分解到微内核上。成本模型有两个组成部分:一个评估分配给每个微内核的部分运算的特征,另一个评估将这些部分运算拼接在一起形成完整运算符的成本。

在这里,我们实现了最大的效率增益,因为每个部分运算都是多个工作负载形状的运算符的组成部分。与评估运算的计算成本(这是一个涉及实际硬件测量的机器学习过程)相比,将部分运算拼接在一起的成本很低。

有了优化的微内核,我们训练了一个高效的决策树模型,将工作负载形状映射到微内核。该决策树被合并到执行张量运算的二进制文件中,以将任意形状的输入路由到适当的微内核进行处理。

有关实验结果和更多细节,请参阅论文。

致谢:Cody Yu, Yizhi Liu, Gennady Pekhimenko
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站首页关键词设置江苏建设厅网站电话多少

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

多线程插入也是随机io,那为啥不用uuid

多线程插入也是随机io,那为啥不用uuid首先,并发写入确实是随机io,但是uuid带来的页分裂更恶劣 而多线程并发写入有序id,操作系统有办法优化老实说ds说的有点牵强

企业网站制作规划织梦素材网站模板

用 Excel 处理数据时,有时需要对字符串进行拆分。对于比较简单的拆分,使用 Excel 函数可以顺利完成,但碰到一些特殊需求,或者拆分的规则比较复杂时,则很难用 Excel 实现了。这里列出一些拆分需求示例,分析拆…

国庆做题记录(含有一些trick)

这篇文章信息量偏大,请谨慎阅读,注意高效利用右边的目录。 1.1 二分 关联博文:Atserkcn-0/1分数规划 P1404 平均数 既然要让子串平均数最大,那就二分平均数,判断能否达到即可。复杂度 \(O(n\log V)\)。 关联题目:…

【Linux】如何移动材料/文件夹

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【PhysUnits】15.9 引入P1后的右移运算(shr.rs) - 详解

【PhysUnits】15.9 引入P1后的右移运算(shr.rs) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

[论文阅读]PPT: Backdoor Attacks on Pre-trained Models via Poisoned Prompt Tuning - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

10. 模型与视图

一、模型与视图模型/视图架构包含三部分:模型(Model)是应用对象,用来表示数据;视图(View)是模型的用户界面,用来显示数据;委托(Delegate,也被称为 代理)可以定制数据的渲染和编辑方式。通过数据和界面进行…

网站域名备案信息查询wordpress无法查看站点

为啥我会使用pgbackrest进行备份?因为postgresql没有自带的差异备份工具。。。而我们在生产环境上,一般都需要用到差异备份或者增量备份。我们的备份策略基本是,1天1次完整备份,1个小时1次差异备份。如果只需要完整备份&#xff0…

[KaibaMath]1004 关于f(x,y) = [x]+[y] - [x+y]的平移稳定性

[KaibaMath]1004 关于f(x,y) = [x]+[y] - [x+y]的平移稳定性令f(x,y) = [x]+[y] - [x+y], g(x, y) = {x} + {y} - {x+y},则f(x, y) + g(x, y)= 0。 注意f(x, y)和g(x, y)均具有平移稳定性。 例如:f(x+M, y+N) = f(x,…

Mac OS 问题与技巧

docker Desktop中登录ubuntu后出现向上方向键不识别的问题:# 从 sh 切换到 bash /bin/bash通过方向键找到上一个命令: root@a8cf29654a52:/opt/csm# pwd /opt/csm root@a8cf29654a52:/opt/csm# pwd /opt/csm root@a8…

数据分析对网站建设的重要性福田营销型网站建站推广外包

文章目录 前言ts和js的区别?什么是Typescript的方法重载?Typescript中never 和 void 的区别?typescript 中的 is 关键字有什么用?TypeScript支持的访问修饰符有哪些?如何定义一个数组,它的元素可能是字符串…

黑龙江省建设教育网站查询小企业网站建设计划书

目录 1、什么是缓存 2、为什么使用Redis作为MySQL的缓存 3、缓存的更新策略 3.1、策略一:定期生成 3.2、策略二:实时生成 内存淘汰策略【面试重点】 4、缓存预热(Cache preheating)【面试重点】 5、缓存穿透(Cache penetration)【面试重点】 6、…

《算法设计与分析》第一章学习记录

一、互联网大公司的编码规范 核心目标是协同、质量、效率与安全。 1.命名规范 变量、函数、类名必须能清晰地表达其意图,避免使用 a, b, c, tmp 等无意义名称。严格遵守 camelCase、PascalCase、snake_case 等约定,并…

mcp_server

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" https://github.com/runekaagaard/mcp-alchemy"imes": { "command": "uvx", &qu…

香山红叶建设有限公司网站虚拟主机安装wordpress

一、代理模式 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。 上面类图中有一个订单接口类(OrderService)、一个订单实现类(OrderServiceImpl),订单模块的业务相对复杂和重要,如果这时候要在方法执行前后加上日志&#xff0c…

2025.10 国庆集训模拟赛总结

把门视为点,找环,答案就是环的长度先预处理前缀和 然后预处理f[i]表示满足j<i且aj==ai的最大的j。 答案就变成了:第一问用树套树类结构维护 第二问直接二分第一问就行,因为第一问我们在先做了。 树套树太难写,…

详细介绍:https和http有什么区别-http各个版本有什么区别

详细介绍:https和http有什么区别-http各个版本有什么区别pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

CF2150F Cycle Closing

感觉上判是否能一次完成是困难的。设两次的路径长度分别为 \(a, b\),考虑一些特殊情况。 题目一定有解,考虑取出一棵生成树。可以发现,第二次操作时的边数实际上很多,感觉上对于 \(b\) 不能限制得太小。考虑 \(a\)…

Easysearch 字段隐身之谜:source_reuse 与 ignore_above 的陷阱解析

背景问题 前阵子,社区有小伙伴在使用 Easysearch 的数据压缩功能时发现,在开启 source_reuse 和 ZSTD 后,一个字段的内容看不到了。 索引的设置如下: {......"settings": {"index": {"co…