什么是PyTorch?GPU上的Python机器学习

175 阅读7分钟

什么是PyTorch?GPU上的Python机器学习

PyTorch 1.10已经准备就绪,它拥有丰富的工具和库生态系统,可用于深度学习、计算机视觉、自然语言处理等。下面是如何开始使用PyTorch。

  • Share on Facebook
  • Share on Twitter
  • Share on LinkedIn
  • Share on Reddit
  • Share by Email
  • Print resource

Martin Heller作者 :Martin Heller

InfoWorld特约编辑

目录

显示更多

PyTorch是一个开源的机器学习框架,用于研究原型设计和生产部署。根据其源代码库,PyTorch提供了两个高级功能。

  • 张量计算(如NumPy),具有强大的GPU加速能力。
  • 建立在基于磁带的autograd系统上的深度神经网络。

PyTorch最初由Idiap研究所、纽约大学、NEC美国实验室、Facebook和Deepmind Technologies开发,并得到Torch和Caffe2项目的投入,现在有一个繁荣的开源社区。PyTorch 1.10于2021年10月发布,有来自426个贡献者的提交,存储库目前有54,000颗星。

本文是对PyTorch的概述,包括PyTorch 1.10的新功能和PyTorch入门的简要指南。我之前评论过PyTorch 1.0.1,并比较了TensorFlow和PyTorch。我建议阅读该评论,以深入讨论PyTorch的架构和该库的工作原理。

[及时了解数据分析和机器学习的最新进展。订阅InfoWorld First Look通讯]

PyTorch的演变

早期,学术界和研究人员被PyTorch吸引,因为它比TensorFlow更容易使用,可以用图形处理单元(GPU)进行模型开发。PyTorch默认为急切执行模式,这意味着它的API调用在被调用时执行,而不是被添加到图形中以后再运行。TensorFlow后来改进了对急切执行模式的支持,但PyTorch在学术和研究界仍然很受欢迎。

在这一点上,PyTorch已经为生产做好了准备,允许你通过TorchScript ,在急切模式和图模式之间轻松转换,并通过TorchServe ,加速走向生产的道路。torch.distributed 后端可以在研究和生产中实现可扩展的分布式训练和性能优化,丰富的工具和库的生态系统扩展了PyTorch并支持计算机视觉、自然语言处理等方面的开发。最后,PyTorch在主要云平台上得到了很好的支持,包括阿里巴巴、亚马逊网络服务(AWS)、谷歌云平台(GCP)和微软Azure。云支持提供了无摩擦的开发和轻松的扩展。

PyTorch 1.10的新内容

根据PyTorch的博客,PyTorch 1.10的更新侧重于改善培训和性能以及开发人员的可用性。详情请见PyTorch 1.10发布说明。下面是这个版本的几个亮点。

  1. 集成了CUDA图形API,以减少CUDA工作负载的CPU开销。
  2. 一些前端API,如FX、torch.specialnn.Module 参数化等,从测试版转为稳定版。FX是一个用于转换PyTorch程序的Pythonic平台;torch.special ,实现了伽马和贝塞尔函数等特殊函数。
  3. 一个新的基于LLVM的JIT编译器支持CPU以及GPU的自动融合。基于LLVM的JIT编译器可以将torch 库的调用序列融合在一起以提高性能。
  4. 安卓NNAPI支持现已进入测试阶段。NNAPI(安卓的神经网络API)允许安卓应用在手机芯片中最强大和最有效的部分上运行计算密集型神经网络,包括GPU和专门的神经处理单元(NPU)。

PyTorch 1.10版本包括超过3400个提交,表明这个项目很活跃,并专注于通过各种方法提高性能。

[InfoWorld上还有:3家人工智能初创企业为NLP带来的变革]

如何开始使用PyTorch

如果你不了解项目的基本情况或如何开始使用它,阅读版本更新的发布说明不会告诉你太多,所以让我们来填补这个空白。

PyTorch的教程页面提供了两个轨道。一个是为熟悉其他深度学习框架的人准备的,一个是为新手准备的。如果你需要的是newb轨道,它介绍了张量、数据集、autograd和其他重要的概念,我建议你跟着它,并使用在微软学习选项中运行,如图1所示。

IDG

图1.学习PyTorch的 "新手 "轨道。

如果你已经熟悉了深度学习的概念,那么我建议运行图2所示的快速入门笔记本。你也可以点击微软学习中的运行 或谷歌Colab中的运行,或者你可以在本地运行笔记本。

IDG

图2.学习PyTorch的高级(快速入门)轨道。

需要关注的PyTorch项目

如图2截图左侧所示,PyTorch有很多食谱和教程。它也有大量的模型和如何使用它们的例子,通常是以笔记本的形式。 PyTorch生态系统中的三个项目让我觉得特别有趣。Captum、PyTorch Geometric(PyG)和skorch。

Captum

正如这个项目的GitHub仓库所指出的,captum这个词在拉丁语中是理解的意思。正如仓库页面和其他地方所描述的,Captum是"PyTorch的一个模型可解释性库"。它包含各种基于梯度和扰动的归因算法,可用于解释和理解PyTorch模型。它还能快速整合与特定领域库(如torchvision、torchtext等)构建的模型。

图3显示了Captum目前支持的所有归因算法

IDG

图3.Captum归属算法的表格格式。

PyTorch Geometric (PyG)

PyTorch Geometric(PyG)是一个库,数据科学家和其他人可以用它来编写和训练图形神经网络,用于与结构化数据有关的应用。正如其GitHub仓库页面上所描述的那样。

PyG提供了在图和其他不规则结构上进行深度学习的方法,也被称为几何深度学习。此外,它还包括易于使用的迷你批量加载器,用于在许多小型和单一的巨型图上进行操作,多GPU支持,通过Quiver的分布式图学习,大量的通用基准数据集(基于简单的接口来创建你自己的数据集),GraphGym实验管理器,以及有用的变换,既可以在任意图上学习,也可以在3D网格或点云上学习。

图4是PyTorch Geometric的架构概览。

IDG

图4.PyTorch Geometric的架构。

skorch

skorch是一个兼容scikit-learn的神经网络库,它封装了PyTorch。skorch的目标是使PyTorch与sklearn的使用成为可能。如果你熟悉sklearn和PyTorch,你就不需要学习任何新的概念,而且语法应该是众所周知的。此外,skorch抽象化了训练循环,使大量的模板代码变得过时。一个简单的net.fit(X, y) ,就足够了,如图5所示。

IDG

图5.用skorch定义和训练一个神经网络分类器。

总结

总的来说,PyTorch是少数几个支持GPU的深度神经网络的顶级框架之一。你可以把它用于模型开发和生产,你可以在企业内部或云端运行它,你还可以找到许多预建的PyTorch模型,作为你自己模型的起点。

相关的。

Martin Heller是InfoWorld的特约编辑和评论员。他曾是一名网络和Windows编程顾问,从1986年到2010年开发了数据库、软件和网站。最近,他在Alpha软件公司担任技术和教育副总裁,在Tubifi公司担任董事长和首席执行官。

关注

版权所有©2022年IDG通讯公司。

如何选择一个低代码开发平台