Skip to content

Release version 3.10.0: "Unexpected Rain" - #441

Merged
rcurtin merged 2 commits into
mlpack:masterfrom
rcurtin:release-3.10.0
Sep 30, 2025
Merged

Release version 3.10.0: "Unexpected Rain"#441
rcurtin merged 2 commits into
mlpack:masterfrom
rcurtin:release-3.10.0

Conversation

@rcurtin

@rcurtin rcurtin commented Sep 29, 2025

Copy link
Copy Markdown
Member

This automatically-generated pull request adds the commits necessary to make the 3.10.0 release. Once the PR is merged, mlpack-bot will tag the release as HEAD~1 (so that it doesn't include the new HISTORY block) and publish it. Or, well, hopefully that will happen someday. When you merge this PR, be sure to merge it using a rebase.

Changelog

  • SGD-like optimizers now all divide the step size by the batch size so that step sizes don't need to be tuned in addition to batch sizes. If you require behavior from ensmallen 2, define the ENS_OLD_SEPARABLE_STEP_BEHAVIOR macro before including ensmallen.hpp (#431).

  • Remove deprecated ParetoFront() and ParetoSet() from multi-objective optimizers (#435). Instead, pass objects to the Optimize() function; see the documentation for each multi-objective optimizer for more details. A typical transition will change code like:
    c++ optimizer.Optimize(objectives, coordinates); arma::cube paretoFront = optimizer.ParetoFront(); arma::cube paretoSet = optimizer.ParetoSet();
    to instead gather the Pareto front and set in the call:
    c++ arma::cube paretoFront, paretoSet; optimizer.Optimize(objectives, coordinates, paretoFront, paretoSet);

  • Remove deprecated constructor for Active CMA-ES that takes lowerBound and upperBound (#435). Instead, pass an instantiated BoundaryBoxConstraint to the constructor. A typical transition will change code like:
    c++ ActiveCMAES<FullSelection, BoundaryBoxConstraint> opt(lambda, lowerBound, upperBound, ...);
    into
    c++ ActiveCMAES<FullSelection, BoundaryBoxConstraint> opt(lambda, BoundaryBoxConstraint(lowerBound, upperBound), ...);

  • Add proximal gradient optimizers for L1-constrained and other related problems: FBS, FISTA, and FASTA (#427). See the documentation for more details.

  • The Lambda() and Sigma() functions of the AugLagrangian optimizer, which could be used to retrieve the Lagrange multipliers and penalty parameter after optimization, are now deprecated (#439). Instead, pass a vector and a double to the Optimize() function directly:
    c++ augLag.Optimize(function, coordinates, lambda, sigma)
    and these will be filled with the final Lagrange multiplier estimates and penalty parameters.

@rcurtin

rcurtin commented Sep 29, 2025

Copy link
Copy Markdown
Member Author

I ran the DemonSGD tests 2000 times locally (and the hardware is basically the same) and saw no failures, so I have a feeling that the CPU test was extraordinarily unlucky. I'd be ok releasing as-is; I don't think there is any deeper risk. If we keep seeing the failure I will dig further.

@rcurtin
rcurtin merged commit 9aebc1d into mlpack:master Sep 30, 2025
5 of 6 checks passed
@rcurtin
rcurtin deleted the release-3.10.0 branch September 30, 2025 18:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants