入了深度学习的坑,没有个GPU怎么能带得动,你是不是也发愁过配什么样的GPU?NVIDIA,AMD GPU,Intel Xeon Phis,Google TPU...各家芯片让人挑花了眼,一个不行还得多买几个,而且越专业的硬件价格就越贵。
所以近年来,有人就动了个念头,硬件不行,我改软件还不行吗!
2017年,MIT教授 Nir Shavit 在研究一个需要借助深度学习重建老鼠大脑图像的项目时,由于不知道如何在图形卡或GPU上编程,于是他选择了CPU。
Nir Shavit
没想到,竟然顺利完成了这一研究。Shavit回忆说:“看,我发现只要以合适的方式编程,CPU就可以完成GPU的工作。”
难道未来做深度学习可以不用挑选专门的硬件了?
GPU也不是百分百适合深度学习
其实,GPU成为深度学习的首选硬件也算是一个巧合。GPU(Graphics Processing Unit)也就是图形处理器,顾名思义,这些芯片最初是被设计用来在电子游戏等应用中快速渲染图形的。
我们都知道*处理器CPU具有四到八个复杂的内核,是我们电脑中不可或缺的芯片,可以用来执行各种计算。GPU则由数百个只能执行特定操作的简单内核组成,但是这些内核可以同时执行操作,而不是一个接一个地执行,从而缩短了完成大量计算所需要的时间。
AI 研究领域的人们很快就意识到这种大规模并行化也使得 GPU 非常适合深度学习。像图形渲染一样,深度学习也涉及执行成千上万次的简单数学计算。
2011年,在与芯片制造商英伟达的合作中,谷歌发现在 2,000 个 CPU 上训练出来的计算机视觉模型可以区分猫与人,而仅仅在 12 个 GPU 上进行训练就可以达到相同的性能。于是,GPU成为了用于模型训练和推理的常用芯片。
但是GPU也不是百分百适合深度学习。一方面,它们不能作为独立芯片来使用。由于它们能执行的操作类型有限,因此必须依赖于 CPU 来处理其他操作。另一方面,GPU的高速缓存也非常有限 (这里的高速缓存是与芯片处理器最接近的数据存储区域), 这意味着大部分数据都存储在芯片之外,并且必须在处理时进行存取。这些来来回回的数据流最终成为了计算的瓶颈,从而限制了 GPU 运行深度学习算法的速度。
用CPU做深度学习,成本低范围广?
在MIT教授 Nir Shavit偶然间发现CPU可以完成GPU的工作后,他诞生了创业的想法。于是他和MIT研究科学家 Alex Matveev 在 2017 年合伙创办了一家名为公司Neural Magic的公司,宣称能通过一种“专有算法”让计算机在不配备专用硬件的前提下,运行复杂的数学函数,并使用更大规模的数据集。
该公司认为这不仅会降低深度学习的成本,还会使AI的使用范围更广。
Neural Magic用修改软件来替代硬件改造。该公司重新设计了深度学习算法,通过利用芯片自身的大容量可用内存和复杂的内核,使得算法在 CPU 上能更高效地运行。尽管这种方式失去了由 GPU 的并行化带来的速度,但据报道,由于它减少了在芯片内外传送数据的需求,从而节省了大致相同的时间。
该公司表示,这些算法可以在CPU上实现GPU的速度,但成本低了很多。
Neural Magic认为,以前没有采用这一方法也是有原因的。首先,这违反了大众普遍的认知。深度学习需要专用硬件的想法已经根深蒂固,以至于其他方法很容易就被忽略。其次,在行业中应用 AI 本身还是个相对较新的事物,并且很多公司刚开始寻找更简单的方法来部署深度学习算法。
对于Neural Magic公司来说,目前尚不清楚这样的新方法是否能够成就他们。该公司的产品正在数10家公司中进行Beta测试,这仅是整个AI行业的很小一部分公司。
目前来看,Neural Magic所提供的服务是否实用还是因公司而异。
正如Shavit所说,他们有一个客户是大型的显微镜设备制造商,现在正在尝试使用这种方法来为其显微镜增加 AI 功能。因为显微镜已经带有 CPU,所以他们不需要增加任何额外的硬件。对于他们来说,使用基于GPU的深度学习模型的设备则体积更大且更耗电。
但对于大部分公司来说,如果要先在专用硬件上训练他们的模型,再使用 Neural Magic 的软件将训练后的模型转换为与 CPU 兼容的格式,就有点多此一举了。
Shavit表示这也仅仅是个开始。Neural Magic 计划在将来扩展其产品,以帮助其他公司在 CPU 上训练 AI 模型。他说:“我们相信从现在开始10到20年后,CPU 将成为运行机器学习算法的实际架构。”
MIT计算机科学与人工智能实验室的研究科学家Neil Thompson则不这么确定。他说:“在芯片生产方面,经济确实发生了变化,这将导致更多的专业化。” 此外,尽管 Neural Magic 的技术能从现有硬件中获得更高的性能,但基本的硬件改进仍将是继续推动计算向前发展的唯一途径。
“这听起来是提高神经网络性能的一种非常好的方法。但我们不仅要改善神经网络,而且要改善整体计算,”Thompson说。
关于“无硬件深度学习”,你怎么看?
好奇的文摘菌在reddit上逛了一圈,看看大家关于“无硬件深度学习”的看法。文摘菌发现了一个很直白的楼主,他问道,“Neural Magic这家公司是骗子吗?是怎么用CPU实现GPU级别的算力的?”
评论区的同学表示,“骗子”倒不至于,“他们的背景是多线程计算技术,所以我猜他们使用了大量的近似方法,比如诱导稀疏性、低精度、哈希、压缩等,并自动生成非常高性能的多线程代码。这也可以解释为什么他们要针对推理。”
“但如果你是一个深度学习研究人员,我觉得它可能不会对你非常有用。”
他还补充道,“由于架构和软件方面的原因,这些东西通常在GPU上无法很好地运行。这就是为什么现在稀疏图工作负载通常在高性能计算的CPU上运行的原因。”
网友jminuse也表示,GPU在稀疏矩阵上效率较低,因此它们在本质上不如CPU能提供那么多的加速。在这个问题域内是公平的,如果稀疏模型在精度上与稠密模型相等也是公平的。但是如果他们说“我们可以和GPU一样快(如果我们使用的模型不那么精确)”,这就不是一个好的比较。
还有网友称,自己多年来也一直在用CPU训练神经网络,不过他们没有Neural Magic那么大胆的宣称在所有情况下始终能够以最快的速度运行。
对此,你怎么看?欢迎各位技术大大在评论区分享经验~
更多相关讨论详见:
https://www.reddit.com/r/MachineLearning/comments/dtircc/d_is_neural_magic_a_scam/