JAX v0.11.0

v0.11.0

JAX v0.11.0

Added 4
  • Add hijax API documentation and helpers in jax.experimental.hijax for deriving VJPHiPrimitive autodiff rules including linearize_from_jvp, apply_derived_linearization, vjp_fwd_from_jvp, transpose_jvp, vjp_fwd_from_lin, transpose_linearized, and jvp_from_lin
  • Add jax.custom_remat to the top-level jax namespace for per-function control of rematerialization under the new jax_remat3 implementation
  • Expose SaveOnlyTheseNames, SaveAnyNamesButThese, and SaveAndOffloadOnlyTheseNames policy classes in jax.checkpoint_policies
  • Add jax.Inline enum for specifying inlining policies to jax.jit
Changed 2
  • Convert jax.checkpoint_policies from a namespace object to a submodule, enabling from jax.checkpoint_policies import ... syntax
  • Change jax.numpy.empty and jax.numpy.empty_like to produce uninitialized arrays instead of zero-initialized arrays
Removed 7
  • Remove deprecated jax.cloud_tpu_init module
  • Drop support for Python 3.11
  • Drop support for NumPy 2.0
  • Drop support for SciPy 1.14
  • Drop support for Python 3.13 free-threaded build
  • Remove previously-deprecated APIs from jax.core including CallPrimitive, DebugInfo, DropVar, Effect, Effects, InconclusiveDimensionOperation, JaxprTypeError, abstract_token, check_jaxpr, concrete_or_error, find_top_trace, gensym, get_opaque_trace_state, is_concrete, is_constant_dim, is_constant_shape, jaxprs_in_params, new_jaxpr_eqn, no_effects, nonempty_axis_env_DO_NOT_USE, primal_dtype_to_tangent_dtype, unsafe_am_i_under_a_jit_DO_NOT_USE, unsafe_am_i_under_a_vmap_DO_NOT_USE, unsafe_get_axis_names_DO_NOT_USE, valid_jaxtype, JaxprPpContext, JaxprPpSettings, OutputType, aval_mapping_handlers, call, concretization_function_error, custom_typechecks, literalable_types, no_axis_name, and trace_ctx
  • Remove previously-deprecated APIs from jax.interpreters.pxla including Index, MeshAxisName, MeshExecutable, global_aval_to_result_handler, global_result_handlers, are_hlo_shardings_equal, is_hlo_sharding_replicated, ArrayMapping, _UNSPECIFIED, array_mapping_to_axis_resources, and op_sharding_to_indices
Deprecated 1
  • Deprecate passing 2-dimensional arrays or mixed 2D and 3D arrays to jax.numpy.cross, to be removed in JAX 0.12.0
  • New features

    • Added a doc on defining custom derivative rules with the experimental hijax API (hijax-custom-derivatives), along with jax.experimental.hijax helpers for deriving VJPHiPrimitive autodiff rules from a jvp or lin rule: linearize_from_jvp with apply_derived_linearization, vjp_fwd_from_jvp with transpose_jvp, vjp_fwd_from_lin with transpose_linearized, and jvp_from_lin.
    • Added jax.custom_remat to the top-level jax namespace, for per-function control of rematerialization under the new jax_remat3 implementation.
    • jax.checkpoint_policies is now a submodule rather than a namespace object (so from jax.checkpoint_policies import ... now works; attribute access is unchanged), and it additionally exposes the name-based policy classes SaveOnlyTheseNames, SaveAnyNamesButThese, and SaveAndOffloadOnlyTheseNames.
    • Added jax.Inline enum for specify inlining policies to jax.jit.
  • Breaking changes

    • The deprecated module jax.cloud_tpu_init was removed. This did nothing and references to it can be safely removed.
    • Support for Python 3.11, NumPy 2.0, and SciPy 1.14 has been dropped, per the deprecation policy.
    • Support for Python 3.13 free-threaded (3.13t) has been dropped. Python 3.13 free-threaded was an experimental build needed to bootstrap free threading support. Now that Python 3.14t is stable, it is time to drop the experimental build. Other parts of the Python ecosystem (e.g. cibuildwheel, scipy) are making similar moves.
    • jax.numpy.empty and jax.numpy.empty_like now produce uninitialized arrays, similar to their NumPy counterparts. Prior to v0.11.0, they produced arrays initialized to zeros. To recover the previous behavior, use jax.numpy.zeros or jax.numpy.zeros_like instead.
  • Deprecations

    • Passing 2-dimensional arrays (or mixed 2D and 3D arrays) to jax.numpy.cross is deprecated and will be removed in JAX 0.12.0, aligning with NumPy 2.5 behavior.
    • Several previously-deprecated APIs from jax.core have been removed, including CallPrimitive, DebugInfo, DropVar, Effect, Effects, InconclusiveDimensionOperation, JaxprTypeError, abstract_token, check_jaxpr, concrete_or_error, find_top_trace, gensym, get_opaque_trace_state, is_concrete, is_constant_dim, is_constant_shape, jaxprs_in_params, new_jaxpr_eqn, no_effects, nonempty_axis_env_DO_NOT_USE, primal_dtype_to_tangent_dtype, unsafe_am_i_under_a_jit_DO_NOT_USE, unsafe_am_i_under_a_vmap_DO_NOT_USE, unsafe_get_axis_names_DO_NOT_USE, valid_jaxtype, JaxprPpContext, JaxprPpSettings, OutputType, aval_mapping_handlers, call, concretization_function_error, custom_typechecks, literalable_types, no_axis_name, and trace_ctx.
    • Several previously-deprecated APIs from jax.interpreters.pxla have been removed, including Index, MeshAxisName, MeshExecutable, global_aval_to_result_handler, global_result_handlers, are_hlo_shardings_equal, is_hlo_sharding_replicated, ArrayMapping, _UNSPECIFIED, array_mapping_to_axis_resources, and op_sharding_to_indices.
View original

Upgraded? How did it go?

Discussion