Jeff Dean学生时期研究并行神经网络的历史
【1】一个本科生的愚蠢错误 1990年,明尼苏达大学
1990年,Jeff Dean还是个本科生。他选了两个学期的并行算法课,其中有一周讲到了神经网络。
他着迷了。
于是他跑去找教授Vipin Kumar:"我想做个毕业论文,研究怎么用并行计算来训练神经网络。"
系里正好有一台32个处理器的超立方体计算机。Dean想的是:如果能用上32倍的算力,是不是能训练出更厉害的神经网络?
他动手做了两种方法。一种是把数据切开,每个处理器算一部分——三十年后,这叫"数据并行"。另一种是把模型切开,不同的处理器算模型的不同部分——这叫"模型并行"。当时他给它们起了两个怪名字,什么"模式分区"和"模型流水线"之类的。
但他犯了一个愚蠢的错误。
他只增加处理器的数量,却没有增加模型的大小。结果就是,他把一个10个神经元的小网络摊到32个处理器上,效率惨不忍睹。加速曲线难看得要命。
那篇毕业论文写完,他就把神经网络这事儿放下了。在他的脑子里,这只是个"有趣的抽象概念"。
他不知道的是,自己当时其实已经站在了通往未来的门口。他只是还没找到钥匙。
二十年后,他会在Google的微型厨房里遇见一个人,然后一切都会不一样。
1990年,Jeff Dean还是个本科生。他选了两个学期的并行算法课,其中有一周讲到了神经网络。
他着迷了。
于是他跑去找教授Vipin Kumar:"我想做个毕业论文,研究怎么用并行计算来训练神经网络。"
系里正好有一台32个处理器的超立方体计算机。Dean想的是:如果能用上32倍的算力,是不是能训练出更厉害的神经网络?
他动手做了两种方法。一种是把数据切开,每个处理器算一部分——三十年后,这叫"数据并行"。另一种是把模型切开,不同的处理器算模型的不同部分——这叫"模型并行"。当时他给它们起了两个怪名字,什么"模式分区"和"模型流水线"之类的。
但他犯了一个愚蠢的错误。
他只增加处理器的数量,却没有增加模型的大小。结果就是,他把一个10个神经元的小网络摊到32个处理器上,效率惨不忍睹。加速曲线难看得要命。
那篇毕业论文写完,他就把神经网络这事儿放下了。在他的脑子里,这只是个"有趣的抽象概念"。
他不知道的是,自己当时其实已经站在了通往未来的门口。他只是还没找到钥匙。
二十年后,他会在Google的微型厨房里遇见一个人,然后一切都会不一样。