Skip to content

v0.3.0

Compare
Choose a tag to compare
@ValerianRey ValerianRey released this 10 Dec 21:25
· 15 commits to main since this release
1eaafee

The interface update

This version greatly improves the interface of backward and mtl_backward, at the cost of some easy-to-fix breaking changes (some parameters of these functions have been renamed, or their order has been swapped due to becoming optional).

Downstream changes to make to keep using backward and mtl_backward:

  • Rename A to aggregator or pass it as a positional argument.
  • For backward, unless you specifically want to avoid differentiating with respect to some parameters, you can now simply use the default value of the inputs argument.
  • For mtl_backward, unless you want to customize which params should be updated with a step of JD and which should be updated with a step of GD, you can now simply use the default value of the shared_params and of the tasks_params arguments.
  • If you keep providing the inputs or the shared_params or tasks_params arguments as positional arguments, you should provide them after the aggregator.

For instance,

backward(tensors, inputs, A=aggregator)

should become

backward(tensors, aggregator)

and

mtl_backward(losses, features, tasks_params, shared_params, A=aggregator)

should become

mtl_backward(losses, features, aggregator)

We thank @raeudigerRaeffi for sharing his idea of having default values for the tensors with respect to which the differentiation should be made in backward and mtl_backward, and for implementing the first working version of the function that automatically finds these parameters from the autograd graph.

Changelog

Added

  • Added a default value to the inputs parameter of backward. If not provided, the inputs will
    default to all leaf tensors that were used to compute the tensors parameter. This is in line
    with the behavior of
    torch.autograd.backward.
  • Added a default value to the shared_params and to the tasks_params arguments of
    mtl_backward. If not provided, the shared_params will default to all leaf tensors that were
    used to compute the features, and the tasks_params will default to all leaf tensors that were
    used to compute each of the losses, excluding those used to compute the features.
  • Note in the documentation about the incompatibility of backward and mtl_backward with tensors
    that retain grad.

Changed

  • BREAKING: Changed the name of the parameter A to aggregator in backward and
    mtl_backward.
  • BREAKING: Changed the order of the parameters of backward and mtl_backward to make it
    possible to have a default value for inputs and for shared_params and tasks_params,
    respectively. Usages of backward and mtl_backward that rely on the order between arguments
    must be updated.
  • Switched to the PEP 735 dependency groups format in
    pyproject.toml (from a [tool.pdm.dev-dependencies] to a [dependency-groups] section). This
    should only affect development dependencies.

Fixed

  • BREAKING: Added a check in mtl_backward to ensure that tasks_params and shared_params
    have no overlap. Previously, the behavior in this scenario was quite arbitrary.

Contributors