{ "cells": [ { "cell_type": "markdown", "id": "89f8d9fa-0d8f-4645-a42b-6fe9447355e5", "metadata": {}, "source": [ "# Amazon SageMaker MLOps: from idea to production in six steps" ] }, { "cell_type": "markdown", "id": "1f0ef893-66d0-4b81-9dfb-d18a441b3e4d", "metadata": {}, "source": [ "This sequence of six notebooks takes you from developing your ML idea in a simple notebook to a production solution with automated model building and CI/CD deployment pipelines, and model monitoring.\n", "\n", "Follow these steps one by one:\n", "1. Experiment in a notebook\n", "2. Move to SageMaker SDK for data processing and training\n", "3. Add an ML pipeline, a model registry, a feature store\n", "4. Add a model building CI/CD pipeline\n", "5. Add a model deployment CI/CD pipeline\n", "6. Add data quality monitoring\n", "\n", "![](img/six-steps.png)\n", "\n", "There are also additional hands-on examples of other SageMaker features and ML topics, like [A/B testing](https://docs.aws.amazon.com/sagemaker/latest/dg/model-validation.html), custom [processing](https://docs.aws.amazon.com/sagemaker/latest/dg/build-your-own-processing-container.html), [training](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html) and [inference](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-inference-main.html) containers, [debugging and profiling](https://docs.aws.amazon.com/sagemaker/latest/dg/train-debugger.html), [security](https://docs.aws.amazon.com/sagemaker/latest/dg/security.html), [multi-model](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) and [multi-container](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html) endpoints, and [serial inference pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html). Explore the notebooks in the folder `additional-topics` to test out these features." ] }, { "cell_type": "markdown", "id": "dbf33079-51c6-4270-b03c-bb39bfe9bb0f", "metadata": {}, "source": [ "## Star GitHub repository" ] }, { "cell_type": "code", "execution_count": null, "id": "e8cb2f06-358d-48ca-9623-755c4af58371", "metadata": { "tags": [] }, "outputs": [], "source": [ "%%html\n", "\n", "Star\n", "" ] }, { "cell_type": "markdown", "id": "dc0fb74f-aa75-4ca4-857e-a9c12957c1ba", "metadata": {}, "source": [ "### Click this button ^^^ above ^^^" ] }, { "cell_type": "markdown", "id": "3412884f-0a96-402f-bb1d-2685d1d6ccf2", "metadata": { "tags": [] }, "source": [ "## Setup\n", "Get the latest version of SageMaker Python SDK.\n", "\n", "
💡 The workshop and all notebooks were tested on the SageMaker Python SDK (the package sagemaker) version 1.132.0. The notebooks don't pin the version of the sagemaker. If you encounter any incompatibility issues, you can install the specific version of the sagemaker by running the pip command: %pip install sagemaker=2.132.0\n", "
" ] }, { "cell_type": "code", "execution_count": null, "id": "55af554e-f9d8-499f-a7bf-3dfa3abfdd92", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Uncomment if you have any compatibility issues and would like to use the specific version of the sagemaker library\n", "# %pip install sagemaker==2.132.0" ] }, { "cell_type": "markdown", "id": "d78486e0", "metadata": {}, "source": [ "\"Time" ] }, { "cell_type": "code", "execution_count": null, "id": "8fb97d8e-0700-4ecf-92db-17470d1ec599", "metadata": { "tags": [] }, "outputs": [], "source": [ "%pip install --upgrade pip sagemaker" ] }, { "cell_type": "markdown", "id": "f3a6b8e5", "metadata": {}, "source": [ "\"Time" ] }, { "cell_type": "code", "execution_count": null, "id": "bcea57a4-c88e-4599-8e33-f1b1e1f2e195", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Restart kernel to get the packages\n", "import IPython\n", "IPython.Application.instance().kernel.do_shutdown(True)" ] }, { "cell_type": "markdown", "id": "39455b3b-649f-4872-b238-a8892354f937", "metadata": {}, "source": [ "### Import packages" ] }, { "cell_type": "code", "execution_count": null, "id": "776b8950-0872-47b9-ac8c-f34b3aff85a2", "metadata": { "tags": [] }, "outputs": [], "source": [ "import time\n", "import os\n", "import json\n", "import boto3\n", "import numpy as np \n", "import pandas as pd \n", "import sagemaker\n", "\n", "sagemaker.__version__" ] }, { "cell_type": "markdown", "id": "334b1157-f983-47d1-935a-d5e74ae92efa", "metadata": {}, "source": [ "### Set constants" ] }, { "cell_type": "code", "execution_count": null, "id": "d4aaa3b3-0a80-4011-b656-6df93b40fd51", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Get some variables you need to interact with SageMaker service\n", "boto_session = boto3.Session()\n", "region = boto_session.region_name\n", "bucket_name = sagemaker.Session().default_bucket()\n", "bucket_prefix = \"from-idea-to-prod/xgboost\" \n", "sm_session = sagemaker.Session()\n", "sm_client = boto_session.client(\"sagemaker\")\n", "sm_role = sagemaker.get_execution_role()\n", "\n", "initialized = True\n", "\n", "print(sm_role)" ] }, { "cell_type": "code", "execution_count": null, "id": "27040c5d-b6ff-4891-8335-61e0e78f9e8c", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Store some variables to keep the value between the notebooks\n", "%store bucket_name\n", "%store bucket_prefix\n", "%store sm_role\n", "%store region\n", "%store initialized" ] }, { "cell_type": "markdown", "id": "d75f66d2", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "b4f7b4ee-62b3-49ee-8045-dfceb1c3e5b6", "metadata": {}, "source": [ "### Get domain id\n", "You need this value `domain_id` in many SageMaker Python SDK and boto3 SageMaker API calls. The notebook metadata file contains `domain_id` value." ] }, { "cell_type": "code", "execution_count": null, "id": "57644797-75fc-4001-bbf9-f652a4973760", "metadata": { "tags": [] }, "outputs": [], "source": [ "NOTEBOOK_METADATA_FILE = \"/opt/ml/metadata/resource-metadata.json\"\n", "domain_id = None\n", "\n", "if os.path.exists(NOTEBOOK_METADATA_FILE):\n", " with open(NOTEBOOK_METADATA_FILE, \"rb\") as f:\n", " domain_id = json.loads(f.read()).get('DomainId')\n", " print(f\"SageMaker domain id: {domain_id}\")\n", "\n", "%store domain_id" ] }, { "cell_type": "markdown", "id": "b45f5eb7-266f-46c4-bccd-13ea7b9473da", "metadata": {}, "source": [ "## Data" ] }, { "cell_type": "markdown", "id": "4979015e-5732-4283-9d75-5f2c5f85c57e", "metadata": {}, "source": [ "This example uses the [direct marketing dataset](https://archive.ics.uci.edu/ml/datasets/bank+marketing) from UCI's ML Repository:\n", "> [Moro et al., 2014] S. Moro, P. Cortez and P. Rita. A Data-Driven Approach to Predict the Success of Bank Telemarketing. Decision Support Systems, Elsevier, 62:22-31, June 2014\n", "\n", "The data is related with direct marketing campaigns of a Portuguese banking institution. The marketing campaigns were based on phone calls. Often, more than one contact to the same client was required, in order to access if the product (bank term deposit) would be ('yes') or not ('no') subscribed." ] }, { "cell_type": "markdown", "id": "ef05f53d-1dae-4215-9e02-e20508ab2bbf", "metadata": {}, "source": [ "Download and unzip the dataset:" ] }, { "cell_type": "code", "execution_count": null, "id": "049cb7b4-c82f-41c1-9a8c-903a2edb6668", "metadata": { "tags": [] }, "outputs": [], "source": [ "!wget -P data/ -N https://archive.ics.uci.edu/static/public/222/bank+marketing.zip" ] }, { "cell_type": "code", "execution_count": null, "id": "8bd6ed98-7fe3-43ac-b635-0babde68a69e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import zipfile\n", "\n", "with zipfile.ZipFile(\"data/bank+marketing.zip\", \"r\") as z:\n", " print(\"Unzipping bank+marketing...\")\n", " z.extractall(\"data\")\n", "\n", "with zipfile.ZipFile(\"data/bank-additional.zip\", \"r\") as z:\n", " print(\"Unzipping bank-additional...\")\n", " z.extractall(\"data\")\n", "\n", "print(\"Done\")" ] }, { "cell_type": "markdown", "id": "d827fb0a-9463-4f72-8b0c-b5e49a6541fd", "metadata": {}, "source": [ "### See the data" ] }, { "cell_type": "code", "execution_count": null, "id": "679569fd-0ec9-4080-bb54-2b60ba2dad1d", "metadata": { "tags": [] }, "outputs": [], "source": [ "df_data = pd.read_csv(\"./data/bank-additional/bank-additional-full.csv\", sep=\";\")\n", "\n", "pd.set_option(\"display.max_columns\", 500) # View all of the columns\n", "df_data # show first 5 and last 5 rows of the dataframe" ] }, { "cell_type": "markdown", "id": "b4e9dcfd-52d9-4269-b525-2eddc74057d9", "metadata": {}, "source": [ "## Continue with the step 1\n", "Start with the step 1 [notebook](01-idea-development.ipynb)." ] }, { "cell_type": "markdown", "id": "333b8dc3-8cc6-473a-a947-dade4f520cdb", "metadata": { "tags": [] }, "source": [ "## Resources" ] }, { "cell_type": "markdown", "id": "cca15843-5185-4e78-bfd9-79209e31d81a", "metadata": {}, "source": [ "### Documentation\n", "- [Use Amazon SageMaker Built-in Algorithms](https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html)" ] }, { "cell_type": "markdown", "id": "1112e1ae-ea27-4772-a1f2-a20f9a1c0ec3", "metadata": {}, "source": [ "### Hands-on examples\n", "- [Get started with Amazon SageMaker](https://aws.amazon.com/sagemaker/getting-started/)\n" ] }, { "cell_type": "markdown", "id": "df2e0163-2d3b-4286-95d2-f8125f671b41", "metadata": {}, "source": [ "### Workshops\n", "- [Amazon SageMaker 101 Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/0c6b8a23-b837-4e0f-b2e2-4a3ffd7d645b/en-US)" ] }, { "cell_type": "markdown", "id": "933ca9a0-367e-489b-9405-a641384e3578", "metadata": {}, "source": [ "# Shutdown kernel\n", "Each notebook contains the following code to shutdown the notebook kernel and free up the resources. If you go back and forth between notebooks, you can keep the kernel running for the duration of the workshop. Keep an eye on the instance memory allocation. All notebooks of a specific image, in this case `Data Science`, are running on the same compute instance. The default compute instance is `ml.t3.medium` with 4GB memory. You can run out of memory on the instance if you keep multiple kernels running. You can also switch to a large instance if you run out of memory for this workshop." ] }, { "cell_type": "code", "execution_count": null, "id": "14d403db-f256-48f7-81dc-925276d5a283", "metadata": {}, "outputs": [], "source": [ "%%html\n", "\n", "

Shutting down your kernel for this notebook to release resources.

\n", "\n", " \n", "" ] }, { "cell_type": "code", "execution_count": null, "id": "15aa1965-c91a-4b7c-8976-f0e1202d5aff", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "availableInstances": [ { "_defaultOrder": 0, "_isFastLaunch": true, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 4, "name": "ml.t3.medium", "vcpuNum": 2 }, { "_defaultOrder": 1, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.t3.large", "vcpuNum": 2 }, { "_defaultOrder": 2, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.t3.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 3, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.t3.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 4, "_isFastLaunch": true, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.m5.large", "vcpuNum": 2 }, { "_defaultOrder": 5, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.m5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 6, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.m5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 7, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.m5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 8, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.m5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 9, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.m5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 10, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.m5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 11, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.m5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 12, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.m5d.large", "vcpuNum": 2 }, { "_defaultOrder": 13, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.m5d.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 14, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.m5d.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 15, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.m5d.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 16, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.m5d.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 17, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.m5d.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 18, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.m5d.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 19, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.m5d.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 20, "_isFastLaunch": false, "category": "General purpose", "gpuNum": 0, "hideHardwareSpecs": true, "memoryGiB": 0, "name": "ml.geospatial.interactive", "supportedImageNames": [ "sagemaker-geospatial-v1-0" ], "vcpuNum": 0 }, { "_defaultOrder": 21, "_isFastLaunch": true, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 4, "name": "ml.c5.large", "vcpuNum": 2 }, { "_defaultOrder": 22, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 8, "name": "ml.c5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 23, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.c5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 24, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.c5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 25, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 72, "name": "ml.c5.9xlarge", "vcpuNum": 36 }, { "_defaultOrder": 26, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 96, "name": "ml.c5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 27, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 144, "name": "ml.c5.18xlarge", "vcpuNum": 72 }, { "_defaultOrder": 28, "_isFastLaunch": false, "category": "Compute optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.c5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 29, "_isFastLaunch": true, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.g4dn.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 30, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.g4dn.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 31, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.g4dn.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 32, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.g4dn.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 33, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.g4dn.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 34, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.g4dn.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 35, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 61, "name": "ml.p3.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 36, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 244, "name": "ml.p3.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 37, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 488, "name": "ml.p3.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 38, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.p3dn.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 39, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.r5.large", "vcpuNum": 2 }, { "_defaultOrder": 40, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.r5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 41, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.r5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 42, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.r5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 43, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.r5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 44, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.r5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 45, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 512, "name": "ml.r5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 46, "_isFastLaunch": false, "category": "Memory Optimized", "gpuNum": 0, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.r5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 47, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 16, "name": "ml.g5.xlarge", "vcpuNum": 4 }, { "_defaultOrder": 48, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 32, "name": "ml.g5.2xlarge", "vcpuNum": 8 }, { "_defaultOrder": 49, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 64, "name": "ml.g5.4xlarge", "vcpuNum": 16 }, { "_defaultOrder": 50, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 128, "name": "ml.g5.8xlarge", "vcpuNum": 32 }, { "_defaultOrder": 51, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 1, "hideHardwareSpecs": false, "memoryGiB": 256, "name": "ml.g5.16xlarge", "vcpuNum": 64 }, { "_defaultOrder": 52, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 192, "name": "ml.g5.12xlarge", "vcpuNum": 48 }, { "_defaultOrder": 53, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 4, "hideHardwareSpecs": false, "memoryGiB": 384, "name": "ml.g5.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 54, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 768, "name": "ml.g5.48xlarge", "vcpuNum": 192 }, { "_defaultOrder": 55, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 1152, "name": "ml.p4d.24xlarge", "vcpuNum": 96 }, { "_defaultOrder": 56, "_isFastLaunch": false, "category": "Accelerated computing", "gpuNum": 8, "hideHardwareSpecs": false, "memoryGiB": 1152, "name": "ml.p4de.24xlarge", "vcpuNum": 96 } ], "instance_type": "ml.t3.medium", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }