{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## This notebook deploys Sagemaker Endpoint / Transformer" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 1: Import Libraries\n", "In this case we only need boto3 and Sagemaker libraries to prepare and deploy the models." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.16.2.dev0\n" ] } ], "source": [ "from sagemaker.pytorch import PyTorchModel\n", "from sagemaker import get_execution_role\n", "import tarfile\n", "import boto3\n", "print(sagemaker.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 2: Prepare and upload trained LSTM model.\n", "Tar up this model with inferencing script and pip requirements for sagemaker container. Upload trained model and inference script to s3 asset bucket to prepare for the deployment." ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [], "source": [ "account_id = boto3.client('sts').get_caller_identity().get('Account')\n", "s3_bucket = 'reinvent2020-anomaly-prediction-{}-us-west-2-dev'.format(account_id)\n", "model_pth_file_path = './model.pth'\n", "model_packaged_name = 'model.tar.gz'\n", "tar = tarfile.open(model_packaged_name, \"w:gz\")\n", "tar.add(model_pth_file_path)\n", "tar.add('code/requirements.txt')\n", "tar.close()\n", "\n", "s3_client = boto3.client('s3')\n", "try:\n", " response = s3_client.upload_file(model_packaged_name, s3_bucket, 'trained_models/{}'.format(model_packaged_name))\n", "except ClientError as e:\n", " logging.error(e)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 3: Deploy model with Sagemaker container\n", "IN this step. we are going to run deployment script to deploy the model we have prepared in the previous step and launch a Sagemaker container to host this model and serve live inferencing on Sagemaker endpoint." ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-------------------!" ] } ], "source": [ "role = get_execution_role() \n", "pytorch_model = PyTorchModel(model_data='s3://{}/trained_models/{}'.format(s3_bucket, model_packaged_name), role=role, entry_point='code/inference.py', framework_version='1.6.0', py_version='py3')\n", "predictor = pytorch_model.deploy(instance_type='ml.t2.medium', initial_instance_count=1)\n" ] } ], "metadata": { "kernelspec": { "display_name": "conda_pytorch_latest_p36", "language": "python", "name": "conda_pytorch_latest_p36" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }