Hacker News new | ask | show | jobs
by lvncelot 32 days ago
Interesting to see that PyTorch has become the de-facto standard after it seemed for a while that the dust had settled on Tensorflow.

I also thought that Jax would in turn take over after PyTorch but it never seemed to quite take off (still in use though from what I can tell).

5 comments

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!

JAX is brilliant for research but the debugging story is still rough compared to PyTorch. eager mode + native Python exceptions win for most people.
> 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).
TF had first mover's advantage, so they felt like the incumbent for a long time, with PyTorch being the scrappy challenger.
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.
why did tensorflow not gain traction? out of the loop here