【论文阅读】Automated Runtime-Aware Scheduling for Multi-Tenant DNN Inference on GPU

该论文发布在 ICCAD’21 会议。该会议是EDA领域的顶级会议。

基本信息

AuthorHardwareProblemPerspectiveAlgorithm/StrategyImprovment/Achievement
Fuxun YuGPU
  • Resource under-utilization
  • Contention
SW Scheduling
  • Operator-level scheduling
  • ML-based scheduling auto-search
  • Reduced inference makespan

论文作者

Fuxun Yu 是一名来自微软的研究员。主要研究的是大规模深度学习服务系统。上一次看它的论文是一片关于该领域的综述,感觉写的蛮不错的。

背景

现在深度学习特别特别地火,multi-tenant DNN inference 也变成一个比较重要的问题。那什么是 multi-tenant DNN inference 呢?简而言之,就是研究如何让 GPU 同时运行不同模型推理。现有解决 multi-tenant DNN inference 问题的主要方法有两种:sequential exection 和 parallel/concurrent exection。
在这里插入图片描述

但这两种方式对于 GPU 资源利用不够充分。第一种方法(Sequential)由于是串行计算,自然GPU利用会比较低。第二种方法(Parallel)尽管前期提高了 GPU 的利用率,但当有的模型层数比较深,有的模型比较浅时,还会出现不平衡的现象。而且,由于GPU和内存资源争用,会产生高额的格外开销。
为此,希望提出一个新的解决方案,该解决方法能够进一步提高资源的利用率从而降低 latency。
在这里插入图片描述

Schedualing Framework

multi-tenant schedule的关键点在于如何管理运行时的一致性以及平衡资源利用率。

基本思想

在这里插入图片描述

对于 Stream-Level 并行而言, 每个 GPU 流都会分配一个执行序列以实现不同模型并行推理。同时,如果要实现更细粒度的调度,这里引入一个概念 ---- 「pointers」。在插入同步阻碍(synchronization barries)的地方叫pointer。这样会将一个执行序列分成多个stage,这种拆分操作可以保证只有同一stage的操作才共享资源。我们可以通过调整pointers的位置而改变每个阶段的操作数量,从而找出最优的资源利用率策略。最后,状态内也做了一点优化,传统的DFS调动策略会导致GPU流之间存在优先级,导致停滞时间很长,因此改成使用BFS调度策略,使每个操作都得到执行。

这里有一个最关键的地方就是状态如何划分。接下来重点讲解这一部分。

Automated Scheduling Search

在这里插入图片描述

首先要明确我们的目标是找到一个stage集合,使得总时延最少。

τ ∗ = arg ⁡ min ⁡ τ f ( τ ) , for τ ∈ D τ \tau^*=\arg\min_\tau f(\tau),\quad\text{for} \tau\in D_\tau τ=argτminf(τ),forτDτ
但由于 D τ D_\tau Dτ 并不是一个规则的数组集合,这导致难以比较和优化,在此,做了一个pointers和stages的映射:
ρ ∗ = arg ⁡ min ⁡ ρ f ( τ ) , s . t . τ = T ( G , ρ ) , f o r ρ ∈ D ρ . \begin{aligned}&\rho^*=\arg\min_\rho f(\tau),\\&\mathrm{s.t.}\quad\tau=T(G,\rho),\quad\mathrm{for}\rho\in D_\rho.\end{aligned} ρ=argρminf(τ),s.t.τ=T(G,ρ),forρDρ.
关于 T ( G , ρ ) T(G, \rho) T(G,ρ) 的用法,下面这个例子可以说明:

ρ 1 : ( 3 , 5 , 7 ) + S 1 : [ 1 , 2 , 3 , . . . , 9 , 10 ] = S 1 ′ : [ 1 , 2 , 3 ] , [ 4 , 5 ] , [ 6 , 7 ] , [ 8 , 9 , 10 ] \begin{aligned}\rho_1:(3,5,7)&~+~\mathcal{S}_1:[1,2,3,...,9,10]=\\&\mathcal{S}_1^{^{\prime}}:[1,2,3],[4,5],[6,7],[8,9,10]\end{aligned} ρ1:(3,5,7) + S1:[1,2,3,...,9,10]=S1:[1,2,3],[4,5],[6,7],[8,9,10]

这样我们可以将不定长且不规则的Stages数组变成规则的pointers矩阵。之后根据上图进行迭代优化,找出最优解。

Random Search

第一种方法是随机搜索,顾名思义,该算法会从搜索空间中随机抽取样本(pointers矩阵),然后计算相应的时延成本。经过多轮迭代,选择最低时延成本的样本作为最优解。

这种方法虽然很简单,但后面也验证了该方法的有效性。

Coordinate Gradient Search

第二种方法是坐标梯度搜素。这种方法类似于我们所说的控制变量法。核心思想是每次仅仅对一个模型的划分策略做优化。
具体的算法流程如下:
在这里插入图片描述

模型性能评估

加速性能

在这里插入图片描述
可以看到,该模型所用时间比传统算法都有提高,模型集合的复杂程度越高,性能越好。这其实也符合常理,不同模型复杂度相差越大,该算法的加速效率越高,因为它将资源更加均匀地分配了。

搜索算法比较与开销分析

搜索算法性能
在所有情况下,无论是Random还是Coordinate都优于传统的并行策略。但在模型集合复杂度很高的时候,Random算法的效果并不理想,只有在1000轮时才有很明显的效果。话又说回来,如果模型集合的复杂度不高,大可以使用Random算法,这个算法的时间复杂度一定是远远低于coordinate算法的。

下面来看一下Coordiante算法的时间开销。
在这里插入图片描述
在大部分情况下,Coordiante算法的时间开销大概在10s-3min内。由于我们只需要对模型集合调整一次(但模型集合会有很多呀)并且可以离线调优,因此是这点时间开销可以接受的。

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

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

相关文章

Rustdesk 中VP8 / VP9 / AV1 是什么?

环境: Rustdesk1.1.9 VP8 / VP9 / AV1 问题描述: VP8 / VP9 / AV1 是什么? 解决方案: 1.VP8、VP9和AV1是视频编解码器,用于压缩和解压缩视频数据。它们是由Google和Alliance for Open Media(AOM&#…

011 变量

变量的定义 注意事项 作用域 类变量:定义在类中的变量,类的整个生命周期内可用实例变量:定义在类中的变量,类的实例可以使用局部变量:定义在方法中的变量,仅在方法内可以使用 class Dog{// 类变量static …

机器学习 | 深入理解并掌握核心概念

在如今数字化时代的浪潮下,机器学习已经成为人工智能领域的璀璨明星。它像一面魔镜,赋予计算机系统学习和改进的能力,让机器能够从海量数据中提取规律、预测未来,甚至做出智能决策。本 专栏 将带您踏上机器学习的奇妙之旅&#xf…

题解:CF1920E. Counting Binary Strings

题解:CF1920E. Counting Binary Strings 题意简述 题目链接:Problem - E - Codeforces。 洛谷翻译:Counting Binary Strings - 洛谷。 思路解析 假设我们有一个01串str(设里面有z个“1”),我们要求它里…

【MySQL进阶】视图_存储过程_存储函数_触发器

文章目录 视图基本介绍视图操作视图创建视图查询视图修改视图删除 存储过程基本介绍基本操作存储语法变量IF语句参数传递CASEWHILEREPEATLOOP游标 存储函数触发器基本介绍基本操作 总结 视图 基本介绍 视图概念:视图是一种虚拟存在的数据表,这个虚拟的表…

透明拼接屏在汽车领域的应用

随着科技的进步,透明拼接屏作为一种新型的显示技术,在汽车领域的应用越来越广泛。尼伽小编将围绕透明拼接屏在汽车本身、4S店、展会、工厂等方面的应用进行深入探讨,并展望未来的设计方向。 一、透明拼接屏在汽车本身的应用 车窗显示&#x…

Python入门(一)

anaconda安装 官网:https://www.anaconda.com下载 jupyter lab 简介: 包含了Jupyter Notebook所有功能。 JupyterLab作为一种基于web的集成开发环境,你可以使用它编写notebook,操作终端,编辑markdown文本&#xf…

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

NetSuite 文心一言(Ernie)的AI应用

有个故事&#xff0c;松下幸之助小时候所处的年代是明治维新之后&#xff0c;大量引用西洋技术的时期。当时大家对“电”能干什么事&#xff0c;充满好奇。“电能干什么&#xff1f;它能帮我们开门么&#xff1f;” 松下幸之助的爷爷对电不屑&#xff0c;于是就问他。松下幸之助…

【新闻感想】谈一下PandoraNext的覆灭(潘多拉Next-国内可访问的免费开放GPT共享站将于2024年1月30日关闭)

文章目录 悲报&#xff1a;TIME TO SAY GOODBYE&#xff01;PandoraNext&#xff01;PandoraNext作者言&#xff1a;你们赢了&#xff0c;但我却没有输我如何了解到PandoraNext的合照留念于是开始逆向&#xff01; 悲报&#xff1a;TIME TO SAY GOODBYE&#xff01;PandoraNext…

Java入门高频考查基础知识5(扎实技术基础应变一切变化-45题4.2万字参考答案)

技术变革裁员影响的因素&#xff1a; 自动化替代简单重复性工作&#xff1a;随着技术的发展&#xff0c;一些简单、重复性的编码任务可能被自动化工具或者机器学习算法取代。这可能导致一些岗位的需求减少或者消失&#xff0c;从而可能导致部分人员裁员。 技能更新要求&#x…

大模型日报-20240122

清华、小米、华为、 vivo、理想等多机构联合综述&#xff0c;首提个人LLM智能体、划分5级智能水平 https://mp.weixin.qq.com/s/JYB4BzsXhWF8pEUUkvn_GQ 想必这些唤醒词中至少有一个曾被你的嘴发出并成功呼唤出了一个能给你导航、讲笑话、添加日程、设置闹钟、拨打电话的智能个…

【.NET Core】深入理解异步编程模型(APM)

【.NET Core】深入理解异步编程模型&#xff08;APM&#xff09; 文章目录 【.NET Core】深入理解异步编程模型&#xff08;APM&#xff09;一、APM概述二、IAsyncResult接口2.1 BeginInvoke2.2 EndInvoke2.3 IAsyncResult属性2.4 IAsyncResult异步演示 三、通过结束异步操作来…

系统架构演变

1.1系统架构的演变 2008年以后&#xff0c;国内互联网行业飞速发展&#xff0c;我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了&#xff0c;像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限&#xff0c;传统的IT企业”能用就行”的开发思…

yum下载源,vim使用

文章目录 yum本地配置lzrsz命令行互传scp(远程拷贝)vim yum本地配置 [rootiZf8z3j2ckkap6ypn717msZ ~]# pwd /root [rootiZf8z3j2ckkap6ypn717msZ ~]# ls /etc/yum.repos.d CentOS-Base.repo epel.repo //本地配置源yum会根据/etc/yum.repo.d路径下的配置文件来构成自己的下载…

人类行为动作数据集大合集

最近收集了一大波关于人类行为动作的数据集&#xff0c;主要包括&#xff1a;动作识别、行为识别、活动预测、动作行为分类等数据集。废话不多说&#xff0c;接下来就给大家介绍这些数据集&#xff01;&#xff01; 1、用于自动视频编辑的视频Blooper数据集 用于自动视频编辑…

idea中debug Go程序报错error layer=debugger could not patch runtime.mallogc

一、问题场景 在idea中配置了Go编程环境&#xff0c;可以运行Go程序&#xff0c;但是无法debug&#xff0c;报错error layerdebugger could not patch runtime.mallogc: no type entry found, use ‘types’ for a list of valid types 二、解决方案 这是由于idea中使用的d…

SpringBoot统一返回和统一异常处理

Session 认证和 Token 认证 过滤器和拦截器 SpringBoot统一返回和统一异常处理 上篇文章我们学习了基于 Token 认证的登录功能实现&#xff0c;分别使用了过滤器和拦截器去实现登录功能&#xff0c;这篇文章我们来学习项目中常用的统一返回结果和统一异常处理。 一、统一返…

【LeetCode每日一题】670. 最大交换

2024-1-22 文章目录 [670. 最大交换](https://leetcode.cn/problems/maximum-swap/)思路&#xff1a; 670. 最大交换 思路&#xff1a; 从后往前遍历整数的字符数组&#xff0c;找到第一个比当前最大值小的数字&#xff0c;然后将该数字与最大值进行交换。 将给定的整数转换为…

数据库-分库分表初探

文章目录 分库策略垂直切分垂直分库&#xff08;专库专用&#xff09;垂直分表&#xff08;拆表&#xff09;优点缺点 水平(Sharding)切分水平分表库内分表分库分表优点缺点 分表策略hash取模方案range范围区间取值方案映射表方案 分库分表问题事务一致性问题跨节点关联查询跨节…