PyTorch Linux 版本 API 变化要点
变化范围与总体说明
近期版本关键 API 变更
| 模块/领域 | 变更点 | 影响与建议 |
|---|---|---|
| Tensor 创建 | torch.Tensor.new_tensor() 默认改到与当前 Tensor 同设备(原始终在 cpu) | 检查依赖该行为的代码;如需保持原语义,显式传入 device=‘cpu’ |
| ONNX 导出 | torch.onnx.dynamo_export 改用 ExportedProgram 逻辑;部分 ExportOptions 不再支持;推荐迁移到 torch.onnx.export(…, dynamo=True, dynamic_shapes=…) | 更新导出调用与参数;验证动态形状与子图行为一致性 |
| 学习率调度 | LRScheduler.print_lr() 与 verbose 参数已彻底移除 | 统一改为 LRScheduler.get_last_lr() 获取学习率 |
| C++ 扩展 | py_limited_api=True 现在以 -DPy_LIMITED_API 生效;不满足 Limited API 的扩展可能编译失败 | 若扩展使用稳定 ABI,确保符合 Limited API 要求;否则调整构建配置 |
| 符号可见性 | libtorch_python.so 在除 Apple 外平台默认符号不可见 | 自定义 C++/Python 扩展若依赖未显式导出的符号,需更新链接与导出声明 |
| 量化导出 | 弃用 capture_pre_autograd_graph,改用 torch.export.export | 迁移 PT2 量化导出流程,避免依赖临时 API |
| Autograd/数值 | 新增 torch.autograd.graph.GradientEdge 可作为 torch.autograd.backward 输出;为 torch.linalg.lstsq 的 residuals 增加梯度;改进 softmax 反向 CUDA 实现等 | 涉及相应算子的自定义反向/梯度检查点与数值稳定性需回归测试 |
| Dataloader | pin_memory 相关 API 不再传递 device 参数;device 与 pin_memory_device 未来将被弃用 | 更新 DataLoader 初始化与设备放置逻辑,避免传 device |
| NestedTensor | NJT.chunk() 支持 batch 维度反向;支持更多 like 工厂;与 dense 的 matmul 改进 | 复核涉及 NJT 的模型分支与性能回归 |
| torch.compile/Inductor | torch.compile 支持 Torch Function 模式;Inductor 支持 Prologue 融合 | 重新编译与基准测试,关注图优化与性能变化 |
| 硬件/并行 | NVIDIA Blackwell 架构支持;原生 Context 并行;Intel GPU 加速增强;FlexAttention 在 x86 CPU 上首 token 与吞吐优化 | 升级驱动/库版本;验证新后端的数值与性能 |
| 弃用 | torch.onnx.dynamo_export 已弃用(建议用 torch.onnx.jit.load 加载) | 迁移相关工具链与加载路径 |
| 构建/平台 | Linux Wheel 迁移到 manylinux_2_28、CXX11_ABI=1;不再支持 glibc 2.26(含 Amazon Linux 2、CentOS 7) | 升级运行环境或选择兼容的 PyTorch 版本;重编译本地扩展 |
Linux 特有的兼容性与环境差异
升级与适配建议