{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# **Amazon Lookout for Equipment** - Demonstration on an anonymized compressor dataset\n", "*Part 5: Scheduling regular inference calls*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialization\n", "---\n", "In this notebook, we will update the repository structure to add an inference directory in the data folder:\n", "```\n", "/lookout-equipment-demo/getting_started/\n", "|\n", "├── data/\n", "| |\n", "| ├── inference-data/\n", "| | ├── input/\n", "| | └── output/\n", "| |\n", "| ├── labelled-data/\n", "| | └── labels.csv\n", "| |\n", "| └── training-data/\n", "| └── expander/\n", "| ├── subsystem-01\n", "| | └── subsystem-01.csv\n", "| |\n", "| ├── subsystem-02\n", "| | └── subsystem-02.csv\n", "| |\n", "| ├── ...\n", "| |\n", "| └── subsystem-24\n", "| └── subsystem-24.csv\n", "|\n", "├── dataset/ <<< Original dataset <<<\n", "| ├── labels.csv\n", "| ├── tags_description.csv\n", "| ├── timeranges.txt\n", "| └── timeseries.zip\n", "|\n", "├── notebooks/\n", "| ├── 1_data_preparation.ipynb\n", "| ├── 2_dataset_creation.ipynb\n", "| ├── 3_model_training.ipynb\n", "| ├── 4_model_evaluation.ipynb\n", "| ├── 5_inference_scheduling.ipynb <<< This notebook <<<\n", "| └── config.py\n", "|\n", "└── utils/\n", " ├── aws_matplotlib_light.py\n", " └── lookout_equipment_utils.py\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Notebook configuration update\n", "Amazon Lookout for Equipment being a very recent service, we need to make sure that we have access to the latest version of the AWS Python packages. If you see a `pip` dependency error, check that the `boto3` version is ok: if it's greater than 1.17.48 (the first version that includes the `lookoutequipment` API), you can discard this error and move forward with the next cell:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[33mWARNING: You are using pip version 21.1.3; however, version 21.2.4 is available.\n", "You should consider upgrading via the '/home/ec2-user/anaconda3/envs/python3/bin/python -m pip install --upgrade pip' command.\u001b[0m\n" ] } ], "source": [ "!pip install --quiet --upgrade tqdm sagemaker" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imports\n", "**Note:** Update the content of the **config.py** file **before** running the following cell" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import boto3\n", "import config\n", "import datetime\n", "import os\n", "import pandas as pd\n", "import pprint\n", "import pyarrow as pa\n", "import pyarrow.parquet as pq\n", "import sagemaker\n", "import s3fs\n", "import sys\n", "import time\n", "import uuid\n", "\n", "# Helper functions for managing Lookout for Equipment API calls:\n", "sys.path.append('../utils')\n", "import lookout_equipment_utils as lookout" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameters" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "DATA = os.path.join('..', 'data')\n", "RAW_DATA = os.path.join('..', 'dataset')\n", "INFER_DATA = os.path.join(DATA, 'inference-data')\n", "\n", "os.makedirs(os.path.join(INFER_DATA, 'input'), exist_ok=True)\n", "os.makedirs(os.path.join(INFER_DATA, 'output'), exist_ok=True)\n", "\n", "ROLE_ARN = sagemaker.get_execution_role()\n", "REGION_NAME = boto3.session.Session().region_name\n", "DATASET_NAME = config.DATASET_NAME\n", "BUCKET = config.BUCKET\n", "PREFIX_TRAINING = config.PREFIX_TRAINING\n", "PREFIX_LABEL = config.PREFIX_LABEL\n", "PREFIX_INFERENCE = config.PREFIX_INFERENCE\n", "MODEL_NAME = config.MODEL_NAME" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an inference scheduler\n", "---\n", "While navigating to the model details part of the console, you will see that you have no inference scheduled yet:\n", "\n", "![Schedule Starting point](../assets/schedule_start.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scheduler configuration\n", "Let's create a new inference schedule: some parameters are mandatory, while others offer some added flexibility.\n", "\n", "#### Parameters\n", "\n", "* Set `DATA_UPLOAD_FREQUENCY` at which the data will be uploaded for inference. Allowed values are `PT5M`, `PT10M`, `PT15M`, `PT30M` and `PT1H`.\n", " * This is both the frequency of the inference scheduler and how often data are uploaded to the source bucket.\n", " * **Note**: ***the upload frequency must be compatible with the sampling rate selected at training time.*** *For example, if a model was trained with a 30 minutes resampling, asking for 5 minutes won't work and you need to select either PT30M and PT1H for this parameter at inference time.*\n", "* Set `INFERENCE_DATA_SOURCE_BUCKET` to the S3 bucket of your inference data\n", "* Set `INFERENCE_DATA_SOURCE_PREFIX` to the S3 prefix of your inference data\n", "* Set `INFERENCE_DATA_OUTPUT_BUCKET` to the S3 bucket where you want inference results\n", "* Set `INFERENCE_DATA_OUTPUT_PREFIX` to the S3 prefix where you want inference results\n", "* Set `ROLE_ARN_FOR_INFERENCE` to the role to be used to **read** data to infer on and **write** inference output" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Name of the model on which you want to create this inference scheduler\n", "MODEL_NAME_FOR_CREATING_INFERENCE_SCHEDULER = MODEL_NAME\n", "\n", "# Name of the inference scheduler you want to create\n", "INFERENCE_SCHEDULER_NAME = config.INFERENCE_SCHEDULER_NAME\n", "\n", "# Mandatory parameters:\n", "INFERENCE_DATA_SOURCE_BUCKET = BUCKET\n", "INFERENCE_DATA_SOURCE_PREFIX = f'{PREFIX_INFERENCE}/input/'\n", "INFERENCE_DATA_OUTPUT_BUCKET = BUCKET\n", "INFERENCE_DATA_OUTPUT_PREFIX = f'{PREFIX_INFERENCE}/output/'\n", "ROLE_ARN_FOR_INFERENCE = ROLE_ARN\n", "DATA_UPLOAD_FREQUENCY = 'PT5M'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Optional parameters\n", "\n", "* Set `DATA_DELAY_OFFSET_IN_MINUTES` to the number of minutes you expect the data to be delayed to upload. It's a time buffer to upload data.\n", "* Set ``INPUT_TIMEZONE_OFFSET``. The allow values are : +00:00, +00:30, -01:00, ... +11:30, +12:00, -00:00, -00:30, -01:00, ... -11:30, -12:00\n", "* Set `TIMESTAMP_FORMAT`. The allowed values `EPOCH`, `yyyy-MM-dd-HH-mm-ss` or `yyyyMMddHHmmss`. This is the format of timestamp which is the suffix of the input data file name. This is used by Lookout Equipment to understand which files to run inference on (so that you don't need to remove previous files to let the scheduler finds which one to run on).\n", "* Set `COMPONENT_TIMESTAMP_DELIMITER`. The allowed values `-`, `_` or ` `. This is the delimiter character that is used to separate the component from the timestamp in the input filename." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "DATA_DELAY_OFFSET_IN_MINUTES = None\n", "INPUT_TIMEZONE_OFFSET = '+00:00'\n", "COMPONENT_TIMESTAMP_DELIMITER = '_'\n", "TIMESTAMP_FORMAT = 'yyyyMMddHHmmss'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create the inference scheduler\n", "The CreateInferenceScheduler API creates a scheduler **and** starts it: this means that this starts costing you right away. However, you can stop and start an existing scheduler at will (see at the end of this notebook):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "scheduler = lookout.LookoutEquipmentScheduler(\n", " scheduler_name=INFERENCE_SCHEDULER_NAME,\n", " model_name=MODEL_NAME_FOR_CREATING_INFERENCE_SCHEDULER,\n", " region_name=REGION_NAME\n", ")\n", "\n", "scheduler_params = {\n", " 'input_bucket': INFERENCE_DATA_SOURCE_BUCKET,\n", " 'input_prefix': INFERENCE_DATA_SOURCE_PREFIX,\n", " 'output_bucket': INFERENCE_DATA_OUTPUT_BUCKET,\n", " 'output_prefix': INFERENCE_DATA_OUTPUT_PREFIX,\n", " 'role_arn': ROLE_ARN_FOR_INFERENCE,\n", " 'upload_frequency': DATA_UPLOAD_FREQUENCY,\n", " 'delay_offset': DATA_DELAY_OFFSET_IN_MINUTES,\n", " 'timezone_offset': INPUT_TIMEZONE_OFFSET,\n", " 'component_delimiter': COMPONENT_TIMESTAMP_DELIMITER,\n", " 'timestamp_format': TIMESTAMP_FORMAT\n", "}\n", "\n", "scheduler.set_parameters(**scheduler_params)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare the inference data\n", "---\n", "Let's prepare and send some data in the S3 input location our scheduler will monitor:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
signal-001signal-002signal-003signal-004signal-005signal-006signal-007signal-008signal-009signal-010...signal-113signal-114signal-115signal-116signal-117signal-118signal-119signal-120signal-121signal-122
Timestamp
2015-01-01 00:00:000.3923710.5450050.2967740.4132890.1707440.4829800.2220630.2686910.7498600.475116...0.9390240.8307690.8113210.6534650.7894740.8103450.8035710.7878790.7647060.810345
2015-01-01 00:01:000.3894150.5691550.2906450.4156460.1423680.5322970.2220630.2908040.7767810.486884...0.9390240.8307690.8113210.6534650.7894740.8103450.8035710.7878790.7794120.810345
2015-01-01 00:02:000.3781790.5477500.2906450.4064560.1609590.4701150.2356730.2771150.7823890.472665...0.9390240.8307690.8113210.6534650.7894740.8103450.8035710.7878790.7647060.810345
2015-01-01 00:03:000.3811350.5477500.2845160.4017440.1707440.4987940.2492840.2704460.7717330.484432...0.9390240.8307690.8113210.6534650.7894740.8103450.8035710.7878790.7647060.810345
2015-01-01 00:04:000.3811350.5532380.2845160.4064560.1423680.4934330.1948420.2720250.7498600.484432...0.9390240.8307690.8113210.6534650.7894740.8103450.8035710.7878790.7647060.810345
\n", "

5 rows × 122 columns

\n", "
" ], "text/plain": [ " signal-001 signal-002 signal-003 signal-004 \\\n", "Timestamp \n", "2015-01-01 00:00:00 0.392371 0.545005 0.296774 0.413289 \n", "2015-01-01 00:01:00 0.389415 0.569155 0.290645 0.415646 \n", "2015-01-01 00:02:00 0.378179 0.547750 0.290645 0.406456 \n", "2015-01-01 00:03:00 0.381135 0.547750 0.284516 0.401744 \n", "2015-01-01 00:04:00 0.381135 0.553238 0.284516 0.406456 \n", "\n", " signal-005 signal-006 signal-007 signal-008 \\\n", "Timestamp \n", "2015-01-01 00:00:00 0.170744 0.482980 0.222063 0.268691 \n", "2015-01-01 00:01:00 0.142368 0.532297 0.222063 0.290804 \n", "2015-01-01 00:02:00 0.160959 0.470115 0.235673 0.277115 \n", "2015-01-01 00:03:00 0.170744 0.498794 0.249284 0.270446 \n", "2015-01-01 00:04:00 0.142368 0.493433 0.194842 0.272025 \n", "\n", " signal-009 signal-010 ... signal-113 signal-114 \\\n", "Timestamp ... \n", "2015-01-01 00:00:00 0.749860 0.475116 ... 0.939024 0.830769 \n", "2015-01-01 00:01:00 0.776781 0.486884 ... 0.939024 0.830769 \n", "2015-01-01 00:02:00 0.782389 0.472665 ... 0.939024 0.830769 \n", "2015-01-01 00:03:00 0.771733 0.484432 ... 0.939024 0.830769 \n", "2015-01-01 00:04:00 0.749860 0.484432 ... 0.939024 0.830769 \n", "\n", " signal-115 signal-116 signal-117 signal-118 \\\n", "Timestamp \n", "2015-01-01 00:00:00 0.811321 0.653465 0.789474 0.810345 \n", "2015-01-01 00:01:00 0.811321 0.653465 0.789474 0.810345 \n", "2015-01-01 00:02:00 0.811321 0.653465 0.789474 0.810345 \n", "2015-01-01 00:03:00 0.811321 0.653465 0.789474 0.810345 \n", "2015-01-01 00:04:00 0.811321 0.653465 0.789474 0.810345 \n", "\n", " signal-119 signal-120 signal-121 signal-122 \n", "Timestamp \n", "2015-01-01 00:00:00 0.803571 0.787879 0.764706 0.810345 \n", "2015-01-01 00:01:00 0.803571 0.787879 0.779412 0.810345 \n", "2015-01-01 00:02:00 0.803571 0.787879 0.764706 0.810345 \n", "2015-01-01 00:03:00 0.803571 0.787879 0.764706 0.810345 \n", "2015-01-01 00:04:00 0.803571 0.787879 0.764706 0.810345 \n", "\n", "[5 rows x 122 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let's load all our original signals:\n", "all_tags_fname = os.path.join(DATA, 'training-data', 'expander.parquet')\n", "table = pq.read_table(all_tags_fname)\n", "all_tags_df = table.to_pandas()\n", "del table\n", "all_tags_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load the tags description: this dataset comes with a tag description file including:\n", "\n", "* `Tag`: the tag name as it is recorded by the customer in his historian system (for instance the [Honeywell process history database](https://www.honeywellprocess.com/en-US/explore/products/advanced-applications/uniformance/Pages/uniformance-phd.aspx))\n", "* `UOM`: the unit of measure for the recorded signal\n", "* `Subsystem`: an ID linked to the part of the asset this sensor is attached to\n", "\n", "From there, we can collect the list of components (subsystem column):" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TagUOMSubsystem
0signal-001micra ppsubsystem-05
1signal-002micra ppsubsystem-05
2signal-003micra ppsubsystem-05
3signal-004micra ppsubsystem-05
4signal-005micra ppsubsystem-08
\n", "
" ], "text/plain": [ " Tag UOM Subsystem\n", "0 signal-001 micra pp subsystem-05\n", "1 signal-002 micra pp subsystem-05\n", "2 signal-003 micra pp subsystem-05\n", "3 signal-004 micra pp subsystem-05\n", "4 signal-005 micra pp subsystem-08" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tags_description_fname = os.path.join(RAW_DATA, 'tags_description.csv')\n", "tags_description_df = pd.read_csv(tags_description_fname)\n", "components = tags_description_df['Subsystem'].unique()\n", "tags_description_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To build our sample inference dataset, we will extract a sample from the original evaluation period of the time series where we know something odd is happening (around **November 21st, 2015 at 4am**):" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "start = pd.to_datetime('2015-11-21 04:00:00')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Extracting data from 2015-11-21 04:00:00 to 2015-11-21 04:04:00\n", "Extracting data from 2015-11-21 04:05:00 to 2015-11-21 04:09:00\n", "Extracting data from 2015-11-21 04:10:00 to 2015-11-21 04:14:00\n", "Extracting data from 2015-11-21 04:15:00 to 2015-11-21 04:19:00\n", "Extracting data from 2015-11-21 04:20:00 to 2015-11-21 04:24:00\n", "Extracting data from 2015-11-21 04:25:00 to 2015-11-21 04:29:00\n", "Extracting data from 2015-11-21 04:30:00 to 2015-11-21 04:34:00\n", "Extracting data from 2015-11-21 04:35:00 to 2015-11-21 04:39:00\n", "Extracting data from 2015-11-21 04:40:00 to 2015-11-21 04:44:00\n", "Extracting data from 2015-11-21 04:45:00 to 2015-11-21 04:49:00\n", "Extracting data from 2015-11-21 04:50:00 to 2015-11-21 04:54:00\n", "Extracting data from 2015-11-21 04:55:00 to 2015-11-21 04:59:00\n" ] } ], "source": [ "# How many sequences do we want to extract:\n", "num_sequences = 12\n", "\n", "# The scheduling frequency in minutes: this **MUST** match the\n", "# resampling rate used to train the model:\n", "frequency = 5\n", "\n", "# Loops through each sequence:\n", "for i in range(num_sequences):\n", " end = start + datetime.timedelta(minutes=+frequency - 1)\n", " \n", " # Rounding time to the previous 5 minutes:\n", " tm = datetime.datetime.now()\n", " tm = tm - datetime.timedelta(\n", " minutes=tm.minute % frequency,\n", " seconds=tm.second,\n", " microseconds=tm.microsecond\n", " )\n", " tm = tm + datetime.timedelta(minutes=+frequency * (i))\n", " current_timestamp = (tm).strftime(format='%Y%m%d%H%M%S')\n", "\n", " # For each sequence, we need to loop through all components:\n", " print(f'Extracting data from {start} to {end}')\n", " new_index = None\n", " for component in components:\n", " # Extracting the dataframe for this component and this particular time range:\n", " signals = list(tags_description_df.loc[(tags_description_df['Subsystem'] == component), 'Tag'])\n", " signals_df = all_tags_df.loc[start:end, signals]\n", " \n", " # We need to reset the index to match the time \n", " # at which the scheduler will run inference:\n", " if new_index is None:\n", " new_index = pd.date_range(\n", " start=tm,\n", " periods=signals_df.shape[0], \n", " freq='1min'\n", " )\n", " signals_df.index = new_index\n", " signals_df.index.name = 'Timestamp'\n", " signals_df = signals_df.reset_index()\n", "\n", " # Export this file in CSV format:\n", " component_fname = os.path.join(INFER_DATA, 'input', f'{component}_{current_timestamp}.csv')\n", " signals_df.to_csv(component_fname, index=None)\n", " \n", " start = start + datetime.timedelta(minutes=+frequency)\n", " \n", "# Upload the whole folder to S3, in the input location:\n", "INFERENCE_INPUT = os.path.join(INFER_DATA, 'input')\n", "!aws s3 cp --recursive --quiet $INFERENCE_INPUT s3://$BUCKET/$PREFIX_INFERENCE/input" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "===== Polling Inference Scheduler Status =====\n", "\n", "Scheduler Status: PENDING\n", "Scheduler Status: RUNNING\n", "\n", "===== End of Polling Inference Scheduler Status =====\n" ] } ], "source": [ "# Now that we've prepared the data, create the scheduler by running:\n", "create_scheduler_response = scheduler.create()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our scheduler is now running and its inference history is currently empty:\n", "\n", "![Scheduler created](../assets/schedule_created.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Get inference results\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### List inference executions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Let's now wait for 5-15 minutes to give some time to the scheduler to run its first inferences.** Once the wait is over, we can use the ListInferenceExecution API for our current inference scheduler. The only mandatory parameter is the scheduler name.\n", "\n", "You can also choose a time period for which you want to query inference executions for. If you don't specify it, then all executions for an inference scheduler will be listed. If you want to specify the time range, you can do this:\n", "\n", "```python\n", "START_TIME_FOR_INFERENCE_EXECUTIONS = datetime.datetime(2010,1,3,0,0,0)\n", "END_TIME_FOR_INFERENCE_EXECUTIONS = datetime.datetime(2010,1,5,0,0,0)\n", "```\n", "\n", "Which means the executions after `2010-01-03 00:00:00` and before `2010-01-05 00:00:00` will be listed.\n", "\n", "You can also choose to query for executions in particular status, the allowed status are `IN_PROGRESS`, `SUCCESS` and `FAILED`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "WAITING FOR THE FIRST INFERENCE EXECUTION\n", "WAITING FOR THE FIRST INFERENCE EXECUTION\n", "WAITING FOR THE FIRST INFERENCE EXECUTION\n", "WAITING FOR THE FIRST INFERENCE EXECUTION\n", "FIRST INFERENCE EXECUTED\n", "\n" ] }, { "data": { "text/plain": [ "[{'ModelName': 'demonstration-model',\n", " 'ModelArn': 'arn:aws:lookoutequipment:eu-west-1:123031033346:model/demonstration-model/1ccaa6ce-f8a8-45cb-826b-eac8bb0a9067',\n", " 'InferenceSchedulerName': 'demonstration-scheduler',\n", " 'InferenceSchedulerArn': 'arn:aws:lookoutequipment:eu-west-1:123031033346:inference-scheduler/demonstration-scheduler/da9a7e8e-50e7-479a-a440-e67f9f6e93b4',\n", " 'ScheduledStartTime': datetime.datetime(2021, 8, 31, 12, 35, tzinfo=tzlocal()),\n", " 'DataStartTime': datetime.datetime(2021, 8, 31, 12, 30, tzinfo=tzlocal()),\n", " 'DataEndTime': datetime.datetime(2021, 8, 31, 12, 35, tzinfo=tzlocal()),\n", " 'DataInputConfiguration': {'S3InputConfiguration': {'Bucket': 'sagemaker-lookout-equipment-demo',\n", " 'Prefix': 'demo/inference-data/input/'}},\n", " 'DataOutputConfiguration': {'S3OutputConfiguration': {'Bucket': 'sagemaker-lookout-equipment-demo',\n", " 'Prefix': 'demo/inference-data/output/'}},\n", " 'Status': 'IN_PROGRESS'}]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "START_TIME_FOR_INFERENCE_EXECUTIONS = None\n", "END_TIME_FOR_INFERENCE_EXECUTIONS = None\n", "EXECUTION_STATUS = None\n", "\n", "execution_summaries = []\n", "\n", "while len(execution_summaries) == 0:\n", " execution_summaries = scheduler.list_inference_executions(\n", " start_time=START_TIME_FOR_INFERENCE_EXECUTIONS,\n", " end_time=END_TIME_FOR_INFERENCE_EXECUTIONS,\n", " execution_status=EXECUTION_STATUS\n", " )\n", " if len(execution_summaries) == 0:\n", " print('WAITING FOR THE FIRST INFERENCE EXECUTION')\n", " time.sleep(60)\n", " \n", " else:\n", " print('FIRST INFERENCE EXECUTED\\n')\n", " break\n", " \n", "execution_summaries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have configured this scheduler to run every five minutes. After a few minutes we can also see the history in the console populated with its first executions: if you leave the scheduler to run beyond 15 minutes, any execution after the 3rd one will fail as we only generated 3 sequences above.\n", "\n", "![Inference history](../assets/schedule_inference_history.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When the scheduler starts (for example `datetime.datetime(2021, 1, 27, 9, 15)`, it looks for **a single** CSV file located in the input location with a filename that contains a timestamp set to the previous step. For example, a file named:\n", "\n", "* subsystem-01_2021012709**10**00.csv will be found and ingested\n", "* subsystem-01_2021012708**15**00.csv will **not be** ingested (it will be ingested at the next inference execution)\n", "\n", "In addition, when opening the file `subsystem-01_20210127091000.csv`, it will look for any row with a date that is between the DataStartTime and the DataEndTime of the inference execution. **If it doesn't find such a row, an internal exception will be thrown.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Download inference results\n", "Let's have a look at the content now available in the scheduler output location: each inference execution creates a subfolder in the output directory. The subfolder name is the timestamp (GMT) at which the inference was executed and it contains a single [JSON lines](https://jsonlines.org/) file named `results.jsonl`:\n", "\n", "![Inference input](../assets/schedule_inference_output_data.png)\n", "\n", "Each execution summary is a JSON document that has the following format:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'ModelName': 'demonstration-model',\n", " 'ModelArn': 'arn:aws:lookoutequipment:eu-west-1:123031033346:model/demonstration-model/1ccaa6ce-f8a8-45cb-826b-eac8bb0a9067',\n", " 'InferenceSchedulerName': 'demonstration-scheduler',\n", " 'InferenceSchedulerArn': 'arn:aws:lookoutequipment:eu-west-1:123031033346:inference-scheduler/demonstration-scheduler/da9a7e8e-50e7-479a-a440-e67f9f6e93b4',\n", " 'ScheduledStartTime': datetime.datetime(2021, 8, 31, 12, 50, tzinfo=tzlocal()),\n", " 'DataStartTime': datetime.datetime(2021, 8, 31, 12, 45, tzinfo=tzlocal()),\n", " 'DataEndTime': datetime.datetime(2021, 8, 31, 12, 50, tzinfo=tzlocal()),\n", " 'DataInputConfiguration': {'S3InputConfiguration': {'Bucket': 'sagemaker-lookout-equipment-demo',\n", " 'Prefix': 'demo/inference-data/input/'}},\n", " 'DataOutputConfiguration': {'S3OutputConfiguration': {'Bucket': 'sagemaker-lookout-equipment-demo',\n", " 'Prefix': 'demo/inference-data/output/'}},\n", " 'CustomerResultObject': {'Bucket': 'sagemaker-lookout-equipment-demo',\n", " 'Key': 'demo/inference-data/output/2021-08-31T12:45:00Z/results.jsonl'},\n", " 'Status': 'SUCCESS'}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fetch the list of execution summaries in case all executions were not captured yet:\n", "execution_summaries = scheduler.list_inference_executions()\n", "execution_summaries[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When the `Status` key from the previous JSON result is set to `SUCCESS`, you can collect the results location in the `CustomerResultObject` field. We are now going to loop through each execution result and download each JSON lines files generated by the scheduler. Then we will insert their results into an overall dataframe for further analysis:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "...." ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predictionprediction_reasondiagnostics
timestamp
2021-08-31 12:35:001ANOMALY_DETECTED[{'name': 'subsystem-19\\signal-067', 'value': ...
2021-08-31 12:40:001ANOMALY_DETECTED[{'name': 'subsystem-19\\signal-067', 'value': ...
2021-08-31 12:45:001ANOMALY_DETECTED[{'name': 'subsystem-19\\signal-067', 'value': ...
2021-08-31 12:50:001ANOMALY_DETECTED[{'name': 'subsystem-19\\signal-067', 'value': ...
\n", "
" ], "text/plain": [ " prediction prediction_reason \\\n", "timestamp \n", "2021-08-31 12:35:00 1 ANOMALY_DETECTED \n", "2021-08-31 12:40:00 1 ANOMALY_DETECTED \n", "2021-08-31 12:45:00 1 ANOMALY_DETECTED \n", "2021-08-31 12:50:00 1 ANOMALY_DETECTED \n", "\n", " diagnostics \n", "timestamp \n", "2021-08-31 12:35:00 [{'name': 'subsystem-19\\signal-067', 'value': ... \n", "2021-08-31 12:40:00 [{'name': 'subsystem-19\\signal-067', 'value': ... \n", "2021-08-31 12:45:00 [{'name': 'subsystem-19\\signal-067', 'value': ... \n", "2021-08-31 12:50:00 [{'name': 'subsystem-19\\signal-067', 'value': ... " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Loops through the executions summaries:\n", "results_json = []\n", "for execution_summary in scheduler.execution_summaries:\n", " print('.', end='')\n", " \n", " # We only get an output if the inference execution is a sucess:\n", " status = execution_summary['Status']\n", " if status == 'SUCCESS':\n", " # Download the JSON-line file locally:\n", " bucket = execution_summary['CustomerResultObject']['Bucket']\n", " key = execution_summary['CustomerResultObject']['Key']\n", " current_timestamp = key.split('/')[-2]\n", " local_fname = os.path.join(INFER_DATA, 'output', f'centrifugal-pump_{current_timestamp}.jsonl')\n", " s3_fname = f's3://{bucket}/{key}'\n", " \n", " !aws s3 cp --quiet $s3_fname $local_fname\n", " \n", " # Opens the file and concatenate the results into a dataframe:\n", " with open(local_fname, 'r') as f:\n", " content = [eval(line) for line in f.readlines()]\n", " results_json = results_json + content\n", " \n", "# Build the final dataframes with all the results:\n", "results_df = pd.DataFrame(results_json)\n", "results_df['timestamp'] = pd.to_datetime(results_df['timestamp'])\n", "results_df = results_df.set_index('timestamp')\n", "results_df = results_df.sort_index()\n", "results_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The content of each JSON lines file follows this format:\n", " \n", "```json\n", "[\n", " {\n", " 'timestamp': '2021-04-17T13:25:00.000000',\n", " 'prediction': 1,\n", " 'prediction_reason': 'ANOMALY_DETECTED',\n", " 'diagnostics': [\n", " {'name': 'subsystem-19\\\\signal-067', 'value': 0.12},\n", " {'name': 'subsystem-18\\\\signal-099', 'value': 0.0},\n", " {'name': 'subsystem-09\\\\signal-016', 'value': 0.0},\n", " .\n", " .\n", " .\n", " {'name': 'subsystem-06\\\\signal-119', 'value': 0.08},\n", " {'name': 'subsystem-10\\\\signal-071', 'value': 0.02},\n", " {'name': 'subsystem-20\\\\signal-076', 'value': 0.02}\n", " ]\n", " }\n", " ...\n", "]\n", "```\n", "Each timestamp found in the file is associated to a prediction: 1 when an anomaly is detected an 0 otherwise. When the `prediction` field is 1 (an anomaly is detected), the `diagnostics` field contains each sensor (with the format `component`\\\\`tag`) and an associated percentage. This percentage corresponds to the magnitude of impact of a given sensor to the detected anomaly. For instance, in the example above, the tag `signal-067` located on the `subsystem-19` component has an estimated 12% magnitude of impact to the anomaly detected at 8pm on April 7th 2021. This dataset has 122 sensors: if each sensor contributed the same way to this event, the impact of each of them would be `100 / 122 = 0.82%`, so 12% is indeed statistically significant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualizing the inference results" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as mtick\n", "import numpy as np\n", "\n", "%matplotlib inline\n", "\n", "# Load style sheet:\n", "plt.style.use('../utils/aws_matplotlib_light.py')\n", "\n", "# Get colors from custom AWS palette:\n", "prop_cycle = plt.rcParams['axes.prop_cycle']\n", "colors = prop_cycle.by_key()['color']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Single inference analysis\n", "Let's first expand the results to expose the content of the **diagnostics** column above into different dataframe columns:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predictionsubsystem-19\\signal-067subsystem-18\\signal-099subsystem-09\\signal-016subsystem-09\\signal-031subsystem-09\\signal-032subsystem-09\\signal-033subsystem-09\\signal-044subsystem-09\\signal-045subsystem-09\\signal-103...subsystem-06\\signal-010subsystem-06\\signal-011subsystem-06\\signal-012subsystem-06\\signal-050subsystem-06\\signal-063subsystem-06\\signal-117subsystem-06\\signal-118subsystem-06\\signal-119subsystem-10\\signal-071subsystem-20\\signal-076
timestamp
2021-08-31 12:35:0010.020.00.00.00.00.000.020.000.02...0.000.020.000.040.060.00.00.00.00.0
2021-08-31 12:40:0010.000.00.00.00.00.000.020.000.00...0.020.000.000.020.020.00.00.00.00.0
2021-08-31 12:45:0010.000.00.00.00.00.000.020.000.02...0.000.020.000.020.060.00.00.00.00.0
2021-08-31 12:50:0010.000.00.00.00.00.020.000.020.02...0.000.060.020.000.080.00.00.00.00.0
\n", "

4 rows × 123 columns

\n", "
" ], "text/plain": [ " prediction subsystem-19\\signal-067 \\\n", "timestamp \n", "2021-08-31 12:35:00 1 0.02 \n", "2021-08-31 12:40:00 1 0.00 \n", "2021-08-31 12:45:00 1 0.00 \n", "2021-08-31 12:50:00 1 0.00 \n", "\n", " subsystem-18\\signal-099 subsystem-09\\signal-016 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.0 0.0 \n", "2021-08-31 12:40:00 0.0 0.0 \n", "2021-08-31 12:45:00 0.0 0.0 \n", "2021-08-31 12:50:00 0.0 0.0 \n", "\n", " subsystem-09\\signal-031 subsystem-09\\signal-032 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.0 0.0 \n", "2021-08-31 12:40:00 0.0 0.0 \n", "2021-08-31 12:45:00 0.0 0.0 \n", "2021-08-31 12:50:00 0.0 0.0 \n", "\n", " subsystem-09\\signal-033 subsystem-09\\signal-044 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.00 0.02 \n", "2021-08-31 12:40:00 0.00 0.02 \n", "2021-08-31 12:45:00 0.00 0.02 \n", "2021-08-31 12:50:00 0.02 0.00 \n", "\n", " subsystem-09\\signal-045 subsystem-09\\signal-103 ... \\\n", "timestamp ... \n", "2021-08-31 12:35:00 0.00 0.02 ... \n", "2021-08-31 12:40:00 0.00 0.00 ... \n", "2021-08-31 12:45:00 0.00 0.02 ... \n", "2021-08-31 12:50:00 0.02 0.02 ... \n", "\n", " subsystem-06\\signal-010 subsystem-06\\signal-011 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.00 0.02 \n", "2021-08-31 12:40:00 0.02 0.00 \n", "2021-08-31 12:45:00 0.00 0.02 \n", "2021-08-31 12:50:00 0.00 0.06 \n", "\n", " subsystem-06\\signal-012 subsystem-06\\signal-050 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.00 0.04 \n", "2021-08-31 12:40:00 0.00 0.02 \n", "2021-08-31 12:45:00 0.00 0.02 \n", "2021-08-31 12:50:00 0.02 0.00 \n", "\n", " subsystem-06\\signal-063 subsystem-06\\signal-117 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.06 0.0 \n", "2021-08-31 12:40:00 0.02 0.0 \n", "2021-08-31 12:45:00 0.06 0.0 \n", "2021-08-31 12:50:00 0.08 0.0 \n", "\n", " subsystem-06\\signal-118 subsystem-06\\signal-119 \\\n", "timestamp \n", "2021-08-31 12:35:00 0.0 0.0 \n", "2021-08-31 12:40:00 0.0 0.0 \n", "2021-08-31 12:45:00 0.0 0.0 \n", "2021-08-31 12:50:00 0.0 0.0 \n", "\n", " subsystem-10\\signal-071 subsystem-20\\signal-076 \n", "timestamp \n", "2021-08-31 12:35:00 0.0 0.0 \n", "2021-08-31 12:40:00 0.0 0.0 \n", "2021-08-31 12:45:00 0.0 0.0 \n", "2021-08-31 12:50:00 0.0 0.0 \n", "\n", "[4 rows x 123 columns]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expanded_results = []\n", "for index, row in results_df.iterrows():\n", " new_row = dict()\n", " new_row.update({'timestamp': index})\n", " new_row.update({'prediction': row['prediction']})\n", " \n", " if row['prediction'] == 1:\n", " diagnostics = pd.DataFrame(row['diagnostics'])\n", " diagnostics = dict(zip(diagnostics['name'], diagnostics['value']))\n", " new_row = {**new_row, **diagnostics}\n", " \n", " expanded_results.append(new_row)\n", " \n", "expanded_results = pd.DataFrame(expanded_results)\n", "expanded_results['timestamp'] = pd.to_datetime(expanded_results['timestamp'])\n", "expanded_results = expanded_results.set_index('timestamp')\n", "expanded_results.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each detected event have some detailed diagnostics. Let's unpack the details for the first event and plot a similar bar chart than what the console provides when it evaluates a trained model:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "event_details = pd.DataFrame(expanded_results.iloc[0, 1:]).reset_index()\n", "event_details.columns = ['name', 'value']\n", "event_details = event_details.sort_values(by='value')\n", "event_details_limited = event_details.tail(10)\n", "\n", "# We can then plot a horizontal bar chart:\n", "y_pos = np.arange(event_details_limited.shape[0])\n", "values = list(event_details_limited['value'])\n", "\n", "fig = plt.figure(figsize=(12,5))\n", "ax = plt.subplot(1,1,1)\n", "ax.barh(y_pos, event_details_limited['value'], align='center')\n", "ax.set_yticks(y_pos)\n", "ax.set_yticklabels(event_details_limited['name'])\n", "ax.xaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", "\n", "# Add the values in each bar:\n", "for i, v in enumerate(values):\n", " if v == 0:\n", " ax.text(0.0005, i, f'{v*100:.2f}%', color='#000000', verticalalignment='center')\n", " else:\n", " ax.text(0.0005, i, f'{v*100:.2f}%', color='#FFFFFF', fontweight='bold', verticalalignment='center')\n", " \n", "plt.title(f'Event detected at {expanded_results.index[0]}', fontsize=12, fontweight='bold')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we did in the previous notebook, the above bar chart is already of great help to pinpoint what might be going wrong with your asset. Let's load the initial tags description file we prepared in the first notebook and match the sensors with our initial components to group sensors by component:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Agregate event diagnostics at the component level:\n", "event_details[['asset', 'sensor']] = event_details['name'].str.split('\\\\', expand=True)\n", "component_diagnostics = event_details.groupby(by='asset').sum().sort_values(by='value')\n", "component_diagnostics = component_diagnostics[component_diagnostics['value'] > 0.0]\n", "\n", "# Prepare Y position and values for bar chart:\n", "y_pos = np.arange(component_diagnostics.shape[0])\n", "values = list(component_diagnostics['value'])\n", "\n", "# Plot the bar chart:\n", "fig = plt.figure(figsize=(12,6))\n", "ax = plt.subplot(1,1,1)\n", "ax.barh(y_pos, component_diagnostics['value'], align='center')\n", "ax.set_yticks(y_pos)\n", "ax.set_yticklabels(list(component_diagnostics.index))\n", "ax.xaxis.set_major_formatter(mtick.PercentFormatter(1.0))\n", "\n", "# Add the values in each bar:\n", "for i, v in enumerate(values):\n", " ax.text(0.005, i, f'{v*100:.2f}%', color='#FFFFFF', fontweight='bold', verticalalignment='center')\n", " \n", "# Show the final plot:\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inference scheduler operations\n", "---\n", "### Stop inference scheduler\n", "**Be frugal**, running the scheduler is the main cost driver of Amazon Lookout for Equipment. Use the following API to stop an already running inference scheduler. This will stop the periodic inference executions:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "===== Polling Inference Scheduler Status =====\n", "\n", "Scheduler Status: STOPPING\n", "Scheduler Status: STOPPED\n", "\n", "===== End of Polling Inference Scheduler Status =====\n" ] } ], "source": [ "scheduler.stop()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Start an inference scheduler\n", "You can restart any `STOPPED` inference scheduler using this API:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "===== Polling Inference Scheduler Status =====\n", "\n", "Scheduler Status: PENDING\n", "Scheduler Status: RUNNING\n", "\n", "===== End of Polling Inference Scheduler Status =====\n" ] } ], "source": [ "scheduler.start()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Delete an inference scheduler\n", "You can delete a **stopped** scheduler you have no more use of: you can only have one scheduler per model." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "===== Polling Inference Scheduler Status =====\n", "\n", "Scheduler Status: STOPPING\n", "Scheduler Status: STOPPED\n", "\n", "===== End of Polling Inference Scheduler Status =====\n" ] } ], "source": [ "scheduler.stop()\n", "scheduler.delete()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "---\n", "In this notebook, we used the model created in part 3 of this notebook, configured a scheduler and extracted the predictions obtained after it executed a few inferences." ] } ], "metadata": { "kernelspec": { "display_name": "conda_python3", "language": "python", "name": "conda_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.6.13" } }, "nbformat": 4, "nbformat_minor": 4 }