Live data from Hacker News

A large scale non-linear optimization library

github.com

21–30 of 34 posts

Re: A large scale non-linear optimization library

#21

For all of the success applying GPUs to optimization problems in ML, why don't any of the common optimization packages seem to support GPU acceleration?

I've come to believe is that the answer to these kinds of questions is "because GPU optimisation is difficult".

Re: A large scale non-linear optimization library

#22
post #19

Earlier quoted context omitted.

Sorry but this is not optimization, this is a bunch of heuristics ran on a gpu.

That's how you solve combinatorial optimization problems. With a bunch on heuristics.

To be pedantic, it's one way to solve combinatorial optimization problems :)

Re: A large scale non-linear optimization library

#23
We used it in a project that performed document recognition and analysis. It was useful for aligning the fields to be extracted from the source image as we formulated it as an optimization problem. It was straightforward to use and it contains some neat loss functions that reduce the effect of outliers (e.g. CauchyLoss).

Re: A large scale non-linear optimization library

#24
post #23

We used it in a project that performed document recognition and analysis. It was useful for aligning the fields to be extracted from the source image as we formulated it as an optimization problem. It was straightforward to use and it contains some neat loss functions that reduce the effect of outliers (e.g. CauchyLoss).

That sounds really interesting. Do you have any more details?

If you prefer to reply privately, my contact details are in my HN profile.

Re: A large scale non-linear optimization library

#26

How does this compare to nlopt? https://nlopt.readthedocs.io/en/latest/

I believe Ceres was originally developed for nonlinear least squares optimization, particularly in the context of structure from motion (as bundle adjustment) and related problems in computer vision and robotics (esp. SLAM). As such it has some features that are useful in that context, such as automatic differentiation and covariance estimation. I see that it also has more general nonlinear optimization feature, but…

Looks like ceres doesn't support inequality constraints (directly at least), while NLOPT has some algorithms that do.

Re: A large scale non-linear optimization library

#27
At Google, Ceres is used to:

- Estimate the pose of Street View cars, aircrafts, and satellites.

- Build 3D models for PhotoTours.

- Estimate satellite image sensor characteristics.

- Stitch panoramas on Android and iOS.

- Apply Lens Blur on Android.

- Solve bundle adjustment and SLAM problems in Project Tango.

Microsoft Research uses Ceres for nonlinear optimization of objectives involving subdivision surfaces under skinned control meshes.

http://ceres-solver.org/users.html

Re: A large scale non-linear optimization library

#29

For all of the success applying GPUs to optimization problems in ML, why don't any of the common optimization packages seem to support GPU acceleration?

this one does http://ceres-solver.org/features.html but maybe that's not what you were referring to?

Re: A large scale non-linear optimization library

#30

For all of the success applying GPUs to optimization problems in ML, why don't any of the common optimization packages seem to support GPU acceleration?

Many already do, but not necessarily explicitly. If an optimizer accepts user defined functions for its evaluation and derivatives, these computations can be done using a GPU even though the optimizer itself knows nothing about the GPU. For example, GPU are extensively used in parameter estimation problems associated with PDE contrained optimization. Essentially, the PDE solves use GPUs to solve the differential equation and then then results are fed back into the optimizer. Many of these packages use common open source optimizers.

More generally, there's a question of where the algorithms themselves benefit from GPUs or parallelism in general. For large scale nonlinear, continuous optimization problems using second-order, Newton like methods, the big costs are in the function evaluations, their derivatives, and the linear system preconditioners/solves. Generally speaking, how the function evaluations and derivatives are computed are on the user. For the preconditioning/linear system solves, there's value in parallelism. However, here, the GPUs have traditionally lagged. Basically, we need a factorization, be it sparse or dense, and it's only been recently where good library support has been extended for GPUs. For the longest time, the entire matrix factorization needed to fit onto the GPU and many of these matrices were large. That said, for optimizers that accept a user-defined preconditioner, the use of GPUs is already possible.

Post reply on HN