Vetiver, the oil of tranquility, is used as a stabilizing ingredient in perfumery to preserve more volatile fragrances.
The goal of vetiver is to provide fluent tooling to version, share, deploy, and monitor a trained model. Functions handle both recording and checking the model's input data prototype, and predicting from a remote API endpoint. The vetiver package is extensible, with generics that can support many kinds of models, and available for both Python and R. To learn more about vetiver, see:
- the documentation at https://vetiver.rstudio.com/
- the R package at https://rstudio.github.io/vetiver-r/
You can use vetiver with:
- scikit-learn
- torch
- statsmodels
- xgboost
- spacy
- or utilize custom handlers to support your own models!
You can install the released version of vetiver from PyPI:
python -m pip install vetiver
And the development version from GitHub with:
python -m pip install git+https://github.com/rstudio/vetiver-python
A VetiverModel()
object collects the information needed to store, version, and deploy a trained model.
from vetiver import mock, VetiverModel
X, y = mock.get_mock_data()
model = mock.get_mock_model().fit(X, y)
v = VetiverModel(model, model_name='mock_model', prototype_data=X)
You can version and share your VetiverModel()
by choosing a pins "board" for it, including a local folder, Connect, Amazon S3, and more.
from pins import board_temp
from vetiver import vetiver_pin_write
model_board = board_temp(versioned = True, allow_pickle_read = True)
vetiver_pin_write(model_board, v)
You can deploy your pinned VetiverModel()
using VetiverAPI()
, an extension of FastAPI.
from vetiver import VetiverAPI
app = VetiverAPI(v, check_prototype = True)
To start a server using this object, use app.run(port = 8080)
or your port of choice.
This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
-
For questions and discussions about deploying models, statistical modeling, and machine learning, please post on Posit Community.
-
If you think you have encountered a bug, please submit an issue.