JAX 增強提案 (JEP)#
大多數的變更可以透過簡單的 issue/discussion 和 pull request 討論。
然而,有些變更範圍較大或需要更多討論,這些應該以 JEP 的形式實作。這樣可以撰寫更長的文件,並在 pull request 中進行討論。
JEP 的結構在開始時盡可能保持輕量,並且可能會在稍後擴展。
何時應該使用 JEP#
當您的變更需要設計文件時。我們偏好將設計收集為 JEP,以便更好地發現和進一步參考。
當您的變更需要廣泛討論時。在 issue 或 pull request 上進行相對簡短的討論是可以的,但是當討論變得更長時,這對於後續消化變得不切實際。JEP 允許更新主文件,其中包含討論摘要,並且這些更新本身可以在添加 JEP 的 pull request 中進行討論。
如何開始 JEP#
首先,建立一個帶有 JEP 標籤的 issue。所有與 JEP 相關的 pull request (即添加 JEP 本身以及任何實作的 pull request) 都應該連結到這個 issue。
然後建立一個 pull request,添加一個名為 %d-{short-title}.md 的文件 - 其中數字是 issue 編號。
- 263: JAX PRNG 設計
- 2026: JAX 可轉換函式的自訂 JVP/VJP 規則
- 4008: 自訂 VJP 和 `nondiff_argnums` 更新
- 4410: Omnistaging
- 9263: 型別化金鑰 & 可插拔 RNG
- 9407: JAX 型別提升語意設計
- 9419: Jax 和 Jaxlib 版本控制
- 10657: JAX 中 side-effect 的排序
- 11830: `jax.remat` / `jax.checkpoint` 新實作
- 12049: JAX 的型別註釋路線圖
- 14273: 用於簡單裝置程式碼的 `shard_map` (`shmap`)
- 15856: `jax.extend`,擴充模組
- 17111: 有效率地轉置 `shard_map` (和其他 map)
- 18137: JAX NumPy & SciPy Wrappers 的範圍
- 25516: 基於努力的版本控制
早期的幾個 JEP 是事後從其他文件、issue 和 pull request 轉換而來的,因此它們可能不完全反映上面概述的流程。