The Protocols and Structures for Inference (PSI) project has developed an architecture for presenting machine learning algorithms, their inputs (data) and outputs (predictors) as resource-oriented RESTful web services in order to make machine learning technology accessible to a broader range of people than just machine learning researchers.


Currently, many machine learning implementations (e.g., in toolkits such as Weka, Orange, Elefant, Shogun, SciKit.Learn, etc.) are tied to specific choices of programming language, and data sets to particular formats (e.g., CSV, svmlight, ARFF). This limits their accessibility, since new users may have to learn a new programming language to run a learner or write a parser for a new data format, and their interoperability, requiring data format converters and multiple language platforms. While there is also a growing number of machine learning web services, each has its own API and is tailored to suit a different subset of machine learning activities.


To address these limitations, the aim of the PSI service architecture is to present the main inferential entities—relations (datasets), attributes, learners, and predictors—as web resources that are accessible via a common interface. By providing a consistent interface for the entities involved in learning, the PSI approach can improve interoperability and hide implementation details to promote accessibility. This will allow PSI to support federated machine learning solutions composed from multiple, independent services.

While the formal project ended in October 2013, the specification will continue to evolve, and the demonstration service, client and their souces live on.

Get the New Spec

The PSI specification has been recently revised and is available now. Some illustrative examples of the API’s behaviour appear in the specification and are also presented in bite-sized pieces on this site.

Try it out

A demonstration service is now available at It exposes learning algorithms from Weka and scikit-learn , and a small number of datasets from the UCI Machine Learning repository .

We have also developed a browser-based PSI service ‘explorer’ that allows interaction with multiple PSI services and individual PSI resources, and which demonstrates the full range of interactions possible.

The sources for the demonstration service and client are available from the project’s GitHub page .