Vladimir
Спасибо! У меня как раз мало параметров. Думал если если переписать под дуальные числа быстрее будет, но нет. В итоге Optim + ForwardDiff для оптимизации REML функции оказались быстрее всего, надо конечно разные солверы для JuMP пробовать.
Я почитал внимательнее ноутбуки от Майка и понял, что глупость сказал. Важно не само по себе количество параметров, а соотношение размерностей на входе и выходе.
То есть, если нужно продифференцировать скалярную функцию зависящую от большого количества параметров (случай нейросетей, где оптимизируют функцию потерь), то нужно использовать ReverseDiff, а ForwardDiff будет очень сильно проигрывать.
Если наоборот, нужно продифференцировать векторную/матричную функцию небольшого числа параметров (например найти касательный вектор кривой в каком-нибудь многомерном пространстве), то тогда нужно использовать ForwardDiff, а ReverseDiff будет считать крайне неэффективно.
Вообще, очень рекомендую его записи почитать, очень много полезного, очень простым языком объясняется.