PyTorch 2.0深度学习从零开始学
上QQ阅读APP看书,第一时间看更新

1.2.2 更快、更优、更具编译支持——PyTorch 2.0更好的未来

PyTorch 2.0的诞生使得PyTorch的性能进一步提升,并开始将PyTorch的部分内容从C++阵营拉到Python阵营中。而其中最为人津津乐道的新技术包括TorchDynamo、AOTAutograd、PrimTorch以及TorchInductor。

1.TorchDynamo

TorchDynamo可以借助Python Frame Evaluation Hooks(Python框架评估钩子),安全地获取PyTorch程序,这项重大创新是PyTorch过去5年来在安全图结构捕获(Safe Graph Capture)方面研发成果的汇总。

2.AOTAutograd

AOTAutograd重载PyTorch Autograd Engine(PyTorch自动微分引擎),作为一个Tracing Autodiff,用于生成超前的Backward Trace(后向追溯)。

3.PrimTorch

PrimTorch将2000多个PyTorch算子归纳为约250个Primitive Operator闭集(Closed Set),开发者可以针对这些算子构建一个完整的PyTorch后端。PrimTorch大大简化了编写PyTorch功能或后端的流程。

4.TorchInductor

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一定会迎来更好的未来。