美文网首页
AutoTM: Automatic Tensor Movemen

AutoTM: Automatic Tensor Movemen

作者: CPinging | 来源:发表于2020-04-11 22:45 被阅读0次

    一、背景

    image.png

    深度学习的参数越来越多,图中标注已经存在17 billion的参数,现代内存装不下,显存更装不下。也许分布式是个解决方案,但是在单机场景下就真的没有办法了吗?

    Image: https://www.microsoft.com/en-us/research/blog/turing-nlg-a-17-billion-parameter-language-model-by-microsoft/

    不,不是这样的。

    我们要知道,传统的DRAM其实单机上64GB已经是非常大了,再加上GPU的12GB,也就70GB左右的存储量,这个存储量实在是太吝啬了。恰巧,最近Optan DC的NVDIMM流行了起来,我们可以看一下具体的NVDIMM的Style:

    image.png

    很显然,可以直接直接扩展内存,可以被CPU直接访问;最重要的是,容量大,价格低,性能还不算太慢。

    不过直接用NVDIMM作为扩展又不太行,毕竟DNN要求高速训练,太慢了影响太大。

    image.png

    所以要合理设计一些方案去利用部分DRAM+NVDIMM达到既能扩展存储量,性能又不怎么损失的效果。

    怎么做呢?

    二、AutoTM整体设计

    所以要根据DNN的特性设计一些优化方案。在介绍优化方案前,我们可以看看一些NVDIMM的性能情况:

    image.png
    image.png

    总体来说,第一个图是NVDIMM与DRAM的性能比;第二个图是DRAM与NVDIMM的转移性能比。

    我们在来看一个AutoTM的整体性能对比:

    image.png

    全在PMM上是最差的,全在DRAM上是最好的,NUMA指DRAM+PMM,但是用CPU优先使用DRAM(就是不做优化)。

    由图可知,AutoTM还是很nice的。

    下一步就要看看怎么利用NVDIMM做优化了:

    image.png

    我们的目标是更快更大;如何做呢?要使得Tensor在DRAM与PMM中转移,并用最优的方案转移;策略呢?先进行一些DNN基本信息的测量,然后使用整数线性规划来做。

    具体来说:

    1 Kernel Profiling阶段

    测量DNN的一些Tensor大小,位置,并且one by one的去尝试把Tensor摆放到哪些位置,并测量相关操作的执行时间(不同位置对应不同的操作执行时间)

    image.png

    我们的目标就是得到如下图:

    image.png

    具体怎么算呢?

    image.png

    首先要算每个kernel的执行时间ρk(上图),并加上数据转移时间Mt(下图)。

    image.png

    并且给一个DRAM的限定条件:即我们需要给一个初始DRAM,并且使得我们的决策要在门限以下才阔以。

    (这里插播一些课外话,就是说文章当中给的函数相对复杂一些,考虑的稍微细致一些,不过为了便于理解这里放这些宏观的公式就可以了,害算了,我还是把论文里面的公式也提一下吧,论文写的不是很清楚害得我看了老半天才看懂,也算记录一下吧。。。)

    不扣细节的话直接跳过就好

    image.png

    公式(3)代表tensor真正执行时所在的地方:

    image.png

    比如我图中红色框出来的地方,因为黑色实线是真正流程,所以对于K2来说,我的t1是在DRAM中被访问的,所以这个(3)公式代表1;对于K5的话,t1在PMM中被执行,所以代表0 。

    对于(4)来说,表示我数据Tensor在当前K执行完后,被转移到哪个位置。

    image.png

    比如图中K2的话,数据被转移到PMM中,所以为0;当K4执行完后,数据被转移到PMM中所以为0;

    image.png

    对于这个DRAM限定公式来说,每一个K都会限定一下,并且加号两遍分别对应当前K输入的Tensor以及当前K用不到的Tensor(但是又必须存在DRAM中)。

    而里面的IO以及L是没有交集的,简单来说如果这个Tensor是输入或者输出的,那么就不属于L,反之亦可。

    好了跳到这里就行了。

    了解了这些限定公式之后,就可以看看实验。

    三、实验

    配置:

    image.png
    • PMM与DRAM容量配比:
    image.png

    性能有目共睹。

    • 价格对比(右边bar)
    image.png
    • 计算时间
    image.png

    最后这个方案还被引入到了GPU+DRAM中,不过其实这种方案相关论文比较多,所以很难评判这篇文章的好坏,就是代码太难读了,用的Julia,我的个乖乖,套用一句日本悬疑剧的一句台词:oh my Julia!,希望我后期能把这个代码啃掉。

    记录比较草率,大致过了一下这个文章。会续更。

    相关文章

      网友评论

          本文标题:AutoTM: Automatic Tensor Movemen

          本文链接:https://www.haomeiwen.com/subject/qjbpmhtx.html