Git Product home page Git Product logo

realtimerdeployment's Introduction

Author: Hong Ooi

Real-time model deployment with R using Azure Container Registry and Azure Kubernetes Service

Overview

This repository hosts deployment artifacts for the reference architecture "Real-time model deployment with R". You can use these artifacts to deploy a containerised predictive service in Azure.

Design

The workflow in this repository builds a sample machine learning model: a random forest for housing prices, using the Boston housing dataset that ships with R. It then builds a Docker image with the components to host a predictive service:

  • The base R runtime
  • the model object plus any packages necessary to use it (randomForest in this case).
  • the Plumber package for exposing R code as an API.
  • a script that is run on container startup to create the API.

This image is pushed to a Docker registry hosted in Azure, and then deployed to a Kubernetes cluster, also in Azure.

Prerequisites

To use this repository, you will need the following:

  • A recent version of R. It's recommended to use Microsoft R Open, although the standard R distribution from CRAN will work perfectly well.

  • The AzureContainers package, version 1.2.0 or later, for working with containers in Azure.

  • The bcrypt package, which is used to generate the service authentication password.

  • Docker, kubectl and helm 3 installed on your machine.

  • An Azure subscription.

Setup

Edit the file resource_specs.R to contain the following:

  • Your Azure Active Directory tenant. This can be either your directory name or a GUID.
  • Your subscription ID.
  • The name of the resource group that will hold the resources created. The resource group will be created if it does not already exist.
  • The location of the resource group. For a list of regions where AKS is available, see this page.
  • The names for the ACR and AKS resources to be created. The name of the AKS resource, along with its location, will also be used for the domain name label of the cluster.
  • The number of nodes and node VM size for the AKS cluster.
  • Your email address. This is used to obtain a TLS certificate from Let's Encrypt.
  • A (generic) username and password for the predictive service.

Deployment steps

Building the model image

The script 00_train_model.R trains a simple model (a random forest for house prices, using the Boston dataset), and saves the model object to a .RDS file. This step is optional, as the repository already contains a suitable model object.

Creating the Azure resources

The script 01_create_resources.R creates the necessary Azure resources for the deployment. Note that creating an AKS cluster can take several minutes.

Installing an ingress controller

The script 02_install_ingress.R installs the Traefik reverse proxy on the Kubernetes cluster and sets the cluster's domain name.

Deploying the service

The script 03_deploy_service.R pushes the model image to Azure, and deploys the predictive service.

Testing the service

The script 04_test_service.R tests that the service works properly, by sending a request to the API endpoint; you can check that the responses are as expected.

realtimerdeployment's People

Contributors

hongooi73 avatar microsoftopensource avatar msftgits avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.