传统上,PyTorch 中的功能被分为稳定版或实验版,通过构建 master 或安装每夜构建(通过预构建的 whl 文件提供)来测试前沿功能则作为隐含的第三个选项。在一些情况下,这导致了用户对于功能的成熟度、投入程度以及向后兼容性产生了一些困惑。展望未来,我们希望更好地对这三类功能进行分类,并在此明确定义从用户角度来看每种分类的含义。
新功能命名
我们将继续为功能设置三种分类,但如前所述,会有一些变化:稳定版、测试版(以前的实验版)和原型版(以前的每夜构建版)。下面是对每种分类的简要描述以及对预期向后兼容性的说明
稳定版
此部分没有变化。稳定功能意味着其用户价值已得到或已被证明,API 预计不会改变,功能性能良好,并且所有文档都已到位,以支持最终用户采用。
承诺级别:我们期望长期维护这些功能,并且通常不应存在主要的性能限制、文档缺失,我们也期望保持向后兼容性(尽管可能会发生破坏性更改,并且会提前一个版本给出通知)。
测试版
我们以前将这些功能称为“实验性”,我们发现这给一些用户造成了困惑。对于测试版功能,其价值增值(与稳定版功能类似)已得到证明(例如,剪枝是减少神经网络模型参数数量的常用技术,与我们具体选择的实现细节无关),并且该功能通常可以工作并有文档记录。此功能被标记为测试版,是因为 API 可能会根据用户反馈而改变,性能需要改进,或者操作符覆盖范围尚不完整。
承诺级别:我们致力于将此功能推进到稳定分类。但是,我们不承诺向后兼容性。用户可以依赖我们在此领域提供解决方案,但此功能的 API 和性能特性可能会发生变化。

原型版
以前,这些是密切关注 RFCs 和 master 分支功能的开发者才知道的功能。这些功能是版本的一部分,并通过 PyPI 或 Conda 等二进制分发提供。我们希望在正式发布之前获得高带宽合作伙伴的反馈,以评估实用性以及我们需要对用户体验进行的任何更改。对于每个原型功能,将提供指向文档草稿或其他说明的指针。
承诺级别:我们仅致力于收集高带宽反馈。根据这些反馈和社区成员之间潜在的进一步互动,我们作为一个社区将决定是否要提升承诺级别或快速失败。此外,虽然其中一些功能可能更具推测性(例如新的前端 API),但其他功能具有明显的实用性(例如模型优化),但可能处于一种不适合通过高带宽渠道以外方式收集反馈的状态,例如,该功能可能处于早期阶段,可能进展迅速(PR 提交速度过快,无法赶上主要版本),和/或通常正在积极开发中。
现有功能有何变化?
首先,您可以在 pytorch.org/docs 上找到这些分类。我们还将在此处链接任何早期阶段的功能以供清晰。
此外,以下功能将根据此新分类法进行重新分类
- 高级自动微分 API:测试版(原实验版)
- 即时模式量化:测试版(原实验版)
- 命名张量:原型版(原实验版)
- TorchScript/RPC:原型版(原实验版)
- 通道优先内存布局:测试版(原实验版)
- 自定义 C++ 类:测试版(原实验版)
- PyTorch Mobile:测试版(原实验版)
- Java 绑定:测试版(原实验版)
- Torch.Sparse:测试版(原实验版)
祝好,
乔、格雷格、吴和杰西卡