It's especially strange why they're calling it a language on their blog when the GitHub readme specifically states that "Pyro is a flexible, scalable deep probabilistic programming
library"[1]
From skimming the documentation it sounds like, rather than being just another library of utility functions, there's a formal language of sorts under the hood that the programming library "compiles to":
Think of this as the compiler for a PPL: it allows us to divide labor between the modeler and the inference expert.
Or something like that. Someone from the team could no doubt produce a better explanation.
I was going to suggest that the author was in marketing and didn't know the difference, but the article seems too in-depth for that. Maybe it's hybrid and devs wrote the more technical sections.
This bit [1] seems to be hacking around with the Python runtime to provide "DSL" like semantics. I wouldn't call this a PL but a DSL, sure. (as an aside, reading this "Poutine"
stuff everywhere made me super hungry)
I prefer the syntax of STAN or edwardlib. Curious why Uber would choose to work on a PPL library in-house as opposed to contributing to existing mature OSS packages
They acquired Geometric Intelligence a year(?) ago, and renamed them Uber AI. I think there is demand for Edward/PyMC3 backed by PyTorch instead of Tensorflow/Theano. Theano is being depreciated next year, which backs PyMC3.
I think classifying it as a framework wouldn't be too far off, gives you statistical distributions to work with as primitives (x is drawn from a Normal distribution instead of just being assigned to 5 for example).
And then it uses PyTorch to perform Variational Inference(?)
Very interesting! How does this relate to Reinforcement Learning and Probabilistic Graphical Models? A major weakness of current crop of Deep Learning is the decision-making modeling; I assume that's where Pyro is intended to be used, right?
Avi Pfeffer's "Practical Probabilistic Programming" (Manning) is a nice book to learn about the concepts. It uses his own Scala based framework Figaro.
http://probmods.org/ is a textbook written by Noah Goodman (author of this post & library and Prof at Stanford) that teaches about cognition using probabilistic programming. It is pretty readable but centered more on cognition than the programming aspect.
There used to be a Python library called Pyro, which stood for Python Remote Objects. As the name implies, it as a library for doing RPC/RMI. I remember playing with it over a weekend ~12 years ago.
Pyro (the remote object version) is still around as Pyro4 (and in active development, found here
https://pythonhosted.org/Pyro4/).
We found it great for gradually transitioning from Py2 to Py3
We have a bunch of testers interfacing with hardware that used to run one big monolithic app that would handle everything from scheduling tests, reporting results, grabbing test artifacts, interfacing with hardware APIs, etc. Rather than move everything over at once, we are splitting out each service and wrapping it in Pyro4, then upgrading them one at a time. We also had a lot of test tooling in legacy java/.net systems, but Pyro4 can wrap those too with (IronPython/Jython)
It works nicely in about 95% of use cases with minimal overhead, but there are some gotchas to be aware of (like all strings being serialized as unicode). If we were architecting the whole thing from scratch, some of it might have made more sense with something like gRPC, but it is still a neat tool to have in your toolbox.
Some discussion from a few days ago:
https://news.ycombinator.com/item?id=15619634
Why is it being labelled a "Language" instead of a python library?
It's especially strange why they're calling it a language on their blog when the GitHub readme specifically states that "Pyro is a flexible, scalable deep probabilistic programming library"[1]
1: https://github.com/uber/pyro
From skimming the documentation it sounds like, rather than being just another library of utility functions, there's a formal language of sorts under the hood that the programming library "compiles to":
Think of this as the compiler for a PPL: it allows us to divide labor between the modeler and the inference expert.
Or something like that. Someone from the team could no doubt produce a better explanation.
Maybe the idea is that it's a DSL?
I was going to suggest that the author was in marketing and didn't know the difference, but the article seems too in-depth for that. Maybe it's hybrid and devs wrote the more technical sections.
This bit [1] seems to be hacking around with the Python runtime to provide "DSL" like semantics. I wouldn't call this a PL but a DSL, sure. (as an aside, reading this "Poutine" stuff everywhere made me super hungry)
[1]: https://github.com/uber/pyro/tree/dev/pyro/poutine
I prefer the syntax of STAN or edwardlib. Curious why Uber would choose to work on a PPL library in-house as opposed to contributing to existing mature OSS packages
They acquired Geometric Intelligence a year(?) ago, and renamed them Uber AI. I think there is demand for Edward/PyMC3 backed by PyTorch instead of Tensorflow/Theano. Theano is being depreciated next year, which backs PyMC3.
https://www.nyu.edu/about/news-publications/news/2016/decemb...
Seems okay, they are taking cues from Edward/WebPPL, and have some pretty good researchers, headed Gary Marcus.
Is he still around?
https://www.recode.net/2017/3/8/14863560/uber-ai-gary-marcus...
opp, apparently not haha. Interesting, I guess working at Uber wasn't that great
Is it a language or a python package? The example I am looking at looks like python to me.
I think classifying it as a framework wouldn't be too far off, gives you statistical distributions to work with as primitives (x is drawn from a Normal distribution instead of just being assigned to 5 for example).
And then it uses PyTorch to perform Variational Inference(?)
Statistical primitives backed by Pytorch (Pyro) and Tensorflow (Edward) is a great analogy. Thanks!
Very interesting! How does this relate to Reinforcement Learning and Probabilistic Graphical Models? A major weakness of current crop of Deep Learning is the decision-making modeling; I assume that's where Pyro is intended to be used, right?
If one wants to get I to ppl, what is a good place to start?
Avi Pfeffer's "Practical Probabilistic Programming" (Manning) is a nice book to learn about the concepts. It uses his own Scala based framework Figaro.
http://probmods.org/ is a textbook written by Noah Goodman (author of this post & library and Prof at Stanford) that teaches about cognition using probabilistic programming. It is pretty readable but centered more on cognition than the programming aspect.
There used to be a Python library called Pyro, which stood for Python Remote Objects. As the name implies, it as a library for doing RPC/RMI. I remember playing with it over a weekend ~12 years ago.
Oh, look, it is still around: https://pypi.python.org/pypi/Pyro/3.16
Admittedly, the last update was five years ago, but still.
Pyro (the remote object version) is still around as Pyro4 (and in active development, found here https://pythonhosted.org/Pyro4/). We found it great for gradually transitioning from Py2 to Py3
Interesting. Can you provide some details about how it helped you transition?
We have a bunch of testers interfacing with hardware that used to run one big monolithic app that would handle everything from scheduling tests, reporting results, grabbing test artifacts, interfacing with hardware APIs, etc. Rather than move everything over at once, we are splitting out each service and wrapping it in Pyro4, then upgrading them one at a time. We also had a lot of test tooling in legacy java/.net systems, but Pyro4 can wrap those too with (IronPython/Jython)
It works nicely in about 95% of use cases with minimal overhead, but there are some gotchas to be aware of (like all strings being serialized as unicode). If we were architecting the whole thing from scratch, some of it might have made more sense with something like gRPC, but it is still a neat tool to have in your toolbox.
Is this the technology behind Greyball?