Hasty Briefsbeta

双语

Refs: Mutable Arrays in jax

2 days ago
  • JAX数组是不可变的,这有助于优化编译,但对于内存控制等任务可能限制表达能力和性能。
  • Refs是可变数组,与JIT和梯度等JAX转换兼容,允许通过索引进行原地读写操作。
  • Refs存在限制:无法从JIT函数返回、不能多次传递,也不能在闭包引用Refs时用于vmap转换。
  • 自动微分可与内部使用Refs的纯函数配合工作,且可通过vjp.with_refs使用ref参数进行梯度累积。
  • Refs支持原地更新,无需实例化独立数组即可在微批次上实现高效的梯度累积。
  • foreach装饰器利用Refs编写具有非顺序访问的灵活循环,避免scan的固定模式以提升性能。