I work on differentiable geometric optics with PyTorch. Seeing a list like this is really illustrative of the power that PyTorch provides when you start considering it like a general purpose GPU-enabled state of the art numerical optimization framework.
One thing I wonder is why no one has made a fork of PyTorch yet that removes all the API surface that doesn't produce GPU friendly code. Make dtype and device arg mandatory without defaults, remove in place operations that trigger a CPU sync, etc. This would increase confidence that written code will run on the GPU and pass torch.export() on the first try.
It's useful to be able to run models/code on the CPU or split between CPU and GPU, especially for models that cannot fit into the GPU's VRAM, if you are running multiple models, or if you have training data that you need to move between CPU and GPU.
Seems like you could write a simple source code checker program to check all of that. Making an extra library just for some (user hostile) tweaks seems like overkill.
What is sad is that:
- many projects are arrived.
- It is unclear who is responsible for the updates.
I work on one of the projects in the list, need to update a link to the project, as old one is not actual anymore. And unclear how to do it => at least with respect to my project Albumentations, the landscape is outdated :(
---
Also, added the project to the Pytorch Ecosystem many years back, but if you ask me about practical value of being the part of the Ecosystem, I would not be able to tell you anything useful.
I work on one of the projects featured in the PyTorch Ecosystem [1] and I really recommend it to anyone working on a PyTorch library. Their team is really responsive and they even offer promotion on their blog & social media.
I'm a computational mathematician, and I've been a big proponent of JAX to all the research groups I've worked with. So far, I've converted all of them =). In particular for math, I've found JAX's design and feature set to be far more suitable. Patrick Kidger's suite of libraries also carries a lot of weight in that regard. Equinox is the center is basically everything I write in JAX.
But there are absolutely pain points. In particular, especially for weaker programmers (common in academia), it's quite easy to write bad JAX. The functional programming and stateless paradigms require a little more thinking ahead. This is particularly tough when you're doing research and you're, in real time, finding out what's ahead!
> after it seemed for a while that the dust had settled on Tensorflow.
Did it ever? PyTorch always seemed more popular to me, unless you were around Google people, then obviously everything was Tensorflow. But like many Google projects, I never got the impression it was as ubiquitous as PyTorch out in the community outside of Google. Maybe around 2018-2019 it felt like Tensorflow would become more popular than PyTorch eventually, but it never seemed to actually happen.
I never worked at Google, and that (tensorflow dominant) was my impression from 2016-2022 or so. I'm pretty sure if you teach Google trends for awhile it's the same picture; tensorflow was way more popular than pytorch but as DL grew, pytorch grew faster (in terms of users).
The compiler based approach, with jax.cond, purity expectations, difficulty of making stateful abstractions, etc makes sense for large scale deployment, especially to purpose built accelerators like the systolic array ones (tpu, trainium) but not for being the primary framework used in the field. Imperative always wins. Side effects and state are necessary.
One thing I wonder is why no one has made a fork of PyTorch yet that removes all the API surface that doesn't produce GPU friendly code. Make dtype and device arg mandatory without defaults, remove in place operations that trigger a CPU sync, etc. This would increase confidence that written code will run on the GPU and pass torch.export() on the first try.
reply