2022-04-11 更新
仔细研究了Pathways, 写了两篇博客:
OneFlow:解读谷歌Pathways架构(一):Single-controller与Multi-controller
第二篇还在公众号上:解读 谷歌 Pathways (二): 向前一步是 OneFlow
欢迎批评指正。
========
先非常简要的回答一下。
Google 的 TensorFlow的分布式是所谓的single-client,有一个master节点做control plane生成执行计划,分发到很多worker节点上执行。
随后随着JAX的提出,Google 开始倡导SPMD (single program multiple data) ,也就是multi-client,没有所谓的master节点,各个worker 的script是对称的,各个worker 各干各的,但是有协同。multi-client在数据并行和模型并行下非常自然,各个worker就是完全对称的,在有流水并行的情况下,各个worker 执行不同的stage,不对称,SPMD并不是很协调,但multi-client还有另外一些比较微妙的优势。
Pathways 里面强调了single-controller,相当于又回到了single client。在single-client下写分布式程序脑力负担还是低一些,特别是解决了auto placement和auto parallelism之后,分布式代码就应该和单卡代码是一样的,只有single client 才会给人那种像写单机代码一样的感觉。Hadoop 和 Spark 就是典型的single client。
这里说一下OneFlow,在2020年开源的时候是single client模式,经过过去1年的重构,改成了multi client模式,也就是现在的模式。
我们也正好讨论到,尽管现在底座是 multi-client,提供一种single client的使用体验也是有好处的,譬如OneFlow支持一种叫eager global的执行模式,相当于define by run模式去一行一行写代码,这些代码会自动在分布式集群上运行,也就是调试模式写分布式代码。实现这个体验的比较简单的办法是用Ray,因为multi-client的python 脚本是对称的,在每个卡上都一样,只需要把python脚本当成Ray的remote function 发出去就可以了。
这篇论文的其它部分还没有仔细看。
怎么没人提《圣斗士星矢》啊?
这个系列作品的特色不就是回回都是一部的戏就半天时间么?
黄道十二宫篇:纱织中了天箭座的箭,必须12小时内突破圣域十二宫。
北欧篇:奥丁代言者希露达被海皇戒指蛊惑令冰川融化,纱织代替希露达阻止冰川融化但是只能坚持12小时,必须在时限内摘下希露达的戒指。
海皇篇:纱织代替人类承受波塞冬的洪水,应该也是只能支撑一天之内的时间。
冥王十二宫篇:被哈迪斯复活的圣斗士要在12小时内取下雅典娜的首级,实际目的则是为了雅典娜去冥界并且唤醒女神圣衣,12小时候被复活的圣斗士们就消失了。
冥界篇:记不清打了多长时间,但从纱织被塞到缸里抽血开始到解决应该也是一天之内。
黄金魂:在本篇剧情里有好几天,但对应到冥界篇时间仅仅发生在冥界篇12黄金击破叹息之墙到打死神之间。
火星篇:马尔斯获得阿丽娅的权杖后建立起巴别塔吸引火星,会在12小时内毁灭地球,主角们必须在12小时内突破新十二宫。
土星篇:这篇好像打了很多天……