JAX 增强提案 (JEPs)#
大多数更改可以通过简单的议题/讨论和拉取请求进行讨论。
尽管有些变更的范围较大或需要更多讨论,这些变更应作为JEP来实现。这允许编写更长的文档,这些文档可以在拉取请求中进行讨论。
JEP 的结构尽可能保持轻量化以开始,并可能在以后扩展。
何时使用 JEP#
当你的更改需要设计文档时。我们更倾向于将设计收集为JEP,以提高可发现性和进一步参考。
当你的更改需要广泛的讨论时。在问题或拉取请求上进行相对简短的讨论是可以的,但当讨论变得更长时,这对以后的消化变得不切实际。JEPs 允许在主文档中更新讨论的摘要,并且这些更新本身可以在添加 JEP 的拉取请求中进行讨论。
如何启动一个JEP#
首先,使用 JEP 标签 创建一个问题。所有与 JEP 相关的拉取请求(即添加 JEP 本身以及任何实现拉取请求)都应链接到此问题。
然后创建一个拉取请求,添加一个名为 %d-{short-title}.md 的文件 - 其中数字为问题编号。
- 263: JAX PRNG 设计
- 2026: 为可被JAX变换的函数自定义JVP/VJP规则
- 4008: 自定义 VJP 和 `nondiff_argnums` 更新
- 4410: 全阶段
- 9263: 类型化键 & 可插拔的随机数生成器
- 9407: JAX 类型提升语义的设计
- 9419: Jax 和 Jaxlib 版本控制
- 10657: 在JAX中排序副作用
- 11830: `jax.remat` / `jax.checkpoint` 新实现
- 12049: JAX 类型注解路线图
- 14273: `shard_map` (`shmap`) 用于简单的按设备代码
- 15856: `jax.extend`,一个扩展模块
- 17111: 高效转置 `shard_map`(及其他映射)
- 18137: JAX NumPy 与 SciPy 包装器的范围
一些早期的JEP是在事后从其他文档、问题和拉取请求转换而来的,因此它们可能不完全反映上述过程。