Enables data scientists and developers to deploy custom machine learning services created with PredictionIO.
This buildpack is part of an exploration into utilizing the Heroku developer experience to simplify data science operations. When considering this proof-of-concept technology, please note its current limitations. We'd love to hear from you. Open issues on this repo with feedback and questions.
Supports engines created for PredictionIO 0.10.0-incubating.
The events data can be stored in:
This buildpack automatically trains the predictive model during release phase, which runs in a one-off dyno. That dyno's memory capacity is a limiting factor at this time. Only Performance dynos with 2.5GB or 14GB RAM provide reasonable utility.
This limitation can be worked-around by pointing the engine at an existing Spark cluster. See: customizing environment variables,
This buildpack also supports executing jobs on an existing Spark cluster. See: customizing environment variables,
Heroku Postgres is the default storage repository, so this does not effect many engines.
There is work underway in the PredictionIO project to support ES by upgrading to ES 5.x and migrating to pure-REST interface.
PredictionIO engine templates typically have some configuration values stored alongside the source code in
engine.json. Some of these values may vary between deployments, such as in a pipeline, where the same slug will be used to connect to different databases for Review Apps, Staging, & Production.
Heroku config vars solve many of the problems associated with these committed configuration files. When using a template or implementing a custom engine, the developer may migrate the engine to read the environment variables instead of the default file-based config, e.g.
Setup testrunner with Docker, then run tests with:
docker-compose -p pio -f test/docker-compose.yml run testrunner
Engines deployed as Heroku apps may automatically run their
sbt test suite using Heroku CI (beta):
Heroku CI automatically runs tests for every subsequent push to your GitHub repository. Any push to any branch triggers a test run, including a push to master. This means that all GitHub pull requests are automatically tested, along with any merges to master.
Test runs are executed inside an ephemeral Heroku app that is provisioned for the test run. The app is destroyed when the run completes.
Copy the snippet above into CLI.