比Data parallel的通信量大幅减少;
优点:填满pipeline,减少机时浪费;
GPipe:
PipeDream:
知识点:pipeline并行,throughtput取决于最慢的那个节点层;
混合并行:层与层用Pipeline Parallel,层内部用Data Parallel
自动划分:先在单卡上试探性跑一会儿("Profiling run"),拿到计算时间、通信时间等实际数据,再结合可以静态计算出的理论计算量、理论通信时间,决定分几节,每节多少个Data-parallel node;
难点1: Backward时,还要使用Forward时那同一份weights;
解决:Forward完立即暂存("Stash")下来weights, 供该batch Backward阶段使用;
难点2:同一个batch,在每层使用的weights, 总共更新的次数(版本号),是不同的;但因为对效果影响小,可忽略。