{ "cells": [ { "cell_type": "markdown", "id": "9590386b-3011-41b7-ad13-9e9b0f333831", "metadata": {}, "source": [ "# Track an experiment while training a Keras model locally\n" ] }, { "cell_type": "markdown", "id": "7682a2fd", "metadata": {}, "source": [ "---\n", "\n", "This notebook's CI test result for us-west-2 is as follows. CI test results in other regions can be found at the end of the notebook. \n", "\n", "![This us-west-2 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/us-west-2/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "---" ] }, { "cell_type": "markdown", "id": "dadf442b", "metadata": {}, "source": [ "\n", "This notebook shows how you can use the SageMaker SDK to track a Machine Learning experiment. \n", "\n", "We introduce two concepts in this notebook - \n", "\n", "* *Experiment:* An experiment is a collection of runs. When you initialize a run in your training loop, you include the name of the experiment that the run belongs to. Experiment names must be unique within your AWS account. \n", "* *Run:* A run consists of all the inputs, parameters, configurations, and results for one iteration of model training. Initialize an experiment run for tracking a training job with Run(). \n", "\n", "In this notebook we train a Keras model using the MNIST dataset. We use a Keras callback to log metrics to an Experiment." ] }, { "cell_type": "markdown", "id": "784fd35a-0867-46fb-8d2c-ed5027312cc5", "metadata": {}, "source": [ "**Note**: It is recommended to use the `TensorFlow 2.6 CPU Optimized` image to run this notebook. " ] }, { "cell_type": "code", "execution_count": null, "id": "4441577d-2e3d-4821-aa0e-816416d90165", "metadata": { "tags": [] }, "outputs": [], "source": [ "import sys" ] }, { "cell_type": "code", "execution_count": null, "id": "dd9b4a04-cfc1-4c51-98c3-eb264319ab23", "metadata": { "tags": [] }, "outputs": [], "source": [ "# update boto3 and sagemaker to ensure latest SDK version\n", "!{sys.executable} -m pip install --upgrade pip\n", "!{sys.executable} -m pip install --upgrade boto3\n", "!{sys.executable} -m pip install --upgrade sagemaker\n", "!{sys.executable} -m pip install --upgrade tensorflow\n", "!{sys.executable} -m pip install protobuf==3.20.3" ] }, { "cell_type": "code", "execution_count": null, "id": "a614bd72-736e-4e11-8010-f3cc0c7218fd", "metadata": { "tags": [] }, "outputs": [], "source": [ "import json\n", "import boto3\n", "import sagemaker\n", "from sagemaker.session import Session\n", "from sagemaker import get_execution_role\n", "from sagemaker.experiments.run import Run" ] }, { "cell_type": "code", "execution_count": null, "id": "f34edbc1-4af1-4d95-a6d8-b65794106d25", "metadata": { "tags": [] }, "outputs": [], "source": [ "sagemaker_session = Session()\n", "boto_sess = boto3.Session()\n", "\n", "role = get_execution_role()\n", "default_bucket = sagemaker_session.default_bucket()\n", "\n", "sm = boto_sess.client(\"sagemaker\")\n", "region = boto_sess.region_name" ] }, { "cell_type": "markdown", "id": "22790f8b-efd7-44c5-abd9-95777b3503cd", "metadata": {}, "source": [ "### Prepare the data used for training the model\n", "\n", "Here we use the mnist dataset available with Keras" ] }, { "cell_type": "code", "execution_count": null, "id": "c64bcfb1-d173-450e-be19-bda3fa14f097", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": null, "id": "fbb84df1-aac7-4b21-aac2-f6cf3982f10f", "metadata": { "tags": [] }, "outputs": [], "source": [ "!mkdir -p datasets" ] }, { "cell_type": "code", "execution_count": null, "id": "422a4048-fa31-4b0a-82ef-11b87421f5c3", "metadata": { "tags": [] }, "outputs": [], "source": [ "# Model / data parameters\n", "num_classes = 10\n", "input_shape = (28, 28, 1)\n", "\n", "# Here we download the data from S3\n", "\n", "s3 = boto3.client(\"s3\")\n", "\n", "train_path = \"datasets/input_train.npy\"\n", "test_path = \"datasets/input_test.npy\"\n", "train_labels_path = \"datasets/input_train_labels.npy\"\n", "test_labels_path = \"datasets/input_test_labels.npy\"\n", "\n", "# Load the data and split it between train and test sets\n", "s3.download_file(\n", " f\"sagemaker-example-files-prod-{region}\",\n", " \"datasets/image/MNIST/numpy/input_train.npy\",\n", " train_path,\n", ")\n", "s3.download_file(\n", " f\"sagemaker-example-files-prod-{region}\", \"datasets/image/MNIST/numpy/input_test.npy\", test_path\n", ")\n", "s3.download_file(\n", " f\"sagemaker-example-files-prod-{region}\",\n", " \"datasets/image/MNIST/numpy/input_train_labels.npy\",\n", " train_labels_path,\n", ")\n", "s3.download_file(\n", " f\"sagemaker-example-files-prod-{region}\",\n", " \"datasets/image/MNIST/numpy/input_test_labels.npy\",\n", " test_labels_path,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "b84e5137-b118-4e2d-af36-a21ae2273239", "metadata": { "tags": [] }, "outputs": [], "source": [ "x_train = np.load(train_path)\n", "x_test = np.load(test_path)\n", "y_train = np.load(train_labels_path)\n", "y_test = np.load(test_labels_path)\n", "\n", "# Reshape the arrays\n", "\n", "x_train = np.reshape(x_train, (60000, 28, 28))\n", "x_test = np.reshape(x_test, (10000, 28, 28))\n", "y_train = np.reshape(y_train, (60000,))\n", "y_test = np.reshape(y_test, (10000,))\n", "\n", "# Scale images to the [0, 1] range\n", "x_train = x_train.astype(\"float32\") / 255\n", "x_test = x_test.astype(\"float32\") / 255\n", "\n", "# Make sure images have shape (28, 28, 1)\n", "x_train = np.expand_dims(x_train, -1)\n", "x_test = np.expand_dims(x_test, -1)\n", "\n", "print(\"x_train shape:\", x_train.shape)\n", "print(x_train.shape[0], \"train samples\")\n", "print(x_test.shape[0], \"test samples\")\n", "\n", "# convert class vectors to binary class matrices\n", "y_train = keras.utils.to_categorical(y_train, num_classes)\n", "y_test = keras.utils.to_categorical(y_test, num_classes)" ] }, { "cell_type": "markdown", "id": "656cf0df-ee2a-45e8-b098-449016359db9", "metadata": {}, "source": [ "### Construct the model" ] }, { "cell_type": "code", "execution_count": null, "id": "ae4354d1-fa42-464e-b6ba-6bde912cad4b", "metadata": { "tags": [] }, "outputs": [], "source": [ "def get_model(dropout=0.5):\n", " \"\"\" \"\"\"\n", " model = keras.Sequential(\n", " [\n", " keras.Input(shape=input_shape),\n", " layers.Conv2D(32, kernel_size=(3, 3), activation=\"relu\"),\n", " layers.MaxPooling2D(pool_size=(2, 2)),\n", " layers.Conv2D(64, kernel_size=(3, 3), activation=\"relu\"),\n", " layers.MaxPooling2D(pool_size=(2, 2)),\n", " layers.Flatten(),\n", " layers.Dropout(dropout),\n", " layers.Dense(num_classes, activation=\"softmax\"),\n", " ]\n", " )\n", " model.compile(loss=\"categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"])\n", "\n", " return model" ] }, { "cell_type": "markdown", "id": "892b2b53-139f-45f7-84b4-9f4aa3f9efd8", "metadata": { "tags": [] }, "source": [ "### Define the Keras callback to log metrics to the run\n", "\n", "The Keras Callback class provides a method `on_epoch_end` which emits metrics at the end of each epoch. All emitted metrics will be logged in the run passed to the callback," ] }, { "cell_type": "code", "execution_count": null, "id": "30da9d5b-2e3d-472f-b4e4-87f92e03241d", "metadata": { "tags": [] }, "outputs": [], "source": [ "class ExperimentCallback(keras.callbacks.Callback):\n", " \"\"\" \"\"\"\n", "\n", " def __init__(self, run, model, x_test, y_test):\n", " \"\"\"Save params in constructor\"\"\"\n", " self.run = run\n", " self.model = model\n", " self.x_test = x_test\n", " self.y_test = y_test\n", "\n", " def on_epoch_end(self, epoch, logs=None):\n", " \"\"\" \"\"\"\n", " keys = list(logs.keys())\n", " for key in keys:\n", " self.run.log_metric(name=key, value=logs[key], step=epoch)\n", " print(\"{} -> {}\".format(key, logs[key]))" ] }, { "cell_type": "markdown", "id": "5cfcecc5-e00a-4af0-b6e3-7984e6d543ec", "metadata": { "tags": [] }, "source": [ "### Train the model in the notebook and track it in an Experiment\n", "\n", "Here we train the keras model locally on the instance that this notebook is running on.\n", "\n", "As part of the run, we track each of the input artifacts. These artifacts are written to files before the artifact is logged." ] }, { "cell_type": "code", "execution_count": null, "id": "3471abdc-6fba-4d79-92bf-ff8b5fd98804", "metadata": { "tags": [] }, "outputs": [], "source": [ "from sagemaker.experiments.run import Run\n", "\n", "batch_size = 256\n", "epochs = 5\n", "dropout = 0.5\n", "\n", "model = get_model(dropout)\n", "\n", "experiment_name = \"local-keras-experiment\"\n", "with Run(experiment_name=experiment_name, sagemaker_session=sagemaker_session) as run:\n", " run.log_parameter(\"batch_size\", batch_size)\n", " run.log_parameter(\"epochs\", epochs)\n", " run.log_parameter(\"dropout\", dropout)\n", "\n", " run.log_file(\"datasets/input_train.npy\", is_output=False)\n", " run.log_file(\"datasets/input_test.npy\", is_output=False)\n", " run.log_file(\"datasets/input_train_labels.npy\", is_output=False)\n", " run.log_file(\"datasets/input_test_labels.npy\", is_output=False)\n", "\n", " # Train locally\n", " model.fit(\n", " x_train,\n", " y_train,\n", " batch_size=batch_size,\n", " epochs=epochs,\n", " validation_split=0.1,\n", " callbacks=[ExperimentCallback(run, model, x_test, y_test)],\n", " )\n", "\n", " score = model.evaluate(x_test, y_test, verbose=0)\n", " print(\"Test loss:\", score[0])\n", " print(\"Test accuracy:\", score[1])\n", "\n", " run.log_metric(name=\"Final Test Loss\", value=score[0])\n", " run.log_metric(name=\"Final Test Accuracy\", value=score[1])" ] }, { "cell_type": "markdown", "id": "05ddd61e", "metadata": {}, "source": [ "## Notebook CI Test Results\n", "\n", "This notebook was tested in multiple regions. The test results are as follows, except for us-west-2 which is shown at the top of the notebook.\n", "\n", "![This us-east-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/us-east-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This us-east-2 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/us-east-2/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This us-west-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/us-west-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ca-central-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ca-central-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This sa-east-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/sa-east-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This eu-west-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/eu-west-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This eu-west-2 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/eu-west-2/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This eu-west-3 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/eu-west-3/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This eu-central-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/eu-central-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This eu-north-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/eu-north-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ap-southeast-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ap-southeast-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ap-southeast-2 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ap-southeast-2/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ap-northeast-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ap-northeast-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ap-northeast-2 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ap-northeast-2/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n", "\n", "![This ap-south-1 badge failed to load. Check your device's internet connectivity, otherwise the service is currently unavailable](https://h75twx4l60.execute-api.us-west-2.amazonaws.com/sagemaker-nb/ap-south-1/sagemaker-experiments|local_experiment_tracking|keras_experiment.ipynb)\n" ] } ], "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 } ], "kernelspec": { "display_name": "Python 3 (TensorFlow 2.10.0 Python 3.9 CPU Optimized)", "language": "python", "name": "python3__SAGEMAKER_INTERNAL__arn:aws:sagemaker:us-west-2:236514542706:image/tensorflow-2.10.1-gpu-py39-cu112-ubuntu20.04-sagemaker-v1.2" }, "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.16" } }, "nbformat": 4, "nbformat_minor": 5 }