stanford-crfm / levanter

Legible, Scalable, Reproducible Foundation Models with Named Tensors and Jax
https://levanter.readthedocs.io/en/latest/
Apache License 2.0
517 stars 82 forks source link

Bump equinox from 0.11.4 to 0.11.5 #721

Closed dependabot[bot] closed 2 months ago

dependabot[bot] commented 2 months ago

Bumps equinox from 0.11.4 to 0.11.5.

Release notes

Sourced from equinox's releases.

Equinox v0.11.5

JAX compatibility

Recent versions of JAX (0.4.28+) have made some changes to:

  • Hashing of tracers;
  • Tree-map'ing over Nones;
  • Callbacks;
  • Pretty-printing.

With this update, we should now be compatible with both old and new versions of JAX: this fixes both some new crashes, and some new warnings. (#719, #724, #753, #758, thanks @​jakevdp, @​hawkinsp!)

Better errors

  • The error messages from eqx.error_if are now substantially more informative: they include traceback information including the stack, and mention the availability of the EQX_ON_ERROR variable. We also do a much better job hiding the large unhelpful printouts that XLA gives by default. (#785, #803)

  • The default value of EQX_ON_ERROR_BREAKPOINT_FRAMES is now 1. (#777) The impact of this is that using eqx.error_if alongside EQX_ON_ERROR=breakpoint will now:

    • reliably always open a debugger, rather than sometimes crashing at trace-time due to upstream JAX bug #16732.
    • however, by default the debugger will no longer include any additional stack frames above it (accessed via u).
    • much of the above is now explained in a printed-out informative message prior to the debugger opening.

Bugfixes

  • eqx.filter_{jacfwd, jacrev} now only apply filtering to their inputs but not their outputs. Previously this was problematic as there was no way to represent static-input-by-static-output in the returned Jacobian, so pieces were silently dropped. (#734, thanks @​lockwo!)

  • eqx.tree_at can now be used to replace empty tuples. (#715, #717, #722, thanks @​lockwo!)

  • eqx.filter_custom_jvp no longer raises a trace-time crash in some scenarios in which its **kwargs were erroneously counted as having tangents. (patrick-kidger/equinox#745, #749)

  • No longer getting a trace-time crash when doing a particular combination of vmap + autodiff + checkpointed while loops. This occurred when using optimistix.BFGS around diffrax.diffeqsolve. (#777)

  • Fixed a trace-time crash when:

    • using a checkpointed while loop...
    • ...with a body function that has a closed-over tracer...
    • ...and that closed-over tracer is differentiated...
    • ...and there are no other closed-over tracers that are differentiated...
    • ...and the dependency on that tracer is only linear.
    • (patrick-kidger/diffrax#387, #752, thanks @​dkweiss31!)
  • Fixed a trace-time crash when composing the grad of vmap of lineax.linear_solve. (patrick-kidger/lineax#101, #795, thanks @​rhacking!)

  • eqx.nn.RMSNorm now uses at least 32-bit precision for numerical stability (#723, thanks @​AakashKumarNain!)

New features

Other changes

... (truncated)

Commits
  • ea1af82 Version bump
  • 2188e01 Runtime errors inside eqx.filter_jit are now very readable.
  • 68cc26a Fix missing out_axes for transpose-of-vprim.
  • 028a6f4 Better strict error (#783)
  • fe99597 Equinox runtime errors now include a stack trace and more debug info.
  • 2d868a9 Update contributing guide
  • 23b3042 Fix for BFGS + diffeqsolve
  • 70d664c Now defaulting to providing only one frame to the on-error debugger.
  • 8efb0fc Doc fixes
  • d3a01c8 Fixed a case in which we're hashing tracers.
  • Additional commits viewable in compare view


Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)