机器学习领域:硬件的未来是软件 - octoml


通用 GPU 计算帮助开启了深度学习时代。然而,随着 ML 模型变得越来越大,计算量越来越大,它们改变了 GPU 的设计方式——它们激发了一波看起来与 GPU 完全不同的新硬件。从电池供电的嵌入式设备到高端数据中心,专用机器学习硬件正在占据主导地位。仅举几例:谷歌、苹果、微软、Facebook和特斯拉)都有内部 ML 加速器都有人工智能硬件。新一代的初创公司已经涌现,他们对高效 ML 硬件的未来充满了新颖的愿景。在商用 CPU 数十年的稳定之后,硬件环境再次令人兴奋。
然而,超高效的定制 ML 硬件的问题在于,仅靠更好的硬件是不够的。强大的硬件需要一个软件堆栈,使其功能可用于应用程序。即使是比主流 GPU 快 100 倍且效率更高的加速器,如果使用起来不切实际,它实际上也无法替代 GPU。标准硬件比任何新硬件都有很长的领先优势:工程师和机器学习科学家已经知道如何使用它,并且使用它需要零行代码来改变。为了充分发挥其潜力,新的 ML 加速器需要在软件和硬件上展开竞争。
 
现代 GPU 不仅仅是硬件产品。当有人购买用于 ML 计算的 GPU 时,他们也购买了围绕它构建的整个软件生态系统。使用主流硬件会在三个层面带来软件优势:框架、库和语言。

  • 框架:从PyTorchJAX的整个现代 ML 框架范围都对标准 CPU 和 GPU 提供一流的支持。任何新硬件都需要与使用为这些框架编写的所有现有代码的简单性竞争。这些框架的广度使它们对通过重新实现主流框架中的所有功能来实现“GPU 平价”的新硬件望而却步。例如,PyTorch 的完全替代需要覆盖其原生张量计算接口中的所有 2,239 个函数,并跟上每个新版本的变化。
  • 库:每个 GPU 都带有经过高度调整的软件库,可从底层硬件中提取最佳性能。例如,cuDNN代表了数十年来为每个 Nvidia GPU 架构精心优化重要算子所付出的努力。一个专门的专家团队确保 cuDNN 在最新流行的 ML 模型上从每个新的 GPU 架构提供最佳性能。即使新硬件理论上可以胜过 GPU,它仍然可能会输给专家软件工程的纯粹投资。
  • 语言:对于低级性能工程,应用程序依赖于用接近金属编程语言(如CUDA)编写的代码。流行的编程语言具有强大的锁定效应:随着时间的推移,它们建立了宝贵的开发人员思想份额,整个工具生态系统围绕它们成长。从语法荧光笔到交互式调试器,客户喜欢熟悉的编程环境是有充分理由的——即使它们是以性能为代价的。

综上所述,这些优势意味着交付硬件产品所需要的不仅仅是构建硬件本身。围绕传统 GPU 的生态系统的广度和深度意味着,任何一家新硬件供应商都无法仅凭硬件的技术优势进行竞争。