- 官网:https://github.com/pytorch/pytorch
- GitHub:https://github.com/pytorch/pytorch
- 原文:https://github.com/pytorch/pytorch/releases/tag/v2.5.0
主要亮点 (Highlights)]
- SDPA CuDNN 后端:为
torch.nn.functional.scaled_dot_product_attention
提供了新的 CuDNN 后端,可以在 NVIDIA H100 或更新的 GPU 上提供高达 75% 的加速。 - torch.compile 区域编译:通过
torch._dynamo.config.inline_inbuilt_nn_modules
允许编译重复的nn.Module
(例如大型语言模型中的变换器层)而无需重新编译,从而减少编译延迟。 - TorchInductor CPU 后端优化:包括 C++ 后端代码生成和 FX 融合,支持向量化和所有 Inductor IR 操作,兼容 Linux 和 Windows 系统。
PyTorch 2.5.0版本的发布带来了一系列新特性、改进、性能优化以及bug修复,旨在提升用户体验、增强功能和提高执行效率。以下是对PyTorch 2.5.0版本的全面总结:
新特性和改进
-
SDPA CuDNN后端:引入了新的CuDNN后端,为使用H100或更新型号GPU的SDPA用户提供了默认的速度提升。
-
torch.compile的区域编译:允许用户编译重复的
nn.Module
,而无需重新编译,减少了编译延迟并可能轻微降低性能。 -
TorchInductor CPU后端优化:包括CPP后端代码生成和FX融合,支持向量化操作和静态/符号形状,兼容Linux和Windows操作系统。
-
FlexAttention API:一个灵活的API,允许用少量代码实现多种注意力机制,如滑动窗口、因果掩码等,并自动生成反向传播。
-
编译自动微分:作为PT2技术栈的扩展,允许捕获完整的反向传播过程,提高了自动微分的灵活性。
-
飞行记录器:一个调试工具,用于捕获集体操作的信息,帮助快速识别和解决作业卡住的问题。
-
最大自动调优CPU支持:Inductor CPU后端在编译时配置多个操作实现,并选择最佳性能的一个。
-
TorchInductor在Windows上的支持:支持MSVC、clang和Intel编译器。
-
FP16在CPU路径上的支持:支持在CPU上使用FP16数据类型,有助于提升性能。
-
自动加载设备扩展:简化了设备扩展的集成过程,无需手动导入。
-
增强的Intel GPU支持:扩展了对Intel GPU的支持,包括数据中心和客户端GPU。
向后不兼容的变更
- 分布式处理:移除了一些旧的选项和方法,以反映代码结构的正确性。
- 导出功能:移除了
dynamic_dim()
方法,改用Dims
来指定动态形状。 - Inductor:更新了基准测试路径,从使用Triton的基准测试工具转移到内部Inductor工具。
性能优化
- CUDA:为深度卷积反向操作生成内核,调整了tile启发式规则以提高性能。
- 分布式:添加了CPU分析器的动态活动切换API。
- Dynamo:手动实现了
nn.Module.__getattr__
和nn.Module._call_impl
,优化了小型元组的guard。 - Inductor:添加了对BF16->FP32转换的NEON实现,支持了INT8数据类型的masked vectorization。
文档和开发者支持
- 提供了详细的文档更新,包括新特性的使用说明、API文档的改进和错误信息的优化。
安全性更新
- Inductor:放宽了对大小符号可以为0的统一检查。
其他改进
- Autograd前端:支持
GradientEdge
作为torch.autograd.grad
的输出。 - 分布式:引入了带有分析器的Flight Recorder,用于捕获集体操作的诊断信息。
- Dynamo:引入了
torch._dynamo.config.enable_compiler_collectives
,用于跨等级同步编译。 - 导出功能:支持
export_for_training
,自动动态形状。