Skip to main content

A platform for serving and deploying machine learning models in the cloud

Project description

pypi status python versions Downloads build status Documentation Status join BentoML Slack

From ML model to production API endpoint with a few lines of code

BentoML

BentoML makes it easy to serve and deploy machine learning models in the cloud.

It is an open source framework for building cloud-native model serving services. BentoML supports most popular ML training frameworks and deployment platforms, including major cloud providers and docker/kubernetes.

👉 Join BentoML Slack community to hear about the latest development updates.


Getting Started

Installing BentoML with pip:

pip install bentoml

Creating a prediction service with BentoML:

import bentoml
from bentoml.handlers import DataframeHandler
from bentoml.artifact import SklearnModelArtifact

@bentoml.env(pip_dependencies=["scikit-learn"]) # defining pip/conda dependencies to be packed
@bentoml.artifacts([SklearnModelArtifact('model')]) # defining required artifacts, typically trained models
class IrisClassifier(bentoml.BentoService):

    @bentoml.api(DataframeHandler) # defining prediction service endpoint and expected input format
    def predict(self, df):
        # Pre-processing logic and access to trained model artifacts in API function
        return self.artifacts.model.predict(df)

Train a classifier model with default Iris dataset and pack the trained model with the BentoService IrisClassifier defined above:

from sklearn import svm
from sklearn import datasets

if __name__ == "__main__":
    clf = svm.SVC(gamma='scale')
    iris = datasets.load_iris()
    X, y = iris.data, iris.target
    clf.fit(X, y)

    # Create a iris classifier service
    iris_classifier_service = IrisClassifier()

    # Pack it with the newly trained model artifact
    iris_classifier_service.pack('model', clf)

    # Save the prediction service to a BentoService bundle
    saved_path = iris_classifier_service.save()

You've just created a BentoService SavedBundle, it's a versioned file archive that is ready for production deployment. It contains the BentoService you defined, as well as the packed trained model artifacts, pre-processing code, dependencies and other configurations in a single file directory.

From a BentoService SavedBundle, you can start a REST API server by providing the file path to the saved bundle:

bentoml serve IrisClassifier:latest

The REST API server provides web UI for testing and debugging the server. If you are running this command on your local machine, visit http://127.0.0.1:5000 in your browser and try out sending API request to the server. You can also send prediction request with curl from command line:

curl -i \
  --header "Content-Type: application/json" \
  --request POST \
  --data '[[5.1, 3.5, 1.4, 0.2]]' \
  http://localhost:5000/predict

The BentoService SavedBundle directory is structured to work as a docker build context, that can be used to build a API server docker container image: build context directory:

docker build -t my_api_server {saved_path}

You can also deploy your BentoService to cloud services such as AWS Lambda with bentoml lambda command. The deployment gives you a production-ready API endpoint hosting the BentoService you specified:

> bentoml get IrisClassifier
BENTO_SERVICE                         CREATED_AT        APIS                       ARTIFACTS
IrisClassifier:20200121114004_360ECB  2020-01-21 19:40  predict::DataframeHandler  model::SklearnModelArtifact
IrisClassifier:20200120082658_4169CF  2020-01-20 16:27  predict::DataframeHandler  clf::PickleArtifact
...

> bentoml lambda deploy test-deploy -b IrisClassifier:20200121114004_360ECB
...

More detailed code and walkthrough of this example can be found in the BentoML Quickstart Guide.

Documentation

Full documentation and API references: https://docs.bentoml.org/

Examples

Visit bentoml/gallery repository for more examples and tutorials.

FastAI

Scikit-Learn

PyTorch

Tensorflow Keras

Tensorflow 2.0

XGBoost

LightGBM

H2O

Deployment guides:

Contributing

Have questions or feedback? Post a new github issue or discuss in our Slack channel: join BentoML Slack

Want to help build BentoML? Check out our contributing guide and the development guide.

Releases

BentoML is under active development and is evolving rapidly. Currently it is a Beta release, we may change APIs in future releases.

Read more about the latest features and changes in BentoML from the releases page.

Usage Tracking

BentoML by default collects anonymous usage data using Amplitude. It only collects BentoML library's own actions and parameters, no user or model data will be collected. Here is the code that does it.

This helps BentoML team to understand how the community is using this tool and what to build next. You can easily opt-out of usage tracking by running the following command:

# From terminal:
bentoml config set usage_tracking=false
# From python:
import bentoml
bentoml.config().set('core', 'usage_tracking', 'False')

License

Apache License 2.0

FOSSA Status

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

BentoML-0.6.0.tar.gz (458.6 kB view details)

Uploaded Source

Built Distribution

BentoML-0.6.0-py3-none-any.whl (553.1 kB view details)

Uploaded Python 3

File details

Details for the file BentoML-0.6.0.tar.gz.

File metadata

  • Download URL: BentoML-0.6.0.tar.gz
  • Upload date:
  • Size: 458.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191203 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.5

File hashes

Hashes for BentoML-0.6.0.tar.gz
Algorithm Hash digest
SHA256 35dbaec543a1b5284dc2da8121b75cbc1edc745e4450be041611683fd0e004c5
MD5 15584593775925d408e35004df6794d8
BLAKE2b-256 332b18b6d29b2c73dea8d5efadc358c61c2430cf9ca4ba59eea9e5933fdff27c

See more details on using hashes here.

File details

Details for the file BentoML-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: BentoML-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 553.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2.post20191203 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.5

File hashes

Hashes for BentoML-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c59eed841b9c63ec86ac6c683b8b150c986359bc4be09079166a269d999e2e53
MD5 89f2003fcff466359003ca5dad002302
BLAKE2b-256 9c9871737fe0dd581decd1a94349a8c88463f3c83fd65690efa49245b08bcfd9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page