第397章 吴恩达的讚赏

⚡ 自动翻页 开启后阅读到底自动进入下一章
⚡ 开启自动翻页更爽 看到章尾自动进入下一章,追书不用一直点。

  他转过头,看了一眼旁边正无所事事的庾明轩,说道:“庾总,接下来的学术探討估计要很久,你先回酒店休息吧,晚点我忙完了打你电话。”

  林渊这是在照顾庾明轩的感受。像他这种习惯了风月场所和商业谈判的花花公子,让他在实验室里干坐几个小时听代码架构,估计能把他憋死,到时候走又不好意思走,还不如提前把他支开。

  庾明轩一听笑著说:“行,那你们聊,林总我先撤了,车子我给你留在这。”

  等庾明轩离开后,吴恩达笑著带林渊穿过走廊,来到了他的课题组机房。

  机房的白板上画满了复杂的网络拓扑图。吴恩达指著白板,开始阐述问题:“林渊,你看。我们目前在尝试用多台机器並行处理庞大的神经网络参数。但在高並发状態下,所有的节点(worker)都要频繁地跟中央参数伺服器(parameter server)进行数据同步。节点一多,网络带宽瞬间就被挤爆了,中央伺服器成了绝对的瓶颈。这个问题,你怎么看?”

  林渊盯著白板,脑海里迅速翻阅起他从 2035 年带回来的记忆。在那个年代,这种早期的分布式训练瓶颈早就被一种叫做“环形同步”(ring all-reduce)的底层算法彻底解决了。

  林渊拿起马克笔,在白板上画了一个圆圈,开口道:“吴教授,为什么一定要有一个中央伺服器?如果把所有节点连成一个逻辑上的环形网络呢?”

  吴恩达皱了皱眉:“环形?节点 1 传给节点 2,节点 2 传给 3?但这样一来,数据跑完整个环的延迟太高了,根本无法满足实时並发的需求。”

  “不,数据不是整体传输的。”林渊在环上切了几条线,“我们把庞大的参数数组切分成和节点数量相等的碎块。在第一步(scatter-reduce)里,每个节点只负责把自己计算的那一小块数据传给下一个节点,同时接收上一个节点传来的另一小块数据。”

  吴恩达推了推眼镜,目光瞬间亮了起来:“同时收发不同的数据块?这样就不会出现单点拥堵了。”

  林渊继续说道:“对,因为所有节点的上下行带宽都在被满负荷利用。无论集群里有 10 台机器还是 100 台机器,单次同步的通信总量都是恆定的。这就是去中心化。”

  吴恩达立刻转身,拿起笔在黑板上快速写下了一串公式。他敏锐的数学直觉瞬间將林渊的设想具象化:“如果总数据量是 k,节点数是 n。传统的中央伺服器带宽瓶颈是 o(n),但按照你这个环形切块的设想,每个节点在每一步只需要传输 frac{k}{n} 的数据。总的传输时间 t 大约等於 2(n-1)frac{k}{n}。当 n 足够大时,通信成本几乎是个常数!”

  看著黑板上的公式,林渊大受启发。他只知道 2035 年成熟的系统架构和代码怎么写,但这其中的数学推导和严谨的逻辑,他是不具备的。

  “但是,林渊。”吴恩达转过头,提出了一个极其尖锐的问题,“在实际的高並发调度中,如果有一台机器的显卡因为发热降频了,变成了『慢节点』,它就会拖慢整个环形队列的同步速度。这在木桶效应下是致命的。”

  林渊笑了笑,拋出了在未来广泛使用的动態微批次(micro-batch)调度概念:“那就不要等它。我们在软体架构层引入动態张量路由(dynamic tensor routing)。快节点计算完直接开启下一轮的异步前向传播,慢节点的数据只做梯度累加,跳过当前周期的强同步。”