傳統上,PyTorch 中的功能被分為穩定版或實驗版,透過構建 master 或安裝每夜構建(透過預構建的 whl 檔案提供)來測試前沿功能則作為隱含的第三個選項。在一些情況下,這導致了使用者對於功能的成熟度、投入程度以及向後相容性產生了一些困惑。展望未來,我們希望更好地對這三類功能進行分類,並在此明確定義從使用者角度來看每種分類的含義。
新功能命名
我們將繼續為功能設定三種分類,但如前所述,會有一些變化:穩定版、測試版(以前的實驗版)和原型版(以前的每夜構建版)。下面是對每種分類的簡要描述以及對預期向後相容性的說明
穩定版
此部分沒有變化。穩定功能意味著其使用者價值已得到或已被證明,API 預計不會改變,功能效能良好,並且所有文件都已到位,以支援終端使用者採用。
承諾級別:我們期望長期維護這些功能,並且通常不應存在主要的效能限制、文件缺失,我們也期望保持向後相容性(儘管可能會發生破壞性更改,並且會提前一個版本給出通知)。
測試版
我們以前將這些功能稱為“實驗性”,我們發現這給一些使用者造成了困惑。對於測試版功能,其價值增值(與穩定版功能類似)已得到證明(例如,剪枝是減少神經網路模型引數數量的常用技術,與我們具體選擇的實現細節無關),並且該功能通常可以工作並有文件記錄。此功能被標記為測試版,是因為 API 可能會根據使用者反饋而改變,效能需要改進,或者運算子覆蓋範圍尚不完整。
承諾級別:我們致力於將此功能推進到穩定分類。但是,我們不承諾向後相容性。使用者可以依賴我們在此領域提供解決方案,但此功能的 API 和效能特性可能會發生變化。

原型版
以前,這些是密切關注 RFCs 和 master 分支功能的開發者才知道的功能。這些功能是版本的一部分,並透過 PyPI 或 Conda 等二進位制分發提供。我們希望在正式釋出之前獲得高頻寬合作伙伴的反饋,以評估實用性以及我們需要對使用者體驗進行的任何更改。對於每個原型功能,將提供指向文件草稿或其他說明的指標。
承諾級別:我們僅致力於收集高頻寬反饋。根據這些反饋和社群成員之間潛在的進一步互動,我們作為一個社群將決定是否要提升承諾級別或快速失敗。此外,雖然其中一些功能可能更具推測性(例如新的前端 API),但其他功能具有明顯的實用性(例如模型最佳化),但可能處於一種不適合透過高頻寬渠道以外方式收集反饋的狀態,例如,該功能可能處於早期階段,可能進展迅速(PR 提交速度過快,無法趕上主要版本),和/或通常正在積極開發中。
現有功能有何變化?
首先,您可以在 pytorch.org/docs 上找到這些分類。我們還將在此處連結任何早期階段的功能以供清晰。
此外,以下功能將根據此新分類法進行重新分類
- 高階自動微分 API:測試版(原實驗版)
- 即時模式量化:測試版(原實驗版)
- 命名張量:原型版(原實驗版)
- TorchScript/RPC:原型版(原實驗版)
- 通道優先記憶體佈局:測試版(原實驗版)
- 自定義 C++ 類:測試版(原實驗版)
- PyTorch Mobile:測試版(原實驗版)
- Java 繫結:測試版(原實驗版)
- Torch.Sparse:測試版(原實驗版)
祝好,
喬、格雷格、吳和傑西卡