That said, you’re right. There’s no way I’d deploy it to production.
That said, you’re right. There’s no way I’d deploy it to production.
Disclaimer: I work on Caffe2 team (not on ONNX, though)
I'm super skeptical of these interchanges, because it seems very difficult to avoid train/test skew. Any difference in detail between the two implementations is a potential problem. I can imagine different order of operations putting out some values by 0.1%, causing 1% eventual loss of accuracy.
Implementation details of course differ between frameworks, but luckily neural networks are very robust to noise. In my experience, changes like using Winograd/Fourier for convolutions, or even running the whole thing in FP16 do not result in noticeable artifacts, and these are among the biggest differences you could have between frameworks.
I've seen this stated by a few people, but never justified. What are some reasons for not deploying PyTorch in production?
Disclosure: I work at Google, but not TensorFlow.
You could mean large scale, real time, "small batch job with online lookups from a CRUD database",..
Let's just admit it's use case specific and move on.
I am not saying that Pytorch is bad in production but I fail to see how your metric of 8 images per second proves anything.
Additionally, PyTorch download page warns you point blank that it’s an early version of the software and that you should “expect some adventures”. Adventures are fine for research, but inadvisable in production IMO.
Making it run at scale using something like kubernetes is more advanced stuff but still within good devops practices.
Unless, of course if you want to run on exotic HW, like TPUs. But that's an issue for Googlish scales.
Edit: BTW, if on premise you mean Windows client software your point is totally valid, Python would suck for this.
Re: Windows, there's no TF serving for that, so TF is no better than other Python frameworks.