{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Deploy/Update endpoint\n", "\n", "In this section we will be deploying the latest approved model to an endpoint\n", "\n", "Note: Make sure you have already approved a model in the model registry\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import boto3\n", "import json\n", "import sagemaker\n", "\n", "sess = boto3.Session()\n", "role = sagemaker.get_execution_role()\n", "sagemaker_session = sagemaker.Session(boto_session=sess)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model_package_group_name = f\"HuggingFaceSentimentPackageGroupName\"\n", "endpoint_name = \"DEMO-endpoint-sentiment-analysis\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scripts.utils import get_approved_package\n", "\n", "sm_client = boto3.client(\"sagemaker\")\n", "\n", "pck = get_approved_package(\n", " model_package_group_name\n", ") \n", "model_description = sm_client.describe_model_package(ModelPackageName=pck[\"ModelPackageArn\"])\n", "\n", "model_description" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from scripts.utils import deploy_or_update_endpoint\n", "\n", "model_package_arn = model_description[\"ModelPackageArn\"]\n", "\n", "deploy_or_update_endpoint(endpoint_name, model_package_arn, role, sagemaker_session)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Test the model\n", "Run the below to test that your model was deployed successfully and can ge" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%time\n", "\n", "\n", "runtime = boto3.client(service_name=\"sagemaker-runtime\")\n", "\n", "sentiment_input = {\"inputs\": \"I love using SageMaker endpoints to serve my real-time models.\"}\n", "\n", "response = runtime.invoke_endpoint(\n", " EndpointName=endpoint_name,\n", " Body=json.dumps(sentiment_input),\n", " ContentType=\"application/json\",\n", ")\n", "\n", "print(response[\"Body\"].read())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%time \n", "for i in range(100):\n", " response = runtime.invoke_endpoint(\n", " EndpointName=endpoint_name,\n", " Body=json.dumps(sentiment_input),\n", " ContentType=\"application/json\",\n", " )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# # Delete the endpoint when no longer needed\n", "# sm_client.delete_endpoint(\n", "# EndpointName=endpoint_name\n", "# )" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "instance_type": "ml.t3.medium", "kernelspec": { "display_name": "Python 3 (Data Science)", "language": "python", "name": "python3__SAGEMAKER_INTERNAL__arn:aws:sagemaker:eu-west-1:470317259841:image/datascience-1.0" }, "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.7.10" } }, "nbformat": 4, "nbformat_minor": 4 }