{ "cells": [ { "cell_type": "markdown", "id": "9adbbd88", "metadata": {}, "source": [ "# Fine tuning BERT for information retrieval using Amazon Sagemaker " ] }, { "cell_type": "markdown", "id": "b60614e2", "metadata": {}, "source": [ "## Runtime\n", "This notebook takes approximately 30 minutes to run.\n", "\n" ] }, { "cell_type": "markdown", "id": "9933f5b8", "metadata": {}, "source": [ "## Contents\n", " Background\n", "1. Development environment and permissions\n", " - Installation\n", " - Permissions\n", "2. Training\n", " - Downloading data \n", " - Preparing the data\n", " - Bi-Encoder Transformer Neural Network\n", "3. Inference\n", " - Offline scoring\n", " - Realtime endpoint\n", "4. OpenSearch\n", " - OpenSearch Client\n", " - Index and mapping\n", " - Ingestion of documents\n", "5. Simulated Semantic Search Application\n", " - Search Widget\n", " - Pipeline\n", " \n", "### Terminology: sentence, document, passage : All of these terms mean the same, the response for a query " ] }, { "attachments": { "huggingfact-SBERT.jpeg": { "image/jpeg": "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HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwABAQEBAQECAQECAwICAgMFAwMDAwUGBQUFBQUGBwYGBgYGBgcHBwcHBwcHCAgICAgICgoKCgoLCwsLCwsLCwsL/9sAQwECAgIDAwMFAwMFDAgGCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/90ABAAw/9oADAMBAAIRAxEAPwD+/iiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Q/v4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK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6P8AhzV/wTb/AOibf+VPVP8A5Lr9P6KP9YMx/wCgiX3sP9Ucm/6A4f8AgK/yPzA/4c1f8E2/+ibf+VPVP/kuj/hzV/wTb/6Jt/5U9U/+S6/T+ij/AFgzH/oIl97D/VHJv+gOH/gK/wAj8wP+HNX/AATb/wCibf8AlT1T/wCS6P8AhzV/wTb/AOibf+VPVP8A5Lr9P6KP9YMx/wCgiX3sP9Ucm/6A4f8AgK/yPzA/4c1f8E2/+ibf+VPVP/kuj/hzV/wTb/6Jt/5U9U/+S6/T+ij/AFgzH/oIl97D/VHJv+gOH/gK/wAj8wP+HNX/AATb/wCibf8AlT1T/wCS6/SywsbXTrCHT7JfLigQRIuScBRgDJ54rTorlxWYYnE29vUcrd3c9HAZPg8DzfVKMYX7JL8gooorhO8KKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//Q/v4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/0f7+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9L+/iiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/T/v4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/1P7+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=" } }, "cell_type": "markdown", "id": "263d8baf", "metadata": {}, "source": [ "## Background \n", "\n", "The Transformer deep learning architecture has proven very successful, and has spawned several state of the art model families. One among them is Bidirectional Encoder Representations from Transformers (BERT): 340 million parameters [1]\n", "\n", "With transformers, the “pretrain then fine-tune” recipe has emerged as the standard approach of applying BERT to specific downstream tasks such as classification, sequence labeling, information retrieval and ranking. Typically, we start with a “base” pretrained transformer model such as the BERTBase and BERTLarge checkpoints directly downloadable from **SBERT** or the Hugging Face Transformers library. This model is then fine-tuned on task-specific labeled data drawn from the same distribution as the target task.\n", "\n", "![huggingfact-SBERT.jpeg](attachment:huggingfact-SBERT.jpeg)\n", "\n", "Information retrieval (search) systems use lexical search algoritms such as BM-25, TF-IDF to find answers matching to a query. When we are able to use pre-trained language models like BERT for search systems, we can achieve higher search relevance as the pre-trained models will help in finding **semantic matches** rather then just **term match** for a query. At the same time, one should consider fine-tuning the original BERT model before using it for specific downstream task like information retrieval which helps in curriculum learning. \n", "\n", "The SBERT framework which is based on PyTorch and Transformers, offers a large collection of pre-trained models tuned for various tasks. We will be focussing on fine tuning the BERT model on data retrieval (search) usecase.\n", "\n", "In this notebook, we are attempting to fine-tune the BERT model for information retrieval usecase based on the original research paper Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks [2].\n", "\n", "**References**\n", "\n", "- [1] “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding“, Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova.\n", "- [2] Reimers, N., & Gurevych, I. (2019). Sentence-bert: Sentence embeddings using siamese bert-networks. arXiv preprint arXiv:1908.10084." ] }, { "cell_type": "markdown", "id": "c09b2282", "metadata": {}, "source": [ "## 1. Development environment and permissions\n", "\n", "Lets start with setting up the development environment and permissions, First we make sure that the kernel is set to \"conda_amazonei_pytorch_latest_p36\". Once the kernel is ready, we start with installing and importing all the required libraries." ] }, { "cell_type": "markdown", "id": "9af7c7cb", "metadata": {}, "source": [ "### Install and import dependencies" ] }, { "cell_type": "code", "execution_count": null, "id": "5b257eb2", "metadata": {}, "outputs": [], "source": [ "import subprocess\n", "import sys\n", "\n", "def install(package):\n", " subprocess.check_call([sys.executable, \"-q\", \"-m\", \"pip\", \"install\", package])\n", " \n", "install('sentence_transformers')\n", "install('opensearch-py')\n", "install('requests_aws4auth')\n", "\n", "import json\n", "import requests\n", "import boto3\n", "from torch.utils.data import DataLoader\n", "from sentence_transformers import SentenceTransformer, LoggingHandler, util, models, evaluation, losses, InputExample\n", "import logging\n", "from datetime import datetime\n", "import gzip\n", "import os\n", "import tarfile\n", "from collections import defaultdict\n", "from torch.utils.data import IterableDataset\n", "import tqdm\n", "from torch.utils.data import Dataset\n", "import random\n", "import pickle\n", "import argparse\n", "import sagemaker\n", "from sagemaker.pytorch import PyTorch\n", "from sagemaker import get_execution_role" ] }, { "cell_type": "markdown", "id": "9434966e", "metadata": {}, "source": [ "### Setup the Sagemaker session, region and IAM role \n", "\n", "This notebook is already configured with an execution role which gives sagemaker, the permissions on behalf of us to access other services like S3, Sagemaker model training, sagemaker endpoints etc.\n", "\n", "We have created a S3 bucket for this notebook to store all the model artifacts. In the following code, we save the execution role arn and s3 bucket name as variables to be used later. " ] }, { "cell_type": "code", "execution_count": null, "id": "f4785d94", "metadata": {}, "outputs": [], "source": [ "role = get_execution_role()\n", "account = role.split('::')[1].split(':')[0]\n", "bucket = \"sagemaker-nlp-\"+account\n", "boto3_session = boto3.session.Session()\n", "my_region = boto3_session.region_name\n", "output_path = \"s3://\"+bucket+\"/nlp-dualencoder\"\n", "output_path" ] }, { "cell_type": "markdown", "id": "c52a530a", "metadata": {}, "source": [ "## 2. Training\n", "For model training, we are using Sagemaker Pytorch framework and provide a custom training script (nlp_loader_test.py). This script does the following steps, " ] }, { "cell_type": "markdown", "id": "5f110b64", "metadata": {}, "source": [ "### Downloading the data\n", "\n", "We are using MS MARCO dataset (https://microsoft.github.io/msmarco/Datasets). This is a large dataset to train models for information retrieval. It consists of about 500k real search queries from Bing search engine with the relevant text passages in descending order of relevance that answers the query.\n", "\n", "The dataset has 2 attributes,\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Attribute TypeDescription
Query TextThe question asked in the search engine
Passage(s) Array of textsThe responses that the user voted as relevant to the query they asked, these responses are ordered in such a way that the highly relevant response comes first and the responses with poor/no relevance comes last
\n", " \n", "The script, as the first step, downloads the dataset directly from the microsoft repository and stores in the training container.\n", "\n", "note: we can replace this using s3 where we can get the data downloaded to s3 and source s3 everytime.\n", "\n", "### Preparing the data\n", "\n", "We take the original data in the above format and convert into triplets: ***(query, positive_response, negative_response)*** where positive_response is the highly relevant response to the query and negative_response is a non/less-relevant response to the query. We use more than one negative_response in order of relevancy to make the model learn to distinguish well between the postive and the negative responses for a search query.\n", "\n", "A sample instance of the prapared dataset will look as follows," ] }, { "cell_type": "markdown", "id": "a3a2643a", "metadata": {}, "source": [ "\n", "{\n", " 'query': 'what are the liberal arts?',\n", "\n", " 'positive': 'liberal arts, the academic course of instruction at a college intended to provide general knowledge and comprising the arts, humanities, natural sciences, and social sciences, as opposed to professional or technical subjects.',\n", "\n", " 'negative': \n", " [\n", "\n", " 1. 'A liberal arts college is a four-year institution that focuses on the study of liberal arts...'\n", "\n", " 2. 'Liberal arts, college or university curriculum aimed at imparting general knowledge...',\n", "\n", " 3. 'The liberal arts education at the secondary school level prepares the student for higher education at a university....',\n", "\n", " 4. 'A liberal arts major offers a broad overview of the arts, sciences, and humanities...'\n", "\n", " ]\n", "}\n" ] }, { "cell_type": "markdown", "id": "60552437", "metadata": {}, "source": [ "### Bi-Encoder Transformer Neural Network\n", "\n", "For Information retrieval tasks (Searching), a Bi-encoder Transformer network can be used to fine tune the BERT embeddings, One encoder will represent the Query and the other will represent the actual positive/negative response. The fine tuning will be done to optimise the following objective: We want to have the ***(query, positive_response)*** pair to be close in the vector space, while ***(query, negative_response)*** should be distant in vector space. \n", "\n", "We can then use these fine-tuned embeddings to encode the responses and queries into vectors and retrieve most relevant documents for a query by computing the distance between the vectors. This way we can overcome the limitations of traditional lexical search." ] }, { "attachments": { "9E3E4C40-6F04-424F-ADEA-90FFBB1FAEC9_4_5005_c.jpeg": { "image/jpeg": "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" }, "F3457938-14F6-469C-A2FE-0698099F052E.jpeg": { "image/jpeg": "/9j/4AAQSkZJRgABAQAASABIAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAB36ADAAQAAAABAAABoAAAAAD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/+ICJElDQ19QUk9GSUxFAAEBAAACFGFwcGwEAAAAbW50clJHQiBYWVogB+YACQANAAoAHQAqYWNzcEFQUEwAAAAAQVBQTAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBs1UTdSZri2c/mnOhot32XdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKZGVzYwAAAPwAAABmY3BydAAAAWQAAAAjd3RwdAAAAYgAAAAUclhZWgAAAZwAAAAUZ1hZWgAAAbAAAAAUYlhZWgAAAcQAAAAUclRSQwAAAdgAAAAQY2hhZAAAAegAAAAsYlRSQwAAAdgAAAAQZ1RSQwAAAdgAAAAQZGVzYwAAAAAAAAAMREVMTCBVMzQxN1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSBJbmMuLCAyMDIyAABYWVogAAAAAAAA888AAQAAAAEYYlhZWiAAAAAAAABtWQAANn8AAAC+WFlaIAAAAAAAAGNpAAC4KwAAFJ1YWVogAAAAAAAAJhQAABFWAAC90nBhcmEAAAAAAAAAAAAB9gRzZjMyAAAAAAABDBoAAAXA///y/wAAB2AAAP3O///7mP///ZYAAAP0AAC/Tv/AABEIAaAB3wMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAEBAQEBAQIBAQIDAgICAwQDAwMDBAUEBAQEBAUGBQUFBQUFBgYGBgYGBgYHBwcHBwcICAgICAkJCQkJCQkJCQn/2wBDAQEBAQICAgQCAgQJBgUGCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQn/3QAEAB7/2gAMAwEAAhEDEQA/AP7+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9D+/iiiigAooooAKKK/Nr/grb+314d/4Jq/sFeOv2pNReJ9ZsbX+z/DlpLgi71u9Bjso9p+8iPmeYDnyYpCOlAH3F8Pfi18M/ix/bn/AArXXLPW/wDhGtWudB1X7JKJDZ6nZ7ftFpNj7k0W9SyHkBgehFeh1/mN/wDBpr/wVN8RfB79vTxD+yx8d9dlu9E+P1093Dd30pbZ4tUtJHKzO4UPqSNJBIQrPNcC1XoK/wBOSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/R/v4ooooAKKKKACvh79t//gnB+xr/AMFHfDGheC/2zPCUvjHSfDd1Le6faDVdU02KO4mQRtK66bd2olcICqGXfsDME272z9w0UAf5kX/BpB/wTh/Y3/bv8UfGjxr+1J4Un8Q6v8M7rwhfeGLy21bVdJm065uX1aSSaJ9Lu7Us++zgZWfcUMYKbctn/Tdr+AP/AIMYv+bov+5J/wDc/X9/lABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/S/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//0/7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP59/2n/25/2nvht/wcM/s1/sJ+D/ABElt8LfiH4O1vVNe0Y2VpIbm8tLPWZ4JRdvCbqIo9lD8scyoQCGU5Nf0EV/FT/wWb8NftO+Mv8Ag5K/ZW8JfsceItO8I/ETU/AOr2um63qtt9sttOhli11L67FsflmmhsjO9vG/yPOIw/yk1F/wUj+Ef/BSb/ghf4J8M/8ABSD4U/tR+PfjXoWl69Y2Hjnwp46ujeabdWl65UyWcBdorJGkAh2xKJEMqMsuEKsAf2t0VzHgnxdo/wAQPBmkePPDrM2n63ZW9/bFxtYw3Mayxlhk4O1hkZNdPQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//9T+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD+ML/gsf8T/AIrfs+f8HFP7OH7TXwq+H2q/E6T4d/DXVNX1PQdE2tqMukyyarp9/NaRsR589tDeGZIV5kKBcqCWHkv/AAVc/wCCnvgv/gvB8HPDf/BLr/gl34b8S+KfEfjbxDps/izUdR0iexsvDlhYy+dIL6SYDy5I51RpGBMYWJ0V3kdFP9y9FAH5eftUfst+GNQ8D/D/AMHePP2gfEXwd+G/g7TP7LltdA1iHwzdavdQwxR2slxrW5bmOOCGGVvs9u0fmM292KptPzT/AMEIPi18a/iZ8K/i7ofi/wAc6t8Vvhx4S+IOpaN8OfHOuubi/wBc0KBI8u17tUahDDOXjjvRu847wCFRVX3j/go78SPhVpOv+H/h1+1L+y1rfx9+G11A1/Bqmj+GrbxoumaujPCY5tGaOS6hJt5Mx3kKPne6EKAzV8zf8EQfgf8AF/4YeMvj/wCPLbwLr/wi+BHjLX9Luvhj4B8Slob7SYbe0kj1e5GnvJI2nQahdFJYrQlTEFKhFUAsAfv1RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/9X+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKK/m+1//AILH/wDBUy9vtS1X4Uf8E8vHGr+G7CeZFu9X8Q2ui380UTsBJHpkthLMxdV3Kqs2cgAnIJAP6QaK/Ob/AIJhf8FK/g5/wVJ/Zzk+PXwp02/8PXek6nNoevaDqoVb3TNTtkjklgk2nDptkVkkwu4Egqrq6L+jNABRRRQAUUUUAFFFFABRRRQAUVDc3NvZ28l3dyLFFEpd3chVVVGSSTwABySa+UNQ/bA8Da9fXfh34AaZf/E7VrR2gkGgop02GYKG2XGrTtHYRkZ+dFmklX/nmTgHkxWPo0be1la+y6v0W7+R9FkHCeY5o5fUaTlGPxS2hBd5zbUILzk0vM+ta/m9+L3/AAXg+In7PPxi8TfBX4o/CK3udR8N6hNYvLbaw9ssqxt+7mVJLKU7Jk2yJz91hX69y/DD9qH4vxv/AMLa8YReBNKlBH9k+DCWvGRlwRPrN3F5gOT/AMultbsuOJT1H5zftDf8ETvhj8Yf2qfCPj3QJX0vwNHYOPE1ubmae+vLq2kBhP2m4eWZ5LtZCs0rsSqw5B3uMfB8ZVc8rUYTyZODTSd+XVPS9mnZLd3s0r6H9f8A0YMB4T5bmeJw3ii44mnKlKUfZuranOmnLl9pTnTUpTV4xUOeEpcv7xbP4p1v9uP9tr/gpBqk978JPEMvwO+GelOsDPozC51vUbzZmVPtrrGIootwP7uNeSATIwPl4M/iz/goP+xVYzfGb4MfFrXfitpmixPcap4V8dTf2ib20TDzfZrwbZop0VWMYHB6Yb7j+a/sw6ton7HvjHxP/wAE/vjddQ+H/FHg/WL6bSnvXEcesaVfTvdWt3bzybRMzK5DKTvGMHlXCezftQftSfDT4F/D++W5vodS8SajE1po+h2pW4vL68nGyGJLddzlS7LuJXGDjkkKf8xfEDx28WMu8RHk2HlKXLUUYUlTXJVhfSWkbtTWrkn7t3Zrl09PHcI+H+a5bWzbLcLHDUJpyS9pOcqWmkXKUm3Jdb6Seys0j+lX9nv44+Cf2lvgj4X+Pfw5d30XxXp8OoWwlG2SMSD5opB2eJwyPjI3KcEjBr2OvhD/AIJj/s7eLP2Uf2DPhp8BfHvy65oumNJqEe8yeTc308t7LDvPXyXnMfHyjbhSVwa+76/2BP4LCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//W/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKAOQ+IXjTS/hv4B1z4ia2rvZaDp9zqNwsYy5itYmmcKDjLFVOPev5Vf2EvjR/wWx/4LQfBq8/bW+F/7Qnhr9mj4falqt9Z6DoOkeELHxVe/Z7CUws1/Pq0qBJCwOSjANt3CONWC1/WpPBDcwvbXKLJHIpV1YAqykYIIPBBHUV/PNH/AMG0P7Cuha5r9j8MfHPxV8DfD7xXdNdaz8O/Dni2ew8KX5c/Ok9mkJneNhhNv2kbUAVdoAoA+EP+DUbXLzRfD/7YF/408Ww+K1sPiheXN54hijigttQdUnNxqUcNuzwxJc7PO2xEoFICkqBX7C/sc/8ABXbQP20P219Z/Zd8EfDjW9B8Lw+CI/HWgeK9cY2T69psmpf2ZHcWulSQieK0mlSVoJ55EklRA3kKjox9m/4J6/8ABK/9lz/gmRa/ETR/2YhqkOkfEfXW12603UZ4Z7XT2IZEs7ARwROlrEjbEWZ5pNoG6Rq+YdO/5WSdY/7Nq03/ANTC+oA/cCiiigAooooAKK+V/FX7XvwusNZm8H/DKC/+IniCB/Kl07wtCL4QSbghW7vC8djaFScstxcRsByFPAPOnwp+158YSH8a67Z/C3RZFIaw8PFNT1hwf+empXcP2a3OOCsFpIwOSs/THkzzim3yUE5v+7t83pFel7+R+hYfw3xsKar5rOOFpvVOq2pNdHGlFSqyT6SUOS+8ke9/E740/Cf4M6fDqXxS8QWWiJckrbR3MoE1w4xlLeEZlnfkfJEjNz0rwlvjL+0P8VnNt8CfA50DTJN4XxB4zElmuAQA8Gjx4vpd3JAuWsuOcnOK9T+GP7N/wb+Eepy+JfCWjiXXblWW41rUJZb/AFWZWOWWS/u2luWQnnZ5mwdlFe5UvYYqr/FlyLtHV/8AgTX5RTXc0WcZBl/+4Yd4if8APW92PqqMJPVf36s4y60+h8c2v7HuieM7v+2f2mvEOofE25LmQWGobbbQYieAItHgxbuEH3Tdm5kB+bzN3NfXGm6Zpui6dBpGj28VpaWyLFDBCgjjjRRhVRFAVVA4AAwBV6iuvCZfRoXdOOr3e7fq3q/mz5/iDjHM80UYY2q3CPwwSUYR/wAFOKUIX6qMUFFFFdh8yfOv7RP7JP7Nf7Wfh+28MftG+DNN8WWtk5e2N5GfOgZhhjDPGVlj3D7wRwDgZ6DHkH7Of/BM79hH9k3xMvjX4BfDXTND1qNHSPUHae9uolf7winvJZ5I89CUYHGR0JFfdNFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/M5/wVb/aE+PHwy/4LW/sKfCv4deM9b0Lwv4v1DW4td0ewv7i3sNURfsyot7axusNyEDNs81G2Ekrg81/THX8ZX/BxT8NfiJ8Y/wDgrp+wz8K/hT4wuvAGva/c67ZW3iKxjWS704SyWayz26sQPOWLf5TZBVyGBBGR51/wVw/4Iq/DP/gl7+yLqP8AwU7/AOCf3jvxr4d+MvwtvNO1PU9d1LXJ7+fX4Li7hs7g3wm+R5MzCRlAWGSMSRPE4ddoB/b1RXz3+yP8apv2k/2Uvhj+0Vc2ws5PH3hPRfEbW6nIibVbGG7MYPoplx+FfQlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//1/7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooApanp1pq+m3Gk36loLqN4ZArMhKOCrAMpDKcHqCCOxzX5AaT/wQN/4Ja6H44g+JemeCPEEfiC2jjhj1A+N/GD3HkxS+ckLO+sktEJMv5bZTcSSvJz+xlFAH4s/8FWv+CrQ/YdGnfBv4N6daeIPiV4gtJLpEupD9l0m1zsjurqNPmkMjbhFEGXO0sxxtV/wF8Nf8Ftv+CnHhrxOvibWPE2ieJLMSo8mj3Ok29vbtGpG6NJrdY513DIDNI2DR/wW28NeJ/DX/BTfxNrHiZZRZ+JNE0m50eR0Ija3t7dbedI2IwxWeORmAORu5r8v6/vLwm8JshxGQ0sTiaSqTqK7b1tfou1j+euMeMcxp5jOlSm4xi7JLqf2/wD7Kn/BRvx9+3n8K4vFn7MHgBLPULaT7JrVx4i1GKLT9LvFwXhVbYSXl220h0/cW6MpGZFYFa+oE/ZW1H4iR/aP2ovF1945DtufR7cHSdAXDblT7Bbu0lyq9CL25uVbrtHAH833/BEn4R/Fvxz8IPip4jsPBeg+O/AWsa5ZRHSNfklszNd6fC2+50658i4h8xPNAYOi5YLiaPDZ/ZbSNK/Y+8JTNoPje18Z/AfUrhwoS+13V9I015FAGILy11CXRZj/AAqglL/NkIGYZ/gbxLyejlmfYnAX56cJWXPJxjZ62VouMrbe9JvTof6FeFlWeP4eoY7K70a7XvfV6UK1fTRzk5V1XpdW3RpRp2a1kfqf4a8LeGfBeiQeGfB2nWuk6barthtLOFIII1znCRxhVUZ7AVu18faf+zz8RLTSo7z4cfG3xasFwqywm9XRtWt3RxuDCSfTjcMpBypFxjGOoq2vgj9tfQLcjSPiD4X17BGE1Xw5cQSke89nqiIP/AY59q8+GOqRSXsJW8uW3y96/wCB8FiuEsFWqyqf2tScm/txxCk29+Zui4p33vP5n1tRXyMvjH9t/wAPWm7WvAnhPxEVcgvpXiG6tJWTnBFveaYYweO931IHQFqB+0n8UtFtEl8dfBfxfZueHfTpNH1SEEDnb9m1H7QR7m3XP14qv7Zor4lJesJfna34mP8AxDLMZfwalGfblxFBt+kfac//AJLc+uaK+SX/AG1vgxplus/jSz8T+GiSQf7W8M61bxgjr/pH2Nrc/wDAZTxz0rovDX7Zf7JPi5kh8P8AxM8MTzyKXFudVtY7gAd2geRZV45+ZRxz0qoZ1g5PlVWN/VXMMR4W8S0oOrPL63Kvtezny/8AgVrfifSlFVrO9s9RtUvtPmSeGQZSSNgysPUMMgj6VZr00z4aUXFuMlqFFFFBIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfyff8ABdz9nv8Abz+JH/BTr9kP41/sMeApPFusfDuHxLq7XN7b3A0OOazjgu47LUL+NfKtHv0he3tjLJGHmdQGGCR4F/wUO/af/wCCoP8AwWV+Aq/8E0vgl+yb49+Dtz40vrCPxp4n8bQm00TTrKyuYrqVLO/McaXkfnQozPFiSWJCiQuZcD+z6igD8h/2u/iHrn/BP39h/wCHP7Gv7JBF78T/ABNaaX8L/hrBMASlzBZLbtqtwmHxbaVYwyX1w21k/dKjY8wGvjz/AIN6/gJoH7LWqftWfs6+F7+81Wy8I/FY2Avr+Rpbq8mTRNNM93cOxJM1zKWlkOcbmOOMY/Qb9rv/AIJh+EP2tv2i/Cv7Ui/Fb4hfDfxZ4O0S60HTpfB1/pttEltfTCa6fZqGm35WaYpGkkkbIWjjRSCBXx7/AMElf+CbH7Q37Hf7Tn7QPxV+Mnjrxvquk+JfF1zJoMGuappF7ba/Yy2dkF1u/jsbVJV1BZIXgUk24EQ5tzkOQD996KKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Q/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooA+Lv22f2DPgH+3l8PYPBXxmtJo73TDLJpGr2MhivdOmlChnhblWVti745FZGwOAwVh/NHpP/BIb9mrQ/27oP2Ovit8Ytc1CG406DUYIoLG3smnmZnd9NlufMlIle3RZVcRgMrFRhwob+yxmVFLOcAckmv4oP2gfgl+2l+0H+15qfxp8LeCdf0268WeJJV8OXN7E2mO32SOSazEct0YQskdpaGQHIx5Zwc4Fd9XxQz3JcNHDZZWkoyesVrp1to7X8up/L30lONK2QU8DiMvwbxFadVJxUXJumviWidpNyhGL7vrsf0peCNB0L/gnnc6d8N9NgNr8EtRljtdMmALjwxqE8m0Q3chzI1hfSvlLqUs0FyxWZ/LmRov0Dv7Cx1Sxm0zU4Y7m2uY2ililUOkiOCrI6sCGVgSCCMEV4J8Dbf4qeP/ANn7T9B/ax8P2kHiK7s3sdcsS0F3a3YwY3crFui2XCfM8WNqlmUZUAnynwP4j1b9lrxrpXwH+I15JeeDNeuPsfg/W7l2eS2nYZj0O/lfOZMZFhOzZnRfIf8AforT/LPFzpz9pWbcJu95bxb6O+tm3pfZ6bNW/uHJKlHifK6WMwFJ0sXCCk4cvI6kIxvzclly1qcV+8ivjS57c8ZufQXn7Gfw50C9fW/gLqWqfC+/ZmkI8NzLFp0khzzNpM6Tac+SSWYW6yHJw4OCIX8Ufth/CkOfFugaX8TtIhCAXfh5xpOsbQvzs+nX0r2czdyY7+HcR8kI3BV+wqK0eTUo64duD/u7f+Au8fna/maR8TMfXXJnEI4uP/T1Nz8rVYuNZJdI+05f7rPm7wJ+1l8D/HPiGHwNNqj+HfFEu0DQfEEEmlakzN/DFb3axm4AOPntzLGcghiCCfpGuP8AHPw98BfE/wAPSeEviTolh4g0qUhns9StorqBmGcExyqy5GTg4yO1fOC/sta98P2E/wCzf471bwjGrKRpWpFte0XaMnatreyi5gXJ+7aXluuM8dMHtMZS+OKmvLR/c3b58y9BvBcN4/8A3etPCz7VF7Wn5v2lOKqR8o+xn5z6n1/XMeKPBPgzxxaLp/jXSLLWLdc4jvbeO4QZxnCyKw5wO3YV80SfGn9oT4YKkXxr+HsuuWY+9rPgh21FANxw02lziK/iOOdlt9u7fNk4Hrnwr/aB+C3xtWdPhf4js9VubTP2qyVzFe22DtxcWcoS4gOSOJY0PI7EVdPMcPVfsZOzf2ZKzfye/qro5cZwTnOXU/7Rox5qcf8Al7Skpxj2vODfI30jPll3R5pqX7DH7IGoT/a7b4d6Jpc/ebSbZdLlJ9TJY+Q5PoScjsaqXH7HHgi0iWPwV4t8b+HAgwotPE+qXMa+hWHUZ7uFcf3QgX1B7fXFFS8jwe6pRT8kk/vWprT8VuJklGWYVZRX2ZTlKPzjJuL+aPkO4+Av7RGkMn/CFfG3WZI4wMRa9pOj6gnBPBa0tdPmIIwDulLcH5snImn079uzRJALLV/AniSNQP8AW6fqejO3qCy3mpqD7hcH+6K+tqKP7Hpr4JSX/b8n+DbX4Ff8RKxk9MRQoTXb6vRjf1lThCfz5j5Jn+KP7X2hSBNb+E+m6qoA3PoPiWOYn6JqNjp2D7FsD+8ary/tY6xokwt/HXwm8e6MQBveLTbbV4x8oPB0a7v2Yc44XOeoGDj6+ooeAxC1jXfzUWvwin+I48XZRU92vlVNLvCdeMvk51akf/JD5Fb9uz9luyumsvE/iKfw5Ihw48QaXqWihT/tHUbW3A/E16t4S/aL/Z88fSJD4F8d+Htad/urYapaXJbtwIpWzXsleV+MvgX8EviM0j/ELwdoevNNzIdR0+2ui2ePm82Ns/jRyY5a80X8mvx5pfkL61wpV932Fen5+1p1P/JfY0v/AEs9Uor5EP7CH7KVreHUPDHhX/hGpiwYN4dvr7Q9pVtw2/2ZcWwUBucKAMgHsMLbfsmXWiTed4L+Kfj7SMHIV9Wi1VR6D/ic21/kD/aJz3yaX1nGR1nSTXlK7/GMV+I3kfDdVcuHzCcZf9PKHLH76dWtL/yU+uqK+R4/hJ+1nos4k8PfGC31BAeE1/w3a3WRnox0640s5I6kY57DpUcd7+3poE7G407wF4qhUnHl3ep6FIyheMK1vqyhi3YtgAY3HOQ/7TktalKSXon/AOkuT/AX+odCp7uDzGhUl25qlP8A8mrU6UP/ACY+vKK+RrT45ftI6YT/AMJj8E9TlABJbQda0i+HHoL2401z+C59AaWD9sHw3aP5fjLwN470EAElpfDV/foMDPL6Ul8oHuTj1oWd4f7bcf8AFGUf/Skgl4W507rD041mulKrSrP7qU5v8D64or5N039uz9kC+uhYX3xB0jRrls7YNalOkSnBAwI9QW3cnJwABzg4zg4+hPCfxA8BePbX7d4F1uw1qDAbzLC5iuUweh3RMwxXRhsyw1Z2o1FL0af5Hi51wPnWWx58xwdSku86cor/AMmSOuoor4t+AP7fX7OH7RPxM8SfBbwhq4tPF3hnU7/T5dLvB5ctyljM8RubRslJ4nCF8KfMReXRRgl4jMKFKpClVmlKeiTe77LzJyXgzNsxwmJx+Aw86lLDpSqyjFtU4ttKUrbRurXei6vU+0qK/Iv/AIKKf8FFPG37P3jbRf2Vv2VtFsfFHxc8UWM1+BfzFLDQrBCEF/fhBucO24RRBgWK5Ocqkn50r8e/+CzPgSb/AITqz+JvhXx1LEyyyeGbzQoNPtZEVgWhgvYNs4Z1yFaVgAcZIHNfmXHPjrwjw1jqeW55joUqs7NRd3o9E5WTUU+8mlvrodWQcAZzmlCWKwGHc4R3at9yu1d+Suz+oqivi39g79tXwR+3T8DI/it4csn0LWLC7n0rX9BuJBJc6TqVs22W3lbam4EYdH2jcrDIDBlH2lX6tTqRnFTg7p7M+RlFxdnuFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/0f7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACvmL9qr/AIlfg/w349U4PhrxXod4x6bYbi9j0+5ct2CW13K7eqgg8E19O14P+1H4ZuvGH7OHjrw/p3F5Nod81o2CSl1FC0lu4AySUmVGAx1Fc+KV6Urdj5rjOjKplOJVNXkoScf8SV4/c0me8Vx/xA+H/g34qeC9S+HfxC0+LVdF1eFre7tZs7XRueCpDIykBkdSHRgGUhgCLPgnxNa+NfBukeMrIYh1ayt72MA5ws8ayLyOvDV09aThGpBxkrp/ij6nLMznTlTxmEm4yVpRlFtNPdNNaprRprVHx38I/HPi74R+NLX9mj4338+pyzI3/CK+JbsgtrNtEpdrS6cAL/alrGD5nT7VEv2hBuEyR/YleafFz4TeD/jZ4GufAXjVJRbzNHPBc2shhu7O6gYSW93azL80VxBIA8bjow5BBIPknwT+KnjSw8TS/s9/H6WI+NdOhe4sdSijEFt4h02NlQX8EY+SK4Qsq3tqpPkyEOg8mWI15WHqSw01h6jvF/C//bX5/wAr67PXWX6VnGEo57hp5vgoqOIgr1qaVk11rU0tFF/8vYLSm/fgvZtxpfU1FFFeyfmIV5H8UfgL8HPjTFAPid4ds9VuLTBtbx08u9tWVtwa2u4ilxbsD/FDIjcnnk59corKvQhVi4VIprs9UejlWb4vA144rA1ZU6kdpRbjJejTTR8fr8Ef2gfhmRL8EfiLNq1jGONG8axtqkZ/2YtUiaLUIz333DXnf5eRhkn7U3iT4ePJD+0l4B1bwnBG7KdY0vdr+ilR0c3FnEt3ApP8V1ZQIMjLckD7Dorzv7MlT/3abj5P3o/c9UvKLifaLjyljNM7wkK39+P7qr5vmguSUm95VadWW+upx3gT4h+Avij4di8XfDbWrHX9KmJVLvTriO5hLDGV8yJmXcMjIzkd67GvnLx5+yh8DfHviRvHkmkNofic7yNd0GeXSdTLP3lubNonnA/uT+ZGckFCGYHi4fCX7YPwpGfCfiPTfidpUYYiz8Rouk6sFVflVNS0+F7WU9OJbCMsfvTDdlT65iKf8andd46/Nx0fyXMH+rWTY5XyvGck/wDn3XXJr0jGrG9N26yqewXkfYNFfI9p+2L4B8PXMOj/AB90rVPhhqEpVN3iGFV01pCOker2zz6ccnhVe4SQ5GYwxKj6s07UdP1ewh1TSZ47q1uEWSKaFg8ciMMqyspIYEcgg4NdeFx9GtdU5Xa3XVeq3XzR87n3COZZYoyx1FxjL4Zbwl5wmrwmvOMmvMuUUUV1nzgUUUUAFFFFABRRRQBUv7Cx1Szk0/U4Y7m3mXbJFKodGU9mVgQR7GvAfEv7IX7KnjCRrnxL8NvDF3O//Ld9KtBOp9VmEYkVvdWB96+iaK5sRg6NVWqwUvVXPbyfiXMculz5fiJ0n3hKUfyaPkGb9iz4BeHbG4uvCK+IPDWyNm/4kXiHWrJVC/N8tvb3iwt04Vo2B9K/kf8AgX/wSi/4KE/HbxcvxGsdEuPBAnu3vE1fxBcPYXCTFvNEojUNe7yTlZBCAW53DqP7nqK+J4j8OMvzKdJ1FyRhfSNle9t9Olumuu5/Vvgf9ODjLgXCY+lgpLEVcVyLnxDnV9moc91FOS+LmV+ZuPur3WfyKW3gj4ofs/f8FMPF3w7/AGnfFEni/wAWeKPB2hz6Lr09t9lW+tdOSSK5hiHKyPEwXe24yPsaVxlmx9x1+m37av7B3wM/bp8EWXhz4rR3en6xoTyXGg6/pU7W2paVcyBd0tvKvBDbF3o4ZWwDgMFZfzJX/gh78TvFU3/CM/GX9pXxV4g8GsyiXS7PTrTTbqeDcC8M+oRySSSK4G1j5Y4JHev4j+kL9CDMOK+Jv7byrGRhCooKaqc7lHkioXi0nzXik7Scdbvm108Hg/6RtPC4WpDMsPeo5SkvZxhCDc25NckVGMEm3bljZKyS0D/gh6s3ir4nftK/GTwzubwb4g8VadZ6XKFbyJ7rTbR49QnhcgB1kkkjyVyOOCa/oIry/wCC/wAF/hh+zx8MNI+DXwa0iHQvDWhQmCysoCzLGrMXYlnLO7O7Mzu7FmYkkkmvUK/v3hXIKeU5XhsrpSco0YQgm92oRUU35u2p/MubZjLGYuri5qznJyaWyu76feFFFFe8eeFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/0v7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACkZVdSrjIPBBpaKAPmH9jVpbX9m7w34WuD+88MC68OOCclTod3Npm0nuR9mxnv16Gvp6vmH9nkf2J4z+KPgOQ/8AIO8VyXsIPGYNWsrW/LAdh9oluE9yhPevp6ubB/wku2n3aHynA/u5TQovemvZv1ptwf4xYV498a/g3ovxo8Kx6Rc3U2k6vpswvdG1i0wLvTb5FIjuISeDwxSSNvkmiZ4pAUcivYaK0r0IVYOnUV0z7zKM3xOAxMMZhJ8tSDumv6s09mmmmrpppnzh8B/jRrvjW61L4W/Fqxj0T4g+GFjGqWcJJtbyCTIh1PTnb5pLK5KtgN+8gkDwS/MgZ/o+vCPjj8GJfida6d4n8IX40Hxn4ake50PVwnmCF3AEtvcRgqZrO5UBLiHcNwCuhSWOORF+BPxstvi7o17pmu2Z0Pxh4dlWz8Q6HK26WxuiCVZGIXzrS4UGS1uFGyaPnh1kRPOwledKaw1d3f2X/Muz/vLr3Wq6pfZ8Q5RhsfhZZ5lMOWKt7Wmr/upPRSje7dGb0i226cmqc27051PdqKKK9Y/OwooooAKKKKAK93aWt/ay2N9Ek0EyNHJHIoZHRhhlZTkEEHBB4Ir5X1H9jv4X6XdT638ErnUPhjqs7iRp/C0q2trI4z802lyJLpk5JOWeS1Mh5w4yc/WFFcmKwNGtb2sb22fVej3XyPoci4szLLHL6jWlBS+KN7xkl0nB3jNeUk15HyHb6t+2R8MZRD4g0vSPihpMexRc6S40TWtv8RazvJH0+d/VheWi56RgHC9H4O/a7+B/ijXYPBet6hN4S8R3BCpo3iW3k0m9kc4+WBboJHdYyPmtXmTkfNX0zXL+MPBHgv4h6DN4V8f6RZa7pdx/rbPULeO5gf8A3opVZD17iuT6lXpfwKl12lr9z0l825H0f+s+UY5/8KuDUZP7dB+zd+8qbUqTX92nGjd/a1Ooor5Cb9lK68DOLv8AZw8a6z4GEabU0uWQ6xoZ5LY/s++Z2gTJ5WxuLTp1yTljfF79pX4XWzt8ZvAA8T2UQydV8DyfaWwWA3S6TeNFdJgdVtpb1uh6Z2n9pSp/7zTcfNe8vw1+bikC4FoYzXJcXCq39idqNT7pv2cm3oo06tST00R9gUV4r8Mv2i/gn8YdQuNC+H/iK2utWsgTdaVOHtNTtsYz9o0+6WK7h6j/AFkS17VXoUMRTqx56Uk13TufHZvkuMy+u8Nj6Mqc19mcXF67aNJhRRRWx5gUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//0/7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACiiigD5e0KVPD37Y3iLSRwnifwppt+i4OPO0u7ure4fPq0d1arj/AGPc19Q18u/Fd38PftJfCnxWAFTUjrfhp3JwP9MtF1NV9yW0nj8R1OD9RVzYfRyj2f56/qfKcLvknisMtoVZW/7fjGq//JqjCiiiuk+rCvmf46fBzxFrmr2Xxs+C7wWHxD8PwNBayTkpbanYlvMl0u/KgnyJW+aKXBe2mxKgIMkcn0xRXNi8JCtDkn/wU+jXmj2+HuIMTlmKji8M1dXTT1jKLVpRkusZLSS6o8k+C/xi8OfGvwg3iPRYpbG9sriSw1XTLrat3pt/BgT2lyqkgOhIIZSUkRlkjZo3Vj63XyX8ZfhR4w8N+Nl/aT+AEQbxTbwpBrmjBljg8SadDkrBIWIRL+3BJsbliACWglbyZCY/c/hd8UPBvxj8D2XxB8B3JudPvQww6NHNDLGxSWCeJgHinhkDRyxuAyOpUjIrlwWKnzPD1/jXXpJd1+q6Pyab+h4p4fwzoRzjKL/V5uzi9ZUZtN+zk+qdm6c9pxT+3GpGPoNFFFemfBhRRRQAUUUUAFFFFABRRRQB5P8AFH4FfB341WcVn8U/DljrRt8G3nniH2m3YHIa3uFxNAwycNE6tyeeTXi0vwJ+Ovw38y5+AnxGu7q3MjSDRvGqvrdqA2Pkivw8Wpx4HRpri6AwPk5bP2DRXn4jKqFSXO1aXdaP71a/o9PI+yyjj/NcHRWEjU56K/5d1EqlNX3ahNSjFv8AmilLs0fIi/tK+OvAD/Z/2iPh7qugQKzhtZ0Ld4h0jai7jI7Wka6hAnGS89jHGg5aTAbHv/w7+KXw1+LmgDxT8Ldf0/xFpxbYbjTriO5jVwMlGMbNtcZ+ZGww6EA13lfPfxC/ZY+BvxI8Qjxtqui/2b4kUHZrmjTzaVqikjHN5ZPDNIBn7kjOhyQVIJBx9li6fwSU1/e0f3pW+XL8z0v7Q4cx3+9UJ4aXek/aQ/8ABdSSmr9Ze2aXSHQ+hKK+QZfBX7XHwvcP8O/FGn/EPSY8Y07xVGLDUgqqBsj1bT4fKbvjz7BnPG+YnLF0P7YfhHwikVr+0boeq/C+5Z0iNxrUSy6QXYE/LrFm01gi8ZH2iWCQj+AEMAf2xThpiE4f4tv/AAJXj8rp+Qf8Q1xuIXPk84YpdqTbqef7mSjW06yUHBfzM+vKKzdH1nR/EOlwa3oF3DfWV0gkhuLd1likQ9GR0JVgexBIrSr1U01dH59VpShJwmrNaNPoFFFFMgKKKKACiiigAry7xF8cPgt4Q+JWh/BnxZ4v0TS/GHieOaXR9Cu9QtoNS1GO3BaZ7SzkkWedY1BLmNGCgEnGK9Rr+Rz/AIKzeLPCvgP/AIONv2IvGnjjU7TRtH0vRPEVze399MlvbW0EdteM8s00rKkaKBlmYgAck0Af1x0V+SPwP/4Lvf8ABJD9o343W/7Ovwf+Nujan4uvbj7HaWs1vfWUF3cE4WK1vby2htLiSQ/LGsMzmRiAgYkA/rdQAUUUUAFFFFABRRRQAUUUUAf/1P7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACiiigD5h/avP9l+BtA8dIPm8N+KtBvSw6pDNfxWV02TwAtrczE/7ORxnI+nq8P8A2mfCN549/Z28c+D9MB+2ahoV/FakHBFx5DmEj6SBTXofgDxbZePvAmieOtO/499asLa/ix/cuYllX9GFc0dKr80v1/4B8rhP3edV4bKdODXm05qT+ScE/kdbRRRXSfVBRRRQAV8Y/FPwX4w+Bnju9/aT+CmnyarZ6j5Z8Y+GrZSZdQiiARdT09B/zEraMYeLpeQqIyRMkLV9nUVx43BqtG17NaprdPv/AJrZq6ejPpeF+JqmWV3NRU6c1y1IS+GcG03F213ScZK0oSUZxalFNc14N8ZeFfiF4VsPG/gi/h1TSNUhW4tLu3YPHLG4yGUj9R1ByCARXS18N+N7O/8A2QvFl/8AGXwtbz3Pw01ieS78VaXaoZW0e5kO6TW7OFQWMDHLajBGCeTdopcTiX7X03UtO1nTrfWNHuI7u0u40mgnhcSRyxyAMjo6kqyspBBBIIORWeBxjm3Sqq047r8mvJ/hqnqjt4q4Zp4WNPH4CTnhat+ST3TVuanO2iqQur9JRcZr3ZIu0UUV6B8aFFFFABRRRQAUUUUAFFFFABRRRQAUySOOaNoZlDo4IZSMgg9QR6U+igadtUfK2o/sd/CG01mbxX8KDf8Aw51m4kEst34VnFjHM+clp7Bkl065YnktPayEnPPJzgpd/tqfChY47+10f4taWhw0toV0DWwpOc+TM0mnXLgZHE1kp4+Xqa+x6K8qWT0k70G4P+7ov/AdYt+bTZ+g0fEvMKkVTzSMcVDRWrJylZbJVU41oxX8sakY90z5d8L/ALYXwS1jXbbwX4xu7nwP4julzFpHim3fSriU7iu23knxbXZ4zm0mmGM85DY+oqwfE/hXwv420O48MeM9NtdX0y7XZPaXsKXEEq9cPHIGRh7EGvlofsh2PgOMy/s1+LdZ+HZRCI9OgkGpaJknPOmX/mpCnqtnJak/3uWyufGUviSmvL3X9zdn63j6F/VuGsf/AAqk8JPtP97S9eeEVUglso+zqvvM+w6K+QLj4qftP/Cx5f8AhangWHxlpcWSNW8Fyf6SRnAaXRr6QSp6lbe8vG5+7wTXqPw2/aO+CvxZ1SXw34N16I63bgmfR71JbDVYQvUy6feJDdxr23NEBkHBODjWjmtGUvZyfLLs9H8r7/K6ODMvD3NKFCWMpQVWitXOk1Uil/fcW3Tv/LUUJeSPbqKKK9E+JCv42f8Agtz8AvhN+1B/wcBfsT/Az46aRHr/AIU1vTdWOoadMzLFcrame6SOTYVLRmSFN6Zw65VsgkV/ZNX873/BVn/gjj+0D/wUG/bs+EH7UPwk+JcXwwtvhjoOpQ2+sWLynWrTWmkM+nTwW3kNb3Fr5uFuo5LiIvEXQA7qAPnX/g6Y/Y//AGZdJ/4I/wCvfF/wt4W0bwv4l+FepaFdeFrvSrS3sLi3N1qdrp8trbvAsbLEYJ2lMSfLuhR9uYwR+pQ/4Kmfs1/syfszfAPxT+2p4ovNI8V/FvwjZ6pZW9lomr6vcXtzb6fZXGpMINJsrt4xE13Gzb1QYbjO1sflB8YP+CQv/BY7/gpHq/hP4Mf8FWfjX4Fn+CvhbVLfVL7TvANleQan4iktchPt32i2ghtmZSeYXeNC7MsRZUK/pT+33+x7+2P40/ay/Zw/af8A2FbXwO0vwR0/xfYz6Z4wvtQ06zeLxBaadZW6W502xvXPlJbSkghAMIATk4APv79lz9r/AOAv7Zng2/8AH/7PuoajqOl6ZenT7iTUtG1XRJFuBGkpVYdWtLOZ12SKd6IyZJG7cCB9M1+Xf/BPD9vj4pftSfEH4s/sz/tL/D+L4dfFr4J3ulW/iGxsL/8AtTS7q11y2kutNvrG7MULGOeOKQmJ13x4AY7iVX9RKACiiigAooooAKKKKAP/1f7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACiiigBGVXUq4yDwQa+Zf2O2e0/Z30LwpIct4WkvvDZz1A0O8n01cjtlbcH6EY4r6br5h/Z9zovjr4qeBmOEsPFRvrdPSDVdPs712/wCBXUlz+IP4c1TSpF+q/X9D5XNP3ea4Ss9pKpT+clGa/Ck/vPp6iiiuk+qCiiigAooooAayq6lHAIIwQehFfCcs4/Yj8Qr5xC/B3W7xUU8hfCt7cvgD0XSLiVgB0FlM+P8Aj3f/AEf7uqjqml6ZrmmXOi61bRXlneRPBPBOiyRSxSKVdHRgVZWUkMpBBBwa4Mdg3USnTdpx2f6Pun1XzVmk19dwpxNHAynh8XD2mGq2VSF7XttKLs+WpC7cJWdruMlKEpxleor4Z8D31/8Asg+K9P8Agt4rnnuvhvrE623hXVrl2lOkTyNti0O8lcljASQunTyEkjFq53rCZfuaqwON9tFqStJaNdn+qfR9V9xlxVwy8uqxlSn7ShUXNTqJWUo7aq75ZRek4XfLLS7VpMooortPlgooooAKKKKACiiigAooooAKKKKACiiigAooooAK8y+KHwX+E/xq0iLQ/ix4esNft7di8H2yFZHgc4+eCTHmQv8AKPnjZW4HPFem0VnWowqRcKiun0eqO7LczxOCrxxWDqSp1I6qUW4yT7pqzXyPj9P2evi38NBJcfs+/EW/itwGMei+Lg+v6cMLhUjuXli1OIdsteTIvBETYKt+G3/BXT9v39p74Q+Kfh/8KrKGDwV4x8P3f/CSXF1ouofb7S5QK9ta48yGCQRyZuRPbXEG0qUGZFJNf1E1+fXxl/4Jgfse/tDfF/Uvjb8a9DvPEGs6msCOsuo3cEEaW8SwokcdtJFtXaoJGTliW6k18Jxhw3jK+CeHymfJKTV7yaSS100bWqWkbH9b/Rn8cuGMo4qhnXiLhPrVKlCbjy0oSqTnJclp3lTjUTjKTlKt7R3Sta7Z8BeJf+C3HhnWf+Ce+r/G7wBZQp8W4pLTw9B4fJBjTWtSJitrlFkbMlnkNKASWGwxMc/OfzyP7BWl/Fcp8Qf2t/F/iPx94/u8XFzq0mqXNtHa3LDkWEEDRxwRxj5EG3G3oqjCj78/4KXf8Eu/g38Pv2SZfib+xr8PrS18XfDvWdO8WpFC8813e2ulSNLcWyPM0zuTGTII/wCNowAC20Hxj4SftIfBj41+ALf4jeBdfs5rCSETTrJMkctqeNyXKM2YmQ8HdgHqCQQT/CP02uNuPcjy7LaeBrypwfN7SpRcleatyKUkk43V3bRSd97WXvcN5d4dZxxLmGK4cw844aTTp0sQouUE78yVpTUop/C23KMbJtv3pes/8E1P2ifjX8C/2q3/AOCffxw8TX/jfw1r+jyav4E1jU3WXULZLDP2vTbqY4ecJHh4nbJVVwMKwWP9Rv2o/gj+2p8SvEun6/8AsqfHO2+F1tb2pt7vTdR8KWfiO0uJfMLC4Uvc2NzFJtOwqLhoyFBCBtxb8T/2FY0/bD/4KgaT8avhiy3/AIF+BWkala3Gsxk/ZrrWdcha2NtbOBtmEcALOwYqMf7SF/6i6/szwAzbO8dwbl+L4jTWKlC8rqzer5W10cocrfm3ofyh4iYPAYfO8RRyx3pKWltVsrpPsndLyPz7/YX/AGC7X9kDUvH3xU8d+M9Q+JnxU+K9/aah4v8AF2pW8FlJfHToDbWFtBZ2oENraWcJZYYlLFd7Zc5AH6CUUV+wnxYUUUUAFFFFABRRRQB//9b+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKKKACiiigAooooAK+YNJb/hHv2yNbsnwqeKfCNhcwjP3pNGvbqK4YDv8moWwY+y19P18wfFnfoH7RXwp8XR8DUJtZ8NSn/YvbE6kMn036UoHfJGK5sTolLs1+On6nynFnuU6GJW8KtO3/b8vZP8A8lmz6fooorpPqwooooAKKKKACiiigDlvG/gjwn8SfCGpeAfHVhFqej6vbva3drMMpLFIMMpxgg9wwIKnBBBANfL3wq8Y+Mfgf40s/wBnH426jLqtpfM0fg7xLdcy6jDGhc6bqD/d/tK2jUlZTj7bCplA81JwPsquA+J/wy8H/F/wVeeAfHFuZ7G82sGjdopoJo2Dw3EEqEPFPDIqyRSoQyOoYHIrzcbg5OSr0dJr7muz/R7p67XT+34X4ko0qU8rzNOWFqO7tZypy2VSne3vLacbqNSPutqShOHf0V8nfBP4oeM/D3i9/wBmz49SeZ4qsLdrjSNZChLfxHpsRC/aUAwI76DKLfWw4VmWaLMMgCfWNdGDxka8OeOnRp7p9n/Wu6ummeRxLw5XyvE/V6zUk0pRlHWM4P4Zxel0/NJxacZKMoyiiiiiuo+fCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK/Oj4uf8ABJL/AIJx/HTx/L8UfiZ8J9IvNcuJjcz3Fu9zZCeUjDPPFaTQxTM3VjIjbm+Y5PNfovRQBwnw0+F/w5+DXgqx+HHwo0Oy8O6DpieXa2GnwpBBGvfCIANzHlmOWYkliSSa7uiigAooooAKKKKACiiigAooooA//9f+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKKKACiiigAooooAK+W/2ufL0v4caP47Zcnwx4o0DUiwGSkH9pQW924Hci0nmx05/I/UleM/tGeDrn4hfADxt4HsQxudV0LULa3MYy6zyW7iJkH99ZNrL/tAVz4qLdKSW9j5zjDCzrZViadJXk4S5f8Vm4/jY9morifhp4ytviL8OPD/xBs9vk67ptpqMew5XbdQrKNp7jDcGu2reMk1dHuYXEwrUo1qTvGSTT8nqgooopm4UUUUAFFFFABRRRQB5L8Zvg94e+NPhAeHNXmm0+9sp0vtK1S0IW702/hz5N3bMwIDpkhlYFJI2eORWjd1PC/A34y654i1fUPgx8YI4dO+IXhxBJdQxK0dvqdiW2Q6rp4csWtpThZUDM1tPuhkJ/dvJ9KV4T8dPgpD8WNN0/W/D97/YfjHw1K934e1pE3vZ3DrtdJEyPOtbhR5dzASBInQrIsbp5eMw84T+sUF73VfzL/NdH8no7r9A4azvC4jDf2Lm8rUm24Ttd0ZvrZXbpy0VSK1Wk4pyjyT92orwL4E/GuX4o2eo+FvGNiug+N/DLx2+v6P5nmCCSRd0VxbyYBms7lQXt5sDcAyMFljkRPdYLu1uWlS2lSRoX8uQKwJR8BtrY6HBBwecEHvXZhsVCrBVKb0f9W8mtmt09z5fPMhxWXYqeDxcbTja+zTTScZJq6lGSalGSbjKLTi2mmWKKKK6DxwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9D+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKKKACiiigAooooAKKKKAPmP9jwtZ/ADSvCEh+bwrdal4b29lTRb+40+IL32eXAhTPOwivpyvmH4CY0T4kfFbwP8Aw2viWPUrcd/I1TTrSdiT73QuQPRQPx+nq5sH/DS7afdofK8Eu2V0aPWmnTfrTbpt/NxuFFFFdJ9UFFFFABRRRQAUUUUAFFFFAH4Bf8Fm/wBrPUP2ata8Mav8HdK1bSfiKkEsEXiuGBorGPT7kES6fK8sLwX29gJlhz/o8qJKrBsq3kP/AAb9ftGaj4jsPir8OPiLrD3V79qh8VG5vpmkllM6m3v55pZCSdpityzM3O7J6c/0i67oGheKdIn8P+JrKDUbC6XZNbXUazQyL12vG4KsM9iK/kM/bD/Zh+BfxE/4KUeKP2dfg9of/CEeDfDXh2zm8awaHd3Four3Oqsl3b2LQxsIbe1EcccjxRKqsVyFDBWX8F8R8U+GqtTjHHV/9moq8oJWdmlD3Ve0pNuKV7Xdk3ZH+hHh544cJ5t4Y4jwurZZKGPqpezxKkqnNOnU9rGM7qMqVNe/FRjzxjzSlbmlJv8AqV8MftRfsz+NvFLeBvBnxE8MavrauI20+y1eyuLoO3AUwxytJk9htzXulfyT+Jf+Cev7H/iHw4vh+08E2Oiyw4a3v9KX7Jf28ikMksdzH+8LowBUuWHqCOK/UP8A4I5ftI/Fr4k+BfHv7M/x81STxD4s+DWsRaW2tTyM9zqWm3yPcafcXO/kzeWrIzZO4KCSW3M3geAn0pci4/r18HgKc6VakublnbWF7cycW9m0mna11a/T+SvELwmzDh2nTrYiUZwm7XjfR2vZ3S87ej2P2Vooor+mT8sCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9H+/iiiigAooooAKKKKAP4A/wDgxi/5ui/7kn/3P1/f5X8Af/BjF/zdF/3JP/ufr+/ygAooooAKKKKACiiigAooooAKKK/ED/gp98TfiR8VPjz4E/4J7/DnWbrwzpviXTbjxN4v1LTp2hvm0W3ka2SyhZR8i3U25ZGJ5AAwV3K2WKxeHw2Hq4zGT5KVKMpzlvaMU23bq9LJdXZdQjCpOcaVGPNOTUUu7bsvTzfRH2HpP7QnwD0b9tTXNFg8b6AZdf8AC+nJJCNTtdy3mmXt4uxlEmRNJFeL8pAYrFxkKdv35X86H/Dt39h//hC/+EF/4VzpP2XyvK+0eW3237u3d9s3faN3fO/rz1r3D/gmD8TPiR8K/jz47/4J7/EbWrrxNpvhrTbfxN4Q1LUZ2mvl0W4kW2eymZh862s21Y2B4BIwF2qv5L4UeOPDnGGIxGCyj2kKtNOfLUjFc0LpNxcZS1Tabi+jum7M9HMPDjMuHaXNi3GVOpOTTjf3ZTvJp3Sum+ZqXnZpaX/b+iiiv1884KKKKACiiigAooooAKKKKACv5of+Ck3gfxn+xx+2nf8A7dL6Xeat8L/iJpFnp3i25062knl0W/0lRDaXtyseSbaSFhHvxlSGHXYr/wBL1V7u0tdQtZbC+iSaCdGjkjkUMjowwysp4II4IPBFfIce8D5fxJk+IyPNIt0ays7OzWqaafeLSa0autUz2eHs+xGWY2nj8I7Tg7q+3Zp+TV0z+S/xL/wUK/Y/8PeHF8QWnjax1qWbC29hpTfa7+4kYhUijto/3gd2IChwo9SBzX6h/wDBHL9m74tfDbwL49/aY+Pmlv4e8WfGXWItUbRZ42S503TbFHt9Pt7nfyJvLZnZcDaGAIDblX9IfDH7Lv7M/gnxS3jnwZ8O/DGka2ziRtQstIsre6LryGM0cSyZHY7s17pX4r4CfRayLgCvXxmAqzq1qq5eadtIXT5UopbtJtu97K1j7rxC8Wcw4ip06OIjGEIO9o31drXd2/O3q9wooor+mT8sCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//S/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooAKKKKACvxC/wCCnvw1+JXwp+PHgb/goN8N9GuvEumeHNNuPDHi/TNOgaa+XRZ5DdJewop+dbWYF5FI4BByF3Mn7e0VlisJh8Th6uCxkOelVjKE47XjJWav0et0+js+g41KkJxq0Zcs4tST7NO69fNdUfzof8PIv2H/APhC/wDhOv8AhY2k/ZfK837P5jfbfu7tv2Pb9o3dsbOvHWvcP+CYPwy+JHxU+PPjv/goR8RtGuvDOm+JdNt/DPhDTdRgaG+bRbeRbl72ZWPyLdTbWjUDkAnJXazfqX/wy9+zP/wlP/Ccf8K78Mf231/tD+yLL7V1z/rvK8zrz96vdK/K/C7wJ4b4NxFfGZO6k6tWPJzVHF8kG02oqMY6uyTk+miSu7/S8TcaZlnEKdLG8qhB3tFNXlZq7u3oruy77t6WKKKK/WT5kKKKKACiiigAooooAKKKKACiiigAor8ef+C/XxQ+JXwY/wCCQPxs+Jvwf8Q6l4V8SaVpli9lqukXU1le2zSanZxM0NxAySxsyOykqwOCR0NfVv8AwTR8Z+LfiP8A8E4/2f8A4h+PtSudZ13Xvhv4U1HUtQvJGmubu7utItZp55pHJZ5JZGZ3ZiSzEknJoA+2aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/T/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooAKKKKAPOfjF8T/AA98EfhH4p+NHi2KebSvCGkX2tXsdqqvO9vp9u9zKsSuyK0hSMhQzqC2AWA5rwz9hH9tH4U/8FDP2UvCf7YfwRs9TsPDHjFbxrO31mGKC+jNjez2EyzRwTXESnzrd9uyVwVwc84Ff/goZ/yYH8cv+yf+Jv8A01XNfyG/8EM/+Csfx7+FH/BKD4afs3/sRfsy+Lf2gPEXgFNcbxTd2t3FoWjafLe65qF/BaxX9xBcC7uzazxSvDDESqyIMliQoB/dnRX5b/8ABK//AIKsfBv/AIKm/CzxD4o8EaHqngrxh4G1H+x/FnhPW023+kXp37Vc4XfG5jlVWZI3DxSK8aMuK/UigAooooAKKKKACiiigAooooAKKKKACiiigD8P/wDg5F/5QlfHv/sFad/6d7Gvyk/Yk/4N1v2eP21/+Ccnwi+Lv7afxE8a+NPGniHwB4fuvDd/DqklnaeE7CXTLd9Ms9KsUBtx9jgMau8qyefKrSEKXNfsr/wX6+F/xK+M/wDwSB+Nnwy+D/h7UvFXiTVdMsUstK0i1mvb25aPU7OVlht4FeWRlRGYhVJwCegr8nP2df8Agot/wVS/4J4/si+D/wBi/wCLn7GfjX4heNPBnhnTtE8Ja/4Mt5r3w9qNpa2ccFg2qyrEZtMmhjEcd0kq72dHbbEDgAH0p/wbJftR/tC/F/8AZd+JX7M37UGu3HivxV8A/G994OXWrqVp5rqyhGIkklcmSVoZUmRXdmbyvLXPy5P9Ktfzp/8ABFH/AIJWfGv9nH/gn18Q/CH7Xusah4e+Kf7QOr6j4i8VXOgXqwajpR1KMRpDBeRCREu0BklaWPcI5ZSqMdgY/NvxT/ZA/Z5/Yi/4LJfso/DL/gm3pt14V8YeIk1u8+I1hp+oXlzFe+ELS1Crea4tzNNvdrrKW08vzyzjG5nWPAB/V9RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//1P7+KKKKACiiigAooooA/gD/AODGL/m6L/uSf/c/X9/lfwB/8GMX/N0X/ck/+5+v7/KACiiigAooooAKKKKACiiigD4+/wCChn/Jgfxy/wCyf+Jv/TVc1+SP/Bqd4x8B+Iv+CJHwt8PeFdRs7vU9AvPENrrVvbyI01rdy67f3MUdyq/Mkj2s0Eih+TGyEcYr96fjF8MPD3xu+Efin4L+LZZ4dK8X6RfaLeyWrKk6W+oW720rRM6uqyBJCVLIwDYJUjivwHvP+DXj/gnvpvhPQvD/AMIfFfxH+GmoabpEWiaprHg/XodLvfENrDu2/wBsKlm1rPIQ2GeO3hL4G7OKAPlj/givd6F8QP8AgvL+338Vvg4Fm8Dfb9M06a6tv+PWbVkkkW4ZGUlJGaeC7fcpOd27o4r9Tv2ev+CxPhL9p79vjT/2Rfhb8PdZTwZrPhnVfEOkePNUc2NtrA0m6t7WY6bp8sHnz2RefCXrvEkjI3lJInz19kfsJ/sAfsuf8E4PgdD8AP2UvD/9iaL57Xl3PNI1xe3924Cvc3dw/wA0shVVUdERQFRVUAV8D/FSOOL/AIOF/g7FEoVV+CvikAAYAA1fT8ACgD9x6KKKACiiigAooooAKKKKACiiigAooooAKKKKAPEf2lPFfxt8D/APxd4t/Zt8LQ+NvH1hpk8ugaFc3UVlDfX+3EEUtxO8Ucce8guWkTKggMpII/n+/wCCa/hz/goh+zt42vfiX+0h+yr4q8UfFv4p6haf8J58Rr/xb4PdILbzAq29jZQanJJb6Vp0bEw2kCl3C7iGcoq/030UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/V/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooAKKKKACiiigAr8b9V/4IEf8Esdb8YH4g6p4H1+XXNksYvv+E48YLOkcz+ZJGjrrQKRs4BKLhcgccDH7IUUAVrKzg0+zhsLUERQIsaBmLHaowMsxLE4HUkk9zVmiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//W/v4ooooAKKKKACiiigD+AP8A4MYv+bov+5J/9z9f3+V/AH/wYxf83Rf9yT/7n6/v8oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//1/7+KKKKACiiigAooooA/wAwT/g1K/4Kj/sJ/wDBNf8A4X1/w2t45/4Qv/hNP+EW/sb/AIlmqaj9p/s7+1/tX/INtLry/L+1Q/6zZu3/AC7trY/r9/4ijf8AghR/0XP/AMtnxP8A/Kmvcv2kv+CAX/BIz9rn4061+0L+0B8IYta8XeIPs32+9h1rXNPSX7JbRWkOLax1C3to9sMMany4l3EbmyxZj4b/AMQuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTR/xFG/8EKP+i5/+Wz4n/8AlTR/xC5f8EKP+iGf+XN4n/8AltR/xC5f8EKP+iGf+XN4n/8AltQAf8RRv/BCj/ouf/ls+J//AJU0f8RRv/BCj/ouf/ls+J//AJU0f8QuX/BCj/ohn/lzeJ//AJbUf8QuX/BCj/ohn/lzeJ//AJbUAH/EUb/wQo/6Ln/5bPif/wCVNH/EUb/wQo/6Ln/5bPif/wCVNH/ELl/wQo/6IZ/5c3if/wCW1H/ELl/wQo/6IZ/5c3if/wCW1AB/xFG/8EKP+i5/+Wz4n/8AlTXz/wDtX/8AB0p/wShtf2X/AIi3P7LHxtS4+JkfhrVG8JxSeGdfCSa0LWQ2CsbvS1t8NceWD5zLHj75C5NfQH/ELl/wQo/6IZ/5c3if/wCW1fP37WX/AAa2f8Eorj9l34jQfsr/AARWD4mv4a1VfCcj+JtfKprRtJBp7N9s1RrbAuPLJ89TF/fBXIoA+Ev+Cb3/AAeSfAT4q/Yfhv8A8FHvDf8AwrrXHxH/AMJRocc15oczc/NcWmZb2zz8qjYbpCSWZolHH9lnwu+LHwv+OHgWw+J/wa8Rab4r8Oaohks9U0i6ivLSdQcExzQs6Nggg4PBBB5Ffxh/8E3v+DNf4IfDT7D8SP8AgpJ4l/4T7WU2y/8ACK6BLNaaLE3Py3N7iK8u+xxELVQwIPmqef7NvhP8H/hR8BvAdh8Lfgn4b0zwl4b0xSlppmkWsVnaQgnJ2QwqqAseWOMseSSTQB6NRRRQAUUUUAf/0P7+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9k=" } }, "cell_type": "markdown", "id": "3a53b28a", "metadata": {}, "source": [ "***Bi-encoder Transformer network***\n", "\n", "u - Query\n", "v - Response\n", "![9E3E4C40-6F04-424F-ADEA-90FFBB1FAEC9_4_5005_c.jpeg](attachment:9E3E4C40-6F04-424F-ADEA-90FFBB1FAEC9_4_5005_c.jpeg)\n", "\n", "***Training Objective: Fine-tuned high dimensional space***\n", "\n", "![F3457938-14F6-469C-A2FE-0698099F052E.jpeg](attachment:F3457938-14F6-469C-A2FE-0698099F052E.jpeg)\n", "\n", "#### References: https://www.sbert.net/examples/training/ms_marco/README.html" ] }, { "attachments": { "BA30DFD7-B4D9-4198-869D-8CACB605234E_4_5005_c.jpeg": { "image/jpeg": "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" } }, "cell_type": "markdown", "id": "61acf09b", "metadata": {}, "source": [ "***We will use one (non-gpu) instance_type ml.c5.4xlarge to train the Bi-Encoder network with the triplets. The original dataset has nearly 500k queries, for the sake of this workshop, we take 1000 queries with each having 1 positive and 4 negative responses to form the triplets and train the model. Please consider a offline training on the whole dataset for better accuracy***\n", "\n", "The below code snippet calls the training script (nlp_loader_test.py) and run the 3 steps, \n", "- Data downloading\n", "- Data Preparation\n", "- **Creating a PyTorch estimator and starting the sagemaker training job** to train the Bi-Encoder transformer network\n", "\n", "At the end of these 3 steps, the model gets saved to specified S3 location. As you run the below code, provided the training job ran successful, You should get many pages of output with final 4 lines similar to,\n", "\n", "![BA30DFD7-B4D9-4198-869D-8CACB605234E_4_5005_c.jpeg](attachment:BA30DFD7-B4D9-4198-869D-8CACB605234E_4_5005_c.jpeg)\n", "\n", "note: Set local_mode to True in the below code if you want to use the local machine for model training" ] }, { "cell_type": "code", "execution_count": null, "id": "56358e4e", "metadata": {}, "outputs": [], "source": [ "local_mode = False\n", "\n", "if local_mode:\n", " instance_type = \"local\"\n", "else:\n", " instance_type = \"ml.c5.4xlarge\"\n", "\n", "est = PyTorch(\n", " entry_point=\"nlp_loader_test.py\",\n", " source_dir=\"/home/ec2-user/SageMaker/amazon-sagemaker-bert-finetuning-for-search/scripts/code\", # directory of your training script\n", " role=role,\n", " framework_version=\"1.5.0\",\n", " py_version=\"py3\",\n", " instance_type=instance_type,\n", " instance_count=1,\n", " volume_size=250,\n", " output_path=output_path,\n", " hyperparameters={\"sample_queries\":1000, \"batch-size\": 64, \"epochs\": 1, \"learning-rate\": 1e-3}\n", ")\n", "\n", "est.fit() #Start the Training job" ] }, { "cell_type": "markdown", "id": "aaaa55f8", "metadata": {}, "source": [ "## 3. Inference \n", "\n", "Having the model trained and the model artifacts stored in s3, We retrieve the latest trained model from s3 and create HuggingFace estimator object for Inference\n", "\n", "We use a custom **inference Script (inference.py)** which does the following,\n", "\n", "- Pre-processing of the data: tokenising the sentences using the BERT tokeniser\n", "- Calling the fine-tuned BERT model to convert the sentences into BERT vectors. \n", "\n", "While running the below code, if you get a warning similar to **PythonDeprecationWarning: Boto3 will no longer support Python 3.6...**, Please ignore. " ] }, { "cell_type": "code", "execution_count": null, "id": "93a9c0a8", "metadata": {}, "outputs": [], "source": [ "#Make sure you provide / in the end\n", "prefix = 'nlp-dualencoder/' \n", "key_list=[]\n", "\n", "s3_client = boto3.client('s3')\n", "result = s3_client.list_objects(Bucket=bucket, Prefix=prefix, Delimiter='/')\n", "for i in result.get('CommonPrefixes'):\n", " key_list.append(i.get('Prefix'))\n", " \n", "key_list_sorted = sorted(key_list, reverse=True)\n", "model_artifact_s3uri = 's3://'+bucket+'/'+key_list_sorted[0]+'output/model.tar.gz'\n", "model_artifact_s3key = key_list_sorted[0]+'output/model.tar.gz'\n", "model_artifact_s3key_prefix = key_list_sorted[0].split(\"/\")[0]\n", "\n", "from sagemaker.huggingface.model import HuggingFaceModel\n", "\n", "# create Hugging Face Model Estimator\n", "huggingface_model = HuggingFaceModel(\n", "entry_point = 'inference.py',\n", " source_dir=\"/home/ec2-user/SageMaker/amazon-sagemaker-bert-finetuning-for-search/scripts/code\",\n", " model_data=model_artifact_s3uri, # path to your model and script\n", " role=role, # iam role with permissions to create an Endpoint\n", " transformers_version=\"4.17.0\", # transformers version used\n", " pytorch_version=\"1.10.2\", # pytorch version used\n", " py_version='py38', # python version used\n", ")\n", "\n", "print('Inference Estimator is created')" ] }, { "cell_type": "markdown", "id": "b6b933d2", "metadata": {}, "source": [ "### Offline Scoring\n", "\n", "In real world semantic search, using a trained model to convert the documents and queries into vectors will involve higher latency as the model has to be triggered multiple times in realtime for an incoming search query and the stored documents. To avoid this, we can do the following steps,\n", "\n", "1. Pre-transform all the documents/passages into vectors and store all the documents along with the vectors in a database or any datastore, \n", "2. Transform only the incoming query into vector in realtime, compare the incoming query vectors against the stored, pre-transformed document/passage vectors using any similarity metric.\n", "\n", "This way, during a search activity, we are limiting the model triggering only once for the incoming query and thereby reduce the latency. In the below code, we copy the model artifacts to the local machine and pre-transform all the documents/passages into vectors using our fine-tuned model and store the transformed data in S3.\n", "\n", "note: We can do this offline scoring using Sagemaker Batch Transform job too, for the sake of experiment, we are using the local machine, iterate only through the top 100 sentences and convert them into vectors by triggering the model for each sentence. The transformed data is uploaded to s3 where the final data has 2 attributes,\n", "\n", "- Sentence - Text - The Original raw sentence\n", "- Bert_vector - List of dimensions - The transformed bert vector having 768 dimensions\n", "\n", "When you run the below code, it throws out some warnings highlighted in red, related to the BERT model which you can ignore" ] }, { "cell_type": "code", "execution_count": null, "id": "e2b1dabf", "metadata": {}, "outputs": [], "source": [ "from transformers import AutoTokenizer, AutoModelForSequenceClassification, BertModel\n", "import torch\n", "import torch.nn.functional as F\n", "import os\n", "from itertools import islice\n", "import math\n", "import pandas as pd\n", "from numpy.random import randint\n", "\n", "# copy model artifacts to local \n", "s3_client.download_file(bucket, model_artifact_s3key, '/home/ec2-user/SageMaker/amazon-sagemaker-bert-finetuning-for-search/model.tar.gz')\n", "!rm -rf ./trained_bert_model_extract\n", "!mkdir ./trained_bert_model_extract\n", "!tar -xvzf /home/ec2-user/SageMaker/amazon-sagemaker-bert-finetuning-for-search/model.tar.gz -C ./trained_bert_model_extract\n", "\n", "def take_(n, iterable):\n", " \"Return first n items of the iterable as a list\"\n", " return dict(islice(iterable, n))\n", "\n", "\n", "model_data='./trained_bert_model_extract'\n", "\n", "dataframe_list=[]\n", "cols = ['docs','bert_encoded_doc_vectors']\n", "\n", "tokenizer = AutoTokenizer.from_pretrained(model_data)\n", "model = BertModel.from_pretrained(model_data)\n", "\n", "### Now we read the MS Marco dataset\n", "data_folder = 'msmarco-data'\n", "\n", "#### Read the corpus files, that contain all the passages. Store them in the corpus dict\n", "corpus = {} #dict in the format: passage_id -> passage. Stores all existent passages\n", "collection_filepath = os.path.join(data_folder, 'collection.tsv')\n", "if not os.path.exists(collection_filepath):\n", " tar_filepath = os.path.join(data_folder, 'collection.tar.gz')\n", " if not os.path.exists(tar_filepath):\n", " logging.info(\"Download collection.tar.gz\")\n", " util.http_get('https://msmarco.blob.core.windows.net/msmarcoranking/collection.tar.gz', tar_filepath)\n", "\n", " with tarfile.open(tar_filepath, \"r:gz\") as tar:\n", " tar.extractall(path=data_folder)\n", "\n", "logging.info(\"Read corpus: collection.tsv\")\n", "with open(collection_filepath, 'r', encoding='utf8') as fIn:\n", " for line in fIn:\n", " pid, passage = line.strip().split(\"\\t\")\n", " pid = int(pid)\n", " corpus[pid] = passage\n", "\n", "#### Change this number to ingest more documents #####\n", "sampled_sentences = 100\n", "\n", "n_items = take_(sampled_sentences, corpus.items())\n", "\n", "#Iterate through the 100 sentences, transform them into bert vectors\n", "for key in n_items.items():\n", "\n", " tmp_list=[]\n", " encoded_input = tokenizer(n_items[key[0]], padding=True, truncation=True, return_tensors='pt')[\"input_ids\"]\n", " bert_encoded = model(encoded_input)[\"pooler_output\"].tolist()\n", " tmp_list.append(n_items[key[0]])\n", " tmp_list.append(bert_encoded[0])\n", " dataframe_list.append(tmp_list)\n", "transformed_dataframe = pd.DataFrame(dataframe_list, columns=cols)\n", "\n", "transformed_dataframe.to_csv('./transfromed_vectors.csv',index=False)\n", "\n", "#Upload the transformed csv to S3\n", "s3_client.upload_file('./transfromed_vectors.csv',bucket, model_artifact_s3key_prefix+'/batch_output/transfromed_vectors.csv')\n", "\n" ] }, { "cell_type": "markdown", "id": "084c987b", "metadata": {}, "source": [ "### Realtime endpoint \n", "\n", "As explained under 'Offline scoring', having done the transformation of sentences, now we have to create a sagemaker hosting endpoint to transform the incoming queries into vectors in realtime. We call .deploy() on the hugging face estimator to create the endpoint. For experimental purpose, we are using instance_type as \"ml.c5.xlarge\" and instance_count as 1.\n", "\n", "We can also test the predictor with some sample sentences from the domain and check the outputs which will be of 768 dimensions" ] }, { "cell_type": "code", "execution_count": null, "id": "438a3296", "metadata": {}, "outputs": [], "source": [ "# deploy the endpoint endpoint\n", "predictor = huggingface_model.deploy(\n", " initial_instance_count=1,\n", " instance_type=\"ml.c5.xlarge\"\n", " )\n", "# Test the predictor for a sample sentence\n", "query_vector = predictor.predict({\n", "\t'inputs': \"What is Liberal Arts ?\"\n", "})\n", "query_vector['vectors'][0]" ] }, { "cell_type": "markdown", "id": "4e18f310", "metadata": {}, "source": [ "## 4. Amazon OpenSearch Service\n", "\n", "We already discussed about pre-transforming all the sentences and storing them in a datastore so that they can be retrieved against an incoming query for comparison and matching. Amazon OpenSearch service enables you to easily ingest, secure, search, aggregate, view data for a number of use cases such as application search, enterprise search, and more. We are leveraging Amazon OpenSearch search as our datastore to store all the pre-transformed sentences and use OpenSeach's search capabilities.\n", "\n", "To compare the pre-transformed document vectors against the query vectors, we leverage the kNN search function of OpenSearch,\n", "\n", "**k-nearest neighbor (kNN) search**\n", "- A k-nearest neighbor (kNN) search finds the k nearest vectors to a query vector, as measured by a similarity metric.\n", "\n", "#### **Prerequisites**\n", "As in the OpenSearch user guide, to run a kNN search, \n", "\n", "\n", "- you must be able to convert your data into meaningful vector values. You create these vectors outside of OpenSearch and add them to documents as dense_vector field values. Queries are represented as vectors with the same dimension.\n", "\n", "- Design your vectors so that the closer a document’s vector is to a query vector, based on a similarity metric, the better its match. \n", "\n", "We have actually satisfied the above prerequisites in our Model training Step: Fine-tuning the BERT model for information retrieval to have (query, positive_passage) pair to be close in the vector space, while (query, negative_passage) should be distant in vector space \n", "\n", "To complete the steps, we must have the following index privileges:\n", "\n", "- create_index or manage to create an index with a dense_vector field\n", "- create, index, or write to add data to the index you created \n", "- read to search the index\n", "\n", "**kNN methods**\n", "\n", "Amazon OpenSearch supports two methods for kNN search:\n", "\n", "- Exact, brute-force kNN using a script_score query with a vector function\n", "- Approximate kNN using the knn search option ***(We are going to use this option)***\n", "\n", "### Create OpenSearch Python Client\n", "\n", "As a first step in our OpenSearch integration, we create an OpenSearch client in this local machine using Python module, **opensearch-py** that we installed in our first step 'install and import dependencies' \n", "\n", "As a part of the pre-provisioned infrastructure in this AWS account, there is an OpenSearch domain already created inside the **VPC**. High level configuration of this OpenSearch domain,\n", "\n", "- Data nodes: 1* m5.large.search\n", "- EngineVersion: OpenSearch_1.3\n", "- Storage: EBS gp2 volume, 20 GB\n", "- Domain access policy: Permissions for this sagemaker notebook to interact (put and get) with OpenSearch domain\n", "\n", "**note**: This OpenSearch domain is not created as per the AWS OpenSearch service best practices, OpenSearch is just used as a data store and a backend search engine in our workshop, the primary focus stays on finetuning the BERT model for search use case using Amazon Sagemaker. So for a OpenSearch production environment, please check on the best practices.\n", "\n", "In the below code, \n", "\n", "1. We get the OpenSearch domain endpoint from the CloudFormation template that was used to pre-provision infrastructure in this AWS account \n", "2. We create the boto3 session object containing, AWS access key, secret access key and the session token by assuming the sagemaker role\n", "3. Using the generated credentials, we create the OpenSearch python client pointing to the domain endpoint \n", "\n", "While running the below code snippet, if you get a warning, 'Boto3 will no longer support Python 3.6***', Please ignore.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "18d976f4", "metadata": {}, "outputs": [], "source": [ "#Get the domain endpoint from the cloudformation outputs\n", "\n", "cfn_client = boto3.client('cloudformation')\n", "\n", "paginator = cfn_client.get_paginator('describe_stacks')\n", "\n", "response_iterator = paginator.paginate(\n", " StackName='static-cfn',\n", " PaginationConfig={\n", " 'MaxItems': 123,\n", " 'StartingToken': 'string'\n", " }\n", ")\n", "response_iterator\n", "\n", "for i in response_iterator:\n", " for j in i['Stacks'][0]['Outputs']:\n", " if(j['OutputKey']=='DomainEndpoint'):\n", " host = j['OutputValue']\n", " break\n", " \n", "sts_client = boto3.client('sts')\n", "\n", "# Call the assume_role method of the STSConnection object and pass the role\n", "# ARN and a role session name.\n", "\n", "assumed_role_object=sts_client.assume_role(\n", " RoleArn=role,\n", " RoleSessionName=\"AssumeRoleSession1\"\n", ")\n", "\n", "# From the response that contains the assumed role, get the temporary \n", "# credentials that can be used to make subsequent API calls\n", "\n", "credentials=assumed_role_object['Credentials']\n", "\n", "\n", "session = boto3.Session(\n", " aws_access_key_id=credentials['AccessKeyId'],\n", " aws_secret_access_key=credentials['SecretAccessKey'],\n", " aws_session_token=credentials['SessionToken']\n", ")\n", "\n", "credentials = session.get_credentials()\n", "\n", "from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth\n", "\n", "port = 443\n", "\n", "s3 = boto3.client('s3')\n", "from requests_aws4auth import AWS4Auth\n", "endpoint = 'https://'+host # the proxy endpoint, including https://\n", "region = my_region\n", "service = 'execute-api'\n", "\n", "awsauth = AWSV4SignerAuth(credentials, region)\n", "\n", "headers = { \"Content-Type\": \"application/json\"}\n", "\n", "\n", "\n", "client = OpenSearch(\n", " hosts = [{'host': host, 'port': 443}],\n", " http_auth = awsauth,\n", " use_ssl = True,\n", " #verify_certs = True,\n", " connection_class = RequestsHttpConnection\n", ")\n", "\n", "client\n", "\n" ] }, { "cell_type": "markdown", "id": "e16867e1", "metadata": {}, "source": [ "### Create index with mapping in the OpenSearch domain\n", "\n", "Using the client connection to OpenSearch domian, we create an index. In simple words, An index is like a ‘database' in a relational database. It has a mapping which defines multiple types.\n", "\n", "The properties, \"knn\": True, and \"knn.space_type\": \"cosinesimil\" are needed to add kNN features to the index.\n", "\n", "We need to create an index and its mapping to suit our data (sentences, vectors).\n", "\n", "- Index name - 'nlpindex_search_bert'\n", "- Mapping:\n", " 1. 'passage': {'type': 'text'}\n", " 2. 'bert_vector': \n", " {\n", " \"type\": \"knn_vector\",\n", " \"dimension\": 768\n", " }\n", "\n", "As seen above, we need to create a mapping (schema) with 2 fields,\n", "\n", "1. passage - This will map to the original raw sentence - type:text\n", "2. bert_vector - This will map to the bert vector of the sentence, we add 2 attributes to this field, type attribute with value as 'knn_vector' and a dimension attribute with value 768 to suit our original fine tuned BERT embeddings length. \n", "\n", "After successful run, you will get an output,\n", "\n", "*Creating index:\n", "{'acknowledged': True, 'shards_acknowledged': True, 'index': 'nlpindex_search_bert'}*" ] }, { "cell_type": "code", "execution_count": null, "id": "33886744", "metadata": {}, "outputs": [], "source": [ "index_name = 'nlpindex_search_bert'\n", "index_body = {\n", " 'settings': {\n", " 'index': {\n", " 'number_of_shards': 4,\n", " 'knn': True,\n", " \"knn.space_type\": \"cosinesimil\"\n", " }\n", " },\n", "\n", " 'mappings': {\n", " \n", " 'properties': {\n", " 'passage': {'type': 'text'},\n", " \n", " \"bert_vector\": {\n", " \"type\": \"knn_vector\",\n", " \"dimension\": 768\n", " },\n", " }}\n", "}\n", "\n", "\n", "response = client.indices.create(index_name, body=index_body)\n", "print('\\nCreating index:')\n", "print(response)" ] }, { "cell_type": "markdown", "id": "f2d21629", "metadata": {}, "source": [ "### Index (store) the sentences and the transformed vectors \n", "\n", "Here we take the transformed data (sentence, vector) that is uploaded in s3 in step 'Offline Scoring' and index each line into the OpenSearch index, 'nlpindex_search_bert'.\n", "\n", "note: Since our transformed data has just 100 records, we index one document using one put request. In terms of large number of documents, consider bulk request to index multiple documents in one request\n", "\n", "After successful run, you should see a message, \"All Documents are ingested into the OpenSearch index\"\"" ] }, { "cell_type": "code", "execution_count": null, "id": "002b8e98", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import s3fs\n", "from ast import literal_eval\n", "\n", "df = pd.read_csv('s3://'+bucket+'/'+model_artifact_s3key_prefix+'/batch_output/transfromed_vectors.csv')\n", "df\n", "\n", "df = df.reset_index() # make sure indexes pair with number of rows\n", "\n", "for index, row in df.iterrows():\n", " line={}\n", " line['passage']=row['docs']\n", " line['bert_vector']=literal_eval(row['bert_encoded_doc_vectors'])\n", "\n", " response = client.index(\n", " index = index_name,\n", " body = line)\n", " \n", "print('All Documents are ingested into the OpenSearch index')" ] }, { "attachments": { "image.png": { "image/png": "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l4DCsrl1Y8kkIAEJSEACEpBARxFQWHZUdVlYCUhAAhKQgAQk0FwCCsvm1o0lk4AEJCABCUhAAh1FQGHZUdVlYSUgAQlIQAISkEBzCSgsm1s3lkwCEpCABCQgAQl0FAGFZUdVl4WVgAQkIAEJSEACzSWgsGxu3VgyCUhAAhKQgAQk0FEEFJYdVV0WVgISkIAEJCABCTSXgMKyuXVjySQgAQlIQAISkEBHERi1k0r7zjvvpJdeeimNMcYYaYoppkjf+973Oqn4lrUfCXzwwQfptddeS6OPPnqaeOKJ05hjjtmP32bWEpCABCQgAQlUEWi8sLz//vvT4Ycfni6++OL04YcfdrmGCSecMK2//vpp5513TpNMMkmXY9+FjR133DE9/vjjadxxx03nnHPOd+GSu1zjk08+mU4//fR04403pk8++aTLsfHGGy8tu+yyab311ksTTDBBl2MDfeOzzz5Lu+66a/rqq6/SXHPNlQYNGtSnl9zf+fdpYdvI7NNPPy34ceooo4ySjjjiiDZy8RQJSEAC300CjRWWX375Zdpkk03SkCFDamvmjTfeSIcddljxGTx4cNpoo41q0w7EA9dff3166KGH0ve///2BeHm118S9ccABB6RLL720Ng3e7dNOO6347LPPPmmFFVaoTTvQDvz73/9Ot912W3FZP/jBD/r88vo7/z4vcC8z/OKLL9Ltt9/ey7NMLgEJSEACEGissPzd737XRVTiefnNb35TdHO+++676ZFHHilEQ1QjXpnpppsuLbDAArHL5QAlgAcpF5UzzDBDWnTRRdP4449feLWfffbZdMUVV7Sufr/99ktTTjllmm222Vr7XJGABCQgAQlIoO8JNFJY4oX785//3Lrav/3tb0WXZmvH1yt/+tOf0iqrrJLuvvvuYs+aa65ZjMEsp3N74BB4+umn0xlnnNG6oP3337/o8m7t+Hpl2223TTycPPbYY8We3XffvYvYLKd3WwISkIAEJCCBESfQyKjwO+64o3VlG2+8caWoJMFPfvKTYuxldAW//PLL6bnnnmud68rAI/Dwww+3LmrFFVesFJUkYPwtY3MjwIthE6+88krrXFckIAEJSEACEuh7Ao30WN5yyy2tK51nnnla61UrBO2suuqqrW5zvJc/+9nPqpIW+9566630wAMPpGeeeaboOp1++ul71EX6+eefJwKJECeI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" } }, "cell_type": "markdown", "id": "0f944da6", "metadata": {}, "source": [ "## 5. Simulated Semantic Search Application\n", "\n", "We have reached the final step where we create a small HTML search widget in the notebook itself and test the complete pipeline in realtime. First, we get the latest deployed sagemaker endpoint, this will be useful when we do multiple deployments.\n", "\n", "### Search Widget\n", "\n", "We use the ipywidgets library to create a search field that looks like below, \n", "\n", "![image.png](attachment:image.png)\n", "\n", "- The search field is attached with an event that gets triggered after entering some query into the field and pressing the ENTER key\n", "\n", "- The event performs semantic search which uses our fine-tuned BERT embeddings to give response to the query that you enter.\n", "\n", "### Pipeline\n", "\n", "The following happens in sequence in the background when we press the ENTER key after adding some query in the search field,\n", "\n", "1. Convert the search query into json format, {inputs:\"Actual Search query\"}\n", "2. Synchronously call the Sagemaker hosting endpoint by passing the input as the above json. We created this endpoint under step Inference -> Realtime Endpoint\n", "3. The Sagemaker endpoint takes the input (json converted) and passes it to the 'inference.py' script\n", "4. The input query is pre-processed: Converting the query into BERT tokens\n", "5. Pre-processed tokens are now passed to the BERT model function in the inference script and are transformed into 768 dimensional list\n", "6. This list is then used to form the search query that OpenSearch will accept, 'bert_vector' term in the below query is the actual field name that we created in the index mapping step.\n", " \n", " {\n", " \"query\": {\n", " \"knn\": {\n", " \"bert_vector\": {\n", " \"vector\": \"\",\n", " \"k\": 1\n", " }\n", " }\n", " }\n", " }\n", " \n", "7. The OpenSearch uses cosine similarity metric comparison between the query vector and the already indexed sentences in the OpenSearch domain and throws out the top k values sorted on similarity score in descending order.\n", "\n", "successful run of the below code will create a search box." ] }, { "cell_type": "code", "execution_count": null, "id": "10610fed", "metadata": {}, "outputs": [], "source": [ "#Get the latest SageMaker Endpoint\n", "\n", "runtime= boto3.client('sagemaker')\n", "runtime.list_endpoints()['Endpoints']\n", "endpoints = runtime.list_endpoints()\n", "endpoints\n", "latest_endpoint = sorted(endpoints['Endpoints'],key=lambda x: x['CreationTime'], reverse=True)[0]['EndpointName']\n", "\n", "# Change k in production for the number of nearest neighbours\n", "\n", "k_nearest = 2\n", "\n", "from ipywidgets import interact, widgets\n", "from IPython.display import display\n", "import boto3\n", "import json\n", "from ast import literal_eval\n", "lambda_client = boto3.client('lambda')\n", "runtime= boto3.client('runtime.sagemaker')\n", "\n", "#Build the HTML search widgets\n", "text = widgets.Text(\n", " value='Search here!',\n", " placeholder='Search here!',\n", " description='Search:',\n", " disabled=False\n", ")\n", "\n", "text.style._view_name = '100px'\n", "\n", "display(text)\n", "\n", "def callback(wdgt):\n", " payload_ = json.dumps({\"inputs\": wdgt.value})\n", " res_ = runtime.invoke_endpoint(EndpointName=latest_endpoint,Body=payload_,ContentType='application/json')\n", " res = json.loads(res_['Body'].read().decode())['vectors'][0]\n", " q = 'miller'\n", " query = {\"query\":{\n", " \"knn\": {\n", " \"bert_vector\": {\n", " \"vector\": res,\n", " \"k\": k_nearest\n", " }\n", " }\n", " }}\n", "\n", "\n", " response = client.search(\n", " body = query,\n", " index = index_name\n", " )\n", " result = {}\n", " result['docs'] = []\n", " \n", " for i in response['hits']['hits']:\n", " if(len(result['docs']) == k_nearest):\n", " break\n", " dict_doc ={}\n", " dict_doc['doc'] = i['_source']['passage']\n", " dict_doc['score']=i['_score']\n", " result['docs'].append(dict_doc)\n", " \n", " \n", " display(result)\n", "\n", "text.on_submit(callback)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.5" } }, "nbformat": 4, "nbformat_minor": 5 }