JAX v0.4.36
- Added compiler_options argument to jax.jit for passing compilation options to XLA
- Added jax.numpy.put_along_axis
- Added GPU support for jax.lax.linalg.eig and related jax.numpy functions jax.numpy.linalg.eig and jax.numpy.linalg.eigvals
- Added jax_exec_time_optimization_effort and jax_memory_fitting_effort configuration flags to control compiler effort for execution time and memory usage
- JAX tracing machinery now uses stackless dispatch as a function of context rather than both context and data, removing levels, sublevels, post_process_call, new_base_main, and custom_bind
- Calling np.asarray on typed PRNG keys now raises an error instead of returning a scalar object array
- Hashing of tracers now raises a TypeError
- JAX build CLI now uses a subcommand structure with build and requirements_update subcommands
- jax.scipy.linalg.toeplitz now does implicit batching on multi-dimensional inputs
- jax.scipy.special.gamma and jax.scipy.special.gammasgn now return NaN for negative integer inputs
- jax.tree_util.register_dataclass now allows metadata fields to be declared inline via dataclasses.field
- Fixed indexing overflow bug in GPU implementations of LU and QR decomposition for batch sizes close to int32 max
- Removed support for jax.experimental.jax2tf.convert with native_serialization=False or enable_xla=False
- Removed xb, xc, and xe symbols from jax.interpreters.xla
- Removed deprecated module jax.experimental.export
- Removed initial argument to jax.nn.softmax and jax.nn.log_softmax
- Removed jax.export.DisabledSafetyCheck.shape_assertions, jax.export.Exported.lowering_platforms, jax.export.Exported.mlir_module_serialization_version, jax.export.Exported.uses_shape_polymorphism, and lowering_platforms kwarg from jax.export.export
- Removed symbolic_scope and symbolic_constraints kwargs from jax.export.symbolic_args_specs
- Removed jax.clear_backends
- Removed __gpu$xla.gpu.triton custom call from export stability guarantees
- Deprecated jax.lib.xla_extension.ArrayImpl and jax.lib.xla_client.ArrayImpl in favor of jax.Array
- Deprecated jax.lib.xla_extension.XlaRuntimeError in favor of jax.errors.JaxRuntimeError
-
Breaking Changes
-
This release lands "stackless", an internal change to JAX's tracing machinery. We made trace dispatch purely a function of context rather than a function of both context and data. This let us delete a lot of machinery for managing data-dependent tracing: levels, sublevels,
post_process_call,new_base_main,custom_bind, and so on. The change should only affect users that use JAX internals.If you do use JAX internals then you may need to update your code (see https://github.com/jax-ml/jax/commit/c36e1f7c1ad4782060cbc8e8c596d85dfb83986f for clues about how to do this). There might also be version skew issues with JAX libraries that do this. If you find this change breaks your non-JAX-internals-using code then try the
config.jax_data_dependent_tracing_fallbackflag as a workaround, and if you need help updating your code then please file a bug. -
jax.experimental.jax2tf.convertwithnative_serialization=Falseor withenable_xla=Falsehave been deprecated since July 2024, with JAX version 0.4.31. Now we removed support for these use cases.jax2tfwith native serialization will still be supported. -
In
jax.interpreters.xla, thexb,xc, andxesymbols have been removed after being deprecated in JAX v0.4.31. Instead usexb = jax.lib.xla_bridge,xc = jax.lib.xla_client, andxe = jax.lib.xla_extension. -
The deprecated module
jax.experimental.exporthas been removed. It was replaced byjax.exportin JAX v0.4.30. See the migration guide for information on migrating to the new API. -
The
initialargument tojax.nn.softmaxandjax.nn.log_softmaxhas been removed, after being deprecated in v0.4.27. -
Calling
np.asarrayon typed PRNG keys (i.e. keys produced byjax.random.key) now raises an error. Previously, this returned a scalar object array. -
The following deprecated methods and functions in
jax.exporthave been removed:jax.export.DisabledSafetyCheck.shape_assertions: it had no effect already.jax.export.Exported.lowering_platforms: useplatforms.jax.export.Exported.mlir_module_serialization_version: usecalling_convention_version.jax.export.Exported.uses_shape_polymorphism: useuses_global_constants.- the
lowering_platformskwarg forjax.export.export: useplatformsinstead.
-
The kwargs
symbolic_scopeandsymbolic_constraintsfromjax.export.symbolic_args_specshave been removed. They were deprecated in June 2024. Usescopeandconstraintsinstead. -
Hashing of tracers, which has been deprecated since version 0.4.30, now results in a
TypeError. -
Refactor: JAX build CLI (build/build.py) now uses a subcommand structure and replaces previous build.py usage. Run
python build/build.py --helpfor more details. Brief overview of the new subcommand options:build: Builds JAX wheel packages. For e.g.,python build/build.py build --wheels=jaxlib,jax-cuda-pjrtrequirements_update: Updates requirements_lock.txt files.
-
jax.scipy.linalg.toeplitznow does implicit batching on multi-dimensional inputs. To recover the previous behavior, you can calljax.numpy.ravelon the function inputs. -
jax.scipy.special.gammaandjax.scipy.special.gammasgnnow return NaN for negative integer inputs, to match the behavior of SciPy from https://github.com/scipy/scipy/pull/21827. -
jax.clear_backendswas removed after being deprecated in v0.4.26. -
We removed the custom call "__gpu$xla.gpu.triton" from the list of custom call that we guarantee export stability. This is because this custom call relies on Triton IR, which is not guaranteed to be stable. If you need to export code that uses this custom call, you can use the
disabled_checksparameter. See more details in the documentation.
-
-
New Features
jax.jitgot a newcompiler_options: dict[str, Any]argument, for passing compilation options to XLA. For the moment it's undocumented and may be in flux.jax.tree_util.register_dataclassnow allows metadata fields to be declared inline viadataclasses.field. See the function documentation for examples.- Added
jax.numpy.put_along_axis. jax.lax.linalg.eigand the relatedjax.numpyfunctions (jax.numpy.linalg.eigandjax.numpy.linalg.eigvals) are now supported on GPU. See #24663 for more details.- Added two new configuration flags,
jax_exec_time_optimization_effortandjax_memory_fitting_effort, to control the amount of effort the compiler spends minimizing execution time and memory usage, respectively. Valid values are between -1.0 and 1.0, default is 0.0.
-
Bug fixes
- Fixed a bug where the GPU implementations of LU and QR decomposition would result in an indexing overflow for batch sizes close to int32 max. See #24843 for more details.
-
Deprecations
jax.lib.xla_extension.ArrayImplandjax.lib.xla_client.ArrayImplare deprecated; usejax.Arrayinstead.jax.lib.xla_extension.XlaRuntimeErroris deprecated; usejax.errors.JaxRuntimeErrorinstead.