  Gradients of probabilistic model likelihoods with respect to their parameters
are essential for modern computational statistics and machine learning. These
calculations are readily available for arbitrary models via automatic
differentiation implemented in general-purpose machine-learning libraries such
as TensorFlow and PyTorch. Although these libraries are highly optimized, it is
not clear if their general-purpose nature will limit their algorithmic
complexity or implementation speed for the phylogenetic case compared to
phylogenetics-specific code. In this paper, we compare six gradient
implementations of the phylogenetic likelihood functions, in isolation and also
as part of a variational inference procedure. We find that although automatic
differentiation can scale approximately linearly in tree size, it is much
slower than the carefully-implemented gradient calculation for tree likelihood
and ratio transformation operations. We conclude that a mixed approach
combining phylogenetic libraries with machine learning libraries will provide
the optimal combination of speed and model flexibility moving forward.
