Good pointer! I did know about CVXPY but haven't used it yet. Though in requiring everything to be (log-)convex it constrains the user programs quite a bit, but I imagine it would have worked in this case because the objective is linear and the feasible set convex. I won't deny the role accident and force of habit had in picking this particular implementation path; I used Pytorch because it's my daily driver :D and because I had found 'mctorch' which provided the Riemann SGD logic.
It's incredible how many algorithms can be made differentiable end-to-end.
E.g. in https://arxiv.org/abs/1905.11885 "Differentiable ranks and sorting using optimal transport" they show how a relaxation of an array sorting procedure leads to differentiable rank statistics (quantiles etc.). The underlying theory is quite close to what I show in the blog post.
In DETR they don't actually use a differentiable Hungarian algorithm, it's only used to score their neural predictions outside of the training loop IIUC.
Yes, the problem can now be solved efficiently with a scikit one-liner, but the aim of this post was more speculative rather than beating the benchmark :)
An interesting connection between combinatorial optimization and differential geometry. And some Pytorch too, because when all you have is a hammer..
I built most of this one year ago, but only now managed to write it up. I enjoyed the change of pace of a pure speculative experiment (with some deep connections to a bunch of interesting theory and applications), and I hope you will enjoy reading about it too.
Hi there, while the word list will help, I think plugging an LLM to a user-facing form is still a very, very bad idea, especially if this is meant for children.
> you could ship logs into Splork, then let it ingest that data into FlorbHut, and then use a frontend like Glorply to search logs
Seriously though, is there a single OSS product that does all of this ? Like, for a small multitenant app (i.e not "web-scale"), and that doesn't force one to get a degree in observability just to get stuff done.