在PyTorch Conference 2022上,PyTorch官方正式发布了PyTorch 2.0,整场活动含“compiler”率极高,跟先前的1.x版本相比,2.0版本有了颠覆式的变化。
PyTorch 2.0中发布了大量足以改变PyTorch使用方式的新功能,它提供了相同的Eager模式和用户体验,同时通过torch.compile增加了一个编译模式,在训练和推理过程中可以对模型进行加速,从而提供更佳的性能以及对Dynamic Shapes和Distributed的支持。
PyTorch是一个Python开源机器学习库,它可以提供强大的GPU加速张量运算和动态计算图,方便用户进行快速实验和开发。PyTorch由Facebook的人工智能研究小组于2016年发布,当时它作为Torch的Python版,目的是解决Torch在Python中使用的不便之处。
Torch是另一个开源机器学习库,它于2002年由Ronan Collobert创建,主要基于Lua编程语言。Torch最初是为了解决语音识别的问题而创建的,但随着时间的推移,Torch开始被广泛应用于其他机器学习领域,包括计算机视觉、自然语言处理、强化学习等。
尽管Torch在机器学习领域得到了广泛的应用,但是它在Python中的实现相对麻烦,导致它在Python社区的使用率不如其他机器学习库(如TensorFlow)。这也就迫使了Facebook的人工智能研究小组开始着手开发PyTorch。
在2016年,PyTorch首次发布了其Alpha版本,但是该版本的使用范围比较有限。直到2017年,PyTorch正式发布了其Beta版本,这使得更多的用户可以使用PyTorch进行机器学习实验和开发。在2018年,PyTorch 1.0版本正式发布,这也标志着PyTorch开始成为机器学习领域最受欢迎的开源机器学习库之一。
PyTorch在国际学术界和工业界都得到了广泛的认可,并在实践得到广泛的应用。同时,PyTorch持续更新和优化,使得用户可以在不断的技术发展中获得更好的使用体验。
PyTorch 2.0的诞生使得PyTorch的性能进一步提升,并开始将PyTorch的部分内容从C++阵营拉到Python阵营中。而其中最为人津津乐道的新技术包括TorchDynamo、AOTAutograd、PrimTorch以及TorchInductor。
TorchDynamo可以借助Python Frame Evaluation Hooks(Python框架评估钩子),安全地获取PyTorch程序,这项重大创新是PyTorch过去5年来在安全图结构捕获(Safe Graph Capture)方面研发成果的汇总。
AOTAutograd重载PyTorch Autograd Engine(PyTorch自动微分引擎),作为一个Tracing Autodiff,用于生成超前的Backward Trace(后向追溯)。
PrimTorch将2000多个PyTorch算子归纳为约250个Primitive Operator闭集(Closed Set),开发者可以针对这些算子构建一个完整的PyTorch后端。PrimTorch大大简化了编写PyTorch功能或后端的流程。
TorchInductor是一个深度学习编译器,可以为多个加速器和后端生成快速代码。对于NVIDIA GPU,它使用OpenAI Triton作为关键构建模块。
TorchDynamo、AOTAutograd、PrimTorch和TorchInductor是用Python编写的,并且支持Dynamic Shape(无须重新编译就能发送不同大小的向量),这使得它们灵活且易学,降低了开发者和供应商的准入门槛。
除此之外,PyTorch 2.0官宣了一个重要特性——torch.compile,这一特性将PyTorch的性能推向了新的高度,并将PyTorch的部分内容从C++移回Python。torch.compile是一个完全附加的(可选的)特性,因此PyTorch 2.0是100%向后兼容的。
当然,PyTorch 2.0目前只推出了改革的第一个版本,随着后续PyTorch社区以及维护团队的修正和更新,PyTorch一定会迎来更好的未来。
学习PyTorch的步骤可能因个人情况而有所不同,以下是一般的学习步骤:
(1)安装PyTorch和Python:用户可以在PyTorch官方网站上找到安装说明,并选择合适的版本和平台。
(2)学习Python基础知识:如果用户还不熟悉Python,那么需要先学习Python基础知识,包括变量、数据类型、控制流语句、函数和模块等。
(3)了解深度学习基础知识:学习深度学习前,需要先了解神经网络、损失函数、优化算法和梯度下降等基础概念。
(4)学习PyTorch基础知识:学习PyTorch张量(Tensor)、自动微分(Autograd)、模块(Module)和优化器(Optimizer)等PyTorch基础知识。
(5)实践PyTorch:尝试使用PyTorch进行一些简单的任务,比如创建张量、定义神经网络模型、计算损失函数和梯度、优化模型参数等。
(6)学习PyTorch高级知识:深入学习PyTorch的高级知识,包括PyTorch的GPU加速、数据处理、模型保存和加载、模型微调和迁移学习等。
(7)完成深度学习实战项目:使用PyTorch完成多个深度学习项目,例如图像分类、物体检测、文本生成等。这些项目可以来自实际问题或公开的数据集,目的是将前面所学的知识应用于实际情况中。
最终总结一句话,前途是光明的,道路是曲折的。实践出真知,学习PyTorch 2.0是一个需要仔细钻研的过程,不仅要学习理论,还需要自己动手实践才能了解其中的奥义。感谢读者选择本书来进行PyTorch 2.0的学习之旅,希望沉下心来,认认真真地掌握这个领域的知识。