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

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