Giter Club home page Giter Club logo

az-deep-realtime-score's Introduction

Authors: Yan Zhang, Mathew Salvaris, and Fidan Boylu Uz

Build Status

Deploy Deep Learning CNN using Azure Machine Learning

Overview

In this repository there are a number of tutorials in Jupyter notebooks that have step-by-step instructions on how to deploy a pretrained deep learning model on a GPU enabled Kubernetes cluster throught Azure Machine Learning (AzureML). The tutorials cover how to deploy models from the following deep learning frameworks on specific deployment target:

alt text

For each framework, we go through the following steps:

  • Create an AzureML Workspace
  • Model development where we load the pretrained model and test it by using it to score images
  • Develop the API that will call our model
  • Building the Docker Image with our REST API and model and testing the image
  • AKS option
    • Creating our Kubernetes cluster and deploying our application to it
    • Testing the deployed model
    • Testing the throughput of our model
    • Cleaning up resources
  • IOT Edge option
    • Creating IoT hub and IoT Edge device identity, configuring the physical IOT Edge device, and deploying our application to it
    • Cleaning up resources

Design

As described on the associated Azure Reference Architecture page, the application we will develop is a simple image classification service, where we will submit an image and get back what class the image belongs to. The application flow for the deep learning model is as follows:

  1. Deep learning model is registered to AzureML model registry.
  2. AzureML creates a docker image including the model and scoring script.
  3. AzureML deploys the scoring image on the chosen deployment compute target (AKS or IoT Edge) as a web service.
  4. The client sends a HTTP POST request with the encoded image data.
  5. The web service created by AzureML preprocesses the image data and sends it to the model for scoring.
  6. The predicted categories with their scores are then returned to the client.

NOTE: The tutorial goes through step by step how to deploy a deep learning model on Azure; it does not include enterprise best practices such as securing the endpoints and setting up remote logging etc.

Deploying with GPUS: For a detailed comparison of the deployments of various deep learning models, see the blog post here which provides evidence that, at least in the scenarios tested, GPUs provide better throughput and stability at a lower cost.

Getting Started

To get started with the tutorial, please proceed with following steps in sequential order.

Prerequisites

  1. Linux (x64) with GPU enabled.
  2. Anaconda Python
  3. Docker installed.
  4. Azure account.

The tutorial was developed on an Azure Ubuntu DSVM, which addresses the first three prerequisites.

Setup

To set up your environment to run these notebooks, please follow these steps.

  1. Create a Linux Ubuntu DSVM (NC6 or above to use GPU).

  2. Install cookiecutter, a tool creates projects from project templates.

pip install cookiecutter
  1. Clone and choose a specific framework and deployment option for this repository. You will obtain a repository tailored to your choice of framework and deployment compute target.
    cookiecutter https://github.com/Microsoft/AKSDeploymentTutorialAML.git 

You will be asked to choose or enter information such as framework, project name, subsciption id, resource group, etc. in an interactive way. If a dafault value is provided, you can press Enter to accept the default value and continue or enter value of your choice. For example, if you want to learn how to deploy deep learning model on AKS Cluster using Keras, you should have values "keras" as the value for variable framework and "aks" for variable deployment_type. Instead, if you want to learn deploying deep learning model on IoT Edge, you should select "iotedge" for variable deployment_type.

You must provide a value for "subscription_id", otherwise the project will fail with the error "ERROR: The subscription id is missing, please enter a valid subscription id" after all the questions are asked. The full list of questions can be found in cookiecutter.json file.

Please make sure all entered information are correct, as these information are used to customize the content of your repo.

  1. With the generation of the project custom readmes will be created based on aks-keras or iotedge-keras. Go find a README.md file in your project directory and proceed with instructions specified in it.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Related projects

Microsoft AI Github Find other Best Practice projects, and Azure AI design patterns in our central repository.

az-deep-realtime-score's People

Contributors

azure-pipelines[bot] avatar danielleodean avatar dciborow avatar fboylu avatar grecoe avatar jayamathew avatar marabout2015 avatar microsoftopensource avatar msalvaris avatar msftgits avatar yanzhangads avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

az-deep-realtime-score's Issues

Harden core validation

Core check in the aks/05 notebook is too generic. There is a potential to get the wrong SKU quota and make assumptions (good or bad) based on that.

AKS Cluster Not Deployed At Advertised Location

In Keras_Tensorflow/aks/04_DepoloyOnAKS. the cluster provisioning is defined with the call:

# Provision AKS cluster with GPU machine
prov_config = AksCompute.provisioning_configuration(vm_size="Standard_NC6")

But this does not use the location previously defined in the notebook:

aks_location = "YOUR_AKS_LOCATION" 

Replace image URLs with blob URLs

The image URLs are external and out of our control, and have led to failures when the images have disappeared. Pick of a subset of these images we can store in Azure blobs to replace them.

Creating own utility functions for pulling image

We are currently using from azureml._model_management._util import (get_docker_client, pull_docker_image)
These are private methods and we should not be using them. We need to create our own and replace these imports

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.