bpicolo 8 years ago

Why is it being labelled a "Language" instead of a python library?

  • joshumax 8 years ago

    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

  • kafkaesq 8 years ago

    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.

  • cwyers 8 years ago

    Maybe the idea is that it's a DSL?

  • sosodaft 8 years ago

    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.

  • AYBABTME 8 years ago

    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

kirillseva 8 years ago

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

thecolorblue 8 years ago

Is it a language or a python package? The example I am looking at looks like python to me.

  • f00_ 8 years ago

    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(?)

    • vvkmnn 8 years ago

      Statistical primitives backed by Pytorch (Pyro) and Tensorflow (Edward) is a great analogy. Thanks!

bitL 8 years ago

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?

wodenokoto 8 years ago

If one wants to get I to ppl, what is a good place to start?

  • flor1s 8 years ago

    Avi Pfeffer's "Practical Probabilistic Programming" (Manning) is a nice book to learn about the concepts. It uses his own Scala based framework Figaro.

  • timothy331 8 years ago

    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.

krylon 8 years ago

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.

  • jgibson 8 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

    • cglace 8 years ago

      Interesting. Can you provide some details about how it helped you transition?

      • jgibson 8 years ago

        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.

gaius 8 years ago

Is this the technology behind Greyball?