I am looking for a program that I can deploy on my computer or even better on my own cluster (Amazon EC2, OpenStack, etc.) that would offer Machine Learning as a Service (MLaaS). Ideally the program would be free and open-source.

To put it more simply, the program would take some dataset as input and try a bunch of different machine learning algorithms (e.g. NB, KNN, ANN, SVM, DT, etc.) with different parameters (number of clusters/neurons/layers, activation function, metrics used, regularization, etc), then output the best models it found. (best being defined using some usual metrics like accuracy, AUC of ROC, F1, etc.).

I know that it's easy to test a bunch of different models with some existing libraries like scikit-learn, but I'm looking for a solution that requires no or super-minimal coding and that would be as parallelizable (multi-CPU/GPU) and distributable (deployable on a computer cluster) as possible.


From Quora:

There's a project called MLbase under development at UC Berkeley.  It's designed with distributed computing in mind, and another goal is to automatically (and somewhat efficiently) try many different algorithms and hyperparameters.  The second thing (which they call ML Optimizer) isn't ready yet, as far as I know.  For now, you might find their Scala/Spark implementations of distributed algorithms useful if you decide to roll your own model search scheme.

More detailed from their website:

enter image description here

  • MLlib: A distributed low-level ML library written against the Spark runtime that can be called from Scala and Java. The library includes common algorithms for classification, regression, clustering and collaborative filtering.

  • MLI: An API / platform for feature extraction and algorithm development that introduces high-level ML programming abstractions. MLI is currently implemented against Spark, leveraging the kernels in MLlib when possible, though code written against MLI can be executed on any runtime engine supporting these abstractions. MLI includes more extensive functionality and has a faster development cycle than MLlib.

  • ML Optimizer: This layer aims to simplify ML problems for End Users by automating the task of model selection. The optimizer solves a search problem over feature extractors and ML algorithms included in MLI.

The source code of MLI and MLlib has been released, but the ML Optimizer is under active development and I don't see anywhere to download it (which is annoying as the ML Optimizer is the layer that would match the OP's requirements). The whole MLbase framework relies on Apache Spark (free, open-source). MLlib can be considered as one module on top of it amongst a few other useful ones:

enter image description here

MLlib fits into Spark's APIs and interoperates with NumPy in Python (starting in Spark 0.9), and Spark can be run standalone, on EC2, Mesos or Hadoop.

The MLlib's user guide lists all supported machine learning models:

enter image description here

There have been a bunch of publications on MLbase:

  • E. Sparks, A. Talwalkar, V. Smith, J. Kottalam, X. Pan, J. Gonzalez, J. Gonzalez, M. Franklin, M. I. Jordan, T. Kraska. MLI: An API for Distributed Machine Learning. In International Conference on Data Mining, 2013. (pdf)

  • T. Kraska, A. Talwalkar, J.Duchi, R. Griffith, M. Franklin, M.I. Jordan. MLbase: A Distributed Machine Learning System. In Conference on Innovative Data Systems Research , 2013. (pdf)

  • A. Talwalkar, T. Kraska, R. Griffith, J. Duchi, J. Gonzalez, D. Britz, X. Pan, V. Smith, E. Sparks, A. Wibisono, M. J. Franklin, M. I. Jordan. MLbase: A Distributed Machine Learning Wrapper. In Big Learning Workshop at NIPS, 2012. (pdf)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.