PyTorch不仅用于研究,也用于生产,每天有数十亿的请求被服务和训练。
PyTorch社区在最近一段时间取得了显著的进步。去年,PyTorch的贡献者还为GPT等转化器模型引入了BetterTransformer推理优化,大大提升了这些模型的性能。这个高度优化的代码集合是专门为加速生产工作负载中的变压器模型而设计的,允许更准确和有效的数据生成。这是一个令人兴奋的发展,有可能很快彻底改变许多行业。
生成式人工智能 在从现有来源生成新奇数据方面的变革潜力已得到广泛认可。最近在人工智能方面的突破引发了人们对理解驱动这些进步的基本机制的兴趣。为了获得进一步的了解,我们找到了领先的人工智能专家,他们阐明了PyTorch是如何为生成式人工智能铺平道路的。
硬件加速
PyTorch的默认速度已经很快了,但随着编译器技术的引入,其性能得到了进一步提升。这项技术通过融合操作、自动调整和优化程序,使其在现有的硬件上尽可能快地运行,从而使模型的训练和服务速度更快,与以前版本的软件相比,性能有了明显的提高。
Dynamo和Inductor是PyTorch 2.0堆栈的核心,它们分别获取程序并对其进行优化,以便在手头的硬件上尽可能快地运行。"这是通过融合操作来实现的,这样可以使计算达到饱和,而不会受到内存访问的瓶颈限制,并通过自动调整,使专用内核在运行过程中得到优化,以达到最大性能。训练和推理都可以实现高达40%的增益,这使得这是一个非常重要的发展。以前,PyTorch有优化程序的技术,但它需要用户调整他们的代码才能发挥作用,并且不允许某些操作,如调用其他Python库。另一方面,PyTorch 2.0将在所有这些情况下工作,并沿途报告它能和不能优化什么。"Lightning AI的首席技术官和PyTorch的贡献者Luca Antiga评论道。
PyTorch现在支持多种不同的后端和计算设备,使其成为目前最通用的深度学习框架之一。这也使得用PyTorch构建的模型比以往更容易部署到生产中,包括通过ROCm在AMD GPU上部署。"它非常适合模型开发,但最好使用不同的框架在生产中运行。这是PyTorch开发者自己推荐的,因此,PyTorch为FasterTransformer等软件包提供了极大的支持,FasterTransformer是Nvidia创建的推理引擎,被大多数大型科技公司用来运行GPT等模型,"Private AI首席技术官Pieter Luitjens说。
研究人员考虑使用PyTorch
PyTorch自2018年左右突然出现在舞台上并击败TensorFlow以来,已经显示出其灵活性。那时,它是关于卷积神经网络的,而现在PyTorch被用于完全不同类型的模型,如稳定扩散,这在当时是不存在的。"在我看来,PyTorch已经成为生成式人工智能的首选工具,因为它专注于动态执行,便于研究人员使用原型,并且能够轻松扩展到成千上万的GPU。最好的例子莫过于GPTNeo和BLOOM最近的开源语言模型--如果没有PyTorch,它永远不可能实现。GPTNeo背后的团队特别呼吁,转而使用PyTorch作为辅助工具,"Pieter反映说。
研究人员对PyTorch的偏爱越来越多。然而,同样明显的是,TensorFlow与PyTorch不同,是为工业用途量身定做的,拥有大量可定制的功能和支持的用例,如JVM兼容性和在线服务。"这使得公司更容易在生产中使用TensorFlow,并将TensorFlow用例扩展到数十亿用户。然而,这种力量使TensorFlow更加僵化,更难学习,更难适应全新的应用。例如,TensorFlow对静态图的依赖使得可变长度序列(生成式人工智能的核心组成部分!)难以管理。因此,PyTorch被研究界更广泛地使用。这就产生了一个飞轮效应。新模型首先在PyTorch中发布,这使得研究人员在扩展先前的研究时从PyTorch开始,"Abnormal Security的机器学习主管Dan Shiebler说。
积极开发,力求简便
与其他框架相比,编写PyTorch的感觉更像编写普通的Python。控制流、循环和其他操作都得到了全面支持,使代码既可读又有表现力。此外,PyTorch的调试体验也是一流的;Pdb无缝工作,允许你在程序中逐步进行操作,并在你进行操作时急切地执行。"Luca赞赏说:"这种体验比其他框架要少得多,使你能够快速迭代出一个工作模型。
当PyTorch与PyTorch Lightning或Lightning Fabric等项目结合时,PyTorch真正大放异彩,这些项目通过抽象工程细节对其进行补充,并允许研究人员将其模型扩展到数十亿的参数和机器集群,而无需改变他们的代码。我不认为PyTorch有什么特别的缺点。也许高阶导数和像vmap这样的程序变换,在functorch中提供,但没有达到其他项目(如JAX)的水平,对于某些领域来说,可能是相关的限制,尽管对于今天的深度学习来说,不是那么重要。
通过他对PyTorch的贡献经验,Luca肯定了今天进行的大部分研究,无论是人工智能还是利用人工智能,都是在PyTorch中实现的,而且实现方式往往是作为一个开放源码共享。互相借鉴的能力是一种令人难以置信的强大动力,创造了一种指数级的现象。