GPT-4及以上 PyTorch将塑造生成式人工智能系统的未来

?译者 | 李睿
审校 | 重楼  
PyTorch不仅用于研究 , 还用于生产目的 , 每天有数十亿个请求得到服务和训练 。
PyTorch社区最近取得了显著的进步 。PyTorch的贡献者在去年还为GPT等Transformer模型引入了BetterTransformer推理优化 , 这显著地提高了这些模型的性能 。这个高度优化的代码集合专门设计用于加速生产工作负载中的Transformer模型 , 允许更准确和有效的数据生成 。这是一个令人兴奋的发展 , 有可能很快给许多行业带来革命性的变化 。
生成式人工智能在从现有来源生成新数据方面的变革潜力已经得到了广泛认可 。人工智能领域最近的突破引发了人们对理解推动这些进步的潜在机制的兴趣 。为了进一步了解 , 行业领先的人工智能专家为此对PyTorch是如何为生成式人工智能的发展铺平道路进行了分析和阐述 。
1、硬件加速在默认情况下 , PyTorch的发展速度已经很快 , 但是随着编译器技术的引入 , 它的性能得到了进一步增强 。该技术通过融合操作、自动调优和优化程序 , 在可用的硬件上尽可能快地运行 , 从而实现了更快的模型训练和服务 , 与以前版本的软件相比 , 其性能得到了显著提高 。
PyTorch 2.0堆栈的核心Dynamo和Inductor分别获取一个程序并对其进行优化 , 使其在现有的硬件上尽可能快地运行 。Lightning AI公司首席技术官、PyTorch撰稿人Luca Antiga评论说 , “这是通过融合操作实现的 , 这样计算就可以饱和 , 而不会受到内存访问和自动调优的阻碍 , 专用内核就可以在运行时进行优化 , 以实现最大性能 。训练和推理都可以获得高达40%的增益 , 这是一个非常重要的发展 。此前 , PyTorch拥有优化程序的技术 , 但它要求用户调整代码以使其工作 , 并禁止某些操作 , 例如调用其他Python/ target=_blank class=infotextkey>Python库 。另一方面 , PyTorch 2.0将在所有这些情况下发挥作用 , 报告在这一过程中可以优化和不能优化的内容 。”
PyTorch现在支持多种不同的后端和计算设备 , 使其成为最通用的深度学习框架之一 。这也使得使用PyTorch构建的模型比以往任何时候都更容易部署到生产中 , 包括通过ROCm在AMD GPU上部署 。Private AI公司首席技术官Pieter Luitjens表示:“这对模型开发很有帮助 , 但最好使用不同的框架来进行生产 。这是PyTorch开发人员自己推荐的 , 因此 , PyTorch为FasterTransformer等软件包提供了强大的支持 , FasterTransform是英伟达公司创建的一个推理引擎 , 大多数大型科技公司都使用它来运行GPT等模型 。”
2、研究人员考虑采用PyTorch自从2018年推出并取代TensorFlow以来 , PyTorch已经显示出了它的灵活性 。
当时 , 它都是用于卷积神经网络 , 而现在PyTorch被用于完全不同类型的模型 , 例如当时不存在的稳定扩散 。Pieter反思说 , “在我看来 , PyTorch已经成为生成人工智能的首选工具 , 因为它专注于动态执行 , 使研究人员易于使用原型 , 并且能够轻松扩展到数千个GPU 。没有比GPTNeo和BLOOM最近的开源语言模型更好的例子了 , 如果没有PyTorch , 这是不可能的 。GPTNeo背后的团队特别呼吁 , 需要将PyTorch作为一个推动者 。”
研究人员越来越偏爱PyTorch 。然而 , 同样明显的是 , 与PyTorch不同的是 , TensorFlow是为工业用途量身定制的 , 拥有大量的可定制功能和支持用例 , 例如JVM兼容性和在线服务 。Abnormal Security公司机器学习主管Dan Shiebler说 , “这使得企业更容易在生产中使用TensorFlow , 并将TensorFlow用例扩展到数十亿个用户 。然而 , 这种强大的功能使得TensorFlow更加僵化 , 更难以学习 , 也更难适应全新的应用 。例如 , TensorFlow对静态图的依赖使得可变长度序列(生成式人工智能的核心组件)难以管理 。因此 , PyTorch被研究团体更广泛地使用 。这就产生了飞轮效应 。PyTorch首先发布了新模型 , 这使得研究人员在扩大先前的研究时从PyTorch开始 。”
3、为更加轻松简便而积极开发与其他框架相比 , 编写PyTorch更像是编写普通的Python 。完全支持控制流、循环和其他操作 , 使代码具有可读性和表现力 。此外 , PyTorch的调试经验是一流的;Pdb可以无缝地工作 , 允许逐步执行程序 , 并在执行过程中急切地执行操作 。Luca对此表示赞赏 , 他说 , “这种体验比使用其他框架要轻松得多 , 使用户能够快速迭代到一个工作模型 。”


推荐阅读