关于PipeDream的模型划分


关于PipeDream的模型划分

模型划分,是利用profiling阶段产生的profile文件作为输入,将模型进行划分,其中profile文件中包含的内容有Tl,al,wl。分别代表了第l层的正向计算与反向传播的时间、第l层的参数大小、第l层的激活activation大小(都是以字节为单位)
首先介绍两个变量, A k A^k Ak(i -> j,m) , T k T^k Tk(i -> j,m).
A k A^k Ak(i -> j,m) :从layer i到layer j使用 m k m_k mk个worker,作为一个最优管道,这其中最慢stage的执行时间就是 A k A^k Ak(i -> j,m) ,这个管道中可能有多个stage,也可能只有一个stage
T k T^k Tk(i -> j,m) :把layer i到layer j作为一个stage,使用 m k m_k mk个worker进行数据并行所需的时间(包括计算时间和参数同步时间)

关于 T k T^k Tk(i -> j,m)在这里插入图片描述

max里面的第一项是从i->j的计算时间,第二项则是参数同步,即通信的时间。关于第一项计算时间,可以用 A k A^k Ak(i -> j,1)代替的原因是,这里i->j使用一个worker的最优管道的最慢stage,可以理解为把i->j作为一个stage放到一个worker上!之后又可以使用 A k − 1 A^{k-1} Ak1(i -> j, m k − 1 m_{k-1} mk1) 代替 A k A^k Ak(i -> j,1),最后就得到了上述的公式!

关于 A k A^k Ak(i -> j,m)

这里表示的是最优管道划分的最慢stage的执行时间,那么可以用双重循环来实现在这里插入图片描述
考虑layer i -> layer s -> layer j,然后把layer s -> layer j当作是一个stage,而layer i -> layer s作为一个最佳子管道. 另外还需要给新分配出来的stage m’个workers. 那么前面那段还剩m - m’个workers. 于是就有了上式. 需要遍历所有s的位置(i <= s < j),还需要遍历所有m’ ( 1 <= m’ < m).
max里的第一项代表的是i->s的最佳子管道中最慢stage的执行时间,第二项代表的是从s->s+1传递激活/梯度的时间,第三项则是s->j这个单独stage的执行时间。这三项的最慢时间,也就代表了从layer i -> layer j的最慢stage的时间!
在这里插入图片描述
算法目标:求解
在这里插入图片描述
按照上述的过程进行迭代。

初始化:在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值