knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.path = "man/figures/README-",
  out.width = "100%"
)

deploytidymodels

This repo is archived in favor of the vetiver package.

The goal of deploytidymodels is to provide fluent tooling to version, share, and deploy a trained model workflow using the vetiver framework. Functions handle both recording and checking the model's input data prototype, and loading the packages needed for prediction.

Installation

~~You can install the released version of deploytidymodels from CRAN with:~~

install.packages("deploytidymodels") ## not yet

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("juliasilge/deploytidymodels")

Example

You can use the tidymodels ecosystem to train a model, with a wide variety of preprocessing and model estimation options.

library(parsnip)
library(workflows)
data(Sacramento, package = "modeldata")

rf_spec <- rand_forest(mode = "regression")
rf_form <- price ~ type + sqft + beds + baths

rf_fit <- 
    workflow(rf_form, rf_spec) %>%
    fit(Sacramento)

You can version and share your model by pinning it, to a local folder, RStudio Connect, Amazon S3, and more.

library(deploytidymodels)
library(pins)

model_board <- board_temp()
m <- vetiver_model(rf_fit, "sacramento_rf", model_board)
vetiver_pin_write(m)

You can deploy your pinned model via a Plumber API, which can be hosted in a variety of ways.

library(plumber)

pr() %>%
    vetiver_pr_predict(m) %>%
    pr_run(port = 8088)

Make predictions with your deployed model by creating an endpoint object:

endpoint <- vetiver_endpoint("http://127.0.0.1:8088/predict")
endpoint

A model API endpoint deployed with vetiver_pr_predict() will return predictions with appropriate new data.

library(tidyverse)
new_sac <- Sacramento %>% 
    slice_sample(n = 20) %>% 
    select(type, sqft, beds, baths)

predict(endpoint, new_sac)
#> # A tibble: 20 x 1
#>      .pred
#>      <dbl>
#>  1 165042.
#>  2 212461.
#>  3 119008.
#>  4 201752.
#>  5 223096.
#>  6 115696.
#>  7 191262.
#>  8 211706.
#>  9 259336.
#> 10 206826.
#> 11 234952.
#> 12 221993.
#> 13 204983.
#> 14 548052.
#> 15 151186.
#> 16 299365.
#> 17 213439.
#> 18 287993.
#> 19 272017.
#> 20 226629.

Contributing

This project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.



juliasilge/deploytidymodels documentation built on Dec. 21, 2021, 4:16 a.m.