写作本文的起因是我想让修改后的分布式 PyTorch 程序能更快的在 Facebook 的集群上启动。探索过程很有趣,也展示了工业机器学习需要的知识体系。 2007 年我刚毕业后在 Google 工作过三年。当时觉得分布式操作系统 Borg 真好用。 从 2010 年离开 Google 之后就一直盼着它开源,直到 Kubernetes 的出现。 Kubernetes 调度的计算单元是 containers(准确的翻译是“集装箱”,而不是意思泛泛的“容器”,看看 Docker 公司的 Logo 上画的是啥就知道作者的心意了)。 而一个 container 执行一个 image,就像一个 process 执行一个 program。 无论 Googlers 还是 ex-Googlers,恐怕在用 Borg 的时候都未曾接触过 container 和 image 这两个概念。为啥 Borg 里没有,而 Kubernetes 却要引入了这样两个概念呢? 这个曾经问题在我脑海中一闪而过就被忽略了。毕竟后来我负责开源项目比较多,比如百度 Paddle 以及蚂蚁的 SQLFlow 和 ElasticDL,Docker 用起来很顺手。于是也就没有多想。 今年(2021 年)初,我加入 Facebook。恰逢 Facebook 发论文[1]介绍了其分布式集群管理系统 Tupperware。 不过 Tupperware 是一个注册于 1946 年的品牌 https://en.wikipedia.org/wiki/Tupperware_Brands,所以在论文里只好起了另一个名字 Twine。 因为行业里知道 Tupperware 这个名字的朋友很多,本文就不说 Twine 了。 总之,这篇论文的发表又引发了我对于之前问题的回顾 下载地址: Nginx如何配置Http、Https、WS、WSS的方法步骤 Docker部署mysql一主一从的操作方法 |