GithubHelp home page GithubHelp logo

ubc-stat-ml / blangsdk Goto Github PK

View Code? Open in Web Editor NEW
24.0 12.0 6.0 3.16 MB

Blang's software development kit

Home Page: https://www.stat.ubc.ca/~bouchard/blang/

License: BSD 2-Clause "Simplified" License

Xtend 52.74% Java 46.96% Shell 0.30%
machine-learning probabilistic-programming probabilistic-graphical-models probabilistic-models mcmc-sampler mcmc markov-chain-monte-carlo bayesian-inference bayesian-statistics

blangsdk's Introduction

Summary

Prospective/current users: please vist the project web page for more information as well as our JSS paper.

Docker image: link to documentation

New feature: Blang can now run on 1000s of machines using MPI via the Pigeons-Blang bridge

Blang developers: in addition to the above resources, see also the documentation repository for more information.

This is one of the repositories hosting Blang's code. This one contains the Blang's SDK (Software Development Kit), including:

  • Basic datatypes suitable for sampling.
  • Infrastructure to create new data types and distributions.
  • Inference algorithms for such datatypes, such as Adaptive Non-Reversible Parallel Tempering and Sequential Change of Measure.
  • Standard probability distributions.
  • MCMC testing infrastructure.
  • Runtime to perform static analysis to infer the factor graph and its sparsity patterns.
  • Automated post-processing facilities (MCMC diagnostic, trace/density/pmf/summaries generation, etc).

See this readme for a roadmap of the other key repositories (language infrastructure, examples, supporting libraries, etc)

Citing Blang: if you find Blang useful for your work, consider citing our JSS paper:

Alexandre Bouchard-Côté, Kevin Chern, Davor Cubranic, Sahand Hosseini, Justin Hume, Matteo Lepur, Zihui Ouyang, Giorgio Sgarbi (2022)
Journal of Statistical Software 103:1–98

blangsdk's People

Contributors

alexandrebouchard avatar kevinchern avatar makingsurgeon avatar matteolepur avatar sahand-h avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blangsdk's Issues

Further improvements on data frames

  • Inverted control with plates
  • Make Table interface, concrete types are ScalarTable and MatrixTable
    • ScalarTable configured by matrix.inPlates(..) only
    • MatrixTable configured by matrix.inPlates(..); matrix.rowsIndexedBy(...); matrix.colsIndexedBy(...)
    • In both cases, plate indices are modelled by sets (no duplicates)
  • Keep the same idea in ScalarTable
  • Sub-frames

Reorganize examples

  • Remove blang.examples from SDK
  • Create project template
  • Create some script to upgrade everything or via snapshots
  • Write examples via an instantiation of the template

Move runtime from bayonet to blangSDK

This is required since these depend on interfaces such as Model that are needed in blangDSL (and it's non-trivial because of plug-in architecture and seems suboptimal to have blangDSL import bayonet).

Note: important to also erase from bayonet to avoid having two versions of same thing.

Adaptation

Need to at least set univariate scale.

Modify parsers

Consider having the parsers for matrices reading formats like [a b]

Use xtend's range operators

E.g., in src/main/java/blang/examples/MixtureModel.bl, instead of StaticUtils::range(observations.size()), we should be able to use 0 ..< observations.size(). (Xtend reference)

Improve slice sampler

Use doubling instead of linear expansion procedure, re-read Neal's paper and re-write the implementation.

Add support for enums

Do not do via java enums! Because the values cannot be read from command line then. Would also make a mess everywhere. Instead, use some kind of FiniteSupport

Integrate xlinear

Most of the work will be with integration of graph introspection and views.

Improve data frame

  • Most important: make it so that loops can be combined,
  • Conversion into lists/matrices

Improve performance of cloning

  • Some immutable stuff to mark for shallow copy, e.g. arrays of integers for sampler cache
  • Datasets
  • Plates, etc [mark as immutable as well]
  • Parallelize!

Fix issues encountered while testing MixtureModel

  • Bug: posteriors clearly incorrect
  • Performance: seems very slow at 1000 datapoint, encouragingly, get much more than 2x faster at 500 datapoints, so some factor dependencies must be wrong
  • Marking fields with transient seems to cause undesirable side effects, need better way to signal graph inference to skip some [document adding transient to K value changes behavior]
  • Style: problematic that loops cannot be shared [split to separate issue]
  • Style: autodeboxing is needed [see separate issue]

Fix printing

  • Make it work on SMC samplers
  • Use hierarchical dir? Field names? ExperimentResults?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.