justindomke / marbl

Marginal based learning of Conditional Random Field parameters
MIT License
6 stars 1 forks source link

marbl

Marginal based learning of Conditional Random Field parameters.

Overview

This implementation roughly corresponds to the algorithm described in the paper:

Getting started

Note that Marbl has been compiled under Mac OS and Linux, but hasn’t been tested under Windows. If you are able to compile under Windows, please send any information about how you did so.

To uninstall Marbl, just delete the main directory. Nothing is installed anywhere else, and the environment isn’t changed in any way.

Features

Requirements

Strictly speaking, Marbl requires no external libraries. However, learning can be parallelized, using either openMP or openMPI. These are both optional.

openMP

openMP is a platform for shared-memory computing. (i.e. using multiple threads on a single machine). The executable learn_CRF can use openMP if your compiler supports it. Generally, it would be easier to just install a compiler that supports openMP than trying to install openMP separately.

Most recent compilers support openMP out of the box. The major exception is recent versions of xcode/clang on Mac OS. (i.e. the default gcc compiler). Thus, on Mac OS it is recommended to either use MPI for parallelism, or to install a different compiler. (Recent versions of GNU g++ do support it. and can be installed by standard package managers.)

openMPI

Despite the similar name, and despite similar goals of parallel computing, openMPI is completely disjoint from openMP. openMPI is a tool for parallel computing. While openMPI is typically used on clusters, it can manage communication between processes on a single computer. Thus, Marbl’s learn_CRF_mpi uses this single mechanism for parallelism, both on single machines and clusters.

It may be possible to use Marbl with other implementations of MPI, but this hasn’t been tested yet.

Comparison with JGML

Marbl is similar to the JGMT toolbox (implementing essentially the same algorithm), with the following differences:

Language

Limitations

Parallelism

Acknowledgements

Marbl includes the code for two other packages:

Note that while Marbl and libLBFGS are under the MIT license (under which you are, roughly speaking, allowed to do whatever you want) Eigen is under the Mozilla public license, which places some (very minor) restrictions on how it (and thus Marbl) can be used.