diff --git a/quickstart/IntroNotebooks/2. Using the Tensorflow TensorRT Integration.ipynb b/quickstart/IntroNotebooks/2. Using the Tensorflow TensorRT Integration.ipynb deleted file mode 100644 index 7eda93b6..00000000 --- a/quickstart/IntroNotebooks/2. Using the Tensorflow TensorRT Integration.ipynb +++ /dev/null @@ -1,664 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Using TF-TRT With Tensorflow 2:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Tensorflow/TensorRT integration (TF-TRT) is a high level Python interface for TensorRT that works directly with Tensorflow models. In Tensorflow 2, TF-TRT allows you to convert Tensorflow SavedModels to TensorRT optimized models and run them within Python. This is a simple and flexible way to get started with TensorRT when using Tensorflow.\n", - "\n", - "This notebook provides a basic introduction and wrapper that makes it easy to work with basic Keras/TF2 models. We will take a pretrained Resnet-50 model from the keras.applications model zoo, convert it using TF-TRT, and run it in the TF-TRT Python runtime!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Use this when:\n", - "- You want the API with the least dependencies\n", - "- You are willing to give up some optimizations in exchange for more flexibility\n", - "- You have a network which contains operations unsupported by the ONNX parser but still want to use an automatic parser\n", - "- You do not want to write custom C++ plugins/optimizations if your network has unsupported operations\n", - "- You are okay with being limited to the Tensorflow or TRITON runtimes in most cases" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the TF-TRT portion of this guide, we will be using a wrapper included with the notebooks in the [TensorRT OSS examples](https://github.com/NVIDIA/TensorRT).\n", - "\n", - "You can clone the entire repository and work inside it, or you can grab just the wrapper by:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2021-01-29 23:37:25-- https://raw.githubusercontent.com/NVIDIA/TensorRT/main/quickstart/IntroNotebooks/helper.py\n", - "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133\n", - "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.\n", - "HTTP request sent, awaiting response... 404 Not Found\n", - "2021-01-29 23:37:25 ERROR 404: Not Found.\n", - "\n" - ] - } - ], - "source": [ - "!wget \"https://raw.githubusercontent.com/NVIDIA/TensorRT/main/quickstart/IntroNotebooks/helper.py\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Checking your GPU status:__\n", - "\n", - "Lets see what GPU hardware we are working with. Our hardware can matter a lot because different cards have different performance profiles and precisions they tend to operate best in. For example, a V100 is relatively strong as FP16 processing vs a T4, which tends to operate best in the INT8 mode." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fri Jan 29 23:37:26 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 |\n", - "| N/A 42C P0 37W / 300W | 125MiB / 16155MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 |\n", - "| N/A 42C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 |\n", - "| N/A 41C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 |\n", - "| N/A 42C P0 37W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "+-----------------------------------------------------------------------------+\n" - ] - } - ], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Basic usage: Optimizing a TF2/Keras model with TensorRT in FP32:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to sucessfully deploy a TensorRT model, you have to answer __five important questions__:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What batch size(s) am I running inference at?__\n", - "3. __What precision am I running inference at?__\n", - "4. __What TensorRT path am I using to convert my model?__\n", - "5. __What runtime am I targeting?__\n", - "\n", - "We will be following this path to convert and deploy our model:\n", - "\n", - "![TF-TRT](./images/tf_trt.png)\n", - "\n", - "Lets address these five questions here!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For TF-TRT, we need our models to be in [SavedModel format](https://www.tensorflow.org/guide/saved_model). We can load up, for example, a Keras model and save it appropriately as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir -p tmp_savedmodels" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from tensorflow.keras.applications import ResNet50\n", - "\n", - "model_dir = 'tmp_savedmodels/resnet50_saved_model'\n", - "model = ResNet50(include_top=True, weights='imagenet')" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Layer.updates (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/resnet50_saved_model/assets\n" - ] - } - ], - "source": [ - "model.save(model_dir) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we generate a dummy batch of data to pass into the network just to get an understanding of its performance. This is normally where you would supply a numpy batch of images." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "BATCH_SIZE = 32\n", - "\n", - "dummy_input_batch = np.zeros((BATCH_SIZE, 224, 224, 3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will start with FP32 precision as a baseline! Later in this notebook, we will go through and look at how we can reduce our precision from the default." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "PRECISION = \"FP32\" # Options are \"FP32\", \"FP16\", or \"INT8\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT path am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will be using a simplified wrapper (ModelOptimizer) around TF-TRT to handle our conversions for this notebook. The wrapper is bare bones, meant as a springboard for further develoment - not a finished product. It can help us easily and quickly convert a TF-TRT model to a number of precisions." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "from helper import ModelOptimizer # using the helper from \n", - "\n", - "model_dir = 'tmp_savedmodels/resnet50_saved_model'\n", - "\n", - "opt_model = ModelOptimizer(model_dir)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/resnet50_saved_model_FP32/assets\n" - ] - } - ], - "source": [ - "model_fp32 = opt_model.convert(model_dir+'_FP32', precision=PRECISION)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TF-TRT essentially yields a Tensorflow graph with some optimized TensorRT operations included in it. We can run this graph with .predict() like we would any other Tensorflow model." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " ...,\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04]], dtype=float32)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_fp32.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now have a finished TF-TRT optimized Tensorflow graph!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__We can now compare the TensorRT optimized model with the original:__" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " ...,\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04]], dtype=float32)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Warm up - the first batch through a model generally takes longer\n", - "model.predict(dummy_input_batch)\n", - "model_fp32.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "53.5 ms ± 423 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "model.predict_on_batch(dummy_input_batch)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "29.5 ms ± 117 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "model_fp32.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Reducing Precision:\n", - "\n", - "Inference typically requires less numeric precision than training. With some care, lower precision can give you faster computation and lower memory consumption without sacrificing any meaningful accuracy. TensorRT supports TF32, FP32, FP16, and INT8 precisions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Reducing precision to FP16:__" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "FP16 \"mixed precision\" inference gives up some accuracy in exchange for faster models with lower latency and lower memory footprint. In practice, the accuracy loss is generally negligible in FP16 - so FP16 is a fairly safe bet in most cases for inference. Cards that are focused on deep learning training often have strong FP16 capabilities, making FP16 a great choice for GPUs that are expected to be used for both training and inference - such as the NVIDIA V100\n", - "\n", - "Let's convert our model to FP16 and see how it performs:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_1_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/resnet50_saved_model_FP16/assets\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04],\n", - " [1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04],\n", - " [1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04],\n", - " ...,\n", - " [1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04],\n", - " [1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04],\n", - " [1.7182514e-04, 3.3864001e-04, 6.3493084e-05, ..., 1.5010530e-05,\n", - " 1.4759685e-04, 6.7664997e-04]], dtype=float32)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_fp16 = opt_model.convert(model_dir+'_FP16', precision=\"FP16\")\n", - "\n", - "model_fp16.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "13.5 ms ± 20.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "model_fp16.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Reducing precision to INT8:__\n", - "\n", - "Whether you want to further reduce to INT8 precision depends on hardware - Turing cards and later INT8 is often better. Inference focused cards such as the NVIDIA T4 or systems-on-module such as Jetson AGX Xavier do well with INT8. In contrast, on a training-focused GPU like V100, INT8 often isn't any faster than FP16." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To perform INT8 inference, we need to see what the normal range of activations are in the network so we can quantize our INT8 representations based on a normal set of values for our dataset. It is important that this dataset is representative of the testing samples in order to maintain accuracy levels.\n", - "\n", - "Here, we just want to see how our network performs in TensorRT from a runtime standpoint - so we will just feed dummy data and dummy calibration data into TensorRT." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "dummy_calibration_batch = np.zeros((8, 224, 224, 3))\n", - "\n", - "opt_model.set_calibration_data(dummy_calibration_batch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, we convert our model to INT8 as before:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/resnet50_saved_model_INT8/assets\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04],\n", - " [1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04],\n", - " [1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04],\n", - " ...,\n", - " [1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04],\n", - " [1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04],\n", - " [1.61497956e-04, 3.58211488e-04, 7.12977999e-05, ...,\n", - " 1.43723055e-05, 1.47045619e-04, 7.21490127e-04]], dtype=float32)" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model_int8 = opt_model.convert(model_dir+'_INT8', precision=\"INT8\")\n", - "\n", - "model_int8.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "13.1 ms ± 29.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "model_int8.predict(dummy_input_batch)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Next Steps:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can find other Jupyter Notebooks demonstrating TF-TRT conversions and end to end workflows for many other Keras applications and models, including detection models and segmentation models, in other example TF-TRT notebooks!\n", - "\n", - "Here are links to those notebooks:\n", - "\n", - "[__Classification Examples__](./Additional%20Examples/1.%20TF-TRT%20Classification.ipynb)\n", - "\n", - "[__Detection Example__](./Additional%20Examples/2.%20TF-TRT%20Detection.ipynb)\n", - "\n", - "[__Segmentation Example__](./Additional%20Examples/3.%20TF-TRT%20Segmentation.ipynb)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/3. Using Tensorflow 2 through ONNX.ipynb b/quickstart/IntroNotebooks/3. Using Tensorflow 2 through ONNX.ipynb deleted file mode 100644 index aa8f6328..00000000 --- a/quickstart/IntroNotebooks/3. Using Tensorflow 2 through ONNX.ipynb +++ /dev/null @@ -1,1275 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Using Tensorflow through ONNX:\n", - "\n", - "The ONNX path to getting a TensorRT engine is a high-performance approach to TensorRT conversion that works with a variety of frameworks - including Tensorflow and Tensorflow 2.\n", - "\n", - "TensorRT's ONNX parser is an all-or-nothing parser for ONNX models that ensures an optimal, single TensorRT engine and is great for exporting to the TensorRT API runtimes. ONNX models can be easily generated from Tensorflow models using the ONNX project's tf2onnx tool.\n", - "\n", - "In this notebook we will take a look at how ONNX models can be generated from a Keras/TF2 ResNet50 model, how we can convert those ONNX models to TensorRT engines using trtexec, and finally how we can use the native Python TensorRT runtime to feed a batch of data into the TRT engine at inference time.\n", - "\n", - "Essentially, we will follow this path to convert and deploy our model:\n", - "\n", - "![Tensorflow+ONNX](./images/tf_onnx.png)\n", - "\n", - "__Use this when:__\n", - "- You want the most efficient runtime performance possible out of an automatic parser\n", - "- You have a network consisting of mostly supported operations - including operations and layers that the ONNX parser uniquely supports (Such as RNNs/LSTMs/GRUs)\n", - "- You are willing to write custom C++ plugins for any unsupported operations (if your network has any)\n", - "- You do not want to use the manual layer builder API" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Checking your GPU status:__\n", - "\n", - "Lets see what GPU hardware we are working with. Our hardware can matter a lot because different cards have different performance profiles and precisions they tend to operate best in. For example, a V100 is relatively strong as FP16 processing vs a T4, which tends to operate best in the INT8 mode." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 377 - }, - "id": "IJBfZsGo8yaV", - "outputId": "f4c4e20d-fcfd-43a2-b10d-c6978c25c91f" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Wed Jun 9 19:47:48 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.3 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 |\n", - "| N/A 45C P0 63W / 300W | 5572MiB / 16155MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 |\n", - "| N/A 44C P0 41W / 300W | 9MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 |\n", - "| N/A 43C P0 41W / 300W | 9MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 |\n", - "| N/A 44C P0 39W / 300W | 9MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "+-----------------------------------------------------------------------------+\n" - ] - } - ], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to sucessfully deploy a TensorRT model, you have to make __five key decisions__:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What batch size(s) am I running inference at?__\n", - "3. __What precision am I running inference at?__\n", - "4. __What TensorRT path am I using to convert my model?__\n", - "5. __What runtime am I targeting?__" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Our first step is to load up a pretrained ResNet50 model. This can be done easily using keras.applications - a collection of pretrained image model classifiers that can additionally be used as backbones for detection and other deep learning problems.\n", - "\n", - "We can load up a pretrained classifier with batch size 32 as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "id": "iVRVItvR8quS" - }, - "outputs": [], - "source": [ - "from tensorflow.keras.applications import ResNet50\n", - "\n", - "BATCH_SIZE = 32" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "id": "cKT07xPV8qua" - }, - "outputs": [], - "source": [ - "model = ResNet50(weights='imagenet')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the purposes of checking our non-optimized model, we can use a dummy batch of data to verify our performance and the consistency of our results across precisions. 224x224 RGB images are a common format, so lets generate a batch of them.\n", - "\n", - "Once we generate a batch of them, we will feed it through the model using .predict() to \"warm up\" the model. The first batch you feed through a deep learning model often takes a lot longer as just-in-time compilation and other runtime optimizations are performed. Once you get that first batch through, further performance tends to be more consistent.\n", - "\n", - "To create a test batch, we will simply repeat one open-source dog image from http://www.dog.ceo" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 224, 224, 3)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "from skimage import io\n", - "from skimage.transform import resize\n", - "from matplotlib import pyplot as plt\n", - "\n", - "url='https://images.dog.ceo/breeds/retriever-golden/n02099601_3004.jpg'\n", - "img = resize(io.imread(url), (224, 224))\n", - "input_batch = 255*np.array(np.repeat(np.expand_dims(np.array(img, dtype=np.float32), axis=0), BATCH_SIZE, axis=0), dtype=np.float32)\n", - "\n", - "input_batch.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(input_batch[0]/255)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The image above is a Golden Retriever, class 207 in ImageNet. So we look for class 207 in the top 5 predictions to verify our model works as intended:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Class | Probability (out of 1)\n" - ] - }, - { - "data": { - "text/plain": [ - "[(160, 0.32290387),\n", - " (169, 0.266499),\n", - " (212, 0.16812354),\n", - " (170, 0.07066823),\n", - " (207, 0.03341851)]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "predictions = model.predict(input_batch) # warm up\n", - "indices = (-predictions[0]).argsort()[:5]\n", - "print(\"Class | Probability (out of 1)\")\n", - "list(zip(indices, predictions[0][indices]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Labels 150 to 275 or so are dogs in ImageNet, so look for those as other common predictions in addition to our correct 207 class." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Baseline Timing:__\n", - "\n", - "Once we have warmed up our non-optimized model, we can get a rough timing estimate of our model using %%timeit, which runs the cell several times and reports timing information.\n", - "\n", - "Lets take a look at how long our model takes to run at baseline before doing any TensorRT optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 85 - }, - "id": "eMu3dZlM96bh", - "outputId": "537a88e2-ad7d-413a-f815-abd91f010e21" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "46.8 ms ± 514 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "result = model.predict_on_batch(input_batch) # Check default performance" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Okay - now that we have a baseline model, lets convert it to the format TensorRT understands best: ONNX. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Convert Keras model to ONNX intermediate model and save:__" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The ONNX format is a framework-agnostic way of describing and saving the structure and state of deep learning models. We can convert Tensorflow 2 Keras models to ONNX using the tf2onnx tool provided by the ONNX project. (You can find the ONNX project here: https://onnx.ai or on GitHub here: https://github.com/onnx/onnx)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "id": "aG3tXUEx8quf" - }, - "outputs": [], - "source": [ - "import onnx" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Converting a model with default parameters to an ONNX model is fairly straightforward:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - }, - "id": "QxLAvWp68quk", - "outputId": "d750962a-d098-4a63-c195-c3442211cdc1" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Assets written to: my_model/assets\n", - "2021-06-09 19:48:30.462380: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "/usr/lib/python3.8/runpy.py:127: RuntimeWarning: 'tf2onnx.convert' found in sys.modules after import of package 'tf2onnx', but prior to execution of 'tf2onnx.convert'; this may result in unpredictable behaviour\n", - " warn(RuntimeWarning(msg))\n", - "2021-06-09 19:48:31.938818: I tensorflow/compiler/jit/xla_cpu_device.cc:41] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", - "2021-06-09 19:48:31.939684: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcuda.so.1\n", - "2021-06-09 19:48:32.010614: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 0 with properties: \n", - "pciBusID: 0000:07:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:32.011850: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 1 with properties: \n", - "pciBusID: 0000:08:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:32.013128: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 2 with properties: \n", - "pciBusID: 0000:0e:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:32.014344: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 3 with properties: \n", - "pciBusID: 0000:0f:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:32.014373: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:32.019097: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.11\n", - "2021-06-09 19:48:32.019146: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.11\n", - "2021-06-09 19:48:32.020281: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", - "2021-06-09 19:48:32.020567: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", - "2021-06-09 19:48:32.021254: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.11\n", - "2021-06-09 19:48:32.022280: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.11\n", - "2021-06-09 19:48:32.022445: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8\n", - "2021-06-09 19:48:32.030879: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1889] Adding visible gpu devices: 0, 1, 2, 3\n", - "2021-06-09 19:48:32.032680: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", - "2021-06-09 19:48:33.010741: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 0 with properties: \n", - "pciBusID: 0000:07:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:33.011970: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 1 with properties: \n", - "pciBusID: 0000:08:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:33.013195: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 2 with properties: \n", - "pciBusID: 0000:0e:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:33.014389: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 3 with properties: \n", - "pciBusID: 0000:0f:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:33.014428: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:33.014458: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.11\n", - "2021-06-09 19:48:33.014478: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.11\n", - "2021-06-09 19:48:33.014497: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", - "2021-06-09 19:48:33.014516: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", - "2021-06-09 19:48:33.014534: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.11\n", - "2021-06-09 19:48:33.014552: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.11\n", - "2021-06-09 19:48:33.014571: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8\n", - "2021-06-09 19:48:33.022970: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1889] Adding visible gpu devices: 0, 1, 2, 3\n", - "2021-06-09 19:48:33.023016: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:35.609734: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1287] Device interconnect StreamExecutor with strength 1 edge matrix:\n", - "2021-06-09 19:48:35.609783: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1293] 0 1 2 3 \n", - "2021-06-09 19:48:35.609797: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 0: N Y Y Y \n", - "2021-06-09 19:48:35.609806: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 1: Y N Y Y \n", - "2021-06-09 19:48:35.609816: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 2: Y Y N Y \n", - "2021-06-09 19:48:35.609825: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 3: Y Y Y N \n", - "2021-06-09 19:48:35.619000: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 203 MB memory) -> physical GPU (device: 0, name: Tesla V100-DGXS-16GB, pci bus id: 0000:07:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:35.620513: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 14206 MB memory) -> physical GPU (device: 1, name: Tesla V100-DGXS-16GB, pci bus id: 0000:08:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:35.621962: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:2 with 14206 MB memory) -> physical GPU (device: 2, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0e:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:35.623398: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:3 with 14206 MB memory) -> physical GPU (device: 3, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0f:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:35,625 - WARNING - '--tag' not specified for saved_model. Using --tag serve\n", - "2021-06-09 19:48:43,221 - INFO - Signatures found in model: [serving_default].\n", - "2021-06-09 19:48:43,221 - WARNING - '--signature_def' not specified, using first signature: serving_default\n", - "2021-06-09 19:48:43,222 - INFO - Output names: ['predictions']\n", - "2021-06-09 19:48:43.250962: I tensorflow/core/grappler/devices.cc:69] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 4\n", - "2021-06-09 19:48:43.251124: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session\n", - "2021-06-09 19:48:43.251388: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", - "2021-06-09 19:48:43.252059: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 0 with properties: \n", - "pciBusID: 0000:07:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:43.253259: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 1 with properties: \n", - "pciBusID: 0000:08:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:43.254444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 2 with properties: \n", - "pciBusID: 0000:0e:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:43.255627: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 3 with properties: \n", - "pciBusID: 0000:0f:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:43.255663: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:43.255693: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.11\n", - "2021-06-09 19:48:43.255712: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.11\n", - "2021-06-09 19:48:43.255730: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", - "2021-06-09 19:48:43.255748: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", - "2021-06-09 19:48:43.255765: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.11\n", - "2021-06-09 19:48:43.255783: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.11\n", - "2021-06-09 19:48:43.255801: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8\n", - "2021-06-09 19:48:43.264001: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1889] Adding visible gpu devices: 0, 1, 2, 3\n", - "2021-06-09 19:48:43.264071: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1287] Device interconnect StreamExecutor with strength 1 edge matrix:\n", - "2021-06-09 19:48:43.264086: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1293] 0 1 2 3 \n", - "2021-06-09 19:48:43.264097: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 0: N Y Y Y \n", - "2021-06-09 19:48:43.264106: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 1: Y N Y Y \n", - "2021-06-09 19:48:43.264116: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 2: Y Y N Y \n", - "2021-06-09 19:48:43.264125: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 3: Y Y Y N \n", - "2021-06-09 19:48:43.269085: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 203 MB memory) -> physical GPU (device: 0, name: Tesla V100-DGXS-16GB, pci bus id: 0000:07:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:43.270297: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 14206 MB memory) -> physical GPU (device: 1, name: Tesla V100-DGXS-16GB, pci bus id: 0000:08:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:43.271732: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:2 with 14206 MB memory) -> physical GPU (device: 2, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0e:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:43.273448: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:3 with 14206 MB memory) -> physical GPU (device: 3, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0f:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:43.293134: I tensorflow/core/platform/profile_utils/cpu_utils.cc:112] CPU Frequency: 2198860000 Hz\n", - "2021-06-09 19:48:43.355209: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:954] Optimization results for grappler item: graph_to_optimize\n", - " function_optimizer: Graph size after: 1253 nodes (930), 1908 edges (1585), time = 33.193ms.\n", - " function_optimizer: function_optimizer did nothing. time = 0.577ms.\n", - "\n", - "2021-06-09 19:48:46.008484: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", - "2021-06-09 19:48:46.031017: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 0 with properties: \n", - "pciBusID: 0000:07:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.033674: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 1 with properties: \n", - "pciBusID: 0000:08:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.035311: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 2 with properties: \n", - "pciBusID: 0000:0e:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.036940: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 3 with properties: \n", - "pciBusID: 0000:0f:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.036986: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:46.037035: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.11\n", - "2021-06-09 19:48:46.037062: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.11\n", - "2021-06-09 19:48:46.037086: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", - "2021-06-09 19:48:46.037110: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", - "2021-06-09 19:48:46.037133: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.11\n", - "2021-06-09 19:48:46.037157: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.11\n", - "2021-06-09 19:48:46.037181: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8\n", - "2021-06-09 19:48:46.046998: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1889] Adding visible gpu devices: 0, 1, 2, 3\n", - "2021-06-09 19:48:46.047077: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1287] Device interconnect StreamExecutor with strength 1 edge matrix:\n", - "2021-06-09 19:48:46.047095: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1293] 0 1 2 3 \n", - "2021-06-09 19:48:46.047108: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 0: N Y Y Y \n", - "2021-06-09 19:48:46.047120: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 1: Y N Y Y \n", - "2021-06-09 19:48:46.047131: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 2: Y Y N Y \n", - "2021-06-09 19:48:46.047142: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 3: Y Y Y N \n", - "2021-06-09 19:48:46.052418: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 203 MB memory) -> physical GPU (device: 0, name: Tesla V100-DGXS-16GB, pci bus id: 0000:07:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.053664: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 14206 MB memory) -> physical GPU (device: 1, name: Tesla V100-DGXS-16GB, pci bus id: 0000:08:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.054881: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:2 with 14206 MB memory) -> physical GPU (device: 2, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0e:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.056098: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:3 with 14206 MB memory) -> physical GPU (device: 3, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0f:00.0, compute capability: 7.0)\n", - "WARNING:tensorflow:From /usr/local/lib/python3.8/dist-packages/tf2onnx/tf_loader.py:603: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", - "2021-06-09 19:48:46,541 - WARNING - From /usr/local/lib/python3.8/dist-packages/tf2onnx/tf_loader.py:603: extract_sub_graph (from tensorflow.python.framework.graph_util_impl) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "Use `tf.compat.v1.graph_util.extract_sub_graph`\n", - "2021-06-09 19:48:46.600644: I tensorflow/core/grappler/devices.cc:69] Number of eligible GPUs (core count >= 8, compute capability >= 0.0): 4\n", - "2021-06-09 19:48:46.600797: I tensorflow/core/grappler/clusters/single_machine.cc:356] Starting new session\n", - "2021-06-09 19:48:46.601148: I tensorflow/compiler/jit/xla_gpu_device.cc:99] Not creating XLA devices, tf_xla_enable_xla_devices not set\n", - "2021-06-09 19:48:46.602435: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 0 with properties: \n", - "pciBusID: 0000:07:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.604322: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 1 with properties: \n", - "pciBusID: 0000:08:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.606193: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 2 with properties: \n", - "pciBusID: 0000:0e:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.608049: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1747] Found device 3 with properties: \n", - "pciBusID: 0000:0f:00.0 name: Tesla V100-DGXS-16GB computeCapability: 7.0\n", - "coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s\n", - "2021-06-09 19:48:46.608091: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "2021-06-09 19:48:46.608129: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublas.so.11\n", - "2021-06-09 19:48:46.608153: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcublasLt.so.11\n", - "2021-06-09 19:48:46.608176: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcufft.so.10\n", - "2021-06-09 19:48:46.608198: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcurand.so.10\n", - "2021-06-09 19:48:46.608220: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusolver.so.11\n", - "2021-06-09 19:48:46.608242: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcusparse.so.11\n", - "2021-06-09 19:48:46.608265: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudnn.so.8\n", - "2021-06-09 19:48:46.625482: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1889] Adding visible gpu devices: 0, 1, 2, 3\n", - "2021-06-09 19:48:46.625560: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1287] Device interconnect StreamExecutor with strength 1 edge matrix:\n", - "2021-06-09 19:48:46.625578: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1293] 0 1 2 3 \n", - "2021-06-09 19:48:46.625590: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 0: N Y Y Y \n", - "2021-06-09 19:48:46.625601: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 1: Y N Y Y \n", - "2021-06-09 19:48:46.625612: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 2: Y Y N Y \n", - "2021-06-09 19:48:46.625623: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1306] 3: Y Y Y N \n", - "2021-06-09 19:48:46.634557: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 203 MB memory) -> physical GPU (device: 0, name: Tesla V100-DGXS-16GB, pci bus id: 0000:07:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.636578: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:1 with 14206 MB memory) -> physical GPU (device: 1, name: Tesla V100-DGXS-16GB, pci bus id: 0000:08:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.638422: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:2 with 14206 MB memory) -> physical GPU (device: 2, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0e:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:46.640290: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:3 with 14206 MB memory) -> physical GPU (device: 3, name: Tesla V100-DGXS-16GB, pci bus id: 0000:0f:00.0, compute capability: 7.0)\n", - "2021-06-09 19:48:47.379855: I tensorflow/core/grappler/optimizers/meta_optimizer.cc:954] Optimization results for grappler item: graph_to_optimize\n", - " constant_folding: Graph size after: 560 nodes (-640), 1215 edges (-640), time = 399.986ms.\n", - " function_optimizer: function_optimizer did nothing. time = 1.17ms.\n", - " constant_folding: Graph size after: 560 nodes (0), 1215 edges (0), time = 101.728ms.\n", - " function_optimizer: function_optimizer did nothing. time = 1.017ms.\n", - "\n", - "2021-06-09 19:48:47,938 - INFO - Using tensorflow=2.4.0, onnx=1.9.0, tf2onnx=1.8.5/50049d\n", - "2021-06-09 19:48:47,939 - INFO - Using opset \n", - "2021-06-09 19:48:52,720 - INFO - Computed 0 values for constant folding\n", - "2021-06-09 19:49:05,218 - INFO - Optimizing ONNX model\n", - "2021-06-09 19:49:06,920 - INFO - After optimization: Add -1 (18->17), BatchNormalization -53 (53->0), Const -162 (270->108), GlobalAveragePool +1 (0->1), Identity -57 (57->0), ReduceMean -1 (1->0), Squeeze +1 (0->1), Transpose -213 (214->1)\n", - "2021-06-09 19:49:07,076 - INFO - \n", - "2021-06-09 19:49:07,076 - INFO - Successfully converted TensorFlow model my_model to ONNX\n", - "2021-06-09 19:49:07,076 - INFO - Model inputs: ['input_1:0']\n", - "2021-06-09 19:49:07,076 - INFO - Model outputs: ['predictions']\n", - "2021-06-09 19:49:07,076 - INFO - ONNX model is saved at temp.onnx\n" - ] - } - ], - "source": [ - "model.save('my_model')\n", - "!python -m tf2onnx.convert --saved-model my_model --output temp.onnx\n", - "onnx_model = onnx.load_model('temp.onnx')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That said, we do need to make one change for our model to work with TensorRT. Keras by default uses a dynamic input shape in its networks - where it can handle arbitrary batch sizes at every update. While TensorRT can do this, it requires extra configuration. \n", - "\n", - "Instead, we will just set the input size to be fixed to our batch size. This will work with TensorRT out of the box!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Configure ONNX File Batch Size:__" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Note:__ We need to do two things to set our batch size with ONNX. The first is to modify our ONNX file to change its default batch size to our target batch size. The second is setting our converter to use the __explicit batch__ mode, which will use this default batch size as our final batch size." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "inputs = onnx_model.graph.input\n", - "for input in inputs:\n", - " dim1 = input.type.tensor_type.shape.dim[0]\n", - " dim1.dim_value = BATCH_SIZE" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Save Model:__" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "id": "jFT6-13f8qup" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Done saving!\n" - ] - } - ], - "source": [ - "model_name = \"resnet50_onnx_model.onnx\"\n", - "onnx.save_model(onnx_model, model_name)\n", - "print(\"Done saving!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once we get our model into ONNX format, we can convert it efficiently using TensorRT. For this, TensorRT needs exclusive access to your GPU. If you so much as import Tensorflow, it will generally consume all of your GPU memory. To get around this, before moving on go ahead and shut down this notebook and restart it. (You can do this in the menu: Kernel -> Restart Kernel)\n", - "\n", - "Make sure not to import Tensorflow at any point after restarting the runtime! \n", - "\n", - "(The following cell is a quick shortcut to make your notebook restart:)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "uZUnHVHE8quu" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Restarting kernel in three seconds...\n" - ] - } - ], - "source": [ - "import os, time\n", - "print(\"Restarting kernel in three seconds...\")\n", - "time.sleep(3)\n", - "print(\"Restarting kernel now\")\n", - "os._exit(0) # Shut down all kernels so TRT doesn't fight with Tensorflow for GPU memory - TF monopolizes all GPU memory by default" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have actually already set our inference batch size - see the note above in section 1!\n", - "\n", - "We are going to set our target batch size to a fixed size of 32." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "BATCH_SIZE = 32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We need to do two things to set our batch size to a fixed batch size with ONNX: \n", - "\n", - "1. Modify our ONNX file to change its default batch size to our target batch size, which we did above.\n", - "2. Use the trtexec --explicitBatch flag, which we also did above." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?\n", - "\n", - "Now, we have a converted TensorRT engine. Great! That means we are ready to load it into the native Python TensorRT runtime. This runtime strikes a balance between the ease of use of the high level Python runtimes and the low level C++ runtimes.\n", - "\n", - "First, as before, lets create a dummy batch. Importantly, by default TensorRT will use the input precision you give it as the default precision for the rest of the network. \n", - "\n", - "Remember that lower precisions than FP32 tend to run faster. There are two common reduced precision modes - FP16 and INT8. Graphics cards that are designed to do inference well often have an affinity for one of these two types. This guide was developed on an NVIDIA V100, which favors FP16, so we will use that here by default. INT8 is a more complicated process that requires a calibration step." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "USE_FP16 = True\n", - "\n", - "target_dtype = np.float16 if USE_FP16 else np.float32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We generate a batch of repeating Golden Retriever images, as before. Make sure that for TensorRT the image is resized to the size your model expects. Tensorflow and TensorRT have different behavior for handling 'oversized' images - so this is a safe way of ensuring consistent results across the two." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from skimage import io\n", - "from skimage.transform import resize\n", - "from matplotlib import pyplot as plt\n", - "\n", - "url='https://images.dog.ceo/breeds/retriever-golden/n02099601_3004.jpg'\n", - "img = resize(io.imread(url), (224, 224))\n", - "input_batch = 255*np.array(np.repeat(np.expand_dims(np.array(img, dtype=np.float32), axis=0), BATCH_SIZE, axis=0), dtype=np.float32)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Only we must now cast the input batch to the proper FP32/FP16 precision:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "input_batch = input_batch.astype(target_dtype)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT path am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TensorRT is able to take ONNX models and convert them entirely into a single, efficient TensorRT engine. Restart your Jupyter kernel, and then start here!\n", - "\n", - "We can use trtexec, a command line tool for working with TensorRT, in order to convert an ONNX model to an engine file.\n", - "\n", - "To convert the model we saved in the previous steps, we need to point to the ONNX file, give trtexec a name to save the engine as, and last specify that we want to use a fixed batch size instead of a dynamic one.\n", - "\n", - "__Remember to shut down all Jupyter notebooks and restart your Jupyter kernel after \"1. What format should I save my model in?\" - otherwise this cell will crash as TensorRT competes with Tensorflow for GPU memory:__" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "id": "h60Gmotx8quz", - "outputId": "065384aa-c848-4194-c72c-cad0d80449ca" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "&&&& RUNNING TensorRT.trtexec # trtexec --onnx=resnet50_onnx_model.onnx --saveEngine=resnet_engine.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n", - "[06/09/2021-19:49:25] [I] === Model Options ===\n", - "[06/09/2021-19:49:25] [I] Format: ONNX\n", - "[06/09/2021-19:49:25] [I] Model: resnet50_onnx_model.onnx\n", - "[06/09/2021-19:49:25] [I] Output:\n", - "[06/09/2021-19:49:25] [I] === Build Options ===\n", - "[06/09/2021-19:49:25] [I] Max batch: explicit\n", - "[06/09/2021-19:49:25] [I] Workspace: 16 MiB\n", - "[06/09/2021-19:49:25] [I] minTiming: 1\n", - "[06/09/2021-19:49:25] [I] avgTiming: 8\n", - "[06/09/2021-19:49:25] [I] Precision: FP32+FP16\n", - "[06/09/2021-19:49:25] [I] Calibration: \n", - "[06/09/2021-19:49:25] [I] Refit: Disabled\n", - "[06/09/2021-19:49:25] [I] Safe mode: Disabled\n", - "[06/09/2021-19:49:25] [I] Save engine: resnet_engine.trt\n", - "[06/09/2021-19:49:25] [I] Load engine: \n", - "[06/09/2021-19:49:25] [I] Builder Cache: Enabled\n", - "[06/09/2021-19:49:25] [I] NVTX verbosity: 0\n", - "[06/09/2021-19:49:25] [I] Tactic sources: Using default tactic sources\n", - "[06/09/2021-19:49:25] [I] Input(s): fp16:chw\n", - "[06/09/2021-19:49:25] [I] Output(s): fp16:chw\n", - "[06/09/2021-19:49:25] [I] Input build shapes: model\n", - "[06/09/2021-19:49:25] [I] Input calibration shapes: model\n", - "[06/09/2021-19:49:25] [I] === System Options ===\n", - "[06/09/2021-19:49:25] [I] Device: 0\n", - "[06/09/2021-19:49:25] [I] DLACore: \n", - "[06/09/2021-19:49:25] [I] Plugins:\n", - "[06/09/2021-19:49:25] [I] === Inference Options ===\n", - "[06/09/2021-19:49:25] [I] Batch: Explicit\n", - "[06/09/2021-19:49:25] [I] Input inference shapes: model\n", - "[06/09/2021-19:49:25] [I] Iterations: 10\n", - "[06/09/2021-19:49:25] [I] Duration: 3s (+ 200ms warm up)\n", - "[06/09/2021-19:49:25] [I] Sleep time: 0ms\n", - "[06/09/2021-19:49:25] [I] Streams: 1\n", - "[06/09/2021-19:49:25] [I] ExposeDMA: Disabled\n", - "[06/09/2021-19:49:25] [I] Data transfers: Enabled\n", - "[06/09/2021-19:49:25] [I] Spin-wait: Disabled\n", - "[06/09/2021-19:49:25] [I] Multithreading: Disabled\n", - "[06/09/2021-19:49:25] [I] CUDA Graph: Disabled\n", - "[06/09/2021-19:49:25] [I] Separate profiling: Disabled\n", - "[06/09/2021-19:49:25] [I] Skip inference: Disabled\n", - "[06/09/2021-19:49:25] [I] Inputs:\n", - "[06/09/2021-19:49:25] [I] === Reporting Options ===\n", - "[06/09/2021-19:49:25] [I] Verbose: Disabled\n", - "[06/09/2021-19:49:25] [I] Averages: 10 inferences\n", - "[06/09/2021-19:49:25] [I] Percentile: 99\n", - "[06/09/2021-19:49:25] [I] Dump refittable layers:Disabled\n", - "[06/09/2021-19:49:25] [I] Dump output: Disabled\n", - "[06/09/2021-19:49:25] [I] Profile: Disabled\n", - "[06/09/2021-19:49:25] [I] Export timing to JSON file: \n", - "[06/09/2021-19:49:25] [I] Export output to JSON file: \n", - "[06/09/2021-19:49:25] [I] Export profile to JSON file: \n", - "[06/09/2021-19:49:25] [I] \n", - "[06/09/2021-19:49:25] [I] === Device Information ===\n", - "[06/09/2021-19:49:25] [I] Selected Device: Tesla V100-DGXS-16GB\n", - "[06/09/2021-19:49:25] [I] Compute Capability: 7.0\n", - "[06/09/2021-19:49:25] [I] SMs: 80\n", - "[06/09/2021-19:49:25] [I] Compute Clock Rate: 1.53 GHz\n", - "[06/09/2021-19:49:25] [I] Device Global Memory: 16155 MiB\n", - "[06/09/2021-19:49:25] [I] Shared Memory per SM: 96 KiB\n", - "[06/09/2021-19:49:25] [I] Memory Bus Width: 4096 bits (ECC enabled)\n", - "[06/09/2021-19:49:25] [I] Memory Clock Rate: 0.877 GHz\n", - "[06/09/2021-19:49:25] [I] \n", - "[06/09/2021-19:49:42] [I] [TRT] ----------------------------------------------------------------\n", - "[06/09/2021-19:49:42] [I] [TRT] Input filename: resnet50_onnx_model.onnx\n", - "[06/09/2021-19:49:42] [I] [TRT] ONNX IR version: 0.0.4\n", - "[06/09/2021-19:49:42] [I] [TRT] Opset version: 9\n", - "[06/09/2021-19:49:42] [I] [TRT] Producer name: tf2onnx\n", - "[06/09/2021-19:49:42] [I] [TRT] Producer version: 1.8.5\n", - "[06/09/2021-19:49:42] [I] [TRT] Domain: \n", - "[06/09/2021-19:49:42] [I] [TRT] Model version: 0\n", - "[06/09/2021-19:49:42] [I] [TRT] Doc string: \n", - "[06/09/2021-19:49:42] [I] [TRT] ----------------------------------------------------------------\n", - "[06/09/2021-19:49:48] [I] [TRT] Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output.\n", - "[06/09/2021-19:51:05] [I] [TRT] Detected 1 inputs and 1 output network tensors.\n", - "[06/09/2021-19:51:06] [I] Engine built in 100.683 sec.\n", - "[06/09/2021-19:51:06] [I] Starting inference\n", - "[06/09/2021-19:51:09] [I] Warmup completed 0 queries over 200 ms\n", - "[06/09/2021-19:51:09] [I] Timing trace has 0 queries over 2.99006 s\n", - "[06/09/2021-19:51:09] [I] Trace averages of 10 runs:\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48546 ms - Host latency: 6.30948 ms (end to end 10.0032 ms, enqueue 0.539108 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48946 ms - Host latency: 6.31468 ms (end to end 10.9038 ms, enqueue 0.516052 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48004 ms - Host latency: 6.3107 ms (end to end 10.8822 ms, enqueue 0.513507 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49315 ms - Host latency: 6.34006 ms (end to end 10.4643 ms, enqueue 0.512753 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.52059 ms - Host latency: 6.36953 ms (end to end 10.2954 ms, enqueue 0.498505 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50788 ms - Host latency: 6.3551 ms (end to end 9.11696 ms, enqueue 0.518701 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49774 ms - Host latency: 6.3454 ms (end to end 10.9278 ms, enqueue 0.495056 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50585 ms - Host latency: 6.35638 ms (end to end 10.9322 ms, enqueue 0.505725 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50247 ms - Host latency: 6.35249 ms (end to end 10.5564 ms, enqueue 0.513574 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.51249 ms - Host latency: 6.36059 ms (end to end 9.63242 ms, enqueue 0.498096 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.4911 ms - Host latency: 6.33875 ms (end to end 8.90275 ms, enqueue 0.474237 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50072 ms - Host latency: 6.34651 ms (end to end 10.4826 ms, enqueue 0.498499 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49602 ms - Host latency: 6.34083 ms (end to end 10.92 ms, enqueue 0.486401 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49089 ms - Host latency: 6.3358 ms (end to end 10.8925 ms, enqueue 0.490247 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48907 ms - Host latency: 6.33452 ms (end to end 10.1912 ms, enqueue 0.482959 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.47534 ms - Host latency: 6.31992 ms (end to end 8.9359 ms, enqueue 0.484119 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.47952 ms - Host latency: 6.32281 ms (end to end 10.4421 ms, enqueue 0.481885 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48701 ms - Host latency: 6.33408 ms (end to end 10.9013 ms, enqueue 0.491455 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48179 ms - Host latency: 6.33092 ms (end to end 10.885 ms, enqueue 0.505078 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48776 ms - Host latency: 6.33756 ms (end to end 10.3106 ms, enqueue 0.494629 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.47145 ms - Host latency: 6.31754 ms (end to end 9.37426 ms, enqueue 0.481995 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48057 ms - Host latency: 6.32472 ms (end to end 9.55609 ms, enqueue 0.480151 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48557 ms - Host latency: 6.33252 ms (end to end 10.4543 ms, enqueue 0.486841 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50972 ms - Host latency: 6.35627 ms (end to end 10.9478 ms, enqueue 0.488062 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.50054 ms - Host latency: 6.34517 ms (end to end 10.0418 ms, enqueue 0.483325 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48201 ms - Host latency: 6.32832 ms (end to end 9.67512 ms, enqueue 0.481812 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48279 ms - Host latency: 6.32742 ms (end to end 9.18972 ms, enqueue 0.484082 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.47712 ms - Host latency: 6.32109 ms (end to end 10.879 ms, enqueue 0.482202 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.47788 ms - Host latency: 6.32166 ms (end to end 10.8823 ms, enqueue 0.481006 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48203 ms - Host latency: 6.32615 ms (end to end 10.6967 ms, enqueue 0.481055 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.46802 ms - Host latency: 6.31384 ms (end to end 9.47229 ms, enqueue 0.477344 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.4967 ms - Host latency: 6.3428 ms (end to end 8.9686 ms, enqueue 0.48147 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49275 ms - Host latency: 6.33767 ms (end to end 9.57681 ms, enqueue 0.481714 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.52278 ms - Host latency: 6.37007 ms (end to end 10.9759 ms, enqueue 0.493896 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.49238 ms - Host latency: 6.34084 ms (end to end 10.7861 ms, enqueue 0.49917 ms)\n", - "[06/09/2021-19:51:09] [I] Average on 10 runs - GPU latency: 5.48333 ms - Host latency: 6.33235 ms (end to end 10.4963 ms, enqueue 0.500806 ms)\n", - "[06/09/2021-19:51:09] [I] Host Latency\n", - "[06/09/2021-19:51:09] [I] min: 6.28442 ms (end to end 6.327 ms)\n", - "[06/09/2021-19:51:09] [I] max: 6.66431 ms (end to end 11.2405 ms)\n", - "[06/09/2021-19:51:09] [I] mean: 6.33588 ms (end to end 10.2251 ms)\n", - "[06/09/2021-19:51:09] [I] median: 6.33411 ms (end to end 10.8945 ms)\n", - "[06/09/2021-19:51:09] [I] percentile: 6.38745 ms at 99% (end to end 11.0925 ms at 99%)\n", - "[06/09/2021-19:51:09] [I] throughput: 0 qps\n", - "[06/09/2021-19:51:09] [I] walltime: 2.99006 s\n", - "[06/09/2021-19:51:09] [I] Enqueue Time\n", - "[06/09/2021-19:51:09] [I] min: 0.413086 ms\n", - "[06/09/2021-19:51:09] [I] max: 0.796997 ms\n", - "[06/09/2021-19:51:09] [I] median: 0.486877 ms\n", - "[06/09/2021-19:51:09] [I] GPU Compute\n", - "[06/09/2021-19:51:09] [I] min: 5.4425 ms\n", - "[06/09/2021-19:51:09] [I] max: 5.82251 ms\n", - "[06/09/2021-19:51:09] [I] mean: 5.49097 ms\n", - "[06/09/2021-19:51:09] [I] median: 5.48969 ms\n", - "[06/09/2021-19:51:09] [I] percentile: 5.53986 ms at 99%\n", - "[06/09/2021-19:51:09] [I] total compute time: 2.00421 s\n", - "&&&& PASSED TensorRT.trtexec # trtexec --onnx=resnet50_onnx_model.onnx --saveEngine=resnet_engine.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n" - ] - } - ], - "source": [ - "# May need to shut down all kernels and restart before this - otherwise you might get cuDNN initialization errors:\n", - "if USE_FP16:\n", - " !trtexec --onnx=resnet50_onnx_model.onnx --saveEngine=resnet_engine.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n", - "else:\n", - " !trtexec --onnx=resnet50_onnx_model.onnx --saveEngine=resnet_engine.trt --explicitBatch" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "-\n", - "\n", - "__The trtexec Logs:__\n", - "\n", - "Above, trtexec does a lot of things! Some important things to note:\n", - "\n", - "__First__, _\"PASSED\"_ is what you want to see in the last line of the log above. We can see our conversion was successful!\n", - "\n", - "__Second__, can see the resnet_engine.trt engine file has indeed been successfully created: " - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "total 508284\n", - "drwxrwxr-x 8 1000 1000 4096 Jun 9 19:49 .\n", - "drwxrwxr-x 5 1000 1000 4096 Apr 5 23:28 ..\n", - "drwxr-xr-x 2 root root 4096 Apr 6 01:13 .ipynb_checkpoints\n", - "-rw-rw-r-- 1 1000 1000 34748 Jun 9 19:46 '0. Running This Guide.ipynb'\n", - "-rw-rw-r-- 1 1000 1000 502649 Apr 5 23:28 '1. Introduction.ipynb'\n", - "-rw-rw-r-- 1 1000 1000 23645 Apr 5 23:28 '2. Using the Tensorflow TensorRT Integration.ipynb'\n", - "-rw-rw-r-- 1 1000 1000 210995 Jun 9 19:49 '3. Using Tensorflow 2 through ONNX.ipynb'\n", - "-rw-rw-r-- 1 1000 1000 334050 Jun 9 19:17 '4. Using PyTorch through ONNX.ipynb'\n", - "-rw-rw-r-- 1 1000 1000 7052 Apr 5 23:28 '5. Understanding TensorRT Runtimes.ipynb'\n", - "drwxrwxr-x 2 1000 1000 4096 Apr 5 23:28 'Additional Examples'\n", - "drwxr-xr-x 2 root root 4096 Apr 5 23:28 Getting_Started\n", - "drwxr-xr-x 2 root root 4096 Apr 6 01:09 __pycache__\n", - "-rw-rw-r-- 1 1000 1000 4085 Apr 5 23:28 helper.py\n", - "drwxrwxr-x 2 1000 1000 4096 Apr 5 23:28 images\n", - "drwxr-xr-x 4 root root 4096 Jun 9 19:48 my_model\n", - "-rw-rw-r-- 1 1000 1000 3228 Apr 5 23:28 onnx_helper.py\n", - "-rw-r--r-- 1 root root 102169836 Jun 9 19:49 resnet50_onnx_model.onnx\n", - "-rw-r--r-- 1 root root 102470353 Apr 6 04:18 resnet50_pytorch.onnx\n", - "-rw-r--r-- 1 root root 51398352 Jun 9 19:51 resnet_engine.trt\n", - "-rw-r--r-- 1 root root 161081907 Apr 6 17:38 resnet_engine_pytorch.trt\n", - "-rw-r--r-- 1 root root 102169844 Jun 9 19:49 temp.onnx\n" - ] - } - ], - "source": [ - "!ls -la" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Third__, you can see timing details above using trtexec - these are in the ideal case with no overhead. Depending on how you run your model, a considerable amount of overhead can be added to this. We can do timing in our Python runtime below - but keep in mind performing C++ inference would likely be faster." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We want to run our TensorRT inference in Python - so the TensorRT Python API is a great way of testing our model out in Jupyter, and is still quite performant.\n", - "\n", - "To use it, we need to do a few steps:\n", - "\n", - "__Load our engine into a tensorrt.Runtime:__" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "id": "dX2jFwrA8qu6" - }, - "outputs": [], - "source": [ - "import tensorrt as trt\n", - "import pycuda.driver as cuda\n", - "import pycuda.autoinit\n", - "\n", - "f = open(\"resnet_engine.trt\", \"rb\")\n", - "runtime = trt.Runtime(trt.Logger(trt.Logger.WARNING)) \n", - "\n", - "engine = runtime.deserialize_cuda_engine(f.read())\n", - "context = engine.create_execution_context()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note: if this cell is having issues, restarting all Jupyter kernels and rerunning only the batch size and precision cells above before trying again often helps" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Allocate input and output memory, give TRT pointers (bindings) to it:__\n", - "\n", - "d_input and d_output refer to the memory regions on our 'device' (aka GPU) - as opposed to memory on our normal RAM, where Python holds its variables (such as 'output' below)." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "id": "q3UJcdWy8qu8" - }, - "outputs": [], - "source": [ - "output = np.empty([BATCH_SIZE, 1000], dtype = target_dtype) # Need to set output dtype to FP16 to enable FP16\n", - "\n", - "# Allocate device memory\n", - "d_input = cuda.mem_alloc(1 * input_batch.nbytes)\n", - "d_output = cuda.mem_alloc(1 * output.nbytes)\n", - "\n", - "bindings = [int(d_input), int(d_output)]\n", - "\n", - "stream = cuda.Stream()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "__Set up prediction function:__\n", - "\n", - "This involves a copy from CPU RAM to GPU VRAM, executing the model, then copying the results back from GPU VRAM to CPU RAM:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "id": "6R-F8JtV8qu-" - }, - "outputs": [], - "source": [ - "def predict(batch): # result gets copied into output\n", - " # Transfer input data to device\n", - " cuda.memcpy_htod_async(d_input, batch, stream)\n", - " # Execute model\n", - " context.execute_async_v2(bindings, stream.handle, None)\n", - " # Transfer predictions back\n", - " cuda.memcpy_dtoh_async(output, d_output, stream)\n", - " # Syncronize threads\n", - " stream.synchronize()\n", - " \n", - " return output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is all we need to run predictions using our TensorRT engine in a Python runtime!" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "id": "AdKZzW7O8qvB" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warming up...\n", - "Done warming up!\n" - ] - } - ], - "source": [ - "print(\"Warming up...\")\n", - "\n", - "trt_predictions = predict(input_batch).astype(np.float32)\n", - "\n", - "print(\"Done warming up!\")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Class | Probability (out of 1)\n" - ] - }, - { - "data": { - "text/plain": [ - "[(160, 0.3112793),\n", - " (169, 0.27026367),\n", - " (212, 0.17321777),\n", - " (170, 0.07165527),\n", - " (207, 0.033843994)]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "indices = (-trt_predictions[0]).argsort()[:5]\n", - "print(\"Class | Probability (out of 1)\")\n", - "list(zip(indices, trt_predictions[0][indices]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that we have recovered our same predictions as before!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Performance Comparison:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Last, we can see how quickly we can feed a singular batch to TensorRT, which we can compare to our original Tensorflow experiment from earlier." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We use the %%timeit Jupyter magic again. Note that %%timeit is fairly rough, and for any actual benchmarking better controlled testing is required - preferably outside of Jupyter." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "id": "XAtWnCK38qvD" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6.41 ms ± 846 ns per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "_ = predict(input_batch) # Check TRT performance" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next Steps:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

Profiling

\n", - "\n", - "This is a great next step for further optimizing and debugging models you are working on productionizing\n", - "\n", - "You can find it here: https://docs.nvidia.com/deeplearning/tensorrt/best-practices/index.html\n", - "\n", - "

TRT Dev Docs

\n", - "\n", - "Main documentation page for the ONNX, layer builder, C++, and legacy APIs\n", - "\n", - "You can find it here: https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html\n", - "\n", - "

TRT OSS GitHub

\n", - "\n", - "Contains OSS TRT components, sample applications, and plugin examples\n", - "\n", - "You can find it here: https://github.com/NVIDIA/TensorRT\n", - "\n", - "\n", - "#### TRT Supported Layers:\n", - "\n", - "https://github.com/NVIDIA/TensorRT/tree/main/samples/opensource/samplePlugin\n", - "\n", - "#### TRT ONNX Plugin Example:\n", - "\n", - "https://docs.nvidia.com/deeplearning/tensorrt/support-matrix/index.html#layers-precision-matrix\n" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "name": "ONNXExample.ipynb", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.5" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/4. Using PyTorch through ONNX.ipynb b/quickstart/IntroNotebooks/4. Using PyTorch through ONNX.ipynb deleted file mode 100644 index b90f9d49..00000000 --- a/quickstart/IntroNotebooks/4. Using PyTorch through ONNX.ipynb +++ /dev/null @@ -1,992 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Using PyTorch with TensorRT through ONNX:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TensorRT is a great way to take a trained PyTorch model and optimize it to run more efficiently during inference on an NVIDIA GPU.\n", - "\n", - "One approach to convert a PyTorch model to TensorRT is to export a PyTorch model to ONNX (an open format exchange for deep learning models) and then convert into a TensorRT engine. Essentially, we will follow this path to convert and deploy our model:\n", - "\n", - "![PyTorch+ONNX](./images/pytorch_onnx.png)\n", - "\n", - "Both TensorFlow and PyTorch models can be exported to ONNX, as well as many other frameworks. This allows models created using either framework to flow into common downstream pipelines.\n", - "\n", - "To get started, let's take a well-known computer vision model and follow five key steps to deploy it to the TensorRT Python runtime:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What batch size(s) am I running inference at?__\n", - "3. __What precision am I running inference at?__\n", - "4. __What TensorRT path am I using to convert my model?__\n", - "5. __What runtime am I targeting?__" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We are going to use ResNet50, a widely used CNN architecture first described in this paper.\n", - "\n", - "Let's start by loading dependencies and downloading the model. We will also move our Resnet model onto the GPU and set it to evaluation mode." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Downloading: \"https://download.pytorch.org/models/resnet50-19c8e357.pth\" to /root/.cache/torch/hub/checkpoints/resnet50-19c8e357.pth\n" - ] - } - ], - "source": [ - "import torchvision.models as models\n", - "import torch\n", - "import torch.onnx\n", - "\n", - "# load the pretrained model\n", - "resnet50 = models.resnet50(pretrained=True, progress=False).eval()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When saving a model to ONNX, PyTorch requires a test batch in proper shape and format. We pick a batch size:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "BATCH_SIZE=32\n", - "\n", - "dummy_input=torch.randn(BATCH_SIZE, 3, 224, 224)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we will export the model using the dummy input batch:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# export the model to ONNX\n", - "torch.onnx.export(resnet50, dummy_input, \"resnet50_pytorch.onnx\", verbose=False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that we are picking a BATCH_SIZE of 32 in this example." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Now Test with a Real Image:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's try a real image batch! For this example, we will simply repeat one open-source dog image from http://www.dog.ceo:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 224, 224, 3)" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from skimage import io\n", - "from skimage.transform import resize\n", - "from matplotlib import pyplot as plt\n", - "import numpy as np\n", - "\n", - "url='https://images.dog.ceo/breeds/retriever-golden/n02099601_3004.jpg'\n", - "img = resize(io.imread(url), (224, 224))\n", - "img = np.expand_dims(np.array(img, dtype=np.float32), axis=0) # Expand image to have a batch dimension\n", - "input_batch = np.array(np.repeat(img, BATCH_SIZE, axis=0), dtype=np.float32) # Repeat across the batch dimension\n", - "\n", - "input_batch.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQEAAAD8CAYAAAB3lxGOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOz9R6yuWZaeiT3bfPa3x5/rw6Z3kaZIFn0DpSYFCQ1BANUtoDUQoNakBwI0ENEjAT3RQAYaSSKhgQQ2Wi1Agtgi2VVqFslusmxWZaWLDHMj4vp7/PntZ7fTYH/3ZJZUQbGbTDCEip0ZmXHuPb/7/m+vvda73vW+IoTA5+vz9fn607vkv+438Pn6fH2+/vWuz4PA5+vz9ad8fR4EPl+frz/l6/Mg8Pn6fP0pX58Hgc/X5+tP+fo8CHy+Pl9/ytcvLQgIIf6aEOIDIcRHQoi/+ct6nc/X5+vz9S+3xC+DJyCEUMCHwK8Bz4HvA/9OCOFn/8pf7PP1+fp8/UutX1Ym8CvARyGET0IIPfB/Af6tX9Jrfb4+X5+vf4mlf0nPewd49gs/Pwf+zKe+CS2DVjAqS4QQGGNx3mOdQyqFEILgAwQQQuCDxzmLlAIhQUmJ968yGkEIIEX8M60U3ntCCHjvSJKENE2x1tL3HVIpvHdkaY5EEAR0psd7T5alBO8RiOF5A23fA5BlKVIIvPMIAt55lFJoremtwTkHQiCUggDOebRSCAEhBLI0wRiDsRatNVIp+r4HEcjyhK7p0FqRJIoklXRdw/7+PlolnJ9dY0zA2UCSSIQ0ZKXGO2ibQJIUeG8xfY0UAuETpEwJIuC8wXuPVBKpBGmaIgQ0TYvznizLGI3G1NstXdshpCRmiwIhxM01lkqipMQag9YaY3uklOR5vI5CKkxvMMaAgCRVCBFwzuF9QCkVvyMX/73vetzw/Tjv8N6DYHh/AmcdzjoIgbIskFKyt7eH1gpjOi4vr/AenAPrPNZZfAgUec7u3i6LxTVt2zCdjsnzjMlsRG8arq6X1HVPWeQIoeh7Q/BgTXy94AM+BISUZFlGnqc4Z7HOYq3Bh4D3ASEF4/GEpmlg+I6DD0ghsdbF71jEO0kqyf7+HuvViqqqAQmCn19fIRCCm3taSYkQAmsdPngApJQ316LvDV3bxd/VCUVe0LUtiZZorWjbnt3dHZ69OL0MIRz8f+2//1pb/F/BEkL8e8C/B5Akkq9+6YA37r+GQtB1PafX11xt1ug8J9UZu9MZtu1xLtCaBmM7ttWK8SRhd3eOc47VqkKQIEWKFAl91VFkGVmaUdcVdb3l1u1j3nnnm7z7s5/Sti0XFxfs7My4f/sewYCRnqv1gso0fPGtN6hXW1xr6DuLCZLn52egNXeO97BNQ181FDpFS8VrDx4wnoz57d/7fc5X10z2d0iLEmOg2TbszufkqaKtt9y+fYvz83Mury/Z2d9HKsXZ5RlNt+a7v/IGtrU0TcPde4cI2TCeSv57f+O/y53jN/j1v/e7/J3/09+nbwJ3jieUOyvmxwldr1HqAY8fXrFdX4IDek9ijhgX9yA3bM2C68UV5ShlNCnZP9rDOMvZ5QVJlvPFL36R+3cf8I9/4z/n4vQchETolCwvWK83fPud7xJC4OzklGAdOE9aCBw91nbcv3uPu8d3cUbw6JPnbLc1870R052Es6tnnJy8JHjJbLqLcIpxMSVPc05Pzqnqmv3DfWwwbJsNzluU1ozLCbPxlFyn2Kbjz33ve9y6dcidWwccHO7xX/7WP+Ls/Jx3f/ac88sG4wOL9YZtXXF065Dbd46o6hlf+/oX+Df/G3+ZnZ0RJ1cfsbWXnF8tMH3CZm15790nXF9UXJ4suTpf0GwdeVaQpCWXqw1//a//GvfuH/Ho8Qc8f/4x18trms4w39th03TcvvuAy8srinGK0hrTGDbrmkSn/NW/+Jf5yQ9/xOr6ir/2136NJEn423/7P+L+a1O8l3hisHHxBCNJErRSJEqjhaRtW9rekpUlzvU0zZZRWfJv/tqv8YMf/JCPH35CoguODm/z5//8X+Lj935Cu7niV77zbX7n936XyWzGsxenT/6kvfjLCgIvgHu/8PPd4c9uVgjhbwF/C2B3bxp+9Vf/AtLD88dPaJqOzWZD3/d4KREIZrMJJ6sXBCQ7O7uUo5SPP/kA7xxd17Ozs0MIitWyQsifn/reefI8x5iePM/RWvPo0WOkUDjnyPOce/ceEKynNz3LekPneqq6Yr3ZkAiF0hpbtXgUo9EImaSIIPHGk+mURCV4a2nqhqpuyLKML33py9S2ozEGQcBaxyv8xVpL09RYG09RJSXbqqLvLYmG4FqyrODk5AwQ3L1zhO3gg/de8p/8nV/nj/7gQ6otKJGR5Rldm9DVI1bbhm988w7Oat790Tmz8S2WZ2tyNSJJFVuzoaoq2rZBpwLVtpycnPDg9dc4FHB6dsHVxRVlMY7XzjukEoTgqaoNSZ6wf7TP5cUFzhsE4LGsq5o3v/iAvms5u3hBlip2pkfkRYrSEq0l682Wpm5JdEKejwkeTN9DHqirJmZSMmZDHkvf9SRZQpIkGGtomobJ7ojj3SP63jCf7/Kz9z+k+3HF/sEum6phU21o2w6RaHTiyUtFmktsaPhv/rd/jS9+4TV298coZclyxdn5Bu8dk8kOjz5+xLs/fZ/NwrO8ahHeU2Ypd27fRiU51+uWF8+e8/LFJ7Tdms2mousM850p9+894ONHz9huKsaTCda1BOtQStG2LbODOW+//UV+8sP3+da3v8vXvvFN/tb/4X/PaCQxxgIK6z3WO1zwBMB7jyqKmOU6T103GOdJ83zIUjNu37qFVApjepRWSCkxxpBmKaPJmPOTTzg9P6E1LZdPrz51s/6ygsD3gbeFEK8TN/+/Dfz3P+2XvfN8+MFDJmWJ9wzpn2UyneAIJImiKHJC8KRZSlHkCBFQUmGcoW07iqIkz8eslo9i+qUUaaIJzmOtJU2TIR2N6ZQxFmMs+/v7PHnyhNfvPmBUllysrkF6mrrm+uqaSTGiUDnWWFpnYokhBMIHZGAoCRym7zk7O6MzhtnuDgfHx3z07HH8fN7RdW1MhZ3AWkvbtng3lCdJirVrgnN4KdjdG1NXAecEL59dkycz3njzLv/kN3/AqCgZj+a09YZUSdJck8hd/sx3/zKX6wt+8OPvc3V5TZYrknREOUrQPkMknuAcfd+RJAmz2RQf4vtaLZecXVyQZjlN2/D82TN6Y0AKvAgURUZejkiylO//we8xGo24decY6SVPHj9iPJ+wd7zD5dlLrpYXpKkmz0p8MGgt2W42rOtLpPZMZ3MkKfW2Jc9LrPWYzlIUBePJBKElnWlJ05w0T9lUGxKdEFzA9oZ6XWGGz/BHf/R9vve9b/O1r3+L3/39P6DtOoL0CBXwWIpRynxvzGw2woWWdXXB7oGkyDUHR3Pef7Tl44+eUleP2G4ER4e3aatLEA1CSrSOgRBn+c4736AoMp4+fUhRKsZlRm8q3n7zbbJihLOeelMzmo7J85S6rvE+pvVt1/Hw449Zrq8oRm/zu7//fV6cnJLmOabtkSqm+0oplNQgBFJKQgAfYklbFjmbpqVpa4QIvPbaA77xjW9wfnaGMZYsy8BLjO2oqy2daTHO8PjFM4yzlKMRsPwT998vBRgMIVjg3wd+A3gP+L+GEN795z3GWk+eFWxWG7zzvPHGm2il8T7W/01bgwiMxiXGWJ48eUbT9EihUCrBWo8UsSaXMl5E62NdbpylHI8oRiPavmN3b5/pfEZV10il6Y1lNJkwGpVIKcnSjDTL8AG6tr85wbuuo+/jP8E6sI6+bumaljRJyZKUyWSC955Hjx+xWq9x1tHUNcE5lIy4wqsg50MgS9OhvovBZDyG737vHQSwXdf0raDeSJKww8XLhne+/qv823/j32Vvd4/l5pogLJtNx/e//zOePn3J+eUzZLpB5S2rzRapC6puS9NfUxSasijY29vj9q3blKMSISUXF5ekScZ8Z5flYs2jTx5zdnaGVIpA4Oj4kC99+YsEPL3tYwDxjuvlFVVTcef+LRwNlVkj0kBjt1Ttirbfsq029KbDOzfccJKm6ciynDzLaduWqqrpuh5jLE3TYoxD6yzW5gMWIKWMGALQ9oZHjx9jbcCj+P7v/4APP/iYpu3QqWI0KpAKjGuxruXr3/oil9cv+KMf/y4/+OHv8PTFQ05On7CtNuzv7dP3jiePX/Lk8RmrZUuiC7yLuIaQkqapuX/3Dt/6xjd455vvcLh3iO0sd45u862vfZPd+R57811sb+jqFiUi3iECpElKta34wx/8IdYHfvLue/zDf/RfUIwm9NbjQ6z9hRBorUmTlDRJ4v3rLNYYhIjYDQT6vsM6R5alzOdzTs/OCCGQ5zlFUZBlGXWzZb1ZIxKFyjRpmaGzTz/vf2mYQAjhHwD/4F/ol4Vgd3ePO3fusbxYsLO/w53X7vPh3/+7FOMR49EIa3ukJNZa1lNtK/IiJ0kFwcPV5TVCqAHEA2sswQVGw4WZTCJoY4yhN4b79x9wcXHBarXi6OiI0WiEazuSRJOUGYfykOl4TLXaAKCURgABcMbiehMBMKVhAB6FEORZzunVBZXtyMqCICR915HnGUWR40xHohUhBJSUFHmBsw5rLdZ6dnd2SZKUvjc4C11jEKRYk2D7jH/8j36P733v2wSv6DpPkgmmasbJ6QX5tOUrX7/D0fGYn/3olPeeXTNOFc5XoD1JmqK1jiWI0vH02lbsHRzwzXe+xSePn7DdVjR1Qz4AhmVRMp6OWW2WnJ695Ktf/Rq7810evv+Qy4sLrLEs19dsXMPBrR3absvmeoPOJLv7c06fX8bnyUtUGpjvzHFTxe7OPovLJZtFRdu25FlOkqakaUaSJqAEjWmQ9YZtU1NkBcV0xHg8pWkbnE0YT2f89CfvcnV1hQuSru+ZTyZMZhMW2wXr1YoXL5/y458UTGYJVXWB9Qsca/b2ZjR1zdOnlzz84JKTlx31RmCNxpmAc5BmEVR0NmD7Di0lr927T5YILs5P2Jvvo1AkMmFvZ5fT03OCd2xWG4QCISRSCIw3XFxcUOQjLq6uMMYhZIrSKUJoBCEC4EoipMADwvubveGHEkEASikIgbOzM54+e0rXdmidIFBIFDpJuLy8YFOt0XmKEwEvQWv1qdvvXxsw+ItLCEHfG6ptA0JwdXXFi4tTEq05ODigLHP0DRLa0/WGPM+ZzUZIJVivVyyXGwSCJMmAiEJroYBAlqW0bRvrpTSlbTqcDbz24DUeP3lMmuYorVBpQlEWqCwlLUuKLGO72EAQSKnQiSYfUFtnHcrFm9t0PW3TYowlNZaqaZF5Sp4XbJsG7z3z+ZzRqGR5Xd+gxzE4TbleLjG9wXtYXNX8xj/4L3FGsre7x9nJGtsb8mxE3wWePDrhcP+Ei7MVRwf7JKlkW2/ZbtfMj8fs7WtmO4r9w5ykWFEUsHfviPk04+K0ou86ur7l+vqavu/J84KdnR2scbR1y3Q0xTuYTcfUdUVZjliulzx9/pxiXLCpVkwmY3b3d6nqLUb1PHn2mNFB4N6DI45u7TPJC6bTEakcc32xpKlbsixlPC24c+ceUuYQFKurDQjBaDSiyAvyomB3f5/eWaqmIpews7NDVVUkQzdlsVyAcYzKEX3XYq3BGMtkMmdVNXgPfR9LPe8DbddRdy1JFzg7P8f5NfN5xmuv32Vvd48/+IOPWS46bA/V1sWTOE2RaYYQgu12S5GXPH3yhNViyXicY12LVgnVtuYHf/hDUIrryyuM6dFGkyQJIshYihoDPuCMwWeOQEClCXUbcYNpWYKzSK2GABDiZk8SlFKI4V4L3pMXOcY7+q5jsVjy8OHHeB8Dg0DErFgKrq7Osd6S5pJ1s8E6S5l+xoNA23Q0dUvXdTjnqdua06szxvtztJY0dQXWIiVU2y3buiNNU0ajCaNxMWzqBq0TkiTFewsqkCiNMQbnLJeXC7z3zGYzVqsVIQSstTx48Do7O7v0vUFaizE9nXfIVGO6nrpumJcTQoA0TcjzjG1VIwL0fU+aJDjvcd7jLYSuAwTbzZYgBU3X4ZylHBXkWWwvEcJNEBiVIy4ur+LNEgQnL2suLx/zlS/foes6dnZmZJmi7SqyNOPenXu0jWe9bCnLCc9fnJImY9JMcfv2ASFcsFhegzDs7efcOTzii2+9QXA95yc/wVlLZ3o26w1prrnz5puMxhMePvyIahuBTQJY40nTDGMtq9MTtvWav/RX/yIPHz5Ep4qdvTmffPJxBE3xtF3L8xdPuX14i2986atcnmxoNzWJVtTeI0VCkRUkKqO3gZMXL1ivY71/fOcW9+7eZW//gLsP7nN6ds7LsxOKScHO/pSLizPOX56yulqihWS72CBFPGm325r5fIZznjQpaFtD3V2yuN4gU0WWFdRVwxtv3OILX/grnJ19AkGwWm6wJmA7SJOcnXlB37aYTqCUZmc2xpmKk9NT9nZ2KfM5pjcsrhvSVLG/d0jTVjx78oS0LDk7OyNNNFmScPf2HbZVBJZN3xM8pKmC4ACPVimyUAigaxpSAQQZs8zhXsrznETHe9Aag1KKoigIbUM3tGwX1wuKPI+txRAQUlGUGavVmjRPkEkEpAmKTVN96v77TAQBIaA3hsUifqjlakGSpAghWa/XOGdIpSIhIvpaa956602+9vWvkOUpv7H8ddq2Q0qNUglpquhc7DtbY1itVzgf0f+6beKGznKyPEdIzcuXp8wnJeNUx8g/ndD3PW0df7fvLd57RuMxR3fv8O7PfkbXdigRUzekQGmNkJIkyzicT9m2DVVb46wl0Zo8zSAEvHWURYl3MaJX2y2mj63P4AJdC4mC5aImS1OKPAfR0fcb5vMxeZbx8cMnBJ/Qt5LgCtJRyTvf/QqzA3jy8pzd/V2U2AA1890Jo8mE0xenhCBJkiTW9l1HXqTs7R2wWC5p65hWelchhsxHSEXT1rRdh1aKv/JX/hJXV5d873vf4R/8P/8ztFY0m4ZkKimLMW3T46xDCEG13bK6akmznPEIhAysVxva7gkejTExO7r9pS/z7W+9w5e//BVmu7sUozF127Fer9GZZDQraNuKk+cvePiz9zl7ecLqaoUIgffffZ/peApeIKWGoICYSbaNISFBBM16UbG83iJwXJyvUVJgzSPOzq/Zmc8JPtDWGcvFFW3Tkuc5D157wOnJM5bXW4wx3H7tmKOjI9qmYjzOGI0LtvWaZy+e89GjRwgREAJu3Trk7bfe5uWLE7rOEJyP90WikAJs36PLBJynaRpypTDWIBMNw8HUdj1aaxKtY4dm6JAF79GvMgQR24g+BEQINzyKb37z6/zwhz8iBE+QEoRiSIg/dX0mggAAIdB1HYmUWGfo+w5aTdO3SAG6KEAqhJDkeYqUCu+h2tZ0nQHi34khJRJSxNrdOZq2pSzLmOorhTGOyXSKUopnz56zWq74zre+fkMACcGjdAJEklKaplhjkUIym81I04S+agegKuAFICUqTciKgvn+Lkm1pTvvEQG0jKSfuq4xxpBMxhjvMcZirYUgsL0jSVKkkKRacufWa2zWlwgse3sjprOMvi2wfc/JyQkESd8JdmcPCKLj7u371OaC8xcd8/EdUpGxXr1gcb3icTjl5bNTnIM8z5lMx/jg0EqzXq14+eKEtu3IsgKChABFMaKqN3RtvCF1olgulty+dcxkPKap61gWOc8oyZiMRozLlO265unjZ7RVT5mPkD5Hi4ymqdhWS9rOIlTG/v4hX/vyl/n2t77FW1/4Ans7u+gkBaXZUZpj6wlYbOgIYcr+dIe7B0esrhc024rnT56xXqz48pe/wmq54YOHHzIZT+k94BYINMIrpMhYLda8/7NP6I1FyhbhHWfikoAmS8ZsVmeslrFU0loiJWw2a5QW6FTTdRHI3Nvdo65SyjJlPCkoxzlJlnB6ccJyGzDecHi0R6ISri6v2CxXSAR4T9+1SCFIlCTYmB1kqaZMMzarWNYEwBNIkrgtrXOAIEkiHuUFyIFoFQI45yJhy1qUkEBgs1kznpRcLa8jES5AGMhbn7Y+E0FAKYXUAmt7ytGI8XjM1XqBMAYbItOOQgISa3uccTx//pLNZotzhtVqi3ceg0NgCGFgbIUwMK98vGBKA4KDgwMEgr7r6bqeumnYbitUqQkhUFc15XRKmmZ0xHZVXdU0Tc1icU0QIJTEW4HzAesDjoGdCGy3FX3fE4bTPdGaUVlSbTZorUiThLZp0EphTHy/RZ5jA2S6YDqZcPfWA95dnrGtFuwfzDg83KWrLacvlxAsk0mBlJq+SVEJ/OiP3kNqw8ULR+gWNE1Ls/W8fHFN35Sslw5rYtaVpSnWRebgyxcvuby4IMkKEh2QMp6mTdXSdzaSZTKFF5bf/q3fYj6b8bOfvku13eKtJUk0rgu0G4uysOm3NEnLtNjhcG8P10nyxKOlxNqOrCzZOzji/v0HfPd73+UrX/5y7MoAwdube0IqRQiKYAJ93yMRzGdzyiSln7Uc7uxQ5gV379zj5OSMNE14+vKcF2cXaKlRQiMibMfO/IBEObytSZOcamMxtiNNS4xtuLpcUzeKNMuZTiekScLl9SWHBzNgRr1qYhtPKpI0BQRd16EzjdISFwzjWUHvLCEYNpstL56fsK3WKCUJBLzt6VpPlhZkiWJvd5/ZbIfry0u26xV9b/AEsiJnNB7T9z1914EPKIZ0P1E3zMJXLcSm7qibirLIITg++OA9vvTlL7Jtt6zaCq0TILbhP219JoJAkmiUBCECSZIwnUwYjcYErbCmI3boJN5Hok3bW5zzLJeLm/adMR7nDCHE7oD3Hudd7OMPVMs0TdluK3Z2JU3TYp1DqwStUjabLbuTPbIsY1lt0UXBKB/TJs3NRa+rLU+ePCYEj0w0zln6VyQP51De49uWy8UitnSCQCBIk4TxaETfNhRFgdYaay2T8QTTW7wLTMYT1tuaRKUcHd2m7yNBpmkazk5PqbZbrLOcnZ+QJIHRSNJ1lsvzJbOdjO//3h9xfHxAs0r4+PKatquADELCeLRHt1UsNxuCjyknQN91rLdbrPWMxukN3Rok61WF0oIiS3HGkI1SPvnoEx7cv8eH7z2kqRqyNEdnCdtmSb0y9JsOnKERLWq3oLwzprWO1jWMRxNu3Tnm4PiI+6+9zvHxMa+//hrj6RhvenwApRK8j20xqROEkkgkeIG1Btd31Nst9XbDbDThi2+/yXg8oSgy9vf3ePbynD/44Y9p6pqL62s6F1vIB7sHTGcZpt/S9SuUdEidsV7VbLZbUp2Q7YzRKrIDpdRsNxt29uaMSs1ZfzEAziIi8dJT1RUZmrrZIlXgtdfvUrVb2q6irmKq70xsCyeJguDJsoSvfuVLA6Ud9g/2uTo7Q8pI+PF4pFJMp1MW19e0xoDzuN4QfCApUnSWDJwCjdYxWFnbk2gFODZbw87OnPHVmIv1CqlSCAHnPr0e+EwEASEjF73MC/q+pWniZumER1hDTMvBB48QcWNZayPP3HmEINawQtzMCUCIaH2iUEqzd3DAwf4BP333Z5yenjEajWNmICVpllM3MdrPplMW2w3eB8qypCtbsjRjPJ5wvriiXiyY7+/S9w6nBEIGnAcTPML06KDpTSSASCFIhtpOq1iYSSGwxiJCDFR919P3Pc5DohP2dndJU8XFxRlSCPK0YL2qefH8jFExp28r8hI8G5ABY8Z4K5FBEKygrwNN6+hdIMs1R4fHvP3227juIaur5yRJQpHn+OCp181wjVK0SmiNwRqHlALTGRJVoFA0XU2WaxbrBceHh1xdXpKohCLNGeUTrLG4xjKZFiB7tsslbiywXSQ8pUnGvft3+OrXv8zxnWPm+3uMxmPKMkd6DyqmzEF4nPOxm1COSFSGkopEJZi+pzcWa3pM17LoOkIIaCkgWA4Pdjk4OibNM46ODji/vOLRs6dcXF0RHCQqo7NbtMgYFym9tVxftngr2d8/IC+mtL1jvamRXpGkIFWgGBWkeRZbeFISvMCFgPWOarHGC8f91+4y3R9zduExfc+L59c3J68AUq1wxrMznfFv/bf+OmenZ/z6P/gNhLUsrq/iDIyI93jXdsO8xXCYhTCAxgEUSD20EZ2/wV+UiniCVJI8T7i6vqCqK3wAgSSIyEf4tPWZCAJaabIsQWnFdrHi6voKryVWhMgglENbLkCa5gQsm+2W8TgSc9qmJUmSm+fz3gIBpRUIwXgyZndvF6HiMMz5xQVzY5lOZ+gkIc1yqqrCmJ5yVESGWojcgCzLKcoRSaJwjx0RlgYnBGlZopTCtS0Ej/EO4SV5USIFOO/QUqGkjCQPa/He4Z2jKArSJKFpepRUhOCZ7+1y795tzs5eImRPkRcIAtt1zeK65u5X32I8HrHcbGj7DWkqSfSc8WQHY3Ns39J3zXDTS7SC8ShnOs1R2iLwpGnKdDqlaSJoKaVC65QQAqaLXAUtPRKFDBJ8xDRsb2mqDu98xDhkiu0NIpdMihnrzYajnbsIYXi+tezODugaS1nOuH07BoD7r99lNC3RaRJbYsGDj+/LDRlA2xm2VYvKMjJVIoIkUQ4TAt5aRPBIPHVV0bU91WaNUJo835IWY2azgl/53rforefhJ49474MPuF5cIoNklI8pihlCONy2oshnFKVCpRl5WbKpap6/fIa1nrIoWK2uKfICkDf1uXMeIQNZnrFYn5OUcPveMXW3pum2VJXl8mpJCJH8E5mrCuMNx4e73L9zTLfdcH5yynqxoKtrVFagVMSX2rZlsVgAr7C8+L9CSpx39KZHCElvDU3bcnR0zHq9oO8bVACd5Hz88UMW25oQNN6HAT/4jGcCSkXgzDmDD47edISgMYQY4YQaUmtJohV+SMu0TiBA35mbCSwfHCHEQJpnGQRPkiRst1tWyxXt0Fvuh2lAgUQIsM7SdV18HgHOxl6zlDJ2AlR8/iRNaNsW6z2znR0A6q7FhYB3DoFkMi7Y29mhazrOTk8A2Gw2OOfI0oyiLBiPx6RpRm88QWhG4yk7e/sI4dlsr8hyxcHBHCUTJCPqymF6h9KCpt0w3VEcHJSY2jKeCFbrntV6SVkoRtMZXd8gdGC7XfDs+Qcs1ycEDEqmeOdo25bgI2MRESctAeJwmidN0kgmqlt0pvDOMRmN6JqGV7OEfddTVxVFPiVPIDhNnqWU2ZT5dJfxaMqbb7zNm2+/xYPXH5CPU3SqkIlEBAc+4J3BmtgGq5uO1aai6Szj+W7M+oJACTlkBIpeCZw11NWGalthesN0vsNmtaTzgc46dnb3SbKCN167z3w25fnL5/R9zWiUIqXn/PwlWTpC6QmN6dnUFYhAmmnAYWyHdYq6qfAuTu51pqftWow1jMYZaaYZT0esqkvyqWKzXVO3Fadna4yFLCvIc421LSF4ppMRb75+j9OXzzk7eYkzPbUz7O3tUXcW6y1CSRIRS5+YGXgIA2YmwIYIJic6QQBaKW7fvk1vWpp6i1ISKQWbzRrrAiiNdxEb49Mhgc9GEHDWoKRAK0UlQCiF1BqMIVEJcrgJgosbwQ79fqV0TLtEjJJyGLmUSgx1vEAJRdc2nJy8pB64CFrHel4IYi3lI6UVKSPJwwe6tsX2Pd45zs5PGY1KkiQh0SmtMQQUQsXN0feGum4gBFQZB46+8KUv09Y1p2dneAeb1ZY00YwnE8ZlgU40bdfjg8dYw/7BPkma8eHH7xNUj1A509kcrQsOD8aslhXragnasn9rwle/fofj4x0+fm+FCzXT3YLGxGGat97+Ah8+fMhqtWJbL3l5+oxttQQZkFqy2W7YbGKPXmpNZwzBO7JMgwnYLmIuIcR/8tEIj2Vvb07ftwQcSaKwWmJ9h/OGIs85PT1nb2fMaDRmPJ5w//4dvvLlt9k/OiIvMnSaohKJFJYQPDiD62tM2+Cco1qvubpc4IKOgzQehI/97zRJcUmKDx7rDF3f0nc11aairrYIoQhK0ftA37WAYrazx3xcMvvC21hvSHNNbxom0wldZ/j4yTMeP3tK3VRYDF5AXqZIFet4KaHvu+EUttRdjRAeZEJrWma7U84WT9lWPoJ6WUFTX6FUynRaMipzrq86vHekWUKWZTx//ixOs946RAjJG29/gR/86Kd0fSRAjWdT1tuKruuBWOpqFTkFxnqCC3gV8a3xZEyWpzjX44OlKEfoRKATgQqghEIEUEikSj51/30mgkDXdaRSMZ5MOXl5jg+Q6gTl/C+05wJN19JZRxAKlaRY53DO0/V9vFgCpOJmbttZg9YJwXk6YwCP1HEqy9iermu5fXSEaRuW7TamlWmGVprttsINj9nWWzrbk6QZEkWuFJP5jLrZggvgHabvbkgbxjtEokhGJQbQQdFVhp3jHebTMQiPx3G5OOf04gzrwAbHxdkJm2bF0Z05Uiha01G3DeXuGJlYgmwpJvDdb36Hnf2UrnUkRct201LMCvb0jNfevM3erSn2k45ltaYcT9GqQKmUIDu88njjcMFBGGpxZ0FKRmVKCD1924GQccMZCzJDikBZZlT1hqLMKPKUtmtICklvKsajOf3GUvUNt4/2uXvvFm+/fZ/9/RFFLmO7LcsRKhC6Fm9qQt/gugrXNjETWC64PjtDFzPwHm8dIgiEkCiZ4IlZV2t7ggy4YDGmY3N5QZGXJOUErxRmaF8u+46iGDGdzxmPS9IyBz1mNJuzXC559OI5dbOl7WqqrsYGh2eYnPQO07VomaBUglAW41ucN1QXC7bVNbfv7VH3FW7TM57OGDcOJU8QKewdTZEhgJzh+o7Vesu7777PN77+Ve4/eI3d3UO88+zszPjpT35AKi27s4Kdgx02mxXBGUSI7EEpB/0AKyHEronUGiQsVpc0XQXKkeYSqT1Ke7QhXjsbW8Gf+Rahs3ZI+yXGWRByQKoV+MC4KCA4jOkw1iN0RlVVZNlQp3mPlLELoAYuQRiYea+Q/Ve8/zSLnYAsyViv16RpwsH+PovFJXXXc3R0TJHlLK4XOGtIdBJPJWPi++t69g4OefDaa/z03Z+gtcI7G78sQMrYPvrg4UM8gcb25DqjSAtuHR1hXYP1hk21ZLG6pO4qdncPMK7j/OKUvcM5k50Jm1XFcr3FGsdidY1zPYv1GToT3Lp7mxcnj/mjH3xMLkqUTsEa0lFGNk55dvqUy+U1y23H7VsJ3kq8k3g8QXpUqtBasd1UEakOgSRP6PuGvq8wtqEox/S9xxiDTiSIAMIDgdl8GgOI9jhhyIqEYpyQFjtopbh15xb3Htzh1q09tHZIaVGJQuoE74f0v9ri+wrfVXTVhqZtqZYrtssFuVd4awne45xAykAgvqT1MTW3PjIfjemQBIT3ONPjrEQ4ixYK03fYuqLZrhjt7DDd32M0n6GTHJSiHOXkeYpfOKqhxHM2isgIAX3XosuIulftGrUVbOstdbNGKMOd13fZ3d/Fe4/pA6YF7wR5nnB4vMvy8orXXr/H9cUlL1+c89EnT3nrrTeZznf5C3/+LyMQ/PQnf0AiLXkSKDJBqgXWxANKEElbCFAqZsMuaEDiQqBuarq+woWeLFdkRUKSDAFXxfkZbxwyCUNr809en4kgANC3HWu5QQg5pOseISTeOWazKV1Tx9nqYCPXWkZKMMQSIITIuo6KLj4y9aQcHhMiAUgpdJpS1TUheLbbDXVVsbuzC8B2s+X+/Ywsy0l0Qjcg0HZgLIYQ4skYAl3bxamtNOXEnUCIvW0pJc45Hj95TG8txlqCd+zuzTg63ufjRx/g6Wn7CmNb9g+m7B/sgDAcHM5JyoTryw3r5ZrD/VvcPThiu1pydX6OdRVHd2b87Kcf8OTFE548PuV49xZ7+wcY49huNjx/fsbl5RXbTUuqc0TQnJ9d0tRtJFB5G1WGiJ8lTdObdPPqcoENPTpROGdRWrG3t8vh4SHL1TXOerROyLOc1XqD0pptVTE9mA8qRRlvvPYa3/7G17lz+5iiyJAiItoq1QQ8zvbYvsP0La5tMPWWar1iu92yXm7p2gaRtti+iyUDr8gukSGXJSkiCIL1sV73kd4spMD0Lb3zeKUQaRoRdOdxW2i6lt5ZbAioPEcguH18m+VqxfV6zbZpY5RBgJBIpXHGRjaf8JycP2dTr/DB0bYVt+7scXx8xJ07R2w2Ff/0n/4uVxdrhI9dLi0km/WGg719uq5HiQTvHJ989IjpeId3vvEORV5wdnaGTiQ5Gf1AcZ/OJjR9fzMXoIepQqWJZaiMxKDe9NimjfoCeRqzvRC7VVGbwGKDj0zDz3omAJEd1W+2hGGs0lpLQJAmKso0qbgJpZTYEMjTlBgAJHKQF0u0JgRH27UIPHmao3Sc8kP8XMJpMplQb2uEEGy2W/Z391FKcXV9xXa7RSlFWZY0TYO1diBmhBsxh6urK04uL9g/3MUaQ55ltHV70+qJHYsO6z1KCKQClQg22xVNu6XpN3Qm1pezeU5RSpT23L6zz8NHT3n27BSB4GB+l1E+4eLkgmrboRPQMuPhBx/jMKSJwFnPqBixrjdcn29wJjIifS/Znc5JdcZqu8A7h5JQ1xWpjvJYsaWUoZSi6mo6E0jzhNnOlOvrDePxiMOjA2aznQimmhbbe5qqY7uuCELgeo8xjmKec3x4xDe//jW++bWvMh1lKGK7VqcpQscA7myPdxGDMH1PXdVUVcV6vWGz2dI2LTLvMV2HtQapIsYiQiRZTYqSTZbTC0UiFIlO8dZjnKXtO4w1oBNUyAnORzKXiyVaEJE5V0ynoAST0YzX7r3B9fWazbZhuVkTPDhimRmcozOxg+LWK3ZszWw6RWpPlmmWywWjUexgXJ5dsVo2FFmORHJ5fslquebF8xPWyzXHR/vU2w1PnzyjyMf8o9/8JxwdHoAUlJMJrm5BSoIQzHd3qDtD38XsU+skytwpgSRmtlIBwceumQ+EIOh6S3CWujZ0vUMlMYtFWKx0n7r3PhNB4NUH3Q5RzTkf+/0IpExp2hYlBNuqIclz1IBmSxlx6hBiT78oUparBd55kkRirMWYeCNJFVMo5xxpmtIMwhGXV5fcuXWHyXTC+cUL1us1SinyPL+ZGcjznODjxU+ShMVyxdVmSTHKCM6RpAlpGgFMQqA3hr6PohxaK0bjEvC8ePmMbbWmMVvSTDLfHaM0TGclxgYWqwvOz85ZXtcUecbqesuJOhsovwGcAifJ05Lb9w7Zrt7nYG+PyXjKcrVB+pTtItJ/UzlilE8YFxPaUc9y1UV2m4eu7yI3Q0vavmMyGVOqgjfnc1zoCSKQphEDCUHQ95bJZMbVdc9mXTGdzJmMplxeXZOnBTJIbh/d4utf/QpvPrjPuMxIVKQfqyQhKQqEkuA8wRusaQnDNFzMxiL1uxs4E4mJ3ZvetCQiiW1Z5xDekmvFtCipVUKhU3xmWTZLmrbB2h6CJYQUS+RiQAxU1vRYN2SLCPKyxBnLKB9z/+4DrpcrqrrBOo+U6kYDoe8H6m4KrdmiGsd0MkJIzwfvv4+znjKf0NUGbCDPMvZ29lBSsre7z9XFFUpIjo4PObOOrml58ugpZy8u+cY3vsL3fvWb5KMRjfUUkwmdNdRNO6Tv8lWDEGMd1lnCoAASKfISpMQHgfOCujaRbOUELoDWIjIWg8eE/lP333/tICCEuAf8n4EjYrn9t0II/1shxP8c+B8BF8Ov/geDtsCnrldCHlXTIQdqr9ZxOMLaKB8WaacgrCPJM/reIqXH+x5rLXt7O0gV63GlRJzjNharHckQBGLPNJ7o4/GYtm64ul7Q9jG19wObrigK1us1ZVnG9Mo5xqMpWZax2WzIsozdZIe2a8mTFGN+Lt4Jgq7p2Gy3BATHR4fs7+8xGhcslxdst2t0JpjvzCnHBcvVGh8ci+WSlydnNPXAxEPTVh3XLFBC44NECkWiMqbjOXeO79B/xXP/1htcXq6xvSNTBYvlBjUpGGVT5pNddmY7tHXDxeVLsjKlLEtc71jWqyiKGWA8HlGUBfce3GWxXnB+eUk5GuOcpyhKtE7p+wZrPMEL9vcOOTw85Dd/859QFGNGxZi9nV0OdneYjUpSIbCmw3tPmReIqJkW24KuB2eQweNtFMi0xg3kF4+3Hu/8gAlYGLoEtt5SLa8w2zXKGLTzJEAiBbZvsX0L2OE14twBAYRUuK6ncxC6nhAEWVaQyISu7eltz95sjzfuv8lm23C5vMIRbmS+dCZIU81kmuNdx2K1IEkcTVtSrSu2m5ZcjxBekCc5d2/d5eB4j850JDLh8vSSg+NDpuMZfj+wuLpmuVjRd1eMRjmHd/dYrDd4IUjSjIvrFZdXK6TUA/s14ImZsvVu0CiI5UB41QuXGu8FbRsnbZXM0FohtCSVkrbraPvmX30QACzwPw0h/EAIMQH+UAjxnw9/978JIfwv/0Wf6BV4p5RiVJb0xpONSsbjKcvFNXmWMJtMuHP7Du9/9BE6TTg62sc5T1XVWGvJ8wLretI0xXsTSUB5SZHlIARdbTBdj3OevCgYjyckKuH66orlesVqs4aBrDEajRBCsLOzw2q1YrVasbuzz/7+PsvlEqli0ArE4aKGehAJicQgiFNdxnqmkymHB4c026gs61xAhUjNjbMQjtOzUx49vqJtG0wvSVQsgZRSWGOZTsaEkDGbxM6FJ0ErzVe//AWW1w1npy+HfnpMm3GSLC+YlBNGZQHBMipTdKoRUqATTddZrHUUeYaxkfJ7eXXFpt5EFWQT2X5ZlmGNY7VYExwUxRhnPF/6wlf4w9//EVJqsjQnzzImo5JMS2SIIimdMeRxkAOcITiL8D3J8PGliJ0cKVVkhLqY1nrnIldBgRYGWzcsT0+4evGc6vKabrul3mzp2pq+a5DBkadRbMP1fQSFccPUpiRYi20tVsRBs01WRr6E1NjOotOEO8d3aDtD+PgDzheXKKnRRUKWZ0ymOeVI8/LFC2zoMa6lqtbkecne7IiuDrRbT7Vp2d854N7d2zx5+pTNekPfWYKFs9ML8PH69b3DuQ3X19f8g1//f3GxumQ8HUOyjTqTSUrddEgZMSZEIPK2PFqGYchJDgQgiVYJCEVvHalWkT/jAkpEodLa1nT9LyETCCGcACfDv2+EEO8Rpcb/q69BqCMEGI+nuCBJi4K9/X3qaouUkv39fd566y0+efoElSR885vfJARYrVaD6GNN10sODg64urpgPJmAi7z+MIxa/hxljYo+r7/2On3bcXR8TJZpZtOC2WxGnucRMNNR3swOZcWrYKW1pu0byklJXTVMZ1O00sgQZaDm0yl5llO3LXu7O4zKEdvVAj8wuqJkNVxcXHNxtWZ3bw5B0rYpcajQkSjNznyKt5ZRnrFeXXF0eBfwVHXNYrHEe8uH73+C7QWjcocqdIzyEmccXlvW6yV7exOk9Lzx5gOChuVyQd8Ybt0+wpvAermiN4ZiFAVbNpsNy9WGqgrMZ3t8/PEjvI+BKMsSvO9472cf8Bf/wl9hZ2eXzbqmHDKBnfmUSZmjgsN2Lb118TQbaNzgEKEnkR4XHJIBMxEqAnivhlxCQAki595VVIsLzp9/zPOHH3P1/IS+egUSe1pnEFpSpLEP3hjw1iAkQ5sxoILAm47eW5yXBBTGCeb7RygvMU1HUeQ8uHOP88sLnr94icczGk2YzqakuSDNPM5DliXs7k1wpiPInLt37yNdzsH8Ni9fvIxCtEKyXCxYrzaUxYi+t6yX14xH45iFjiZMpzOObx3wez/8fZx22PWWzgpm8z2K0YzmxUkMAkoShpkCHxw+WKTKo3S9jZlANgCdzkZ+BEHhbEC4WA643mPbX/IAkRDiNeAd4PeAPw/8+0KI/wHwB8RsYfHPfTySPC+4fPyYN9/8IkJpPnj4EVfXi9jzTzWPHz/h2dOnWGOp2g0/+cmPOTo6jqIRdc16vaBta4ztoyZbknC9WdA1UdoLAWkSU0A5nNbHx8esV2tu3b7NxcUZb99+m93dPZ4/f854PL4Z4CmKqHO/Xq+RUjEdj6FVbKstwTnG4z2+9uWvcX1xhbOW41u32dvf53qx4OrqmpPTc7rGoFVOEILRtGRUjLh16x5Hxz3j6Yi7d9+k6TzVpiNYgTOeO8fHPHz/A/YPdvjSlx4Q6Amy42rpePTok4Fe7oegpZhNxtw+mnN6eklVbbm66NnbLUEYZjt7jOcz0izj7OVZHLttYbNtUTJQlqM4dt20tG2H9wnbbYWxHW+9+TptU+O9w7RRkOQf/cN/zPJ6Q9d23L97n9u371CkKZmW9HUVuRNm0OUngLO4vsHWG5JgEMFFtZ3BS8C5gDVRIHZUlpRlgVKB1fkp588ecfn8CVcvn/H80SO6TU2aZYwmI1Se4b1EyTCIz0pUkiAHPcfYjQgIPLhAs91St5a280iRUU7G9G2LMIbRqOC1O/e5ur7merMCJNW2xrmIPd2+NWdnXrDdLAg++gD0rWWUpezu7pHqjOX6msdPP2S1XjMZT3j9tSNm4xnv/vQ9hABnIvX829/5NsvVNUgRAdYAbWc4ykd4H0iTlLwoYeDHCOlvpMW0VvSD3uVsOiPPCq4urzCdpcxHUa/SBKpFhc9yzMYwHY9ZsP7lBAEhxBj4vwH/kxDCWgjxvwP+Q2Lo/w+B/xXwP/wTHnfjOzAqY9+/76IEd6FTiqJkvd6wt7MTNQQXMV2WSUoySEA1TctiseLk5ITNZoW1PSE40iy2rro+Uj2LIidJEqxxFGUBIXB5eckf/uEfstluOL+85Pz0JZm+hzGWxWKBMYa6jpJkrzKR9XrNbDZFpynX1Xq40SRXl5dkKoktNKk4PzunrqIYx2KxREIcfLGGum1I84K28czmGWWZMyonzGcJWVmSqoLpZEZTtbx4+gyhAse3Drhz54iz8xckWc7zM0HfO77z3XdoqoYf//BdglMkyZjj40OauqUsM+bzEVIGpIoSa5PJlM22oe0NTdUzm+5weHjAdrumbiI9eGd3j+l8D8hxJjCbTfjKV77Ee+/9jK5tKPcKghM8fPgRu/MD7ty6y2QyRWnFfGeG0J6+3UadByeQWkcdRttBVyFtR9/XVOsN6+WSum7wXqCkJs9LFJLd3V2KIsO1NZfPHnH94gnL8xM21xe01YambmmaGp0oRkWGCAHT9wgpCIAahGYJagDGDM4YTB/orcP3gcCa6+xiGMaxdE0NwP3bd+mt4Qc//REXi2tQAilSjg73ODqacHw84fu//3ukacl22bJcrPFlxu58j7t3Z6zfv+bZs6cEAdPJLlmW8ebbX2B3/5DTkzMefvgBR7eOSLKEn7z7U4KILVDvoqp21GgIzCYzXAgYZ8izHKsVzkcviqauEEJS5DnTyYQsyVheLaiqFknK7u4M21mCNYgehIXQ/ZIyASFEMgSA/yiE8H8HCCGc/cLf/23g7/1Jj/1F34GD3WlouxalFCcnJwiVsre/T9dH0E+lsQb2zuOFQ2AJIcTT7mpB27ZorYkEaUmapbEVNqT0sTUk2dubUxQFL56/oK4bVusNQkk6Y1EicHFxweXF5U2L8tV8wavWYJIkN3Lh282GclwQhGe7XPHJ9hNmkxmJ0myreuAMKAJxhqFrW/I8BSFpmp7Fcs3J+QW9Neg0oe8N5agc1JIlGgkuOgz97P13ubg6ZVstefOt+4yKMU9fXPL4yXP6tqMzlumkwLSOp48fcXV5xa1bx9y6fczV9TnL9Rr18iWrqsUYT5GPaH3HdDJDIjk/v6Bua3b2d9jZ3Wc0mXB0fJ+93QNGRU7X1jx78pj5dMqf+5U/y+/89u/y/NkLvvDmW0P92jCdzch3dwnVFbbvqLZrKKbkWUawhn6zpl9dI8yW5fUlZydnXF1cRzBL5QShSZIUpRIODg9j23V9zfmLZ2wvL6jXK9qmAanIRiOc93TOI9t+uD9ShJQIJFIEtIruTwJB13ucb+k7E4OABC9q1str8jwlyXP6psE6w0zuc//4DtvtlrbtqJqGo90j3nztdZxf8/zZC85Ot+ztKpxVnJ2d045AoNhWgsurM9yr+RUJ7/7sZ3z08RMmoynz+ZzeGkaTCTLRPHt5SjZNsD6Q6ISyHNFUNZt1RZpkCB1p6cioB5BoTUfAmo5ROUYKwWa1ZOOhrreY1pPPFaZtyJKUrjUIJchVhu9+CS1CESd2/o/AeyGE//Uv/PmtAS8A+O8AP/0XeDLCMOX07NkLPJJbd+4gpBwGJvQgdhGZhG3T8OzZM5SK035FUbLdrmmalp3dGbduHeK9xfnIlDp58RLb93z5i1+GAB89/CjahIUQ5/uThDxVOBsHa3Z2dnAuagS8knG6vr5mZ2eHDz78kLbv6fqeUpYIL8iyHNv29H1Haxuc8yQIpNLowe9AiIB1lizNEFKz3lQEESKnQSmquibPs1gHC8jSDN9bbh8d8fjxM6q6outrggjkhUbKnB//6H36zjOfjliuNuAkV+cLQhBcXSfsHe5wtVhweXnN2cUVLijm813yNOf6asHVxYJRMSbLS5IsxbrAy9Mz5PkFP/rR+3E+QwrGo5KuafDW8Zu/+ZtcXVzRNh2XlxfMZ3scHx9z77UHCCWwTcV2s2S1XLI72UXoBNM2NNsN6/MTXLPk7PSE09Nz1uua4DVZMUXqHIdCacFsPkdrzWK9Yn15Tb+pCQ6C1HidkJQlyaDqZESCIAGZIpRG4JDCR1pIcEgdIvkrNYTK0vWGEBlMtPWGapMz0zuEYUBISsXB7Vu887VvYp3n3ffe4/L0ih/1FbfuTKnqFfN5yhfffpvTp2uKZB/bS37rt36LQEdRSoSCIi/41jvf4pNPnvHB+x/T9ZbFakXbd5xfX6JyhcWRoJEyIUkyUp3RNR31tsZnniRLcd7Qe4MPHu9NFKR1jkRqgg/0vUEMMxb37x1weLDP2elp7IjlOeOi/GMH2r/SIECs/f9d4CdCiB8Of/YfAP+OEOJbxHLgMfA//v8ZAxDUdXOjEdD2louLSxCS8Ww0OPZEcQ+daIKUw8SfIc9LZrMZ4Oi6erAji8wuFwLHt26hE83yekFd1/RdT5ZlBHqapo2bryxx3tN07Y3O+ytdgld6btfX19y5cwcBUS9ASpIkpWm3QGR2WeswXYeSOkbwECiyDOd7kmlOXTeEILA20lIDAiGiOERRCJSOYFffd5RlROHrtuf41h2M6UnTktWqxYWSotilahzQ47xmuaw43DtkMov+C0przs4v2W5bvNf44NFphlQJaVpQFobVcs11u0JrRTEqkASc8TgZSLOEzrR0dYPp26hGZKPBihKa3fkO15dX7M73+dJXvspoZwdfn7O+POfxJx9xtW44ePBWZHJahwa67Zbl+Usuz89YL1c0jUXIHKktuA4bJHmSoAW0zZbriysWF0tC39B7gRUJaweu6pA6JS8KdDrBa03vBdpLtBQIPMZbhItkGp2mFMUIvTV0/QYbXBwWU4GmzhmVOb5vI14kJJu8YPfoiO987R2yJOfpi+dIGfjS21+lanZ5+PCn3Ltzh3l5l+0Knj+7YFtXZIWn7i3lKMd6WK6XuODiiHDfRi9BZzm/PGdTLxnPclSW4ojtX2ssznr2dyP3o2oqtnWUttdaRw8MF2gqjwgbskRT5gV11aNlwoN7d5BS8K1vfp1PPnpErxuKvGCzXqOTXwJjMITwz+BmqvQX17+Y18Aff67ILNMaGRQuxI02GU+jMKb3FOUIpSTtwOATMrq1GGO4uDinbeuYUYRAVdVM52OWl1dkRc5kOmW1XPHhhx8iiG0vKRWdieo9bd/juxZZJKiBXpkkCZPJmKZpo/SYjOPIt2/fwb18Qbu+Rg8sxr7vSaUe6MtRHUlJhXeerm1Ic8nB0R5JknJ1veDps+coLVFCYvEwGE9YZ0iyBNd37Ozss/vGLg/f/xDfWySQ5hmlSBiLnKbrMb0eVHYz5vMJiCQ69yQp9+7f5/HTpzStJYgMnUh0mmCMoxU9OsmYTudxFNsYemMJwmNsvGl1opFIdvf3wFmaumI2nWKUpdnU6NGEJM353ne+w1e/9OWBvea5ujzn0aNPUNmYyXSGM57NeoPfbpHOkIhAkSeMyhzTxZapsw45yGAhRHTvuQicn56zXdd4a3AqoXKSRetYVTW9C5TFiP15YGc0YTIekTuAMPA1IMQjMo45ZClapxhnafo+qhbpQPCRYKREoK+raAsmJFqnHN69wztf+xbz2T5pmTAfj0h0y62j2+RZQZt4PvnkQyajfb79nXd4cfIRV4uXyFTRG8sP/ugHjEZz5rtzmqajqium03EcSfYN09mE1WCAo1VUovLWkZUZs+mU0ahELxVXyyvkIM0+KvJh5kNgjSF4T1mkCODF86eMypK7t24xm44xeUKzrWn6mrzIP3X/fSYYgyH4oX2n6dto9aWkpByNbkw9dnd3WS6uWV9f46UgzwqkFFFium4oywiyeW/p+oa6khhrWC6X7M530VpzebWkSBP6tkMlCdbF9uFmuwFjmBUzoiuyiRtZxVr9FTNxsVjwxhtvcH51SQhhmF78uatQCNE5WSt9o3rU1DXj2Zx7944ZjSdUP9mwrTZondDZgduNQCfR7GO7rcmKkvFkxny+R1N3OOuYjWdUVYuxsLt7hBQFKjFsq2uUADnNWS1XSALTSUSMTe9oW0tvPUmmSfM0BtUg2G4qbG9IdErTNHSuJy8ysqxEZ5o0TaiqLWmWMClnnDxvWSyvGBdTdnd3sL1lUmZ899vfJZuM8b7Ddg1nZ6dU2zWv3bnPdH8P5xyb9Ybq9BS7WpJpye3jQ/J8hJJrhCjIx7sIlUU1pMkkDmqZPs4vqAzTB7bGsax7rhvLsrFsmw4WNWdXWw5nO9y9fcy8TCiSAHmC0lF0NoiAZyDZ6DhNZ42hbVuyXOJsT3CGIkujPHrb4o2lbzs2yzUeye5sl3I6ot6cI7Tk6PCI58+e8+zJmqru+MbXX+f5i0e8ODllvl8yHo+RuufZszM8CiEyVps1OtGxFesavHc478iLgiwbgRXIIAk+zrAoqRlPxwghaJoGZSXTScmoLCiziHUtrpdsNlvefvMtgvf88I8eMZ83/OTHPyLNEu7evcVPf/pTHJ40/3Szsc9EEEAINtWW3kWXHCcsnYkWYlIpbBsNPISQN5ssy2J6LYZ+crQI8wgRkDLKNGVJRt/2XF5c0nWGREUihbUeqQWmt6RZhgiQ5XlkZlnLer0eCEPqxqvAmjhRN51OCd6RJJq2rmI9pgSd7QkmTr7VzZbUpgOOERiXJbdv3+bs/JxnT58hJRgXuw65SqmaFkfsjOzOdzk4PubF8xdcXy7oBymyxSoyGJVKkColzSCpW/K0jDJTCIqijO8JwZPHT6mqFmchOIE1AW89OtcEF1VpgwvszKPIifYJHk/fm8jDbxvSNMEZy2azxToPXtG2HVqmeB/48te+ymtf+wreWZQKrFeXnJw+R+qUo3uvkxUlpjVoCdW24fpixc5I8uD1I6Qq0HrMbPeI3cO7tD0stxXZaMR8d04gMJ/NuSjHdL2jrisW24ZNbamMp3Fge0/dVlSNo3Oeu7sjdkcJwheQKxIZGYSCEBWrtSRNEoLoaY0haZvBrbpif7dkVBSs1xesrq8pxlO6pgUd/RLWizWdq5nuZIyyHfpMk6eWL7z9AKUVnzx6dNPqDB5MZ9AyWpFZ05Ml0fHp6vKSclIgNWid8q1vf4fr5YYXT1/QtS0qiWIil1cXLNcL6qahqTvKUclm3VBvG8Czv7/HeDJBSkU5ih2v+a4izzRtWzGZHnD33m1+9OM/IskSxpMC+JM79Z+JIOBDQKUaWzcoAShNsLCpagiBnekUrTPaxqB1SjmaxJ6pD+RJnIhr2watYofAe0tgkA2Xgr6NnvM6SZA6YbNZEqRib2ePqmlwvSPJcjbbGo0gSXN8EFHoRGvqugYE69USgkcQCMaQlhlXl1dDUMrofQwCTbslhJxxOaLMc+7fvo/tAu//7COurleoJKVtmkH2GzKdRj6EC2RKs12u2Gw2bNcb0kTjBwCzqRtQnq6rSbMUJQNdtYysv76lrWvGZclms2G9qamrBp2keGsIpsfUAZvowQFYILWis+0wLqyZzCdst9uIvyiJCIrGG8oixxuBCAqd5iyWW15/8Dp/6d/4N8gnI4ypsLbh6vwpSgbyYs6DN76OEAprNzx99JDf+i9+l5fPn/Hdd77AwTHopODBW/eZ37pHUkxYb2psnlKOxkxnM6zpyfOMvYN9OmMwizVt0yNQmL7HO01W5KgBH3p+foGsF4h5Qa6Oo2NT34PryLVGhkCqBGmSorTBiwBSYQfJrqapUTKQpgrT1SwXl6giZTTbodquGE2nhG2HDgmL83OWK8trd9/i4nJFtV3S1A1lPiWTCXuzQ3x3yf2vvYbpLB9/9ITbe/vsHuzzw5/8mLbqKCYlzknmu/ssN1us71GZoK1bsjRnW29xdXTUSpIxXQtZnrDebDG2QWclZZFi8Xz05Al7u1OO7uzjrGO13tCYlh/+6MdxEMo7FovVp+6/z0YQcC72S4WIDD+hSbIMHwR923Fll5x1Ld5asrLA2Di5Zq1FK4lUgixL4obxjraLRgwEFQODBhPNAXAuUJQjsrQgzTK61mCMoalbgu9I04RmyDy0fuVg5AZH4aiIk+cZZZFjjeGrX/0KxhgePnwY5cVCGJh1FucMfS/oO8PV+ZKTlxeYztH2Fk8MSlmSUuQFWkrauqGtGhwNYbAyD+GVZLohSRXg6fomTiZKKFKN7VrwljyLJ3RV1XRtj3eeLJWgYschUSpyFrxDyjBYuFucN8gQlZ20jr31rBhHuWuhcb3H2UCaJBAURTHiK1//Oq+9/TYicn8R3pGngdmkZDq6zc7+bZyAZ08e8g9//e/z/d/+KSQF9994jU1jGJU55XROPt/BC019vaTqW3YO9tCJoqniOLHzBjPIjwkf1XKCjQBmmgwO1sFj+4613bCjeppqjEo8CoMKPdJKBJpUDUpSQg6AnSAIGYVpujhKnCaKYD3OdXRtTT4ZU5RZVAdKCrbrlsuzhjQrKLIJx0cF6+2GRGtWyw5jLQ/uFaig2Jnu8Ozxc8Z5zle++EWyouSf/bM/Yu9WSZqWzHd34pThegXCo7OEelmxbSoECqRCKk2SpvSdpRzN6X2gXXdsqobOtFgb/TOX6yVlWdJ7x6auB42M60FqL9yocv9J6zMRBJx3ICIwaH0cKEpkGnXe1Zi2qel7gxIQfMBZg3U2KgQZg/SvRnijPZMa2ifRrSjOvysZuQUCyMpR5A94P9hBq2G2XsUTvTdxA2XZoFkQV9d2LJdLtNZMJ1OuVwsODg6joWb+LLrAmChEEsdckygZfnYO5xes1+uomycEeqAfI6LkepFm2K6nMT3uF/DWqKQc68KyLAefgsHZ2A3ljBAkSRSNMMOAVdU0CCkQEtIsQSqJSiOQ6V0stcQgx+5DHMXt+/6PtUX7tkdIRdu2CCFJ0wznPLfu3OY73/kO+4cH4KPqk7cdk1HGuMiYzY6RSrK4POfjh+/x5OOPWS8XzA4KhNL0TjBOMlReIpTGWse6WlO3NSJPCTjaekvbVGy2G6pqi+07RPBoAokQdMFhuwZvJcIZEg15llCOcoQMtHWDkgYVOoyPLsfOZUAMqsYavI9tZ+fjgRJl7CRRGDqa4fRdx7gYcXG1oKprzs9PWa/XfPd736auG9I8Y293j7Is8SEwm+5wcnLGarnmVw6O+OjDj9nb3+fP/Nk/y8XVFZNpzmg05sFrr5GXIz558hCwTEYlOzs7TEZjzk4vqLYtQQiCBCUVOgBEdeU8Swf9Qcmto2OEDJyevMS7yPzUUpOmGY2sUKnGdQ75zzEk/aVYk/9XXSGEQXc+in4KiKd7ktA0NV3TDMrBRF75KwNGKQZuv6PvY8uv7/qbYPDK7feVj2CSxM3gXKS09gOwl+f54BpcUBTFzQaRUsY5biGiDxyBR48eRavxEFuIT5484erqitlszmQyIc8LfIAki6zGw8MjAJ4+ewZEu7L5fI5O4lxC23bRjtvaYfRY3+gXvNrskQgVHWe6rmM0GLS0XYfznjTLowiGBxDRJSlLyYoUZEAnijRL4pjzsNGVUtHJhhBFV3w8DV8Fmb7rb6YjnXMUeT7QreHunTu88eabZHlsG0rA9R2jTJMoyLXCVBsW56fYvuX1B3c43NvB9R1JklDO5ozmeySjMV7EdN5aS6IlUkeTEtvV9G1NW9c4Z0m0ItWKIlHMypRxqpCuRfQ1uQ4czsfcOtrj8HCfUVmgB51AQdQJrJo6CocOk4nRoy/eT68ODO88YRje9YNkXNc2OBspxXW95eTkhJcvX1DXNSrRLFcrxtMJ09mMB2+8wXxvl4BgPJ0ynkxxITCZRbq28568zOh7uH3nDpvthvVqTd92tHWLNZZbx7cpigJjzSAVbgnCRdHYajW8lzL6YmYZx8e3yNMcZwOrRU2ZjZhPZjR1F6lzUZsMof7/QFQk9uWHgTMXvQbG5Sh++ZMRTVVFO6i8QEg5iIrGGYC4aQTOO5wLryTbh577MEuQpkgph83fIIW+OZWTJEXrBCmjUo33nuQXbvosy+Kma1pOT0/xRH07KSUnJydDyzFKmCkp8SpqCqgg+MY3vkFvLD/78AOyLMWG6IQUfMAN8uPWmngSKUWiJLb7+UZ9FRCSJLlRVM6yGLBMb5FIjI2ciCRN2Ww25N4xmU5u2I3IyN+31t4MVAkpCYJBmk0iVZTVfiWiYgbFW2ejlVueZbRty+7uHm+9/Rb7+3txSs97lArg4zReqiR9WyNMz6QsePutN9hJCkbpDhfLmi9+6Ysc3r3PeDohmcwib9570jShzFMS6fF9g+sbmu2armvRSjEeFUx6j0wCKonBZlt7pIDJqORwZ8peKSmyBBToNGFUjnC9pJWequrouoZAgk412lrEoEQVV/w+CDHbDN4PvAlDW9fsHR2x3W64vt7B2J7Vek3vDFeLBTJN+ejRI4pRSUlB1xu0Unz0ySfUbcdiueLv/Mf/MZdXazpjGBcCayPQPZ9Mca6l2m6RSA4P9vn4k0/wwZFqOfha9ARB1FdQasCJPM5YLs/PWS6WeONpa0vXGJzxnJ9fIBWEQZfjM68xCAIhFEIEtIoThVGxJ+VrX/sK11dXPH/6FGejyShwI5EtRNQOEEphbcB7hxjGkqVSN6QfOQSOEOLJhhSDg/FQUsiEEBzO2T+2AX0IjEYj0jQdCDOW3hiCDNy6e4ezs1Oapok8hyFDybMszrCbns4Y1psN1jlk0Oghu3mlayCV/PnJT9SXj4YS0YVWqehh+IsTjOv1OkqFM/gweI+SmjRN6bortlXFZDKmbVu6vhu0FCzO25tJvUAMkq/ciGSQNwGQICL1dnBKMsbQth2m73nzzTf46te+ynQ2vSlVgo88BqHi6Gq1rZBKMZqMEexTOIn4Xo6TOW997cvM9vdIigw5aDEAEWfJUpLgaLuGrt5Qb1d0bRMHarSmzBJUEj38UhWYlTE7GJU581HOWHukjLyAPEsZlQUhBU2g7Sy9bbCRJ4TSIuomDidPeKVuHA9ORAgoIQjW0Gw3dJMxeztz7t+/z2Q6oShLqqbherlitd1S1TVt3/Otb73Ddr3k3Z/8hA8/+pg0j3biHz18jEehMk3VbKiqil/5lV/h9377n7JeXSFHcOv4OA5y2SjtlmbR5LZt4yBWEHYw2R3mDJzj0ScvaOuWPNOkiebi/JJq2yG1QyUDuY5XvoZ/8vqMBIHIGpRDLaBlwPvY6tuZT3n+9AlCCqaTCZ2xEZ33brgJo1iIHE51IaM+nE70UP/aYfNELv+rNFgKQTkq6DvDdlsBjjSJ0tKvZtyjs4sg0SnBE7EGBcp70jyLuMDVNU3bIZXC2DgaKzKF0gnBOj748CFVXeN8oOsNKtEY08e5AmN5NWlrnY+BYpBLT9OUPM//2DjzqyBwfn5OWZYxe1GaclyAUHQmqgabATNx3pLm0QKtqmpCL26ARk+8xlHaPiBcIM01SQqmNwgi5yEMrk8hBG7dusU773yLt996kyTPgFdScAbBzzUSqqZDZgV5kSFlh+4hT/fJp/tkO2NknoHWURHHxawk9r8ThOkwTUWzXSODRwlJ6zqE0OSJRCHJUygSAeTkqSbVkkxDrjRKBMLwfSMi6SnLUrIsJYSatm8wLvoDvrLliTLmbtD4j4Yh1ju8NdiuAynZrpaMZzPKIse4CVVVYUPg2fMTmrZhOpsjpOStt96mbxt+65/9PmfnC3Z2pjgPk/mc5SpqNRwcH/PFL36Rb3/rHR49fJ/9nRkHB3vcuXeHl6cndG0bqeZSkKSK3vZx2hKH7S1OBEbFBO8ltt/grEPlOWkmWa8rbO8pJxkh+MG41w8S5n/y+kwEgRDCcCKI6KI6ZGjVes2zp09pmpqiyHHGorxHJxpr+0FiSdD1ZrAhizW8sRaPBx/TxThJxk1GoAam32hUkmjLZrPBWIMeZhHEEFhihiJuTEhAYI0jy3LKsuT66pquN4POocJ5j3Wepm0RPiA9XF5dY6xFaj2UOh41bGwlVRTf6A1S6WFzuoETIW7e72g0usEDtNaRPKIU5aikraJM2raK/vNpmuJczD6cs0wmY2bzGdZZmrbjlTqzH1RpXr0XISSj0RgfAuv1Ol4vAlmakacZZVHwne98m69//Wvs7O9BiK5BEJ2JE5US0DgUvfOItATZEXRKUo5Jkox8vosoM1ASkUQ9SCGjkGaiRmTC45stfV3R1xXT8ZjtbEpvlngEZZ5i49cCuYRgybRCyYDEk6hIxUZJhIgAcpLEwFmWJUlaYVyFdfG7DM4jGSTohY2goBAoCV1v6JsW5QIIaLQizVMkgaau+eiTR4znO4CIvhNNy917t+n7nu9//w/ZbGuUikCt2dYYZ/EhxBHocsRqueThhx9ysL+PaRv+7J/9c/jg+cm7P40CojbqQGYqQ6eSIBxeR85HonVkDDpHmWdoGS3vgg8ILxiPRkgl6H073MPyjwHc/5/rMxEEXsmICSkRQdA1TUy3tutB9jueysuqiqehFLF3PYBnznuUVpEBODxnFIockOvhJC3L0Q3glqbJUAp0pFmCIGCduwFcXv2eUppqeF03zMhnRY6UgvVmi7NRh5DhtZ13hNbhrSNVOpqmCIFQEmcdwUQA8BX+n+dR+egXBU2TJLlhLbpBUXc8HgOgtabvI2iXZhnVtqbt4vBSnudkRU7XBYzpqJvIJ2i6BheiH11vzXCtY7YRQsQKsjzn3v37UaRluxlcfQV5UVCkKW+/+SZvv/0WR8dHpHkWuQcidhak0lgjkWlJ3UMx3cWno0H0syAZaegTZJohsjx+R1JEYwytwCmCiVLkzWbD4uqKrmmim/NozHoTNQhTrUiEIMpBRBkxLQNKxtRdSoEfVHiEjPMZQsS5jjTLInYjmvgdhSEQDPU/r34OHhCxFPAWZwRtHZV78zwlS3OctVxdL1hua46OjylGJe+9/z511fDBBx/x7rvvkeXpgGGVVHWNtVH0VCrFfD7n7PSMjz78kMm4YGc2iXR1D+en51RVEyXVjBl8LQXKC6yIIG8cOY4ybNa6m8NFCk1RlGRZTmfbaPDqXuE2Guj+xP33mQgChCgInGiFNxYGlV5nLdGFRcVayFlSlaC1JMtSur6LAJwSN5N6N7tLRJlq7x3BBbphVDlCCYEkSWNHYWDGCSHA20hCgpua/ZXkWPz7KCcmRLQkT9OUUG2jOGaaxpp+iNDWmKG8EdHow0W1Y2stwYabEzh5Ne4MSCXp2j46ARE3/Gq1QgjBeDy+eW/e+xsNxCgjHlt+Ok2GGjBFJ4qqqWm6luU6qugyAIGBKIUWKcThhplpTPS3cz7ebH7Q/tvZ2eHg4IDZbMZ4Mr7Ra4z8dYeUCdYrQtBUrWX36BCvc1zI0OmERBlIE2ReEJQieIcPATEQr0SIAJypKtq6HkDgnqZqqJsGayN4ioBEa1Kt49csHQSHEgEl4gbzQuKlQCgR5zeGQyJez3h9hPTgYzswdnlefd8u6lgKGdl+QPAW0/RY19OVJaVOSVXCbDLlYrnCGDvInqe0bcfHH30cPS51yuX1NYeHx5Sjktl8zu/83u9hreEv/OqvYq3jP/27/w8eNRu+8Y2v8tN332V3b5er6yUhxAyt6wxp7mJHoevwwTMdTxhlJXXd0rQ9TdMRPCQayjwbPtPQHs8UWZLF6ch/TiPwsxEEhqm9RCds64Z8OGnk4DtgbVSKdT7aYqVJlF1qO0sIFp3IYfAjgIgSzHLQqmfgHQQCTdOQptkwGRhf+lV5QAioNEMIaJoWPdL0fVTATXTUfQ8ilhDOO/q2x8vofOycR4eY0aRpiuniGLPzAYIbVA5iK7I3dsAqorCmtY68KPFDfa2TcNMSjFp/hnRA/d0w6/BK8WhnZ4eYtIcBYBQxOxq086NevRrKGQWIP6at7318nFAKYy3vvff+TVBwNnYuqqq6CRZ37txhNBnzakjHD2KXPgSESjHLlqb3FONZLA1EghA9UnhUkiHSFHRkRgYTB3fwHrzDdh2b1Yp6tb4Rl728vGa9qmjbCAhH/z2JEgwn9QAQD5N6kU2kkPHbj5/TB0xvB+whTldqHQguulszBADnYraotY72dt5FtWIhsabF94GmKJE6Qwk42D9gXbVcnF+wraqBm+K5vrpCIGjqhjdff50/9+f+PDu7c6SSPH32jKZteOuNt/jg/Q+oNhuqes3zF88RSpI/K1hvNtw6vk1rOi6uLofvDILzURavLMiyguvFmuWqRgxdNfC4EAjeDtmxI0FR5AXBh5iVfcr6TAQBMXQHlHjVZov8aQF0TU3dthjjEEoTQiRzvGLMZalGJSmr9fqGO8CQGgYfuwBCRlzAh0FncABL/C/4FxpjCF5GO/JB5PEVASkMgJFQcRN5F6iait6auMFExCOUFINcetyIbkCdhVRkRRG5/YOsuveD0w0yCmQYQwCmkzGJjHX/q2WGgRcpJVmWDeYs8b274FCDAYux0SMx0mDjCRrJTxaBi/XpUL68wl6kjqelD4G6rsnzPI5FD4i/c5GDcXh0yN27d0kSTXDxhgri1axG1E6oqpreWCbTOQFJkNE81oXobIyUEdR1Ftu3MZUfgljfNJy+POH67JSuqtiutqw3FXUduRBSDMi9YMgefNThHfwShYytZSG48d0LPir1EgasKT7yRsY7DCl18IEg/c09EXGOgJLE+ZG+x/jYJZBpgTMGGaJUftU0g6JUQt8ZvLNUg/zZ/XuvkaYZz5+/YLlaUuQFqU74yY9+wu/+zu+wWqy4dfeAw+NDjLU8fPddvAvMZjvkpmdbVdF8NAiKPKexnqpu6FpL3XZ4H27anM4T2Y/B4L2LBCOpMZ3B2The/mnrMxEEIF7QeNOm2D5SIZ1zEcRyceIqS1OSRKG1IEk1Qo7pjcU4hxg8CPVg2xQCmK6/mQBMkuhiLMUrpVZ7wxOAmKbbEP0LXjHmdnd3aZv2hjBE4OeuRMZQNzUoSZamEdgjssykliAiRiGIvopZnhOGGQDnHHVd/1ytaKj7jTU4VxJEGLoe/qaF+Yo0lKbpTeswmmUyWLc7mq4mDbGNudlsEVIwUQk+WPreYI2Nn9NGgNWHADZegwAURTG8Hzt8K3F8dT6fc3BwgHNxNsJ7G8uQELsZSkbMw1uDCFCORjc+et5H5WBU7Py4vqVZLbF9Q1Fk6CziJn3bcvryhCcff4LtOoSHtnODpn4gyIAIYqiF3c+tyYZ3GoaArYglWdwc8TMolRA6j3cMGWXEEGIZ6oaAGrPDV7W2dwGhRRxAcg7pLaHvwTpcb1mvVvRNT3CQJvGam66J7sGdZWe2y3Zb8Z/+3b/H9eKS/cN9JuMRl+cX/MZ/9uucvjzBtJbXX3+dr3z9q/z2b/0u5xdXFEXBxcVVzAxDlJi/deuIutpy2r1ku23ouzVSaMaTEtPbGORlzHyliqWEknHYrtps6U0fsadPWZ+JIBCdeSMrLM8yrjdriixBDjzxJImn/Wg8ZjrJBi60ZVTmqN7QrqJogpAKM1Bi7aAunKc/p9WmaYbp7QCGuYE78POuAcP/x5RQMZlMkFLgfDyNbR8n/aSSKBU3pAs+Em8Iw0kcyLIMZyx1V0Ujk7JAKkW9rRiXJbY3NFVNmkcaawiB6XTKcrOOTLRyxGQyQWvNZhOlqV+9J6010+mUpmnYbjc3lGBn4on9iu3IcDojJEJqoptu1C7wIaCFuCEIvcIxkjSNlYKQKKlRA5tyZ2eHi4sLrq6vOLp1OHzeYZ4hSQaLjIAG0kSSFBnCR9nv4B0CH18/GLpmw/r6Epwl1TPINUIrmqbh6uKSs7MLbGcosgKtE4SWhOEwEETrNKuiT+Wr1qr3DhXkYM0dPft8ZC4M/43ZW1Q0Djc1t9Zy+Oxx4OzG+NOHIYuQ0bHaWbQQpFKRKY0MPW3V0ncdxgWSLCHVSdT0I1DkJX1v+eTjRzx/+ZLxZMR4NMH0PdvNhquzC4QPaJExm8149OQxj548iVla3eBdPXSaHLPZnNvHd1kur9msNlTbnq53jMcleZrTNj1dv8GHMBC8PHmWIjy4PgblYD22/yWWA0KIx8AGcIANIXxXCLEL/CfAa0R1ob/xz1McFsN/JpMxWkTWXZomjEYjrlcbED0qzZlMx4xHCW29xhuJ0iqKZSSSQuVRU67r4+kgBCJEsw0lo6OQEJJemaELIIbTNFJj0ywlUa9Ufkqc81xfXUfUVSrapqVrW0ajMdIHpFRkSUrT9wP7z/8cPxgYgUppRuMR+wcHmD6yAoWQvDKalDLW4jKJE3G6bTBNZI+p6fSGxvyK8CSEuKHYWmsw1iNTOdTxgSBiLah1Ql6UJDqNlmQhRO5/kt7oJCoVLbwCMXC9ShaLIqos2c6itKZtW87Ozlivlvzqr/4KEBAqavm/IjsFY5G2JxGBMkuRiSbYDiEtAo/EEWyHsz1ttaatt2gB+DEhOHCOaluxWW+H9DVgE0EiU6QE7aNzURjwlWgt5ghuGCRzhkRpVKFvWsXATSbgvbgp0cTQ9lVSkejICXiFO0kZ229RxFnEtpz1OGtIM02eJkgRQUwpBFppmr7DGBsFT7Ocvm3JkgxnI260uzOPrlWLBTvzGdPpjPNtzc5sjtKRxfr4yZObk7w3lkSnyCDI0oS93YMIbDc9SiaxbNZqYABG3CcAnmhQKpUgzRNECEgigB5ucIM/ef2rygT+agjh8hd+/pvAb4YQ/hdCiL85/Pw/+7QHJ4nmYH/Om288YLO8xpk5o7Jgb28HlUqMcaD00BLs0QnMZtPoMOQ9RTaIiSqFlHFDZpmmI9aiaZKgVByE8QR8cCRJhhIKa5sbUHI+m9+06qx1nJ9fxAhuDNW2wnuo62YIPhpjYhqpdQreRacgF4EoKSSj8YSD/X329vY5PT1FKsm22mI7M3yRAuEjhtEM8mrAjdTadltFn4SB1wCBpqlJkqF7kKpBfOPnQz/iFQ03yxiVY9brNcbGTZKmyYBitwNRKAzGFbEUyMuCe/fucn294Oz0HOccVd/x8OEHvPHaA7I0iSd7iD14OWQNzvdI1yPxFPngO2hbZBa7EMK0uLam6QzVOpJbhBTY3tFuGky1pa57PBqZ5JHV6SXGRhA4SROCHdrIA6Drhs4NUiLCoGg8uFl7528A0iD/39T9Saxu25qmBz2jmuVfrXIXp75lRGQUmdhpaBgplSkQIIRFx4IGmEJAxz0aFA2QcMdCIEQDIUBCmAZGCVLKaQQIk5JBCJHOzMApIjJuxI1bnWoXq/yLWY6KxjfXujfD90amFRHS8Tza2nv/e+//rGLOMcb3fe/7vE+5XaLl0MpIShEySDJKk6I4FZ/6DUabpZwQLUSInkpLGToMHYfDIyg58Q0+4ENknn+erzgNAsfFa1abFdM88u7NG169eMHlxQU3b97xm7/5G4KyN4bLyyvuH/YM44yxIjQrCsNq1XK22/Hu3XvevXtH1/fCSMxaKFqLzqNuapSCceiJXj53jZyg05KybP4UA9FfVDnwLwB/bfn1vwb82/wpi0BZWL792Qs++fCcr9WJ7foVkGgah3Fi+U0Z7h4fgIhbFbx+dcY4TDw+7ClNIc0tpbBKM/mIsY45G/yUwMDQnximQXT/KREJqKSY5okYEme7c9brDff3dxJ7ZiQm/dXFOTc3N2QURdVItzwpUImEWsChcoOpUktc9DDRNg3r1RprHd2pox9EMDJ6zzxNwjnMammuJbpONBGVq5gCKG3ZH46UpWO1Fo1ATJ4QPZMfKMtSOtdzYl66/+v1irh4EcrSioNYJ2CRC1uNtYqyLGSqEQJlWZOAsqhoqlpCXJUCJPVW58ThMNLW3+W0vyeFl+ismYYTRVMje1AkEcnKsN5sUMoTs0UZh9YlIfakOdAPiWEyTNHQj575/YHgPY9393z99siYKlSxReVZ0p+jx2mFtZpsDCktaTxL+SFHevtcziklqUlpiRBTKiO3uPyblBIqJ3SO6CwYMZQ0F9UyRswxLug6I6WTgkAgmcisJu6PJ+6P9/hckC0klfEpkOenHAVPUZeEENjv93zy6YfMfuIP/vA9j/f3XF0K5Wp3vuN73/8+f/z5D4lzJIdMVZSEKBOopmlByT2/PzzSjyP9MApB+GlBM3IKbFcNzlrBsM0ekzVaQVKJfuqkRHV/sSPCDPzflHzF/xcLSvzFLxCH3yJ5hf/Y9Yu5A5t1xYsLR2F6rq9qmuaMeZ6IKTD7kbYx1E3DxcUlwzQRUmS9Npxvt5ytC5xxdP3A4dRxKjLTDK6smJzi8b5DmcjkO+pWcRo7yW8vNEZZ2tWa476naYrnJtHsJ0JcsGEGss7Y0tHWa1mtXUEi4QqHdU5MOgqs1hTGMk7j86Tj9uaWMQyEFJ6nEbrURB2EP6BAK0nnKayiaQQLtt6sFy3ESMyRs92Wh8c7lMny0OWZrh+xusYomKcZtyuIocfPE4UzTOMJhadwkKIXd2MBG1NzPPas2oaqajicTgzdieAn+tOB2U9kFck6E0NAMAYT/f6e5AeSh9PhkbOykAdIZTCAKWg3G1SeUbYkKo02DV51RJXQRYMpS+bTzN3Dgf3xltube969ecvh8YHpdKLAUJqaHEdinGWzR8mOXzjIop/PKqOtBMT+vPMtvQ2VEwYZHcqiATEnvJeIMh0DVmUk9jIC6alvCTGhLIvDUpa4oCLRRSYmjlPHmEaR3bgCW1rC2GNdCVotScAeVzm2dc3HH3/A4XDgh3/8Q3760x9D9mQV+f0f/IDzq3Pev79FJfgrv/k79ItG4/b+Hm0N9w8PHPsDSUmtnfKiClSi0XhCkVsn3AyVl1IzG4yFKfQkK9Mq17hf+QD/eSwC/3zO+Sul1DXwbymlfvCLf5hzzssCwZ94/Tl34OMPznNTK84uaj5qLzmeDhjdMM0Tx+MN1gbWK8N6e87twyPaFuw2OwptqYvXaKXp+5HbuzsOXQdGk5Tm7VfvsBbKxmLKC5KNHDoBbp5tL2ibDZv2nK8+f8v9TU93PDH0e4zJxOgXpVXk9atLPvcTxoK2mfPLDcMgslyjJQfBe4F6GB2pSgN4utMjmYw1GbRoCPq+Z7NZAzCMA+dnO4klS0IYWq0qutMjzkV2mw33D5FpGhm6I21TCwFHQfRBNONO0zYlxgRi6FDMGBMI/ogxBVrPlIXD2UqmAAn8nDCm4vrqnLKoyW8mcpbP1c89xihqV+C9pN9Ubcs09bhC48eejCbMfsHEiyxVaTCFo+tl5zHO4DMo7SjKGk9ElyvG0LM/9nz99oav37znq6/fcfP+PWMvzsPGKi7WDY3Ty+4dUcouDTsNWZMXPt80SSe/KMols8CStSeHeRGJzeRsUNphtMI8C4DEIWgWIKksxEu/IGfiLBoVZe2zIc1WJbp0uKaiWWemPrFp15xfvmD4wR9itEFjUTkzzYnNbiMJV4cDb9+9ZbtZMY4Db96+xRaO97c3/Ft/5/+OsZZPv/Utfv37v0FZV2x2O/7m//H/wI9++hNilvix/DThstLTSUufylknZV1OnE5HxmnEKUGaKaSZ3bQ1d3fHRVNy/xezCOScv1p+fq+U+lvAPwe8e8ofUEq9At7/ae/hCstf/g/9BruzHfM8s+0bNts179+/JcSe1brl/PxcvgAq48oag+F8u0OjOe5PvP7gBReX54zeE3Lk2J3YbTQp9WzOWlZnK/b9Hm0V7WpFUdSEKVOXK15cO7pHxduvZubpiFKZh4eBonRcX63YbHZM45HuNHB9teaD1+e8fdtxdn7NZrORAIpxZr1uOZ1O9P2wEInSUms3hCw+8OPR4P3Eet1SVRWffHzF4/6BaRqpqwJnI1U5E+Z7ZjPRtor1qsXPiXbVQgwYbSUCjcScJqypqCuNnx+wznBxXnI87lF4Xr+8QC3S6bIoyQmGfsLaAPlESoGy8DhnaZqKnB39NBKVoetndOvYbFvmMHJ7f8vj4ws22x1VWcnupyzkUdSdWnM8HEjzhF05Cl0+qxnLpmGaLbd3t/zgBz/giy9+xs3tI/ePB4Z+wE8TOnqSz9SFprQV+cnei1lclEpKqGVs+HNXpH6enEghk5ZTXUAvAjOpjeVhNwuSXRvzzIVgWQS0WubLSX6oRe9fVC2Tz3TDhDKWupE+1NnZjvPzM46PTynPkaKocUWJD4HPf/hDxmkQYpNz7I9Hvve971JVFZ9//lM+/vgTbm/u+MMf/BGffPYpRVmxfzxwOna0K8k1fHJ+Gi0BLT7PzxMcayV2fRgH0UsY8HEiKs00ehl5o2ib9lc+f3/WBKIW0EsgaQv8x4H/AfC3gX8J+FeXn/+NP+19yrLg8mpL3dQMfeblyw8lUFLNVLXMb5umplmtaNYrun5mf//IatUQvMeVhrOzDdY5Ysoc+47t1FJ8ekHdCFoaB4O/ZL1ZkRX03cS7N7d0h0dKq/jkN77DJx9a6lrz+PjA7/7uPd/+9kd897sf4lzJavVbjIOnLGtub2/ohzf81b/6G1xfv+CnP/0pXSdz/3dv30uiT98zDBN1pdidNfTjCfLAZm25u91zfnbNalVxfb1F616yAVLETx2bNYQw0fcdZdGwO7+kbbbkLIm/WlmG7kTdlGzPCsax4/LyXBSTZNq24vK8oF01XF1dst8/8P79e0FrG4vWA5pxkUO3lMVMVWtWKxHU+CiLlDEBvbJoAiGMfP75T4W3f3ZBXQtINce8CG4iOMs8jYzHE5sri9GWaRopgGma+eMffc6/8+/8ff7hP/yH3N/d0k+B2UcZYxqN1hYfJvb9CWMSjcmEJEdysxhkngxeZkGmPZnIno6aWvOkKCKkSEiBec7MQckOqjTWiBclL36RmPKiLFVCFzJWHr4QFqm4JCTd74+8eXtDsg223nJz845hEOLRPA1iqVZauvzzzM3NLe/fv6eqS4YhAiL/3u12GGPY7c6Yxol3795zf3/H/cM9s/e8X8JD3IJhf6I/xUUc9PSxySRIAkilR5JJJKZ5xOFIOTOOE2XpFqfsL7/+rCeBF8DfWgQ3Fvjf5Zz/r0qpvwf8TaXUfxX4GfAv/mlvIiINz3bb0nV7MpFxGKgqx2r9knEcGIYe7yd22zVVGfng5Quccewf9xTWggpYJ7rukCbW6zPK0uAszGHiNB5Zl2c0ruHm9o6hi7TuDFtEHk5H/OCpq4K/9Ovf4v3NO96+/TG/9Ze+wz/3V3+bu/t7Vo3F2pJvf/t7/L2/93dZtYHPPn1BSpnL84YX1xtCiIz9I+Q1ZXnF/d0j1lk++uRDbu9v+PLLL9hs12zXH3B+3pJz4Hi4Yd0aXrx4xZu3XzP0gbY+4+zsgnkOPD4cefXyFZv1OQ8PR3brlqZec75bc36xYnOmiVHi1GMKz+Osq+vLBcnes9tanPUCHjUOzURhC3a7Mz744CPGYURpIfDc3d1ycV5z/cFLTt3E1PW8//otdX1GjDM5Ly7OpEg+YlR6HrspIy7O2/fvWX0cSVb+rO8Gfv8f/h7/j//X7/IHf/gT7t9/xTD0hKyYo4wvrdGUZjHt9B5rM+W6WVTOUtenLIuNMdLc1IiS07mCwhUigU4JZQoCkTArUXWGhPeiftTwrAl5kgoTk/QHl2mDNRaUPMgKGfVOIdOPgTmIPFnFSAyBn/z4R7RNQ5hHVk2NtYaQNcfjCWvNsyDsqXl5dnYmHo1hoCwrHu7u8X5mGiesc9ze3dF3HWVdQ5IGp1EihPbBy+lkUbg6P1OUAqmFvIihMlYHiqqgqkrB5rlCEHd/EYtAzvnHwO/8ktfvgL/xT/s+KSXu7+9o25rgPWSx2U7TSAxReHfaMPaC0FYYVuc73r8Tbl9d19zevadtW0lyJeFsyXZ1yReff8nj4wOn4cj1y0sa1/L2Zz+jrlqqasU8j9iksLni3duvcFZjVeA73/qIF1dbVo3lzdcHvvz8R1xdvaQqFFcXay7OvoUzgcfjng9eX7Bab3jz1Vsuditev7ri9asPeP/ulhgDU5i4vZmpC81Hr6756OPXxOjphxNfffUFm7Mtn33yGqPm5xr3O9/+Lk2z5vOffcnV5SusrXj39g4wlEXL8eOXnJ23aHsiZ+lfOGfxYabrT3z28SuM1ez30pdoa8M8eZq65eH+kRgTH374Ed/67Ns87h8JwbPf7/npTxVF1fLyo8+YQ+bNl19TWcW3PvqM6+srGUdpiWyTXdmgkybEgPby8X/1xZd8+NseZRuMsvzo8y/4N//2v8nf/fv/iMmDUV6oShiGSXQbZeHIVYEhEWNgjgHtDNqKAIilpMk5YrWTycAi7HJWyFBpUTBaLe8z9tK3QSnxXcS4KAWeOIOJGAI6Cw0hLSpHvZwsckqLMlWzP/UcOslCVIvs/PrqgmkaMCpTlYayWGTvxjIcjmhVUJYOZy1n2y3WSfkxjQObzYpplDKhrtY8PDxwfHzEaEXpCuFSJPELaCsjSxUSOEdM5rls0Urw9ZDkczeKorTUpUBw/CxAkmn85Q5C+IYoBgGCj/zxD39EWZZUZcU0Tbx79w6tNR988Bpna8pC0/cDx9Mj93e3fP3VG4qi4Orqiv1+z37/gLWWs/PzZWSiuH1/4vHxRD901MWOx5vP+eond2y3mVUrzZw0WY6PPX4aiT5xe/OW3abF6ETfHXBGCY7aKt5+/QXz2LPelHz95gvu7x+5ujxH5UjfHfjwg5d8+NFHvHr5muOxY5wm/uiPfsDUX/LZR695+eoa7ycejntev7iiMJlXr17w0etr+sMD6/UGVzjauqSpHK9eXLJeN9TVCqszzpYY41Cc064K3rz7EcuplaYpKIqWu7tAf9pzfnHGZlXj/cy6qajOz7m6vObx4RGAzWZL2ziCdzjX8vL6nPOdSLGbszMJCvUj3/30M67PX6ARYco8z+K2s2ZhL0Ry9Kh5QgO3d3ei6EOTYubN12/4ox/+kJubGzAVdSGnv0hinEbGaSalGmMUlZPaPyRRNwoERotHgJ8n64ptO5NDJCUv0eYpYGzCVuXCpNRyhM5amphLqI1d8iCEnyhNtmfD0VODUGes01R1QblecRh6+mliDh6jLEbJiO7yYodKkTAZpnEgK03KmlVbP7v5lEqs2hptFDc37ykLizUbjIamLiDLmDyGWViWwaONpljckAJvgaYoKI3DxwBa9DXOaGYyTV3gVhVVUVBYh9WWvp+pViX7/YHtasMbbv89zx18QxYBheL1yw/5oz/6I/yU0Dyw3++JMUo46KzIaFxVEucTQ9czjSPWaOpKcNBVJbitMHuCnzgd98xDZp47YpzYbFqsguPpQGkUhJmqMFxfveAP/+CH9N2e892Oae64vrrC+4nVqmXse9q65pOPPmK3u+BnP/kxKOj7B/aPEjven07sH/Zs1is++OAjnC0I3rNdr1ivWprf/m1+89d/ja4/Mo49b958jdWKHCJ1UXC+3fFwd4/B4LTl6uyalBKP9w+8efsO/TqT5hmFp64cCo8rHPO8x6jMarPhcDgw9T1WNVycnUsTLST5Wk0T8zBRFy2FcVxdXAJCDTrtH8kxgNG07Zrmow/ZH454Y1hv1rjvfpuzzSUqGlI0zF6cldpWguVCdqOQIjpFjFJ0pw5TlPhlpDUMA92plx00P1Gj5PQwz57Ze4qyeLb95sUrMi+GqCerswmS9/hknkJpcsqwjP/mMAlGPUZKo9DWiYZDWekLLfwDpZ+ajHlpHopRyGhZCLQ1SMR9QdWUFHVJYzTtakVIJ2xhiTnSHR9p6prdZkcMnvu7W6wtCNkRFyt630eK0pHzjMKyaisg8PBwS4x+yXksJQ8xJ4yBti4X45vCmJ/3O4q6FP+Kn8mLQrSpCpxd8eLqnLauqMuCse/IUdOVC8B2cbfyjV4ElGbVbDnfXRFjpLA1Tk9UhaEqVkQv2n+VHaWreXn1QkY6WuNKMeAcDntpTpUlTmth1vs9ZQWTz6xXjpwHLs9b1q3D2pLziw0X5w0/LSUOTJEpXMH11TV3dzdopbm9uWG73QnB1wlLYLvb8uWXP+by4pq2aSlcyaot5SaZAw93D9ze3LLZbLm6uuJst2UcBvr+hFaaVy9fcnV1wfF4oHCG0/HEH/7hD/i1X/s12nqN1SW2sHTHAZWhcJaYJpxVGBM4dUcYM8fjkaZec7Y7Ry/o7JQT1jjatkGpTGFKXF1gVclus6OtVqSUOHVHQpjlWE9mHidKW7Dd7YhNJjnHbrtl124gW4bjTLtaYVyNdcLC13rppCtJ98Fo6rIghYifZvqUqErHRx9/yre/812+fPcPCClCoZdGV3oW9vjgmaaRHDKlTpBLYgykLB+f1gprDTGpZ16eMRajQRtDTJl+nIkpME0TZ+sK4wqUcSj0M1g1pZ8vAmGRH8OivnOQ0cL714qmbajakjFH1ts1HwCZrwFNzHC+23DY73EWyUIsFOM0k1XBNAe6/sSqLdjttkzTyNluy9muIeUkEW/WUhctm/X2mRzVDz2mcs/OzsXnJAYykylsgbMCsp2CR+fAdt2wXa8XxmVm6oUHsdvtGMeRVds+q1F/2fWNWASMMVRly6effOvZAku2GKOZJk8KgapcUbqaVEWMlm/k6KdFhw9ZhF/PGQLOOorKMfmZNpW0rei5m7KgLiXIc54OPD4G1huLMgUxKXabc8ZxYLfboZWmqmtevXrF4dAzjp5Xr15zdrajaQpWqwalNPf3DzRNi9GG09QxDGIA6YeeEGZWbcPQd0L/KR3OLcjooiRnwUh98uGn/Nr3foPVasvh0FHXFeMwoj9QGKNxzlBVjrJ07A/jMj9fMvaUYbXaoJRif9hLvNpuAUystcSvG0thS7TSDOOANQU5ZUIW6bPATSQU0xqHLRvM4sxLKWFdQVU31PWGoihwpUM7AzmQwoQxiiTIHx7uH7h/d4PZXuKc5vUHH/DX//pf52df3/H5F28E6JriYtE2mOX/MU0TGKibYtHwCxQmxCBlx/JQpGV0mLMIuXLWBJ849TOzn7EmUVjDqiklZcinZQog9Ce1TA+e6FExJyARTCbmTMhiwml3a2xp6OeJ1aqmrCvIS7w5itevP+BHP/4RKY4oNG1TEMJI1ZS4SbFqd9R1w9nZjlN35Pr6erEqJ968eSPJW8oujUjLqi2wx4xWmtnPz9yJTF4k5oHSFuKFKfVy4giEKTEYwaUpMtHPGKdJCcpFMh//AwEaVYrNZstms+NwOOKcIL/nWZR1zlUYU1AVDVoFUeCFjHaSILtabSicxY8T09DT1i22bhiDMP02my06Q2HNsnoX+BC4ef812kC7rlG6ZLfb8fXXX3J5dUkM4Zn8I51ixdXVJU3TUFUFXX+kLEvWa3F7gbASHx7ul7FmidaZECa0ymzWLWVZorQQicuiEM26UXz80cds1ztW6y3jOD+DRtebFoikHKjrkqou2GzW4hwMGatblLIiE9aGcZwFR9ZsRB4dFc5WtM1q8UpE6koy+U4nAXhI5oIYjoZ+Yg4R7fLCws9YU9M0K3a7c2JUz6EmSmdylH4AMZD9zDxO3N/dcX93x4fXH4Lswzjn2Gw2WHdDCp6UEyyLjzJWuvAq4ZbGWFkU2EXMIzP/JNxIeIbFqqzISQmFaPScukkainjWTUPbtmhTMM0DPkbmKPdNVjIefAqQTYsvw8fIFAJFTrSVw1QFykFTVKxWFduzM16/POf9zS1d17NeOb796WvevXvPet2ggLYtsUXN7APXV1c0bcuqbZnmgWmS6YpzGsUTD8DQ96MY2XTC2YyzsnArpQhelKYpZVTKNLUB7cS2HjzH04xOmTSP+NljtThxnXWMo5yiZFP91Q6ib8QiICEcAwpBQCkybd3gigKjLbP3i0pK4aoaRRQTUFFRNhVoGJoeZy3d/oBVhnW7IZqC87OVWEwz2CwrY/KadtUsu8MbtDWUVUVVryhLByqx2azo+hPkzP39Lfv9PW27YbvbyHF7JY0eraXz3LY14zhwdr5lnnvmeWZ3tqZtG/IS5vmEB5M5tWIYPe2qlVNBVZEzgiMn0nXC3F+td5ydXfPweLe43GrOdpeUlUSopWAAsT0LqtyilKDIp0mcZzFk5jlitWTxFc4xe3CukCAUa57BKcYoUVkWFT5mjNIYXdDUK+qmpevGZws2KUAOaC0EpXnsn2/Au7t7PlIi63VlRdd13N3dMU4TVi0Ra8hDaIzGAE4ZCqdwymDROC1GLWWeeIHSG1Dqye2nCf6JpzgyTgEv4kyGMeKjQtuSxISPSY7Q0YPKqCh+e6W0yHGBkDJT9JQ54tqK9fkWWyku6hJb1Wx3LQ+PHqc8l2crlMmcffSCtnG8fPlKehyTGHzqpnnmPpyfn3Hqjrz5+g1aW1xhKd2LpT+iGMaJrutJKbLb1jhXCLwl5We61DxKEtLV5SXGWb5684av3rxl1RQYawFFDkGmC9ailKYs5YSEyktO5y+/vhGLAEAMnhgtp9ORaZxo2xXOVozjyDzPWFvIuARL9AljCorGUtQlc/BYEwheiMFN3YiQRZdsVjvKwjGeekzOqBQ5211hrCZEz4sXL3GFxISXlSwo2+2K7XYFKjwnH69WNUplytIs8WWW8/NzlIIQvKTdaGH7rVafcDjuEULNuODNK8gIE9EarFOcnW0WF6KwAo6HI8oqNtuWvusoShlFaa2pqpYYIpqCqtxQuJJpODBNE85JQlIIYWEgarxPpARFUfKEqBKUuMLaJ6y5w7oKpWCeA0XpsMZhbInWJf0wo22BNhXWloChqGpsWaCsIWdPCBOkZayrwBYF3anjH/3+P+K7f+U/Qtte0K5XfPbd73J1fcUXb2+kq58TIWZ8EJ2AscvDYS1Oa5wylNZhl75DWnYyqY9ZyiCLUoG0IMS6YWaK4HSiGwNdP4mCUBtCTswxyKxdg46STqQWjwfICUfEUoF61fDRZ5/QbiuMk4amdYZpOPDJx684O7/ky6++pKpLXr/6PheXVwudaUBjaZuWaZ4Yho6r87U83EZGlDK2XBN8pG7X1E3L/cMjp+NxIT1nVm0r2ogFKecnz2615vL8HFcUlE4R44QyDldUgKI79cyTxxlHP0wEZKTa1DVF8RfrHfgzXzknpknY//MsFF3rNMfTgXFBfTnnmOaJQhlyVigM1jhizEzjTM5iTbXKUlQizjALFFRpQ9M0EAP7+1tWTQMqoU1ms10x+4mx71htV/jo2Z1vMA6q2jGMHUrDxdWOYZgJaSYnSY91RcGqbTBO4+NEUVoJrjCKMkh4KFisMlQLzLSK0qgax4Ht9mxxhS2pSyotGn5H3RYovcVoh/cBlQ1GW7SuyV6TgiNFi/cnjNGMY/9sEeZp3IUQlQAKJ4tQ8LOcCpy47cZRMOZPyLJxEKmy1pbgM21bok2JNaJZl/p1sdbkKIEwfqSIEeMcp+7Ez372BdP6h5xOJ16+vMK5go8+/Ihf/7Xf4Ec/+4rTweO9KPXkSJxRTsAcpXMUzlA6+TVIfkLKT0YrnsT+0tNYphXDMHA8DRzHQFMadpuWfpwpLM/9hLA0Tp8WFc3zl2l5T03WGp8kz/Hq1TXn1zu6054YPXVdcrb9DmVdMQwjjw/vsKXhs88+oqoairpCKUOcgpz+FDw83rPdNJRVidURZyw+eIpC+lJVu6asG87ONxwPB+4fHiBnVovM9wliqlFsm5a6LHFlyfnFlm9951sc+wFrS+pKsiXubu6Y58Dd/SOnceJwPLFatTyF9fyy65uxCCTJyDudTqzXG+paghP8LN3eZ8puTMwpMY0TxmmqXKOs5njqKKtCZKeTRzsnD5PSC3euEA77NNOPvQiCUMxhonE1xokNt12JVbiuSoL31HUjWvtx4PLynGnyTNNEjInTUdj/IYxIzS5pwEVZCOwxBbSRJByjtIxtcqYs66XhOXI6nchJkGPeS0bA8bTndDwsnnhF1TaEOdAdB6pqhcYR5wmrNKWrMVupzfu+J8bEer2WMiekZ37iPHuMjlhjn0tDrQ2FK/BBXpCZ+cw4zZRlQ2bC+ySgFeNwSvBh0XvynCmrUqzKMQh+K2e8j5xOnSzWRUFhC0JImAWF/b3vf4/Xv/d7/Lh/XBKlJQlZAl6cnJCMwhrBymuENym+AfH5a7XMx13B1Hv6cebh2HN/7OmnwKkbMLrC2AK0RZkEQVBjT2zBp69Ljj+PvnvqwudFjZCVIiswzlLVNU21gZzEv5Ii8zjwa9/7DqYouLg4xzj37EegkRiWDFSVpa5q5nnm8vyCuqqJKYjXP2fKusbHiFaRtnY0taRUP3X0BY4rJZycZBNlVbLZbnj1+jVfvX3POHpev/6QwlY83D9AhofDkcPQc/P+hu1uRwie/9n/8v/yS5+/b8QiAIq2XmPUSAqZ4/5Iu1rj5yA7ZbJovDD8lxixyU8ch55AYpxnzs/PqIuScR7pT6M8cEHhmgqjYex6jo97gp9AZeIhYKxmmD1XL64JUePHRH+cWa1a/CTHtrbeYnTBPApsZOg7CmuxKpF8ZOwyq3WL0tB5Dzkz9CN931MUFpXkhpbTClhTCmE3K/quY9VuICuij0u9XtGdjszzjNaWalfz2B3IMYtz0M/c3byXXMCLHZfXZzweHkgxYbQT/LR2FJVmnkSO2nU9oQps1pvno681BdllFJquPyEIMI1G5vfKKVxlKDTURYlDPy8UHo8zHjVr9DzDMDH1B/zoMUXNJ9/+Fh9/9CHbzQbFEm5iS65fXvHRR6949+Zz4R7MAmE1xmIKSzYanMZVlrIUiIe1T0EwAsmwekGVp0VJiuGL2yP3p8gcxV5cN5Vg17QsInFx4ZFZSghHykayKZKoHtWiOYg+4JLQp1PKOOtozy/oD0eGYWK9cqA0ZVmzOzuXr6XVVKWjG3p0IadT4wqmUcQ/dbVino6c7bZIRkBYbOIDfppROlMYTdk2Ug4VMgGgKnGFWwJjI3MYsQqycoSo6LoRZzTvHx8oXcm3P/s27NY0y8kia+g//WDJ5PjGjwgtq3aHszL68n5GZUVTNaQARjvW7ZaqquhOhyUJ13IcOhLgXCkd8qplHgLD3KE1QrCZZ07e051OTONIURQkNN0gHXiXM0MXOBwGiAVznziFiWme8fNMaKUbfTiecKXBjyPVakVTOOn2eo/TYoBx1jGPgeOhI/pAW67QqVg+H5GPpqiYx4mcpDFlTUHfD+wf9wLK1BY/gVElhS1IQZGjeOqnocNPI8fDAz/96U/ZnW2Zw2ccj8cFEioMRb2IXkKIz6Ri/8Sbe+qEzxJsMU3ieGwWQMhTCGtQslOTAw5Qs4cUyMajrCT35ClC75keDuS5Z5wCvY/LSK0hTjNal8QM2lW4ynF2vmZ3tiXOnj4MLM+3zPB1ImmNtgrrNGZpOD47/XJEo0jJM82eMWgOw8z9GLkdMyZFNk/x5CaRsycn6SkoWNj7ghsjihtRKYNWGpIS2aWSE2fwAasMCo3RjmEIhKAxtqKqC9LxIJmAhWEeBxQJgieqyP3jI8ZaTqeRutywaiPjGMhZvtdPE6JxSAz9nvW6RD1lZKZEmGd676kqOTVG75n8jMqSGG2ikY1t7FEYnDaMXUfXCaNyHI7SV9i07DYSJ5/yN5w2rLXGGsfM/Jw2lFKSmO8E1pacnZ9TliXTNAhaSgvjzZYlddtgjJg1YtPglmPjFMVz75/iyUtpghVlTYvoztu2ZRhmhn5CpaNw/5a03+32jKHvUI5n6KlCbhZp0i3kmTkQyAz9xDiN+DkuiTJCg/BTXCSwouXu+0E4ck8xZNNM13XIUdWw3x+W+PKC/eOjoKQQdVvXd1xcnHF3d8PsZ7744gtBfIWEtZO447KUV2VZL7kKlhAitze3QF5CWCSB2Ae/YMzdM81Ya8sYRinT1IRPAwTFnD2hitI81EqgL8PAcDpR6MTx1PHm7TvevH2LJvOTP/4h59cfiBrPOYxRNHXJbr1m2HfEIRCTIoKYZbIikUQNt/wnYbFPD2ckL/kJ0zTz7r7j/d1IyBafIqRAWVQUTqFygATzFJnGiZxk/p7Tkl9BhARWixYihiiSYmdJMTEOI7OfOR6fTmWGopBGrdHSfU/JY3RBdxolPt1ZuQfGDm0N4zhxOvbc3z0So6IsG4yWhvLp5JecTDBGEb3oJEKUE1mIEnenlaDEtNaEOZJJWOtoVxvGIbLfd7x4Icyew/5x0Y8oNpsVOQdyUmglNO9fdX0jFoEYozS/lGYYhiUZVhN8v/yNTN+dOJ2OHPZ77h8e6IYOV5W4qmK9WWOsYZ5HMomiskxLUrCxjoyS0aNSHI9HpmlmtVrTtu0i7RTO4DD2C3LcUFU1u91uMYRoMoEYPVXVLsnBcjzFaBLQnTq6oRfmW9WQY6TvBoL1+CiU4uASwWfIwiUUEUd69sL3fSed7mWOHmPg2J1kfEiWhKEU2ey2fPLZp6JJ2N+LmlL9vBH4lJcgcNWfTw4e7++epw3C69NUVS1hLykvo6mCECTMI6REn0bMdMQoh3Ka4GcK5cBIeo+PXhanYeB0PHLz/h2vXr7EGcX/79/9//Kbv/NXcbXk5dVlyaoRaWvlCmbnhA+gNQFhFz4lP6VlZwxRUGlWi3Q8ZfHXh6w4DTO3D3t8KGiqGhc9q7qgshpDhhTp+xNdNzDP83PN/3SyyFHApTmJKAmVMdksi2TmeDphK0NRODH1aMPhsBf1ojFkg3ytcsZatxz1I2Xl0NbIKa+bmSZPVjBNkcvLK1abgtPpiLEsC7Z/JkXXdS19Gy+JS7JJTKKGRYjKMSUeH/bc3NzQdxMvXrwSuXIItKsW5yzb7RrvJa7uOW36V1zfiEUgpUTXjzRNRcw9fpxkDqwkbKPrT5y6jnmaORwO3Ny+5/Gw5/L6ClNIDHdVFeQY0UpRWEs/dlT1ima1wofwDKWIMTEMA7udo2labm5u5CSyZN5LSKaYNk6n0/P4LmdJ+HkysxSVdNNDTvINt046xGUhZJelc51jpNAWYy0xaLQWpaG1cnNN8yQ3lTPEFKjqis12K1TgFBcCrRBtjdEYqzmejrSLWtGVMiP2s6TnOCcwUWPMcpKSZlZVlkLkWZBmKQlZp65ryrJkHAeslUmEKSwkg0Li3oc0UZeatqzxaRIGoRa8ldKKrBWPj48MQ8/93S2/9Zu/zdh3fP7llzze3fDiow9wRrHbrNmu15TWUTuHd1I/26pkTp6IFzdflCnRqCJOSa0giHHNNCcmH+hD5jQn7g89Y4qs1ufsmpZtY6mdwqoMMdKfTpxOPT5KWZWXkkghiEEWirN4EWQxqOo1m+1Gfp+TRNgtOv6YAuMksFmtpGkcQqKqGhnR5kRQo5w4GyEeeZ/ka+kjVWMoS0hZWAuPt/cyBVFSsNinjAqlnhfE+JQVoRIhw93NPff3Bx7uj6xWGzmFFAVVXWCMKGjHcXjOrnhaSH7V9Y1YBHKGYZwXG7BinCZQEtbpSsfb9+8hC1xxnEZSTLTNSm5slXl8uEepTFUWNFVFjmYZASqeYpnzEiyy3e7kBhunZbQ0cnZ2hjz3smpaq9AGuu7EZrOVdKIsdFulFTFC0VTM3kOKlFWNMouoKSVUzlROfN5SozvQWoQyRlNWxfJ+8P6rLygK96xV32y2rNdiCJrnmdW6ZRgG5n4ijpHtdks/dJyfn5NSYrPZEHzkYXxkmiaGYVyCJuSmkujwIL72wmGSSEiL0j4HdWpj0EaALN4Hdus189hjVIEzJTo6tHXCVPSiTxfrqpCArXX048Dd3S3TOPDq6pIf/uxzwmS4f/+GF69fYLVms16xW69pipKmKAlFSdcNWEAXjqwlYtxo2e29zzRNgbMlT8Eg0xzo58jDaeT9w4nT4JlSpqwndmcVu1pRGbAIGnweR4L3pGzISU4vKSkUGWflJEYGbdTCLhDy1NX1FbvtlqqWaY9Em0vUecqJ4TQ8S53HacQVJdYafJgYZlkklLKLjXkGNKvNmr7bkxkxRk69+8MjdVljnGWeA+M8c3Z+/owPkyg5zThKLygGD1nCZK+uLzk/u+Ls/JxpnJimkXmeWK9XpCT49aeA2/wXoRhUSn0fyRZ4ur4F/PeAHfBfA26W1/+7Oef/85/2XjFGhmFE6z3D2DMMI85ZSdhRimkaKIoK6wqatqaqatp1C2TmMDGMPV1/ZLNZoVVkHOWoPs0jp37i1PXEGNlsNqzXa2KM3N3dMc+zhIk6R1kV4uV3FSmpBfW9RJ9PEumdsxxPp2lc+IOasqpwRcmcInmWyKfSWXKW+r4sLDEZQso4W1GWkqKklJh4Pv/8c87OdlxeXtA0DXZJJBrHUZxz1lJWFUprjsej3BTzTFgMJ5LGY5+x41JD6yVTYX5ONn6qWZ92QrlBBG8unnPRJ1hj0cpS2AqNxdmSWkt8VmaBfsaIWsqKoiwol3Lipz/5KXVVkYPn/uYdVXvNw/u3AuKsDSpnLBqrNE5ralfQhSNT1+NWJYWzEl7iJCxUK4W1JVY7CQT1ntlHRg9v7w68uT0Ql1Si6GdW1YqmSBRGoZNnnkZIwt+P+VkStPy8pDxFKRHUkt1YtRWb3Zb1ZrPEmWusq1i3DQ8PD6ScccoyjD3jILtr13W8ie8wVpOIdMM9F1fntO32WfU3zzNtW9MPRw6ne1F/OocrLNM8YZfvCbDkU4ggzVpLWRQCQana5ZlYyriyZrXaUNU1BzIpBTJRshqs5XSSsfR2u6Vt/wLwYjnnPwT+MoBSygBfAX8L+C8D/5Oc8//on/q9Uma/P/DwcCeWXys8/a6X43hZlgzDwOPjI0294mx3Qd3U9ENHzIG6KolhWvjxojAU+KQmZoFU5pzpuu45pz3nnx/3j8cjOXum6cRm84L7+wMpjmjtOB6PHI9Sl6cUGYaBcRwgZaq6QpuCYZyk/g9hCVGFECMW2Wm++PINXT9ydX3FZrNinqBdV0tjckXTNPR9z3YrC9R+f8vheGS73XI4ij+hqmtm7+mHgdl7Hh4fF9eYSISLoqAoCpoG0cxrCVb5xfjxppEAlieFzDiODMNATpmyrBiHCWsTwzBJGTUGcla4slwWgSiNteBlIdAKZe1yypm5uXnP2WbH7c1bbI7M/YnD3Q3jaU9tGvrHR7rDgbEf8OOEVWKn7ocem2bKWGIowZYo+9QAFE7gMHT080i2JZ2Hr2/23B88VVOT/ERhFJWFwiSckd7FPI1YY9A6iW5LyaRH6EFayhoj3ANjHc1qzcWLC16+einBst5jF49H3VR0vWOe5wVQKoBPZx1nZ+cAPDw80KwbvM8YU2FtgUKx3WrRajx5HnRe7O8VTbXi8eEgGZDWYYylLAv6fmQcBrEOL0f57W4HT6pErUVkljx+1lirF59Jw+3tjYSSLPd40zQilvsV159XOfA3gB/lnH/21KD693UpAVVM88CLl1eA59QdFyWhcPH2h8elgadYb3b0Qy9cfK1omjXOafrh+NxU6oeeKjuquqSqBPDw8PDAmzdvuL4WQOhTss80TUzTkffvP8cazTQGTqeRqmqYRnGrVVXNOE7PefAoLW6yU0/uB0DShAtXkEKQxGESwzDy1Vdfc3e/ZxxndrsNZWV5aa6oqoKPPvyYsrR8/fVXz/LoEAIKiCEw9D16QV1No/jDn77Cu+2Wuvz5zSbNPTHqlGXFOMpJ6mkRaBflWEoS5zWMEzFm2nbNarVimm+ZfWAaZ5pGyL4pC0bbOEdSYGbFPExY1wtFOEa6ceLUdVJubVY83LynKUoeDgce3n3Nw9uvMOYFx8cHjoc9Q9fjp5nCSP8k+UC3nximjjBV6LnFrRq0s0yniZNOHPb3YC1XH53Td0cejhNjVFTKYBS0paMyCqcymkjynjCLkvTp9EPWOGuwyiwEKYWzGm0Kyrpld3HOqw9f8+LlC1xRMPtAmQQYmnJit9tJbmQUjUJVK6qy4vxcsgSMtWx2G3bnZ7SrRsbASkbc5+cbIFMUJUWxxjo57httKcsahWKaPV3X0zStjLKXU0TwoqJVSHRcVVX0vfhTtFFL30ovgFURjq3XG7bb7T+xKQh/fovAfw7413/h9/+yUuq/CPx94L/5p0WQgei3zy8vSMnjSsc0zkzzzNnZlkzmqy+/IuXEi5cvydkwThNl4SicwzmzhGKK2OMpW88Hz+nujvVadkalNPv9np/97GeM48i3v/1tnHMMQ09d15xOsoAcDgeqquXu7o6c78lJ88HrjxaJskg4Y5QdchwmQpT/53qzXtRxMkPv+47DdGCeZtp6RVwrumPHOHRsNi1tU5BCzdj3GFWzWa1RwDiMtE2DRtF3PWUhgJIYpUFUOjmyK61x1mKsed5V+r7/ufssBKqq+sfKA+8Dx9Np+TxKEckYhytLlLGcnV/gfcA5CUypipqqqiiaSvgNSow8Dze3dMcjLz74hHHyDJN0tj/55GMAHu4eSDFis+b9V5/zx7//+4JhX+K+rTGUZYVFMFlWaabgmbuJeRzwXU/qN8x1iSWQ/cjt7Q0vP/iAV68+5ifv/wCPQ7lMyrBqSnarksqCVTLuiyGQIngvY7KlBSMlnjYLdVh+XzZSApxfXrA727FarymrCmPFbThOE8M40jQtZV1zPB4p65qylmO5cY66afjw44/w3nNxeU3XdWJys46+e6Rp5CRlbYkAlC3D4AFPWRbLSUHKupQiReGWJCslXoGl2fvU5Ht4uH9GylkrikznSrquY73ekJKARGQceeJwOPzK5+/PI4uwAP4zwH9neel/DvwriGryXwH+x8B/5Zf8u+fwkVcvzrm6OielQN8fF1rrRMqJtl1xcXFJziIKqus1t7f3GKMwtuB06lAkxqmn7waRDxtNVda8e/cGayvOznbPLq3vfOdb4q+3Bmv1s9e6LB1nuw85Ozvnxz/+Kff3d+RsyEnx8uVr3r9/Jx1jMiE45tkTU8Yp6dgrZaT2G044YzDKgAFP4Gy749XLD5jnif3+XpBQ44QzIhxKYaZpapy2jFMAZIQX54hfjoPOFqzaNWb53OR4l5mDNJ2e0ounaZLdYxkB5pyFOa8UXdfRdR1PxF7JXYSyrGjqluDSMqqF0loKV1E3DbooJHtwGjkeDty8eY+rKrbnLymrFevtlusXLyidpj8dIXqmbqS0aw73N/zxD36f1x+9oD1bs1mvub5+wbra8v7NW1JMOGupFAxR4rOizxz3Hdontm0JSVFXNU1d0w8z9/uehMUWYgIrCs2uNugcmKdx0QEIW4JnxcFy37H0AxBprzgr5QheLgq9JV8NlsVUiFQdh+OJqqzkNWsx1qG0WrgRAkA5nTqKomWek5CAMTT1Cmsc3oPRJX6eOR6HxfWpSGmU+DGtadpGyhBbiOchLl6HlKT8U+K12W7lJDvPM4+PD6SUaJqGnDJVWeNswfF4fHrW/mIag79w/SeB3805vwN4+nn5n/+vgP/TL/tHvxg+8lu//mkuCmmmHY4e6zQpRw6HA5vNjs1mxzhOFEXJarOm6wf6rpcgST8JRMFqCleh0Gw2W1CKqn6gqkpp6IWZpqkoCsvFxdUyLahp2xpQzLPMhruux/vIarWm70eqZkVRFNzdvSGmsKy6NY+HA84VVGVNWddsNmtCCMzDhEFROYdOsrOfupGiLAllIbJXLQGg1ohTbpoHdFOTfEAl6E/DAqfccTwdqYuappVGqCsKNu0G6wzDKE09Ea78vLGUUuJ4PJDSorcIQXoKwRMWGEeIEaUt1hWS5hxkipIWDt/u6ozClJiiAqMhCf0nhSDCnpDISVGv1+gQmD94jSVAmLA6E8YTyhmmMXLzteXh9obd5ZbNZsOn3/oONlv+7vH/LbmRRUn0MHjR6jvtUFmhVYHWJdrBxXmJtQVff/2O97f3+KzJShHmnnZXsyqAOC8TmiwKOWUW4ZGkJOnlwZbpZn4O6ViwomK2fFYY52W8JnqJmCT1+WT65z7LPO+XuX6iX2b8KWdOpx4JSdE8PDzStmIPPp06pnFinj1KGeq6wccBUuT4eJI+1hICq5RZItJlAhFnz+78jNW6Fbu3KwlBLPYhSkBtzizlRkuMkdPp9uk5fO6F/bLrz2MR+M/zC6XAU+jI8tv/LPB7/6Q3CFFQTEpn6qbCGLi6vkLrZYSjFN4Hpjlw6AaaqiH6QNM0TKPi8dSxKlpJ4nGG1XqHD57z8wu0htu7G6qq4uWra4ahZxhOhBipm4K2XYmN1WVub96w3x9xruCTTz5hmjzr1Y7z88ulYbcXUtBaAklWqzXnF+es1msJBlnq2xyiqBZTJsVM10sN7P3MZlUxDh2zH2mqiu1qzcN+Zuh7xr4jZYstKqyrsdrSVA3OFVxfXnP3cEdhxZgzDAMxSAc5LcYW88TTXzrN1hq01tze3rLebCjrWqCaC0zTLzfjMIwMeObJs1qtqKuGarPFohZqzyyxXmTKouT68oqEgazB1RT1TN20z40qozPEGR87ksp0hz3v33zNR599xHa9RX+243J3xZeff8UP/uAHPOmGnS2oipLSOFrjaJsVdV3SFCvOtg23+3s+//xLun5EmYYUZ5yG87ahJJDCzNLrJyaIiywYtYBDESy60kpS0xC1HmRCDM/CmsVjLBOgBZaqS0vTuCXnseTxcTFBWcMw9MzzxHe+8x3Oz8/pu7T4EiJ93y8ZGplpGmmahnk+ykkvJIZxYHe2JudORnyTYhonAcs4MROR83LKG1mtG5QG7ycgc3Z+xjhOkEUmb62MBodeBFJPn9NfmE5gCRz5jwH/jV94+X+olPrL8p3lp3/iz37p5YPn2O+BtCCYAlfNFfMUOBxOpAjNas04zqITQOCNVVUK085HlIaiKCjrmhgyWluur685HA70Q7ecCBJVVT53+O/ubhnHgbpusFbz8uVL+n7g4f6A1prd7gxnS5qm5rPPPuXu7o5pGthsNpxdXNO0a+nqOrcw9zOqABUTOUTiMKKMYXt2RvIzLHmEfX9knHqcM8T1mhhmDsc9fp6I2fBqd4UxltPxxHa7JQTP8XCCCEM30h97efALhyoVwzBiFgx213WLxLVgvd48N0S99ygjJ4ayXHwGPohePQtdaLWqubq6Yt224oJLssscTh2rWvTuTVVTXV6Ld3/0rLIhKsGZD8PIPIyU1lI5xzwlQpyY4oH79++JPnB2dka9a3n54kN+/S/9Fj/8wR/x05/+hJSgrVcU1mKyonAV1pSU1YrtuuDiYs2bm/fc3z2idYFSlhQnmrLkfF2h4kRUclIDkeGGmJFHP6FVIitprGktC4BdREJ6aWYL7zCjFuFQziKxNkrKPektyWtDPyzYN4u1LbO3aAO3t+/Zba+Zpgg6s1pVzH7giy/eoZTixYtXFIXDuZKyrNifbpnCzPnlJd2x43g4MA4jD3ePtG2Lu7qmsA63lkV9nHq67sgwdFhrOb84oygcfTfR9T3OZgoHp1PPPMvCMQyDpCP9iuvPmjvQARd/4rX/wr/f90kxSRhFmNlsVoRlpt11A1ob+m6grlesVmsury4X6eZCmNE/t2oWthSfug9UTbUowaBpKiBxODzy4sU1bVvzxRdf8v79Wy4vL5nnmePxke16xetXH3I8DPT9SOEaYozPDRlrNTHKyPH84gJX1k+fM8kHopfOvcmKME6Mp05irAoLKaKdjJaqsqCqrDAENmucVVSlY54mrFux2Z4LFTcrrLbYwnJ/dy/gyOHE8XRciEAWZTU59cQs2oJ3796jtZaHeb19rhW1taQkE4ymaairZuEHKoy2bLdnOFey3mzJMTDc3eLKimQdp/5EVTqqwmGaBrxjnDI+JrBiyIqLMrEsS3abDXlK3N10DOMkopkluHS9XrNprlmvt3zv136d3/nLf0U0GyFQV42oN7OmKGqsLdHaMYfMw8Mjd3cPjJNHmZZpmvHBU62sSITnHl1qlCrEZ0ASX0JWpOXQr5TEjGkFKi9jw0UEJlJi8RWExVeRERRYURV0nVjHV6sVOSeapsWHEaUlCMXOkvHwe7/3+3z/u7/FxeXlkgNhGacj2sjicXPzjqpqefXqNa4oeHv7JXd3d3z22WdkZLpT7SpSfBAPgQ84uwSsFCItf9w/0PfdQlrSbDdngCbGTI6eVbsTn8xpT1EUTNP0bMf/Zdc3QjEoI0KZ7//s888XCoqo7T788BPGwdOderS2KC167RwSTVkzTmKVjTGSlZhRlNWM88z9/TuUirjCYq1barlE349orZjmEe/F7nl/f8fv/v3f5bd+67dYtWtiCJxOJ1arNT/+8Y8Zx5H9/pGz8x27i8tl9LREVSlIMQvjfgFl+NmTYsYoSN4zzyOpi5J3H+aFniuz3rqsqa8qUsrU7Y5pFl59W7aL5qGgMMI6zCHTlA3b3RasItoAC8NvmmeGcRJbsRHcdo6R7W63YL5Eb1BVjXjzjRVrszLU7Zrsk2g2Hu65+/pLrl++pD2/kN3RGowTrHtOmcI6jCtBa+I8o43m/OIcfE8aB3RU9MeZx8NACjPj0DP0A5sXJfVmS/SB9XrNJx9/wvX1C9AabYU1WGCptAiWjLbsHx/42f1XvLu5A1OBUkzTiNOaVVWi4iRsvkVXHwPkrMkqE6MgyBMyDZDyX2TDRuvnk4B6ih14bgrKX52Dp6BYyqf43ERumoaMSNq7rl80Lmu22w2H4wMvXl6S8aQsOLOLix1VVfP112/JObLfPxIX9LrSYvsOIVDXDW3dcLY7I/q4nNRgHAYSjnEakHRrwdqduhOb9W4pjTMPDwfadkvhHJvdjqap2T/uv/myYYWi76WrfXx/x3q9JsUk887VOdaWwpMLkfvbPdM48dWXX/LqxQs27UoAkfPEoTvRrleEMXE47em6A6tVjZ89RRFRaH7yky9QSnF1dSVH/8cD0yxusBwUP/njn/Gtzz5lHCfedF9Tlg0//OMfc3F+Tduu+c6v/Q6ffe+vEKMiakNUM5oMSvgELOq1RMYVjtI4Zj8xzEFUe8YAlr6XaYXRUqc2TbMYkwqKQkncec6s2w2QWF+vePv2LUopVps1WSu8j8w+oUxN1aywhWe7G1FK07YN7Wq9IMccdd2w3mwoypKUJZ9BG4utKqntbUGKPXGa6U8HHg97zq4uMdaKBNo6sI6UJ8ntKxy2tOSpY+r2KGNoNluG7kDdPuKHkbpSGDVxOI58+fnnvH97x8tvlRKoenykOxxJIXG22bJer+nHgf50osgWGxKlUtSu5K4f+dGbG44hUV42+DFiCJzXFZdtQWsibVWhrKaf81LXyxgwpyBmIZIsDEmO/sYYClehnYxZnVE4oyidUKDLsgLtSQSMU2yqlfRdtKFt18SY2O8fQFmads3+dKBqGj7+7BPCLFDUaRzRSxCpj4np2FFWLUVR8e72hhgSm11L0woZuiwKtDL44DnbnjFNM/vHR4IPPD48YPsC4zR1u6FdyZSgaRuKqqRZt/TjA/f7W4yTkeHZ7mJxo9ayWf2K6xuxCKSU+KM//BFKialmHMLipS65v9+Tk3Q3c4J1u+Xzn33Nz376OXfvH7m8PGd3tmW1bohk3t+953DcY4yiXag8q7albVaEmKmKlq/evKEoW7a7SzJwd3tDU2/4K7/zzxL8jNWGzdouMs+Jzz79jLOzV/zGb/wzfPTp98ixJWjLnAJWOUh+aUB5IjOmErQ3UyBHiDiybTFWTDt5njAGUpoEchkV794fUNrx6oMdRVlSV27pwgfxK8yeqijR1uCXHDyMxceCzXZLVTXs93tQ0q2umy1FWVM3YhJq6hpjLckHkhfAyRzkZ1eW5PEEQcaVGuEt1u2a5ANtVeMS5BDxPoI22LrAWvDvPyf5HldVzH1AVzXtbsd02uPszLrJ+ATv37zhB3/wY37jn/0b4BPz4cTbL77kR3/0Rzhj+Wv/0X+en33+M/7df/APcAlWRU1tLCZm9oee2xn8ZsfoKh73N7Rl5mWdeVkprtc1xnekpLBZERaKUMgJcsRYTQ5pOQEkAYvgJKKdiCqCcBKjTD6cdSK28oFjf6KsNG1d09ZitEr3ina9wdiawji2uxU+J2KeRU0aFT/78gs2m62o9VaO07HjeDwJT9FpdkuzOceJ/tSjsxJ6ck6gNSEFtBWTFkZx8eKK2/s9zrWst2uKwsgULXnmFAgqMueJjz57TYxC4caWvL19pOt6drvdr3z+vhGLgA8B7xN+nmiur9htzxfnHrTNhru7O4ZhpK5a/BxZr7Z8/3u/zuPhnm4YuLi+xLqCOYqm3hiNKyxFWVFYS9Os0Nox9d2irbb4WcaA4zQIISaASZpVs6KqhTiccqJdZdabcz788PucX3yILdbEbKT7nhMmKyxa5LhGuP05JXBGxlARygLsai1QjCWyK4YVfp4gSze7mQTqWbcNMUzk5MW+WkotP43SFymNISH2W1s2zHGBdDrHbldSlIK+btqasnSih3AWlSJ5mAnTKDirsqAoBaKZgyfOE6SIM5l1WzPNW2xVi37diACLLLTn6CeiHyVBZ+oJfhLfQSHvOZcCXG3qQvL5lFCZximQk+b0sOftl1/x1c++4PbdDVVdcnl5iSssd+/ecnh3R5HALL2WyQemlJlixniPdYZtobhoC642LYWewQqdV5PRqMV5J4z/FFkMW+ppEiglwGKwUmS0yhgNVmsUwi9UWlOUJTElzs92KGV52B/xPpORRqEtDe2m5djtOQ1hKUcSfskmqKpGeBZqYLs7p23X0slPmVVRYHVi6EQlqp15Vvg9UYaLsmC9KWnbNevdJVkZMpGiFL7BNIv24+7+hnYl4+6uG2nXNT7MvL95R103aPMN5wkoFC9evMTPnutraRrFGDgeTxwOR6wtePnyjBQzOcLl1bk445pC3HDW8njYM049WSkur19IOGkpwoyUwC9+8rKq+OzigmmaqKqSpTvEad/RNtIIfNgfGcdRdsNmw/n5ay5ffoDSJSl4MkH6DHmEOEP0ZCVHUGUcSQsaWzuDihmVPVZHcpzJfkIyZh05FM/jqCc2onWK6TiS8yQCElOiQsLYkrJqsXVLRJONxVS13HBhFqGJUWx350BG5YhaBuE5RcI4Q5hlcVWK2XtizpS6hhAI84RRLM0py+7sjKJuUZklwkscaco5DBEx0ycSeSENKzAaZ8yS9QcoLWEeIeJ15NSLkOd0d8/tzS33d3ecjkd2Z1ua9QpbyEQnHnsYJiH9GDBL49SUVtx+VlNrxaZpqYqCFIQI/VTPZ7WEjcS49G5+QTb7BBXkqfTPzzLspz/PC3asKAuKZoNKsxh4ome9WjHPifu7O1KMKKc4dntub25wleJid8bh0HG23XF2tmWeR07Hjug96+2K6D3OFazWa+EMxonCnj1TtbvugJCgS0Cs9DKePmCLkqYpmf1EDEIfmuaB9+/ekVNe5PA76srSd3tWqzOur7e8f/+Ot+9Ov/L5+0YsAoDMhC9E8joMw2KkqCRK24hfXztN4Uph580j253IO1GZlWnph5rZT1S1NI+ke69FgeUcRVlR1TVlUXB3d0NRGDbbzXP3VGo3WQTu7x/Z7S741sXH7C5eolxNmqN8LM4CEyp05HnCTzNzilCV2NUa5SqULsnJomJC5R6VB5kdExdOfxIIptYoDaWyoCGnjuT3+GlCE3G2IeMAh3YNqt5idQHKgrUol9CzdKm1UaASxECaR1KYySmQYiDMMzp5stFC3UUglzklcdtFjzWGFGaSD9T1OcpISWKW5lWK8l45xWWUBtqIlkgjCT9P6rYYEyGKlj0BaenSxyzfX7JkGjhj2G42lNbS7cclqMTix5msElkrTGFYNRWxLJGPHDZlyaapSDEQc5ZAj6QgLupAJdFiOQpHUWvRRohHPy7cCBZDlUwGUozPqks9WDSZ0oga8/HxAedKtC4EVTd57u8jrpScw/v7e3zoKcuC3e6ceZx4fHjAzxFnC87Pztiut5xOkk6VUyTOmXHs8X6kLMtntFvTNM9d/RBkjFs3DUoruv7AMHRoA96P3N3f8P79e4rCsdutubufGYeZoqiWkrjF2Mj795//ymfvG7EIGGNwrmCz2XB3d0/fD2y3O1arFd5HtNJM47yEfGS6vmOcR1y2dGMvc/vtGWVTM4wDwzgwz4HKJ2YfSZkF1SS7Yj90jOPI3e0dMUTu7u+xxsqNGhMJQ92ecfniYz786Ltsdi/IWdJ3jVOgAoQO5iN5mAjjxBSzAESrFa4qyaYmLVwDkz3Jd4ToUTmIx2Ee8GMPCMZbpJ2R7A/MpwfmKRCmCes8rtwQMeio0LlA2TUg+QfKRkyBSF1DIE0zKYqjUtrkAlQpbIGfPIf9Hp8C9XqN0YrT6cTcdzSFRVstD/hyslBo2TW1JPyihMmvUpQdVC8Lgc4YEj4FcgyLZz9JbJi2GKdR2dKu1nKjJ2T2bQ11XbFadAkP9/ccDiLCyTlLbWwiWScKq4g5M00DJXC9WbNpa+bpkdLJKUSOVQHyklKkYc5eFkgluQI88QqfwKo6o1QmLarSeZIdWU8OrRLKGMiew2GiKmv6biJEOL+8FqCoUXg/kmMkzJ7CGtqq4uHhkf3jI86W7HZnKDIxBKqy5P7+ge54YrPekIk8Pj5ydnYm49Xd7tkHoha/xjRN9F1HVcs04nF/z9n5FusU8zwsitgMKvP+/Vvevbvhgw8+YJqFlHV+uSPm/lc+f9+IRcBa92xwCSEyTTPHo+C4nSvJWo6Up1PHMPbkLGy8OZilweWZwkxRlYs6KmCdZZg8x/1RlFptT1lY2TliQinoh579fs/NzR1n5+fcP+5RWOpmx0effMT3vv9bvPjgU7SryCliCiVfsXkg9Xvi4RHfT8w+gSmRalJU6Rkt8+ksM+kUA34aUXEiEZi7A93hET8NOGcX11jE5J409fg5gU7EwmLchogC41CmBFcBBsIM2bMQUQh+IowDZI8mSU9CyZ9N08Dt+3ccjwfWuy27piGj6I9HcvTo0qKykHxzCKKfzWp5+I0cmrWcyNAJUkKntERnJ3LysjiovIhrJBY8ZcQii+P6+hqDkgfGzxIWswRJHg8H7u/vOByOhHnGpoQqLMoByyKjUyDOE7tVw/mqQeXIMPQY69BJIsmSHAOWRq3s8EvFJZsAkl+glcIahbEaYxSKRIyeEANGawG9uExVFQQfGU6P+HnGz4nrF6/ZrFtmHykKy+wtOV8yzY3I0LMElJJhGj3jMBBDZOonrC3w80xZVrRNizZpgecGESMtegaxLJuFB5E4Ho9sWWFtpqwkiNU5y/X1JaeThNDs9/fUdUHTlByPjxwOD2w2a6zJrNd/8VbiP9OVU2K/37Pf76mqBuccjw8P9P3Iql2RUma1WqG1ou9PJCTEs24ayqrmeDoxTCO2EPa7tY6U4XQa2D/eMwwd5dFRlZYUPWMv8k1nCx4e9pBl/Hjc71m1Z3z67Q/57vd/hxevPsWWq0V2GkF5gu8Jwwn/+MD4cM88eIwpKLe1xE4VTsZR0UPUsjOmmeRnwjyQpx6dZvxwJI49/eERaxR6vRbBSpzw88A0RpLKmKoAO+DaFaasoCzIy86VVcTkACkQg2ceT+Q44wwYlVBZ4Jt9d+L2/Ttub28pqpJ2s6VoVpLGoxR1XVFUBWoJEvFjT5EzTyEvmfB8xFZ6sd5k9QuinACzWGyNWhBsaqEDhYQ2JVXR8Or1BwBMQ093PDItZcHpcODzn/6U25sb5mkkx4BTikwUliGyCFgURiuu1i21UQzdUbwC2eJTJvlMyvIx5hAWq7jcX0qJuMwoYQk4qxcTmUFbvfROJNXWWQmLSWYZ4TrDqGCaR5p6TV1Xch8mKMsVZVGwWa94eJyZp5nudGLVtqzXa7QamaaZeZJe0OnYYY1je7nBWUM3DBRFuYBQDXP0GCQT4sk4VrgCmozWUFaOstw+n2bOthu+++1v0Q8DRmtcUfJgFH6eWK/XWK25uXnHxfnFr3z+vhGLwOw9+/3jM2AjpcRhfyCG8MwAbFuBjUw+k5Xgsdq2pqxqhnlkvz8Sj2lJgT1nHCfubu8WQdBIyp5pjJxOB3JMTPOa9WonqLCiYZ4TzWrNZ9/6Lr/2l36bF68/w+hGUFTLsYwYGfuO4XRg6jr644kwBVaNoXUFRVWhrCHmIDdeBLxHpREVPNp7/DSSw4jynkoDTgI3ShIheIn0Pg6Mc8KUDmflQWrKQlKAdSSGnpCR42qeyHHGzyOzP1EWTrT7KZDiRH/Ys398YBo7trsN2/NL1tud5AtMHq0NddNiC0P2I2EcmPoT9ZJiK0nA5hmvlvJS9uQkgJFlXJmmeWm45SX6WxYCbQxWOartltcffECMgcN+z+kgfQ9S4rDf85Mf/4iHvZQCBligzoQcmP1IDhOFFpn4+aohe0/fnzBaOu3EJUE5A0rSn1JKKKWISSZGWskiYo2Qi4wWvoC2hvQECokRspwK+qljihnnBFWnlMWVlmO3Z5o8ZVlxfz+KcWyWE12MAl65vb2VEFsl9GqlNHE5BahCcTodeXx85HB8pKrLBW6ankGxZSkpR/MsaDwJZ0FCYEMUq/LCjNxsJCla/o0gzV+/es3Z2QXTEuoj3J9ffn0jFgEQu+vLly9xTswZ682aoigZB0mzCUFQWVdX58Q8sdluqOpGSoeTRalMXZes1g05R06nk5BemooYAn0csSaz3z+yXq2Z5pnp/gFDyXq9pqgKvvXdz/j13/jLXL38SHzfaRn9KSW74fINTikTlRXzjFXUmzOKtpX0mejReRYLaEio4FF5RocJm6SpxlNdraBqasiJ4XRifzjg50DKGle0VPWWZntBc35Bu9ugndhOfQxEWMCoIzGMTNPxmceggiekiXk88bi/ZR57Nts12/MXuKpFGwkpEbyeKAdVlknCOPT0pyPbmCDJQ6GMMPrTcrTOPDXUBFiqyILPfgbKKIx1FFVNu46kqeDF6w948eKax8ee+7s7jo97pmEgek93PNKNHXPwy26cAYW2Ej8/Tj3EQKEL1kVJaRTH/SPj1FPXjmkOFE7yA54ss9ropQaQU4FeyoGnh19kzDyTnpMxZA0hSNPZTJZuPGBDxpXSeCzLEm0VXX8kBJFg9wuZaRw7PvzoQ04n6e7vD3tijDgnEW5N0+KXHMqicJxOR4ZxYpqEru2cW07C1bJ4qOcEIqUUdSO4/NPpyO3tew6HI5vNZvk+SL/KuZJxnKmqkqZtKUuJkne2WmzVv/z6RiwCzjm+//3vLQivzO1tydnZK5wrli+Coe862lXN2cWKfnikbWpsYYkx0DQlr15e065WVHXLOE7MSwDGdrPh8THQjxPtasU0t5RVSV2tuL09UBUlH3/ybV5+8IqPP/uYi8uXGFfKaGmpzwSBK+Mzo4UraM05q3ZNqUVYYtwyPgwTOUdSDBAEjaWQxcAtltUYgzTtoieGmXkceHzcczyesK7h4vKaenOGLlfUF1cUmx2mbaVHEHpC9CS1EHOTZ/Ydx8Mt21VLDovFeu7pu7047QpD0zaUTYuyFSlDjBkQKbDSRsQyITJ0J4au+/lcHX4eWpKFX5+VRmNISzjH899TaikbNMY52tWKmCzpBB988JqqKulP7+kOB06HA34aCV6i5lKQ8kLB84kCBcM0kGKkdJamcKzqgjCPHE4HUp5xhcYHgzN2aWDKIq20FtJvnHiiXT31BcRRrJ5fB9BapgkpBaZpwM4GpTJV7dA2CmmYgI8zkx/xPtH3HUVRUdc1a7d+5jYO48BqtVo2G2lMusKhlGEaZ0IMxChI+KJ0xBiw1nE8ntjvBTAr+QGaspSA2RQlN3L2kxCj0FhbcH528bxY7B+P+BCoypqcNP1pRuvE0Afq+j8IqcQpgMporTg/F81zVdWLvl6aN8ZoFInCWcaxh0lR1w0X5zu8j/goD9zlxY62rnhxeUVOCWcScyi5fnlB3RZ4H9lurtBuxcXuNb/+O/8ML15c07TCDGSpK5eeGsosDwFZ5uB1i2obiBEdMypmCJ6cPIlIzoEUJpSfn7ZNNAlSwI89vj+hkyT6+GkkxUBdilS1bs8oqi26rKm2ZxSbLRQOrKjDYphRKopUOSa5accj03DC7VaEeUClxDT2TOOwLJJCsw0x4Zx0+hMKXZSUWkwopIDKWY6rOSH4myS7ewaVxWiUwyTRXUsqsDMFUVn8kuuXkjQCy7pmtVqjVUU3d1gFU3di7I5MQ8/Y989sgqQyMYjnw2oBZ7D4+Z/J04WjdJaqcIQwEZInkwiLCSoFUCaLBXixE1vnUJM02LR+Mg/9/Ad5wZCn/Nw8TDEwjT1NqmhXJZtNTTZLZN0wEnIkqUTMgX4UqvAwijGqHwZOnWDvXr58wXa3483Xb4hJTlNlsSDIQwQfWa9XANzd3S15F4q+F/T7ND1hweT+n+YZHzqqWnO+k1zMMCeCT1xdvuTh8Z6+7yldiVIKq0ucrdk/HtjvD8TNr372viGLQObx8YGydCil2e02nE49bdssdN6C7XbDNE94fxQpqJbjEjnRVAWnODDNM9koUnTUtWPdtAynjnC+Y/aOVduQ8hlKO1arS168avng9Xf54JPvUFqLRsQlT1tSzomsEjovGvQk6DBlLJhEyhFiIkcZmclGP8tYLk6oNC97pGaaJg6Pd/T7B0wONIUhK9DWUDWVNH+MI0TNaRgprKWtCrAG5QxpUeilHDFGxkEQyWFi6k7UVbEANqVGH8dRcGfGUZQ1MSl8N7B2a7K1Era5gC+1juSoloc44pyUV2TxW7DwB9BGnINR7AYKgzMFXjt5GP1MjAlXVNR1K1QiIvZu5OH2PYe7G+I0MQ8j0zg+l1d5gX2oLEo+5ywuK8YwM44jhXO0VUnztHPOM64u8NGTUKSoCEjGn3Fm+TzSUg3oheBjFsOQWkjGelF3AllJRJkSYVGMHlcYttuWsjL08wRaYZzsvjFnumGgXtW40tF3A+1q9TwWzWT6caCcKvpxICdhZuRp5OzsgrSAdadpEkl302DMzxHhZVkuWRCSqSnqwZnJ90xeICxFURFCZp4i4yjel7JYyplppio1m/UZKjv6fuZ0+guyEv95XWJvLYX+okFbS91U0vgry+c6b9U2zLMkz2ql8Ekade2qRRGpCkNZWZzNxDgzTwGj4Hy35f5RZud1U1FWK+pmw9XVZ7x8+W3Keg2zX252iDlDDAKhUuIKzCmI9jyDipmso8zjJw8LCw6riNkjXsYoUdo546PncX/P/uEOS1xIM5oUNK4qJGEoI9Ti0ZONw1aWECeYB3RRCPkX4eNr1HNazzRN+HHk6sULtDJYA/MwMvQzWlmqqqSo1kxe4KIrDNq659peBCqzBJ4G0TAUzkpX/KkkUKKfUEoelueyfYF3am0ld2H2RB+wRbEk9FpcoSlLx3H/yHA6kGNgHkdpCi7QTmkB2MXWm3C2wCzshO7UUZUVm/WGtjBYm9HZUDQVeDEEpSgNzEQgaxkTxuWBfBLg6Kd04+cfGq3McqIxko5szDJuTZKObDU+jJy6AyaWghRbhiP9NHC+rbGVw8XFSZoTrnSErPn8yy+YozQEkxI6kXWaRBZTkTV0px5XFDRN8/zAg+DktNY4J9FwgiyfhE7U3TP0E6t2w257gdaWu9s9dV3JYugzSlmqskahWa+3rI8n3r1//6ufv3+ah1Qp9b8G/tPA+5zzby6vnSO5A58i8JB/Mef8oKTQ+p8C/ymgB/5LOeff/Se8P03TEOOStGIsFxc7pBsd6fuO7tRxdnbGet2SYs8wDKTgCX5Ga6nXtQKFQEDJkELAYGiqkqEuJaQSjQ+eTVly+eIl9WpLzkKcJc2irosRbMZYodKQI0olKRGSIcwj0/jI1O/JY8RlTVEUKAwheVBRRnSIv7vre7rhhHaazWZNU1jCPJKVwD+wlv7UcRg6bFGw2jQoB1PoMWpFjp55CqL1N2Zpasn8fux6UojUzQpmjzIF3mfG3nN+fo7RBuMachA9gS5KtCvRWTz0WmnkthcoJ0psyVqp5d8klCqkoblkKaSsJOw1RaKPoKT+HqcZH2fmEITrECPGGpq64uRhHqWJJgEaifzUfGSJBFMi701Gshe67kQMke1mTds0WCIhjjI6LRxl4QjdhJ8jpbUklRd4itzWabHqppSeLcTP5GHU8wJgjMUYuywC0gCa55GuSyQziXJRZeboGY4iZ84k5jBTxAJXFszeM/QDGIVxEpJjreXi4pK+G8XZ1zYM04hzBcZZpuDphx4WQvCrV68wxvDw8EDO0jPYnZ2RUuLh/o6UHSnNzLMXs5QtKV2FnzJl0UAeqbfCnqzKmq7rUOglGbn6lc/fr3YV/OPX/wb4T/yJ1/7bwN/JOX8X+DvL70GYg99dfvzXEfDon3plMjEFjDUcjo/MfsJaQwiecRzo+55hGjgcRIX1+Ljn4eGBmETldTzuyTngCgFLHvaPdKcDhTVEP6PIrFeCEdPa0DRrzi8EuiGbvsyRycLBT0uZIcq3QIievAQ95pQYu16MLvd3RD9irMJYEZyQhRabUiKkwDCPjPNIWRecXZ3TrFckrYgKbFVh6oopJo7DCMZSrxowiZBnTAHKKkKcGYaOFAMqQ/SRHAHtGE8DpMWBluRbGpMmRkVdb1C2AlOhlMUU4v9HGZS28u1XBoxdvg4ilKmKghw9YRyI00R+xnLI+0teYpCTQxSpsLWOsihJOTNOM+M844OEarZtS10VzMNJBE4xYFA8HylSfp66yJE6ymLiJ862a64vz+WBj4HJz8QsfIN2tcYYyzTJQyGsRJHZPpUB0l5YxpkpiiJ0OSWkJHJmnqAjyPhQKRjGnsNh/2zXzUhOw/6wB6W4vLqQOPpeRnVZZebgRXPhSi4uLjk7P2e1WrFar6jqGqU1wzjQ9Z2YihBy0/6w53QSbX/btqxWK6y1zxjzsizZ7rY4J7So87NLzneXaCzj6GkbAZlaY5ck6yyhJ/PI/f0tIcxLluEvv/6pTgI55/+nUurTP/HyvwD8teXX/xrwbwP/reX1/22W5fb/o5Ta/Qnu4L/3/RMcjyO2KOmHgbIqOZwOWOME9zxNlFVJN/R0w5GH+zti9Jydb6UuV1maLwtoYQ4BnTWqjKQwE7zBFqVYaBV88OG3efniY6wpmTsPZoYCCCN5XiiwFKQoc/EUMipFjNKkWbDYBKjKlrZtKZxD5YDKgUJHUg6yeMwzPsy4ylHbGrvo78d5piwqCYhAuADeR9r1Cm0MPgaKulps1UfmqIlzIqeG4MX8U+oSnRRDN0qseMikJGJ+5RpMKT9ijChb4IooGsIoO7Ac59UvNMQy8zxhtcLqzHi4xyWNqzeoXIOxS3R3XkxBAa0TifBsVHLWYo1lGnrmIKGhUUnUWZkyp8MNOtXoeaRC4ZVhiML0k1AOK41LDdkkNmc112clzmrm05GYPJmMuG0NVVExu4KRjqAz1hjClEAlilLqa/FOLCeMLIYmnRUGLQCanIlZLF1aIaXQ4rhTykpEvK5RKku/ycKqlnFf0qKNaJtCIC40rFct2qxYrTY0ZSMwkBgZvEeBiKGyYr3Z0jQtdVEQFnVgTJFSF2x3O/quQxvN0Hf0fQ8Iyald7cgRrKmYJ2EEKK04Hh4WDF0ghIS1lnmeeffuDc655T3+DIvAr7he/MKD/RZ4sfz6A+CLX/h7Xy6v/epFICumKXFzcyvHeqsJOfB4f+T+bi+QhbMtIXpcUaKLBpUDU8igBdc1Rc/weC9yWzRVUTOMIyoniQ6PmRBLqtWa84uPadsLVFTYlLB4mD3xdMs8T+hqha4bwPI0RVJZGmXJi9vubPdS5JsmkWJPTh5DQDOTosRORe/RRi9GnUxcIKQZjbYlMWbi7EV1qCyFLog+Y8qCsqgJ88ypP5BVQdVucCbjw0QInkqX5Hkm+khbrchJMhJRGlO2FO0GigodA9o5KmPwk+j6pVSSXVg7hUpASmJa0pkUZ7qbr9kqS1nV4AOYgpikg5+NfH+czsQ8YhdDVIyBwlmGLuFjxmfNcZjwZIzL9Mdb8qCxY0+dxTMRtSxISkn6TlVabJHRlWN1cYY2M4fHe/zcoww445iHAEmho3TcdWmJLktOgDdSdysJFiEp6WIiZWdE+gHZWpI2ZG1IWkTWT9ZirTVN1QpiXoMKjsvzMzp7xNcj61XD12++wE8DF+cXnJ+tCUFKQKMSdbkl6AhJLUIhePP1V6zXm4XtmNgsJVRMkaJyNKZZYsxEf1BW5XMydTecUApcWbDeXBB8JgWFn3vquiDjGYYj1ghvMkfNzbv3oBPDeGCcBE/2q64/l8ZgzjkrpX412PyXXL+YO3B5vsWHzMPhDmMSZxc7Yozc3t7x+CiiiHEcJX+vH7l/OGEMVLVhta6ICTkldD1aO3bbM1AW7wM2K6KPdL2n3Oz47Ft/ifX6Uiy6MaMNEEZ8f2I63BLQVK4Q95yTGbi2iLZ8GojJU9UVRbNGEUmpl4mBUuR5JvQH/DwRYkAZizUVcZ5RyKx3GieqshL0GHKTHA4nnLXEOeKaAmcLcsz0w4lpmKhXjtW6wegkaTjRy8fjPW3dUhUVOWZmHzEaTFHgqgasBJ2ydMNFcSYS2RTEQ2GNW2K8k/RUtCb6meE0Uq+OtLsLCDMhQsgKoyzayo8Qe0IQ9yE5M08TcUlfmmdPSGBQzNEv0d3zkjwUCcoT0NR1ATHhSVgDxmSqylA1BeSeqXtE5QmyR7GErcQkI8DlQbJlgS4kJt44h31SLC5TJGU1MbGMDxVpWQyM1RgnMWopS86i0oamaSW6vlljyxJjDZt6S/aZWWmasmG33qJy4ny3QytFVZb0p46iWnN4POGsnCRzgLIuiT5yOna8fLWj7w8cDydxJZKpll6PpA0FiqUZLnqBQFlI89hVFUo7YvI4W9K2sglpLXoCraFOmqGTjE1TZC4uz0nxyVPxy68/yyLw7umYr5R6BTy1H78CPvqFv/fh8to/dv1i7sCnH73Id7e3lI2Qh+/v73h8PDBO0zPxNcRIzpnb23vevxejxFY1NG3DOHr2hxMKzWq7pixbwhzx/UCcZuaoqNZnfHT9IS9ffIIzFYQMMUKaCUNPf7hjHo8oW4k60c9ipdWScJSiIKMzYuvUpSOOMyHMqCy8/TD0MgM/nVBaUa/WkNKSmVDJrj+ObNoVYZLaVmypkxhFUqQtZBGIUU4wZmma2qIgTJ7ko5Q1KUoI5xJznpcR5ZMXvWlX8j7JyHhv2R2Xrz7C1Q9kVYiUIWcZU8aSED0hzOKOIyHxVgGUCFuMNjKiGgcyoiY02mC15Tie6E/dc/IRCkKKGCvZeCF71mc1iYwKCl3W6MnTzSNGe2moqojKmhhkivAkSVrsCsQQpElrDK4sqOoa6wxmaWoatSgGs15UgVbMRM+RI/IVQLEgyGU8aJ3Y15tmRdOssEa+F2jJEsxJ/BQpward0Pc91pb42UvDOinKsibOibpZMc0DJI9WjqZeL2zHAq0cSjnhO6aZ7WaNUpJSPI0yGTBaE+ZZSoSipCor2tUGHzKn04Alsl6taNuKadrTtDKiLJ2msJG6Lbjbv6Oqa9pmw+PD/i9kEfjbwL8E/KvLz//GL7z+Lyul/vfAfxjY/2n9AJDZ9DiNaKdpVyWwJL8YS1VJeIZ1ciOfTh1V2bBatTS11EVdf+B4lPglox3zFOlPA/PhyOHxEWUrfufTX+eTT78vXdSkFrNOIE0DQ3dPf3pEETFKSDs5zijq5cZJeD8xzSNOy5guBdHs5xhIaSYMA77vmbqB0xIiWpa1wCkT0sTre1SSdxRhSMfxeBRs9RIT7qx4+FNMOG0kgspZ0jgyDxMhZOIs/78wTxTOkHLAZKEIKcXPFw5bLLZfEf+knNAxoFzGGg3ZyiOxNI2MsaRF9ZeXo2iKXoxIWXj9IQbBu7uSHAqiccQQ0MpI7Nk8L5gzjSvLJalJTjCFS2Bge7UiG/BJk01FOmXSoPFpIvhEd5jpDjPWZJKfpFzIS3x4TgubUR5m6yx1U8trSpGNIMaNNmib8fMSUYciK5EWY8yzfTghPQmJZ7cSUaYtTd2ireGwPzIFT1WVWGfQSiLEi6LB2Yph8ITgqass2DJl2e5WtPWKYex4TKCU4eriBU27JmY4PyvYbM8kouz0IA1JbairGqPN8/g2LCYoXeoFgiMx903dMg+BYZhIyWNMoqpbutMJ70XrcnF5TT8f8CGwXq/YP/4ZY8iUUv860gS8VEp9Cfz3l4f/byr1/2fuT2J13bY0PeiZxVf/5ap2eepbRGREZEYWGIQhbXADhAXIFkKmgzA0sGR6SEgpaCAsNxBVB4kGggYSCCFZshBCCIOQsIzTWSgjMoob995TF7ta1V995axojG+te43jZCQRTut80tE5e+291ln7X/+cc8wx3vd51X8L+Ar4r85//P+KjAc/RUaE//Kf9fW1MTx79pSvvvkFq/VTiiJnHD1hltlO0yjSVpV4oBAtVw1laRimE85PNI00t7puoMgN0xRo+5G2n3j+3gs++OQ3WW6uSFiZE+soQJCpZRwOuPEICWxSZH6ShWMAItE7pqknJE9hDTHIXVypIBjyEdKcFdj3nVhFs5wwOdG1VzXJe6a+Z7lczs5C+bMPunGloV7UJBLTIKYRiZ0yhH7AjQ4fpKOdfMC1rYRNZBluGoX4YwtcCKRpwpockJGeYuYBuFFOdBLGasHXEVFzfmNKMDnP5GShh+AYuhO5LiEX1LaguBNZaTC2wOhcfj4uEEPCOY9znrysMDZjOLVEBVPwlCpBJrqDbGnJTcHkwfqE9p409JxOJ7w7YXSgyO2s85fFb5SaGQUi/olJSmFb5OLSm+/zMcg415qMUUm6MXNegDIW9SiSQhgOgDKGNEuiJ+c5njqaZSMgmJAwJpNrXHK0pwN62bBcbhkHSYm+izvcFOi7kYvtOXmek2WWYRgZxp48q+UA0prVsiTPS3Exqsg0HhmHURDySDjvgzFLQm4zxmlkGHq0jhQ2x1QZ0YcZsHNAm8jxcMRNiTDB5nii63omN4uHquovtgmklP5r3/Nb/9yf8mcT8K/+43zdX/skjNWzvlpzd3/P/d2ei/Oncq/PtIyADFxeXbDZnD16v+u6pijk/r/b7UiI+CiEQECxuXjCb/727/LkxQcQDDqv0DEAjhQ9furwrsVNHX6K5CFRLFaQBD4ZI1I2J4exYHPD5EcmN1HlVkItgof5uhJ8IHtIjokJHSKZ0gxdT3SezGbiLR9HUow0TYN3ElttM4sbJ7zzs+3VEnygb1uMzdEmwzlPlWWkaUQrYSn2/UgMkksfg8f7RF5oOdlR2CyXa82khReQZOYvbRxZlMYYtJGcoYiiLEuURrIFs4aiaOY+hCekQF3WKGWJWHxQ4Dxd15GAvKpEzzArAY2W/446EU2inVqCiQI4JaJtIKWJEEdOxzuS71mtasI0ClMvzcy/9DCFEHRbSgkXvAwtjBEKstaPjUBjBDPvZtKunrHm2pjHf2P0jE4QbqMyIoG+u9+TVyWrxYrRTRR5gfOC+p5GT2wQF6qHtp0Yh3YWb028ffuG1XLNerNms9kwuRqtNG3fE2MiW1ZzUMyAAdzkZh9CjtaaaZL0a7nrF9R1TVmWoDRtNxD8RFE05IUYwfoxopNkFhR5xjQEnPc0iyVVlIPR2ux7l98PQjEYU+Tt9VuunlyRFRlv3r17hFgom/AxoGKizHM++PA9UrTc3LwTSIfOmeb8gCyT3Vq+JqzWZ7z33kd88uPfpCyX+ElhkiH5ANERxlHubNpjTRKhx+w11xrSOOJTRFuNzTRG5djc0rkOZUGpRBhHxrbFDQNh8sSUaOqaPC/pT+1j9PZxt0cZDSFItp3zMz8uSohGXTGO41wFSEkfopfsQDTBBKwV4dTFxSXeO8GAK/BuJCmNiYqYDIE0nyRBBDPGYmalXJzRVvLOn3l7MYACm2XYrCC6kcxaktW03QlTD9RWNBjyKJSR7EhmE5GayUwmyynLmjDbeJerlUTIG4OPMk70yaMyA1ZGdaYwaCubbXCToL+tAGBifAgTldEoevYBaMkKmMYJnxJ5nhEnN2tB5EqjtExmfNeKx2Pe6JQ2KK0xVjYDkakajM0JCZFbayuvEZr21LE7Hui6lmfPnpDnJWUhC3u13OCcxxjDNE1s1hsyI53402lPs5DswHEciCFwOJ4kDn65oj2dZtrwAUksNhgjnIMQJJlYzT+zplngg5tDRyJaBbruRNedKEpF1eQk5ZmGQFISVPowffEx/CPFQj+ITSDPc6qqpFnUTG4gxsBHH35C20rwRtedMPGhpINjd0IbWJQlNlPsDyeOxxNn23PKMicEOD8/Y7Xc8smPfsp6e4FWhrySeXoKAbyXsZ5JFHmGrnMocmzR0CwXKGvxfiTEQJZV5LklmSSqNpXEAx4D/XFk6HrwDjdJyW7yggi0p5YiK/Ch43A4cHZ2LgszCfGnyEt2+x3GGMqq4ng4EFzAKiOnkpY3lohgOpQynE4nzter2XzjCaNl6FtiP5CVAZPXKFvwAMyUz9eYIpO+wIwAAy17gA/EcSA6J+NFm6GMjJS8UjgnkJMHSa99wHgZQ5zpScpaMqUoKkfedqAOc+qxpawF+mIyy/F4lErESCIyRpHZjDokTu2JtJfTuygEQWaUBa0etQHjNKJzkZeLuUs2Oz+Hmsak5oAaPetHFHlR0A+D2KCVvKYgwqqklFQQc0R7WS0wWcnoA8M4cX+3o1lIv2GaBg6HAxeX53P+4DCLdxY451mvV5xOJy4uLkjRs9/vubu7Q5sr8qIkhEl6STHQtgeaZU1RGtwwB6A85G4irkr5O0o69+l0wtoMH0Ym1zFNkeAlINVmke3ZhsWyYm8VfTaRbRc0y4ZTt+NwOKBIgkL/nucHsQl47xnGjsMhEIIEifbDwOnUsT0757w+J8aBuil48/Y1CkGC2yxDm4S1Cq0TbXdEKUNmKzbrFe+//wGXT56SFZWMldwgTrgU0VosvdM0oZVkubdHT1YqTJ6T/MTQdqiiQBlNpnOCVRxu35Fliiw3xGHCjQNhGqnznNYd8AmyOeFHaUuel9ztDzgfWG23ZHnOYS8nRJhdYihN2woXUSuRuU7TxNXVE9o3bxinibppOOx3ZFnG1HcYYxiGDqUVyTmmMJGwVLaQUFTr8THRHo5SJV2c4UIgBkeGNAJTEGBoDFIu2yxDmQxjc8q6xkdY6RLvhHeYrxZMrpdUnBAk8cgFCptDlGqkrBdg7gjOUeY5IXiKqiQECcu8v7vDzyemH3uWiw3PX77HOHh2tzvquiHTQvnJi2x2SkawkNxEVRYi60ZYkyhNbjPGbphHg9JY07NVWKLXMlABbQ2ZzYhJtPzijlagLVlRYosSM1OpfAgM44jNNNvzDVlvMTONaLlcStVZlrMiz3F7e4tSis8++5SmNgxdx/5+xzCeeHL1jBAieVGR4oSLCYWjzA3Ra16+9x53tze03ZH1+oxxGhiHkb4XR6EwNvYo4yBNHA97tD5yefWE9XqJsYFXr77i9ZvXbDdXNLXl66/f4fxE3SzwPrBofuh4sSRv+vv7nizTNIsFeV6w2eTEEMnrgtPpwDAEum5kHIOEeYaCyUm4aFkWTKPn+voddbXi6dOXrDdnlFWD0mYe74Q5YdYQ2olpkmimmBTTbHwpm4bkJsapIyGJNMmJi6zd7xi6nnzTiE7dT1RFweLskv3ulr4faRYr8rrB9yNVs0AlsaBmeYG2VmAmk6NK0Pc9XT/MnnFJXiaJfkArgYDKG8FSFQX3/oYYJsa2QmuFC5HJewKGsmzouo6qXs3aiUB0gaE90Z+OLJpsFgKlRwR3DE6ag0YQ6NEbOdXLCu8FsplbKzPmJF30GPychJyYfMBkOVWZM3oHxpBXJc1iQdfKHRmlHkGqMcY5LddhTEeWVRRFzXK1YbFaCeFISziLRmjA23VDvWj49tW3ZCFnmMRTr7SMBJVWRO8Z+omqzFF5jtHi+nRe7NHGzlOP2TeQFxW50bgYpOegDElZ0Bna5nO/6aE8l1J+vVlyeXUmnMu+4/LyA+7v7zkej3g/SURcShz2d4RwpCpl4W70Jd98+yVFUbFenzE5kcF/NvW8eP4CNwWGMRNpdVPiw4jzE7vDjq7tubx4wmq74Xg4cnd3gzGBaerohwPL1YK6Nnz+xRe8ffcdm+0Z/dDy7bdvKKsaYzTrzZZp8vz857/43vX3A9kEEkVVME4tLnj6YaAoFtT1kj/5k5/z/gfPWawWglseOjarS47HHW/f7dA6cTodyfOcplmxWCwo8gatNGVZkeXFbPMNcxAlkGTEZ7Umb5YEp4keiqymWC7wzsn30CwxmSV4h9Ka/d09KXmMXs86ezGf9N2B19+8ZkyOs+cbMBmD77B5yXBsGZzn4uIpRVkxHY8C5TBWwjWVxph8FtOoWYsvgp/T6YRzjkVdk0Kg71pR5Vk5lZIyuA4ChqerNdc3N6AytmcXTHPsmZ86uq7DDWfktSElmUwYk82ZAQLgUEnjYwI0NisITlyI2hi0m3X+QXwVNrPi2wieqswFFrLfgdaUdU3ViKw2JXEkaqWY0sQ0DPRdj0YzdCOpEP9CkZes11vOLy/RMbK/v0WK9sBqs+TDj97n+v6WgAA7otgGMSZgdEbC4KeOSUGsSnJjSeqh3yHKSKM1Yd4EjDFkZYmJUQRVNhdNiLFomxFVxFpDlgmxuCotbXvg9m4kzQizH/34RySCeAMWwsU8tUcmd+K7b27QZxuub95yOBwJSfPs2UuOx5airNhuNzjvHkfjbTuQWYWPI+PUo42wG7Mypx8H7u/uxbCFoq5KXrx8Rtc5jsc9f/hH/wDnesomZ7Ve0bUT97t7Pj67oChL8rKiHx33+7/giPCf9KOU4r33XnI83XN9/Zb9fo93cHamqaqSw0Gks8Ym8lzm7++u3/Hu3Q1FkYFKFIWlKhs26ytWqzOePn1J3SwhKbybAOmAi7NvwuiIqnJMZPaPV1TrLWQ5YWgxWkivOiW0NozTiHdhHusIfFMpcOPE3c0d93d7zl9cUa/WDMERjcUWObvrHSYvadYbkskIyqDzAh8VzkXqSkrLGGQCkmclyU9zZeAAaXodjjvGoWfoOsrM0jSNhG2anPvDPdvtOTjHm+++5tnTZyRtcMNIGHuiG4VH4DN8cNgoJBs936shSYiJc4S5EWeznBiT8AmSnOLMEwgA5yYSCZvnqCzDySehH5ptRmOAqqxQcy7f1I8kH8iKAmJiHAba9kQ/dNSLiosnl1ilxT9iDWWZ4ePI9vKK1WbD5B1Fkkh1QXONZLogLzJ0gnF0Yh4qS7Q1qBRRKYo5R8vGi9JSIYREWTckbSGXrEWlDcZm2FzTLKs5yFZR1QXvXr3m1avXLJdrrMn45usvubu7E7dfldF2JybXY63ixYvnnJ1t8T7w9s0dJivFFmysKDeNpawqxmni5uaOU9vz7NklLgzc39/QtUfOLy64vHzCNAT2x6N8rjGcTi3WFuRZQXvqMSZjtV7g/ER76vnggx+hVY1zkYvVSuLLt+f8zu/85e9dfz+ITSCm+NgJFaODWHOncaRpGoax5XgcyAuDUhXjEFg2Z3ClGMee9XpF0yw4P7vi5YuPODt7wnZzQZaVYlGdFxXGAgGlJGTST5H21OPHiaKsUUVJ7Ht88JRVLWEc44RqGsLhQGHnVOQgoNPxeMT1A7m2XJydc3H1FJ0VdMeeerHCuoTOc1ZFgc5LuskRUGR5yTA6Jh85u1jhxonTqWMYJhYXW/ykmNzEMI1zGMbA0HZYrUjR4aYBqpJhGDC5Yup63nzzHavtBbv9gbt3r1muNgxdxzQcIQZcf8DmC8GQpwBJ+i9aVATEEATYqTTBO4qioB86ut6j8wajDEQRGfkw4ULAzC63ECPKzgwCrUGLTddoLUEwUeArKiXyuYkYQmD0jsP+nlN7Tt0s2JxtSTHiklRD2/UZb1+Ld2S92XB9e01e5hTe0/cDQzdQ2Iq6XFBkOd3Y4504OJWWCYtShrwocV7+fkYLcMT7QM58BTD54wi2rGvKUlPmimaRk5lI2+6o6oynzy5mdWTON99+RdNIlFzXH/n6669YrRpWq4ZFtaQuK9bLLV8svqPIF4SguHr6lG+/ecVXX/ycq6dXZHkuINYiI6TEerMlKU8/dnRjzzBNrNZnZLZiHEbevr7l+s03RA95uSDPSxbVirouKatihqzmXF695H63mwNIMpkO/EV1Av+kn3Ec+eWnv+B4vGe32/P++x/w9OlTdruTxJATadsTt7cn1osXFOac1fKcppErQlUJfKSuNmzWV5xtrsjzGqUyhEkgFl/lJ1QU6KQPk+QVuECRNdRNgx8n7m7vMHlBUWlCkE6+9Z5xnCQaKiUZBRbS1SUIrGO1XNMsluzbnsF5mnWJcwNZUbNYNuRVjfeOLC8pi4rTUWKlVssNx3hgHHpSVORWri/t6cgwDnRdS5YZMi369KnIIAWcG/HjACqnsBlvX71ie3bO2XpN3x5ZLGr81BH8IKWwG4FaVG8aUvRM0yCqRJvPJCWpeqLSkng8OIKPZKUIbJgbit45fBTmvrEK7zymKEh+xCiDyQpMlpEZQWcnLxLiPM9m15zDB8nsG/qWoT+x2a7J8yXjOKIyRT+NZGXBFAPXd7eYXKLWFVGiwauK6DtIkFvLslnMJXZimhzWgFei96qrimPf4yf5faMsSmmm0aEx5Ll+FFTZPKescqJvyXOLThO7/Z5gHM2ipCoXKGXpu4H1ZsN+t6dpKoxRZLkls4au63j93RvWq3OsKVk0K7788lsmJ0r1cQz0vWOaEuvzc8rFiq47sL1csz7bogycTid2xwNJZUTfioRc5xR5zZubdyzXJVeXF0zThJs8n3zyAcZabm4PlOWSJ1dPcb6nqmrc5Dkej9+7/n4Qm0BKiZu7O6apI2mIJA6nIyHBxdUlX32zZ3c8MA4dTZk4HQcO+xPaigU1eI1TiuNh4O7mSFNdkFcVWllSkOjwmB4itBwpeMZhIkWoqloWnracdvfsjyeWKzFz6ATaWLq7ewF35GImsbkhuIFhGGlPJ9pTx9nFBSEpjv1AVst0YHIemxUUVYMtxI4bjadeb/A+slgETNVQOtGH990ISqGtwccIM3E2hkBeV3RtJMtyUoq0pyNKZRTGQqk5Hjturm84u3pCUqKv99NI9CPaWmKYAFnkWmtSCgTvSEmcfzI2E6agsRlumB5Bl1mWQfTidwiBEEQ1aEwGRuNHj7IGPyaywkiG37zg8zwnkMisNBnzzJKcZ/IOYsK7nrY7SpO1qvBRUzYlw9ijrMLkGa/fvkFrRVEVtIeD2IiLkjhJdeEnR2Ez8T4g06YUhVcZSORlSWbtHImmZg2TnlFy0luJSHO470fKQmjEXd9CGAhxYooDJtNkuWboR4xVtO2Rb7/7msPxjuubN9gsMY0tw6nl/nbPfd2hVUHfRt69uyO+3fHRRx/z9OnLeXTZ0rYdWV0yec+bd2+JaZJr3zAAjnGMDL3HKMvzyy0vnn9Ima1ZLLZ88N7H2Mzw7vYNp2PPZntOnjXEaLm9O9D1d9THE+v1htVm/b3r7wexCRRFycXFU6ap43Q6ctiduL858qMf/VTcaZPj6vIJd3c3KK0Zxo5Te2S5kFM2RcXN9QFztaQsV5TFEuUhEBCf7IN1RDrj0zji+o7CFOSZJUwDx26iPR2YxhZCTXCDJNUazeH+jrysJHW3rlClJXYjt9c37G9uKK2l2p4h241hub5AaY0LB0xREZWZlXNWtOpZgckK8rIGbTG2ICsalL3HxYSxYlzKMkFalWWFMlagmyhChKEf2G5qITK1A6vlglfffstqs6Woasaupe9apmGETHL2UkwzQ0AY+wpJLYpeAlPCjBTXJpuhJiVZVqCswbkJP3mC1o+AFaPkDeTmHAI3OcoikxRkI16CPM+ZYpD7+K+ZfoZJYC8hePqupT0dQIkCMMssIXmx2eY5d/d76rqkqmoO93sBv5JIWtMPI4oTZVVJiMhsdnpIHU4pii9lvutPPuGS6PmzLEdZoS3HKErAw+FEkSsWjeFwPBF9h80T2+2GzWbL6dRzc33D6djy3nsfsL87cP3ummHs+OD9j1guFrz77pamOaMsG5wTi3wMkXrRCN9ByXVPglwS09hxc/OOb3/vS84vzsjzjL7vWSxWrJYFdd0wDROffvoZL59c8du/89sMveerr7/A5gabGSbfY7OM46knqZz97o5xPPD5Lz/lw48+olksvnf9/TA2gbJiHDTHg2caJD6rrAoOuz2319fy5sVS1Su0VeSFwpallLS+px8mrF1wdfUeFxfPKaulgCF0JKRAjMipjgRUMo6oocPFlmg0KSSGYeTu+hofPHa7wUZH6B3t/h5SIs9X2KpC5RXJj8RhojscMVXJYnmOLwv6yVFVaypTMw0DNl+gjEfbDK0sqEBRVOggoZrLs3O5chjDaZzQRcmUNJt6gbZ3lGXN7c2twCTqgmHyRO+pq5pu8JwZcbh1fc+Tp0/48pvvePPtK37805/SHztcP8G8GRqVQ8oxqkQlUf8l75mGltiUcm3I7WMIxog44rAZLiRi15IVNSl5hq6XxOZ8ie87+uMRqxWLMsePIzF4MisbQV4WHNsTXgnaLGqDiyO2KLBKY4uCvh84Ho84P7sNY6LIS9qT9Ifc5Ji0xk2eLCvo2h7QmKwA5xiSpC3VTUFKbpZOBwjSn8DNXMasRBlNUIZJicrRZPNkAIWKiuQT0+CJdQUmx+YaQsfp/ohykcOhJfQjYXS0h47z7SXb+eeY6ZKxUxi7QamMvFxSlgqlLWeXmtOp5fMvfsFyuaQoC8qy4snlFTrXuLHFj09pTx37mxPbzZZcVSzKFSTYt7fc3FxTlxk399eQEv1wS7/vQMH6bMtZtiUrNVmZ8ebNgWVR8g8/+5KpHXj53vPvXX8/iE3AOUfXDtzdHciNYtXUrJoVp+ORpCKHw55Td5S7/coSbZAxSgqopCirms3qisViRYxKgiILS1IegsSEm5RQRFRMKO/RwWNUQsfE/rDn7m5PiLBersh0IrqeYfIcTh3lYk1Z5MLi805SanykLipCrrBNjS5LqrwUGW3UEDRKZ2htKMqCLDOMcRCv/TAyjg7miPF+cvT9QF43GJ3YHVvKxZI4DVTNAmvzufOdQFmisoxOyD3a5tg8B2U4m5OX2pNo+BdljRsnYox0bUcxBTB+zhwMROcIbiIFh0IUaiFGQkzUy81MyRWDjfQMvIzofECn/HFsSAyzjCARvcc7J/JkwIWAD5LmbLJM/AIxoZxIgkMIxHHkuD/gJ0ezlDe90cIN8F7GqFrLnL/IS8n3G0Z81Jg8w/mISxGTZjiqElt1SFEco0G8IsaWKJujtZWr2RxOoowWK7SxlJl03r2XBuWyKkku4Nue+9sj0+i4vHrCdpvwHjbrNWVZkc848YRiv+vx3rHZnHN3d83l1TmntuX27po/+fkf8pOf/JTGL7i+fsepu2W5qcmzih9//DHeiVX4/PyCpq7Z7/ckIk8uLljWJUWR8fb6LcTA/d0Nb96+olkuyMuMd+/egskYT3t2+3tMveJss+H67VsxxH3P84PYBJSCpy8uAc+iLjBKSK8mLyT2qdsxTONcRnn6bmSzWWFsNltbNavNmsVqhS1yIgnnJrQOs85a0FEqRIJ3eDc+JhT3Y097FBDI9uyKuqrxc/iDc8KmqwrxDMTgZ6l9oD91FEUBOsNkIlUtiwKS3EmNVkwxEgkYq2WBOLnfR6UgRbybsNrgxpG+azk/O0MbePPmhsvzM3a9NHYSiVPb4oPgqLXJQMk1YvTy9dq+Y73dcnMrApaiLFmtluxPzOqzls3M2iNpQagncT5G5zCZ6BRCCICmqmvGYYQgM3OQANdhGqUXgLAOvYszvktGjcwR32ruAwjBOIo8Xyv5WnmGJjFNnqEfUUbTtUcUSYRimSHPxDUaQiAvMmyWQd/P8/tMgkujltdgHJiCZyo0WabIzUMakfx9zRw2mtmJ3IowS/oCcc5YkOsMKc4cBckn1NnDWLmErEGlxHpVs9mekWUZbScOwikEEg5lLcEFXrx4LleAGPn22+/45Ecf0Pcd+/1Orpf7HZnNubq8xBbCVayrEqMt6+WS914uKYqSmCJtdwIUi8WGoijEmdi33N/dsNtJYtVqtaGuG7795jtMUXJzf8/hZoe9gE8++THfvvqWy8vL711/P4hNwFrD1ZMzFJ4iy2iPe25vb3jx8jlaQ7NoSL1YjpfLFbu7owAylVQREqyZyPKMqiooyhylpRmok8RnExLRO8ZhwE0TuYGu79nt7gjes1mvaeoa7/xMrNV4L/jrIrf4occnjSlqpqGja1sJiyxqlM1mLbsgulMKaJ1wrhfGnS9xfqLrWqy1ZFk2C34skAR+GQRQWpQVomnIRFas5N4LCpsX2Hns8yBu6cYJF+K8kOUkmpwjKcgGQwiOtj1SdSsRTM1R3Cg5uR/yBPOiRM1x58baeWHP5GGt6UfRsJvMPgI8QxD9undOREF6zmVWas75k41TkR4XmtZglFC/FJHgJzRWUoqnkegn8syQGS2KRi2x6pm1MCsEJUjUzrg0CUnZ70+crKJuSpq6pszkWhNDxBJlruE86BGTi39fxwjBEZ3CEdE6kuUFJBFAFVWBmqscmzUSm5YMk4toC6jE/rQXl3bQFLXBB8d2uSGlc2IKVFXJ3d09fS+irb/xN/4G6/WGzOacn1/g6Tkc71FKAk+LQgAp0jQ8UdfFnDnoORwOrJZrqnLBXu+p6yXPn79ksVpSlgvG8S3NzCSoqpq8LDi/vGR1tuHJkyd/+uLjB7IJxBS5311z6na0CUnQGXumaWDyjizPqUhkec7V1TNIBTFN9G3LMExUlcBG4xwTlSWLVRqjZjZgiLIY3fSY+BMS9H1L33WiLLQZu/sdSomhaeplnLRc54x9h+8nbFlTaEN3PBBDpKoqEb5oS5jjx42182noGfqTvNHDkn5u1JVl+Uj4ya2l7wdIYebDddRNRbNYMjkvM/uYcD6yqGvR5c9wDGVkgmCMBWtRNhPYRVmKf99N3Nx0+CDMw649MPQnTG6xOseqNMNGpKFX1wpjLCGCnS3LILbsx7I9RvLZXRej5B6kJCcZMc4IbzAaktHzJuNRyOuhSWRazyBRhVMJopfgj+CZxp6+bUXqO8uBJUFYuAJmJgHbzNA0NSH1pKSo6oqb+wND5xhiJGJITYlOEHwiIr6BGLywF5RCZZlYxYPGz1VAyjVEQ/QOgqfvHMNwgKS42F6RFxrvQducw/FEXlj2x3tW6yV911PUmtNpwI+azJac2iM/+clP+OOf/QEheAHh1BXvf/C+3PP3B4pamoPvrt9QFDVnZ+fCukie3f6OPLMSY2Ytq+USa3KmcaLIa84vLKvVgsWioWwkiLdaLADNkBecnW8Z3MBytcL/RWnD/6SfGAM3d9d0bYsfJi7Ozlmt13z77XcMzrFYLWSRYRhGj1KG6IUy1LYd1lS8e/eWqlzLKakvqMoca+SNnqInhYng5Z8UvIhHvJ9TYOF4PHI89dR1I6KltqWpG4xKtMcDyhYyOutbhu5EaS2ZzfCTA5PkxmWSpPekiBs73NSTZ0Z07NNI8BPjAGM/CKcwy+jaE945tIKh6/HOUTcN7fE4l/1GJL4RtLaM44S1JWXV4JMipYSymcz2g7zZnXNUVcFhv8daRVNXBDfRtQfyqiDTCZvbR2vx2A+EpYz8sjQ77WbtPID3DhIiOJkNTn62KWdZJqacGB6tycYYMGG+ernZuhzIrSFaA1ajomYkoVWSSLXk8VOibw/YLCO3gvzyVs+JwlIx6qRxzsrocnQ4HymyHGUUY+/x3YQyA9rmZBZCiESlKUyaeQ+OaAwqOOKkiAowkWRApVycmW5g6KF3R0IYWTRLFssVeZaxO+xwPqCMoahKsjyTcJX2nv1hR986/uSLrwgB7u5u+Rf+xf8S6/VqDiGteffuHVVV8cEHH9L3HbYo2WzXHE9HCash0PVH6X8UZnb/JUzTCOTEyWGx3WzRBoax5XA6MkVHkWcsmkpMVj4QfeDY7rGl5evvvvre9fdnbgLfEzzyPwH+i8AEfAb8yyml3Ywl/xnw8/nT/3ZK6V/5MzeBEHFuYrlY4LPZQ54U33zzCmUMzkdhzeuO0z6gk2G9FZy2cyOH444vv/qMrpPTu25KqmoDKQgFaOqJo+C4gpc0FzuTZoosxzlH2w4oZSR0I0bBfVkzB2YmyiwnTgPt6UgYJ2ydE5zjfncQE03TYJXCDT3BjwQ3YnTEajOP4RxGg58Guq4nsxdM48DYdxJdlSQBeJomTJY/gkW0NpiiZBzG2egUaBYZVbPEBziNLUVZ4qaBlKQRF4ee5aoRNV8QDqFPMopK0UF8AHAIcLTrWlZe4JUkLV16LZMC7yUQBsT6PDpHmvse3geKORJ7HLpHi3Rm7SO8JHj3eCXIrWFSCUOSxZckU/EBf5YQ8VCZJEXXZhYX42zOEcmy1UY2A63JMisMgiAEHm0zRp849RNlKeag4JEw0RhRM1zEkZi0IisCRgE2EK2EzBgDWSaR5TavMaZkvTmjXlSSJnSI9EPHxZWYdZpmIU5EDG4K1M2C1crz+vVb3rx5xeeff8py2eDcyHqzZhiG2fAmSPmbm1surjacn5+zWCxROvH23WtIUNcVed6IenTsZDLhRDuy2Syo6oJ09Nzv7rCZpqoKrIHjYU9V12JsKhQRx/3h5s+/CSDBI/9L4H/3ax/7t4C/lVLySqn/MfC3kMwBgM9SSr/7j/F1Hx/vPUM38vTyKWEKvH3zlt3djhQVVV1DkkaPmwLfvn1FWZRU9VMgzQnDOVqJg+vbb7/i6uqcRZPLPNkNuKEjTj1hGvBu1pxXhfi4lYYk1Jmyauact4wiyxj6jtR31IslmYb2uOf+cKKqSgyWoe847HeU9YKqqUVgcmoRqE6kyCS2auo7ondkxjAOA+PQiXzVT6ToH0ttGYdNkg8wh2OA3IG9mom9aNAWbRNt19OOLRsrTapF0xBiYvQjzjtsZjmNJ2IsKMrZFDSHjUYv164wpwW50VFkEooprjj1+POZA4lJSey5xmjCr5GT86LA+VEyGWcuoka4DQ/NOSWGQqkOvCQ9BT9BEjR3jGIZmkY5+fJMBEdaS/kfvITBKOZwWitCpphgOHXkudiB+3FicIHBS/pRiIkChQ9z0EmKIiOPAauVjIhTRFmN9yNKCTuiaUrqZokPA0VhiQgxermqKEoRjfX9wHK14XQ6Yo1YrleLmt/6rRdcXT3l6upiDtjd8vnnn1JWBc9fPMWanHEcaLuW169fcTjd8uTJU1Yrue4ZA10rV7nFDCUhGRGmtUJ0vttbVrER2/HUc15tWC4XJJX46stbEk6qPltgclhtm+9df3/mJvCnBY+klP7vv/bLvw38V/6xV/yf8sQQCS6gMdztdmgMboyslmdUVc3gHNuzczkz3A2LukbP9J2mKlApsFrVNPWGrj2w390Rnl+BtrLI/ERwk3Th+37ushZyj6tqsrwirzx5XmGNsPeGruXu5oaqKlnUDdGNjN2coOOFENSfTmgSVZGLPn8Uv36eZUQFRitRK/qJbC6th66d77nSOVcqSbURJD6t7zqyCIqHTj0IY1few8bm82I0nNoOjKgmrZWNsigL2tsDx+MRo8Wc1bYnFkaTBy8UIitNVTOf2l0rxqS6nE1JMSLIdhn1WWuJjzAUQ54XtK1Ewa1WK8F825wpDPCoJAxCApIeJHHecGIIeOd+tRkkjwoQg+QCJpUkp5BEHksBiBo1U35kApHmMaC1Ai4BAY6aDJSLuODp+mH+WUqjVGeGhEIl2Zg8kVgWkFkJRI0CVTVaUdcVTVNRlpq+nwAPekIZy3JdYW3G/nAgLwqiDwQHq8W5jLSDZbORTv7Hn7xP1x2p6gJtFCE4lssV2805X375NTfX71itVrgwYoydVYKJ1XpJXmS8fvWKEB2LZoHS0vSExDTB8XSPNkKa8mEUW4ySa9fZdsHutGeIGVVRsSxWvHj/6feuv/8wegL/TSST8OH5SCn1D4AD8D9IKf3bf9on/XruwGpZkNuS9tAydANNUbNebqRRleBwuMFPkc12S/N+w3JRM7kDIRwleiwp1suG9WpF8IplIxBHNYMkFekxmtpow2q1hhjIi4rVesM0OswgpBirFX3bctjvxcBUl2giQ3dCp0BhNSp63NiToqOpS4pc8gl9CLO+3cr/k4RKEq9ljcH7gHcTdS1VQ993hGlk7GWu7yaHzUtiEpeeGwesUvJG8577+3vyspmvS3A4HLm42krzaJYql3lBnuV0XYdRUJYZQ99ihgE7jkzDSMoLwrw4i0ww4qfjgbpagMkwczrugx1YKfHVhxAlOxEprzWyuDVK+hfaz91+hTaWhHyOn8EgDxFhEtMmYJBfHy0K8UwRgkd7LSnMUdya2kj5L/Zt6REI4EgqE+8dCYG2upTohxFjNE2Z431kSpGiyrFGz3btgJ8GsjwX5V6KWKvJy5yqqTCzStIYqTzyQjG6EZVk87+5uaWuFtzf7pimwPmLJxhVsFqtmCbHMHTUzZaiyCFFmqaWaLHMMIwd0zRwfn7GcrPAx4mmaeh7SRrKi4yyzCmKjMwaUoqcTq34Lwqxa/fDADpSNSU2lw1mvx9QJJbLhrv9Ld2p5dQeOHZ7PvnRj753Af+FNgGl1H8f8MD/fv7Qa+D9lNKtUuqvA/+mUuq3Ukr/ATPzr+cOfPD+RVotluzv92yXa6qipsprYoRuGGYduKYpS1bLpTRM+kTbvkXh2G4vWC0rVPKcby+4uryQJlScZHwIMvbKLHWzoKhruuOJermmWq5xfg/Kz1eOifZ0omvllFcxEtxE2/fiNJzfQNEZAV5aSwwOP+fbWZ2hSL9i+s3ahBQEG00MGKQi2N3fkkJi7Dvs3CSslyuUNgxdCyHQLGra0wmlFLc3tzx/0Yj2P0SOxwMXl/OGllmI4FNktVgy9B3j2LNoNnP6jGLoe6ZhIDYLQhCJcJ5L+OjpeKRujpTNEqXN7BGQxZvPxhjBW8tEwztPVdfyZyTnHG2zGfflsVo2gWFyjNOEjxEfguj6Z9iIME5l7IeSJmeIgYRCh1+RjeO8kVtrsNpIPNswoqOExhZFjveO4MGaHDUzIAQMklFkhuh6wbFrsWwLeCSQokeTS05EXbNcLcmLnHEc8a6jLC1TP1BF6buMEYZ+Yr/byeQhJIqsRCtLkVWsFhuG8cjkRr766kv64cTl1Tl1U1NVJSThX6zWS8qywmSGkPxjs7WqSyCitWK1Xs79F0c/9GSZNETNvJm0fUdZlmy3Z2hj8c7RtUfKoqAsCg6HFmMtu/2Ow+GfQO6AUuq/gTQM/7mZMExKaQTG+b//vlLqM+AnwN/7R32tsii4ujjn1TCQGcNy0VBdVBz2B7SGRSPmm/PzLU1d0XUH8lxztlkQcZxvl2g8x8Md55sL6rqSJpwT2KZWkoSjtKEsKyS0M7FYLkk6w0cxzcQYOR1PHPZ7jocjOgXGIuO4VxIdPavfqrLG6AoXJrwLMKcNaa2lBJWjS95waU77ieKpj8HhppHDfsf9zQ1lWTEOPVrB6Xjg7PySoDTT0JMb81iZlGUl/YIo4qPQe4J3uKGjO1qqqhEOXz9QlqU0/E4HQkhUVYPJMqYpMPWj8AkRVV6e5RR5RjuMnE5H8SzMQhWZAETyXLL/wOF9mLMEAlpLdWNy0S0oE8H4uZ8R8AmBqqZfnfky69ePsefycSXJxDP0AySOK8Q4d/Q9chmQNGBttFwF5nThspQ+Tup6wGDm1CWlFNZaFqslvlfE5CTDQoHVGqtF72CMQEfzsmCxXJCAY9tCmkAFptDDreLUtYRJwmtzKwyD7WaDijJNybRm6FqKOqMsCz7//FNu796R57/B2fkZ+QyKEYOV9CkM9hHVHmLAGvOoH9Fasd8f8C6glaJpaqr6wYbuObUtWltsVorewyumIaCCw+ocSb2Cumrkffo9z59rE1BK/eeB/x7wz6SUul/7+CVwl1IKSqmPkWTiz/9xvuayqXhyccbpcMKNLYVVaBXYrCqUMWzOzlmslgxdz/6+I6SO9bpB60hVWob+SAya9bLBKml6PZSRBtBJ5MM2y+Z0HEtWis0yocnzkuEkV4C2bdnf31PmlqYqOLoJBbTBi6S2yNEqcDruSMpSVLWYgZISxaoPErsdpDkmzbeJaRwhRaZpJA49p9NBmn5uYjKK0/EgbHnnGfsWW1WMfc9+d4/einqtO7Us1xvGcSC3lqFt0bNkNqEZ+54iyyFB1w20bcditSA3FjU386ZhIjOapIXPX5QF3TAyzcrFB/2f937OI1CPkB43juLXn8eT4zRRF+XM809oK1mHIQYisrlmuUSmZVlOXpZM0c/XDBlHRmA2wwv8c64MJD1YXi/Bk4U5q09LH2T+Hqw1NE1F3joG72eWgSIFzzAMqPWSpmkYTzuCcwIh0WpuCstEA8B5z+Q902ni1HbUpSHEyHK5ZnKeoXMEF8izgrqssCajqSum3jGNLUVWkoIE4D40UGMMnNoTZ+dbvBc2RFGUiFAxMQziFmXuAfV9T1FmDENP30s4rs0y8qx4tMy3nbAyLy+fcnn5FKstu9t7Usgo7BI3DEwpUJcr3rx9x+aDc7abv4Bi8HuCR/4WUAD/1vwCPowC/ybwP1JKOSTy/l9JKd39Wf8P7x2awNl6QXfa057uOR3uHksdjKapDZkJDMlRVzmTM4zuhMk1MUzEkHhy+YInl+eYFIlukr9gZqUj7j16Pq2HmfmndCawTmPJMks7l2QpBBlrKUOKQYJQbUbfDnOuXyL4kf3ujqJeUFQlSonAxWhN8AE/TYzDOCsUx5naO0k2YIq4aSTFOStP8dgsG7oWH8TpWFrLfr+jPR4psgJrNIfDjrJu8EHm434ccBp8WUsXYt50og8Mw8ip7UlKYW2O1Rl+9AzdQMqlb2EyizWyqCAyToNsAkomAGVZopAFqbUWvLaWJp6f7/jVYiWUXzNnCMRA8pLokxUVmTYEL3+/sqqJXizJ2liMCcS5UlAPVYISfJEPkhA0ThNGIV18ZYTPb3pUEPVjTIGyLKjLnPHYS1CJsZCEsrvf73l6vsaaeWSoxUep582GedMbxpHdfo+24NxInhXEaFivznEpEbymPbU0VU3fdTTrRsbIqud43OGLgm2xZb8fiUTe/+A9VuuGaRo4HuVGfH9/P0ecWYzNKIpmfi/CqZX3n/H6kS+5XK6FCK8MXTcgJg4RI223V5ydPcWNnj4PBEbJZJy0IM2unhNDxnp5waLe/vk3ge8JHvnffM+f/TeAf+PP+pr/v08InjzX7Ns93vVoK9JUozMOhxtCShxOd1RVjVYZzK6xse8gWSyGptzw/OkTyqIgOCfRWFZwUSoG4kzC0UpOTJML83+cHFlWABIcEryfARi5iGOSNMCmcWByXhpj0TMNHW17oKiqWSWnZ2AojOPE0AtQchoGvB9IwTEOPVUlAAo3W2mleSgVQ5FluHHkcDyRUmK9WNC3p8dOOkS6buDd2zdszy9kwUeHKnLJJgxhvutKR18rg3eBtu0pipL1ZgNJkGjMjTk7Mw2l066Z/MTknKjuIhR5IaVmkrRcHwJpnjpIky+JKXl25eEF3GlsTlGK3j65DPcgL/aeaciF8pxlZMzMhCisw6REJBSiSKG1laZfID2Kkay10ktMETM3zrLMUhYZHDvxKmRCqtJK0XUnwmYhZbaXU1rPKUQSkjJnFyrZCGySsXGMclUZp0BRNhhTEX0vGYKphyjai3HsiHHEOc+bNy1TVKw2ay4uzrm8POfb775mHEfa9sRud6Asa5JJotRsDM55ijJDISEr3nmmUfInMpvhlQBY3rx+y3qzpVks6YaR9jQyrgLBJfKs5th5/KRYLs5pbKRsKn7zp2ekFNnd/uAZg5p+mPj0sy/IrWGxWDyGJdzf3wsWKjOMwyjdY+cpa41SFq0ysqxks95S5gXj0OG1J8sL8qzGWFm00lyU9FyTC/nGuWmOATNyok6TnHbe42Mkzwt8dBil6bojICe9GwdcgGGe/3s3PSrf2uOBcZwYp3FOkpmYxgmVAm6aKPMclGJoj7ihZxoHcfIh47ppGDgdDmit8U6alCBdeGbF2831W1brFdPYk7RH0ZBiku/fyoZQVRVNXQtl2UfGfkSt51l9kNHkQ3mNmkU4RjM5x+nY4qJk8jVVhbOSylM1y1lanERppNQjryGlh76BbAJZUZNnhViTnSTq+JhksbctmAmTBUG+TW5uAsLsaMAHDxEKU85qRNEaeCWGpDiP+ozNMZmlSEo24fmrPOYMWAkb8SmRzRMLkLgyZSSxGEQnYq1MRrQWVaTNC2xWcGo7Ri/fe7NY0vVyIn/+5ZecbddoJZMUYzRv3rxB5RlFZbm5GWkWC7K84Ob2lpubG7Islyael2mJPhyYJk/TVHjvMJn0hh4SiYahmw1bCe8Dx2OLNoUAVpMS4ZnJRUbuhQfZrNck5WmHE2VdMvQd9/ffX5D/QDYBw88//YZ96/jwgydUyzV5ZvHekVeLOTdOfOUJiFqjTUmRSd5blq3IMulU7/f3WGNZr88oWABWOte5IfoJ70ZUkeOBU3ekKktidJA8RZ7hjOXU9ti8IClD25+ocslGtEYzhI6h63BM9N2JsW/ps5ztZsvQnbi/uxPBTfCCB3c9Y989nvgEzzgO9KcDUz8wdY1Ec4fAOA4EL14H7xxunOg6uRf2fU+RZ0Bk6E8M/ZGiMPRtzzA6GpK8qRJy97aW1XLB8XQU1l6KskFmlqKwYKSj7qJEYVurScGjUqBrT3QjrFZr+tMR7R1JqTlCOyeqRFFWxOTJMi2eiTn4w1gp2a2VXoxPCls4ch/JY8KFiC07jA9kyqC9IzKQtCYEL72B9ICHjwRv5zGkjDRTjDOHUlKW03wVMFli6cC8uQGriXpuRGY5AUVQhlxrRhdpyjl1yCjQ8/gYhVGasqhRRtH2EygjDs2xYzodMFpzdXnF2zevGcaRb797BShWyyXX13uqsqTtRob9NcfulpQM27NLzi+fcmwnIjlnF89IyuLCyG6/kyh353Djkc1mRWYM1/sdfdsyjQOn4568KKiqhu3ZlsnJOHazOeN06rm/u+bq8gllnbG9WNN3PSqXpqh2nq67Y5oGFssfegxZTLSd47d/56+y2a5YLWra9kgKjrPzC9zkOJ1aYmzZu4499gAAu1hJREFUbDbkZU57PDG5iX6ITGNLChmKnGXdYKoarR+Q0w/wS0jaEwBlNf3pxDj1rOuK0+GEiZLYs9/tqKqKGCxdP+B8xKgg3dug8OPAsN0QtXTn/TRJtNgwcL8/cjocZMQ0N7P6/iSuRW2k5x1EYyAE4JGha9HGEn1k7HtSBlVeMHlH30lAZ5bn+BComwY1343HUYJHvA+Mk3TtYxKCUkqByY2PacdGa/JMgkCiCoyugBm4Gb24Bo0Rz4EfJ8I00bUTRZZxDBM+M1T1Ar8Y0HUxU48yQhjJZvqw0VbCVor5A0pITlmMqOjJnCf3gWGYMGVNHiJJG1Fl6mm+AgoWjSjBo3GOa4MkWYHzyHUMw+xR0PgY0UaRG8tiqVksG+4OR7KyISTFFOegEWPxKaB0RprTqKKO0h+wEk9mlKEqaoqmBC33864P6EzhwsipHaWpaEQVmZTGZiVltcTmLYdTx2K55XR9zbuvv6Nq1uwOLYduIkTD+x/+GIjYvEJpyTNI3uPHAWstRabxPqPIC46HPceuJS8y+r6j7VqunnyIi5G6biiKjP1uhy1LhuGI0pr1dsPoO24PNyyWOff3b4nJU1Uly9Xqe9ffD2ITsNbyV//qX+Hq8pyyyhi6E8tlzaKpyDKZSy/XC4kfX22olytev3rF1199zTQMrJoFh8MJlRT504zlcjVDQAMoJ6GTyZO8l6juFBnaA4aIVpEwDmik/O5OJy7Pz7m5eUfXd+ItmCYmJ7Pq/tTifETZBDHNvIGCse+5efeWaXL4umQYR5lndx1GSUhmTJE0O/JSFObB6XSkrBoEeDSisFSLhggcjydOx5aiCmglEwyl9NxI9IzjSIiJab73PwR8jOOImqnBktvHLJ6Se/wwCPRCHIJxjr0uZ2uwsBa8Gzkd93itGIymzEtpVtaQFyU6z0ipwKhIVlQz2MTOgSDzqU6k0grCRAjuESVm5ilBTIlxkCARq7VErylxD+oQxFQ0j3iV1kQi/sFnkRJK2blqSCijyDPL1cU5t7vDo0qxHwYuz84Azf39HauiJCZFSMBDTLm1aG1JyEi3KitcaNgdrtFTpKxFpdn1A19++RV11ZBCYrnc4GPibnfg8vIJzjmWq5KkjxxPB4qy4tROfPrLzzi/eMLvPn3K5198hjEK7we6ruMwTVR5TgLu7vdoq2kWNSEqnBdn7DAMTG5PUW5ByeZbVmc8eXrBOI2MrgUUxWQ4djuOxwP9lPP23RuUihKKOg3fv/7+o1jkf9aT5xl/5Xd+iz/62R+wjQtub6958eIpRWX55uuvybOcy6snlHWJtgWT9wzOcbfb4YaR1XIFKIa5fD4dT+S2RKWcPBMOgYBGBwFvRk+cHIuqhOBJTu7SuVEsm2aOEZcRnFGaw6llHETvfjh0OB9JYcQ/eukz+vbE/c2NqOSiiFymKLBPW5Qy34b5JJf7+DAM+KjQJieCxGtjmQrHNE0MwyBo7mEkpcRmu8VaizFWKoBxRGtL8JH21LJYLkXrMPcRvHdSVsdEjJ5cZ8L6D4E8kxPtYeNIMc6deUWWWXJjmPpWQkasIfFMmmYhsKwbbFkQoiOzoHWJymbOgVagFdqLsSezlug1pa8lbDTPBdZqM6xxaC3RYFolohdHKVpIzkI6CqS5wZdIkpmINOzQAkBR8qKiFZxt1pyvV+yHgRASymRsNhtWqxX722t8TISkGJ2f2Y0ZSosL00fxY4SbwKnb4UNPliu++eodg5NMg6HvWS6WWGWpyoqU4H63w0+OxWIxo9Eqnj59QVGvybKO4e3tjI6X8er9/R19f+R4Os0VzJr73Y6317fUi5pFu6DtHdqW7I8H2radG7GR7bbhdNpzf2uJJKZp4tSeMNYw+o52OIAJJC26gjBHzN3d3X/v+vtBbAIheK7fvuL+9h3Xb75hvV3g/UjbTtzf37LebBjdQFFVmKzieHug7XpG5yQOywWsimQR2rbHT17w3aYkU3PWQJQQUhUjyXvKLKPOcnzfE91EQkZHVZnz2WefEUPg/Pyc3f0997f7R/7/fn/keBpQqhViT9vhJ8fd7Q13tzcizDEKZRQuRca+o7DZTLedYR6Kx2x51ByjHpHphI30XUc3ygaQZRnDOD5697MsI8syUkpMo6eploBmGCYuLiogcTqdGAZRyD1EZD3Ib1NMTOMAc0VSloXk/TlP3dTkNsNqQ1PnHHc9U9+BtZKg68CuLjgrK2xZgR/JCgtJ+P2mEEVcImEyyVi0Bnzyj8Efer5K+GkizSe8nRkMATdTf34V0un9r4lc5ivCw8YVQkTZHGPsvDFLc/bq8pzuu9eYPAMlOv9PPvyAH2U/4frbb0gKbFaKt2TGtUUEFnI4tnRDx/3+Ld63LFcV12+vObYiMdZaoVJPbjNiSIQQMdrwzXffkecZdZVxOr3l4uockxWkNNA0C87OLvjmm28Yhh6byfc/DANDFLDrbrdjmibKZsGpn1CmIC8qqqDxwbDZbjg7uyDPDPe7E7d3N7TdSbwDSSY955dnhBglWbuQgF83TSyXyznI5k9/fhCbgHeOr774nCLLuH77CpTDe7l/LVZLdGb57IvPuLp6RrMUAYKylourJ1ilZUf2gcPhgI6JbHuGmcMvZHY/Jw9pyYsLKrGollij2N/vcZMDH0g+0HcnXn33LS9fvEf0gdube47HDlLieOpou5Hd7khTy2jNTY62bbm5vmF3d48+1+S5fUyW7Y4HmrICa4XY68xMEYoz/Zc5qVh083pOIp7GCTUHbD64DL33Eo6aZbOTL8Dc7R7HSbwPmUHv7xnHgbIUKo0PorQjSQKzmybGYcB7T5HnJJ3o+16clGWJSpEys/Q6MbqBYYI3b16hqw0XH/yEom7QeUUKGbbIpZmJBZuRQpSqR5l5ghBJSATY6DwJRV6UDF33qAtIqH+fjeBRL6A1JAlNfRgPPugVYgz4CJkR5d7Dprrft1iTU1clyRZMIXH97ppvv3vFb/34R2Qo2v0dY/CopNFJY5QhaUtA0Q8TedJ0bc/N7WvWpxKTFVycXWGsZbFY0HUndvc7yrLiu+9ecXF+jjYy2z8dPUY7joeeqB2H/ZFhCjjn+PTTT/He8f4Hz1FK1IDDMHF9u6dpGlbrDVkxB9Vqzf7YY0zO+eULVqsVu/2J7rSTZOiU0ErzzbffsNou0UZxbKVXEVDc3k3E0XF3e8ezZ89mJeaf/vwgNoGUIDc5ox84255xPO5JMbLarFhvFjjv2e+PbM4uuX/1irfXouw7Oz8j+UC7OxDmZIfzzZbLiwvOz87Ii0LipbIMHQwGTdIGlCHLS9zY4ZNC2Yyu61B+Yr/bY1Bk2vDq21e8e/OWyUkY5zB4Ipbd/kRVljJyilEMR7s9Q9cz1oOgsIiCOPMea0V01HUtmkiYQzCUUgQfxOxjpXEXvFQFMaYZ8SUafjGlTNg8m7MDMkgiPS2KnMmdZu5BRlEUDFOPj15gG25gcqJWrMqSrm05Ho5SGSwalBUxT3c6zoCPSAoTVkWMSozTyLt3b1hfFRJ0WTaorCRPJRiNSm7Gvem50tGg0owVk/EhSeG8ByUEI7FIZ+R5LryFiJRIWsu2pg0K/ehjlkDZCFHCZGJKMMejJUQjEacJN/REKwCT+7YlmYwI/PznPyfTiveeXGF1Yre/Q5lMYsj0QxhpCdpwOB6IKbHZbAi+I0fx5OopMcF2s+XV62+ZpmvKsqKsKiLys+yHgc1qyXq1YXQTPkSqakE37Pj22+9wTsbGSgeKXAxK5+eXoC3OeVnkvaNZrJi853gUvuBqveHm9oDBcbaqiCbx3XefYnPL0I8sNyuGYcDdOPE+VDn9qWVZ1nRDL87ch/y4P+X5QWwCIQSImt3djvfef8HV5RVJBw7HA7/4+S9w84x5HCY+//wb7g8dL1+8oO97Xn/zLe3+gFWaH3/8CS9evGC9Xgszb06aRedyomgFs7ZAKfD9BHlFpgztqcN1knC8Xq8Zx4nPPvuc/e6IyQr5IU+CDzuces62dnbaedq2o2t73OQY+4FslrH6IBbiuqoYhpG+72Y/v5xoKcE0TIxTpKyFe6/VIOIbFNM0PaYgTdMk3WQFD3oFWVAZVdVwPB6RsE1LWZX4KHfQssoZTwN936LOzijzHK0Ux+OBqixlcpELObgfR/Ism30XI0ZDnluJ2uo6LvJccggw8jpa8eL76OcrCnPYqmx6ITrUgwX511ycKUGcv9ciL+b0pSj+ixR/ZTACOf0T8+slvYs0/5aZ06ZFUxCxWrNsGg7DhNaG25t76vWGvCzQKfL7v/8HDB9/yG/9xo9ZbVfcHw9gMhKWgMEniCGRlxWbbcUw3NOfFOvNOU+unvL6zVuur2/49ptvOR6PdJ0YePq+Z7VcSBhuWdL1A+v1Bp3n5EVJVlR8/e23suAJfPHFp5RlRl0vWW/PiNHQdh2v374lxY6nWcU4eZpmw+F44pe//BJrNH/1L/8mz58+Yxh7vI98/vXnJCKXF0/57PNfoq3jeGppuxOLuuLyp7/B8+eCGn/z5u33rr8fxCaQIrx7e8fF1TPcmOjHjqIp6DvP3c2RU9ehjeHm5u9zaHsurp7yl37zN9nd3uGGkdLmJB9YrzcCIZlTfMgygrKIViBD60Lot7lcJ063O1S+IMSOzkW52++PPL284tNffMbp2OJ9RBtAG5yfGPxEdmzphxKr5F7edwPT6HCTZ+gHyiIn5JlguWKCGERYFDzjMGCA4BwKYQFqK7HkbnJUFRwPJ8q6pus66qZhGiSevOtFAqyUoqwqCbnMMhKJoiq5u7/n7OKMkCJFWdJ2J8paxoGTm+aEIcitQZPou5abdyLESSlyOhwpcgkPyYyGzBBzS7Zecnd4O7sA5e6tkiJGub/bvJqDS2QCIV0BOc2xCe890zhKU3CxII4SlDHMSsB8To5WJKbwqyrJWGkaPsi4hWIsVYFPCTQCGbHCRHTuAWcmf5/1uqH3I4yKRV1SrBru7u949eo1v/U7v0lWV7y93gnERRkiM1tAJZJWrNdbVBJk+9dffck4OsGAac16tWa/3zNNA2dnWxKQlxn1ouLd6x3391+j85znL95jvz9ydXXFs2dPcW7k3TtBgJ+fn1OWDXe7E8PkefL0OV3bcziKq/TYdqAtP/6N36QuS4oy4/buwOl0JMsyLs+fUTUVfoKPP/opITlu724hWZbLmv3xyGKxJMtyDqf2e9ffD2ITmKYJa3LOVhd8+c3n3O1u+OjjD6irBWV24PzlJaNzfPr5F1R1w4unz3j73Su8dzx9ckX+7DmFsaybpfQBrJE7pbHoTFjzMMdOqYCx0sFXRUNhNdiMYrlCB8Ffx1krr4xFKfHTh5jwPuIVOB+YJo+yiSl5hsGLZ32cGIeJoR8pi4KU0qPrru+7eZwlXH+tFULViiiVJBQFMetM04TNc2KMmF9zw5ESXdfNEwLD+fk5NpMOdV1X5EVOVZfCK1Bwag/kec5isZxtpi25seIijGJx7rtIdzqRZTI5OOx2LJYL0LMXwihUMrOizjDP60jKPCr8xA+RZrORVDkxRrFhz03NEAJFZnHBzL8WzoKaAWMPSj7pFioUs75DzZqBBzIQPI5YJX5cP3IP3eTk9USRQiSzGWRm5hh4yjKHlHj77i3b71Z88tOfUNQbvnu3wwUwylLmOWWlOZ2uiUVge37OzbsbDoc9Shl88JxfbPnwg/e5u7/lzZs3MxJdE5NBAS/nhf/6+pqvv/6adhhYpiWHw4G6bvjoo4/58ovPSVFxe3uPyUq2Z+f0Xc84OvKyElbB7sDusJOMybMLvvjlz1HRsVmv2O2PKAPPX1yQlRmTm1g0S4iW87MrsjwxjQe+/PJzSGa2k//pzw9iE1gsFnz48SegohhRlEFpy3bdAIof/+jHtP0g5g9ruNisaU+tCD2MkG7WywW5lUmApBlGlDHoLEeZXAZ0SaG0aNT70x5dLMhyg4+JarkhCyNF3TD6gJ4j0KdReIfiMJPxlfORw7FjsyyZosO2nczrJ88wTGRZz2olEtsUBvq+E+VeAqwl+flESyJFTd5jfJj18IkUFc7J+Evce3LtKCvwwZNnBSmpOcmmYbfb0TQNTdM8IsKrquTi4hLnJgnTmDx91wlpZx5VeecJeNq2ZdE0kBLt6UTT1HOwS5KqXCMBG1kpwR1zrBpzzBdKSEjyzHP7uQ/lZkl1jJ7MGKYZLvIAKgXmO77c85OSEaNK+jE3MTwSjYNIhmOUAosISXwLKYr342EzCSEKor5ZMUyjvMba0BQ509Dy5ZdfYPKcFx/8iMvLJ9y1E8PkyaqK0YmgZ3d4Q9d6rDYUucHmOcvVOdM4cfX0guW6QdsHD4MlxIk//pOf8dOPf0JdN6yWA1lZ8uH5Gfvjgd//vT/g448/5pNPPqI99mxWK/rJcepHvvn6W06nls1my7Nnz+j7noSATk6nA85fcX5xgU6Rqizk6pAim42Eudb1gt39jpubO5yfSKpntbbc390To6D6v+/5/m7Bf4RPVdU0TcPhcODZs6f81b/613jv5XtM08iiriiKnKYs+fC996mLksPtLVdnW55fXVEXOSoFhr7F+4m8yIjRMY692FnnN1dMkLRB2YxkMlxSZEVF1JpkNFlVY6qKZntGUApblFT1AmMEue3mkysC4+TY708i6HCR42kgJQ0YnBNVnNCEclKUzn2cYRphdt499GpVkjevm6b5FJPxWJwz60KIOOeZpkm6+0XBdntGZrM5w/ECYzTrzZLNdj3DQQMpwWKxZJoc4+jxLtB3PYf9XtgIMYqpx3va04lhGMSvMJ+ak3MM0ziP6AS48XD9EG7ZQ7qjehxfPnSgH2y0xs4hIrMPOTjpa/iZZyAQEZmSpMeDXiYiatYKZJmkET/0ER7Apw+fGx5AqCnN1YkIfnwQ70BR5DOqWxG8I7OGZVMTg+dPfvYzfvnLX5JZy3ZzxmKxYrHaUDUrinpJSJphlEyLlCYym9hsFpSVYbe7Ybe74fx8Q8TxR3/0+4QU+M3f/CnWykb8wEPIsoxpnPjRj37Es2fPONtecnnxDO/g7OySsizZ7w+sVis2mw0xRi4vL/n44w85O9uIAnTqefbiGVHDH/7JH9MNA+cXF5RljTEZT588oy4a9rcHfv/v/UNeffOarhNiVVWVswPxT39+EJUAKnF2ueX67jW39zdUdYELHX4SJdu7N69JIbFdLbFKGPYXqzVZZhmLfA6PiY8AyqTBBYcPEyaKICUCJlkxbyQht+RZhhsnoc9UFePJsj6/4Hp8I6q2qhKj0TRjtoy86SfnabtpVp4phmPLI/obzeQCkwsUBUyTn7n+lajYnMdomTFrpWZ77rwgnScEiYvyIchmkOTXRVGQ5n+fn5+zPdtirGW1WZBXOavtiu1mS1bK2C4phdaZjOYmR9f12BSJs51ZxUD0TgJeg5fo87IiOsdxf8BW2SObMcu0mKlCmMNSf3V2yCXmV/w/ZunyAy7EFDnp6NEqMQ2DBHiEANoQUmJyAlwB2QREJyAORq3nMa+S8NM4uxXTwxaapIpgTlXKsozoEsH5WZfBrIWoGK1hGnrGwbJZVJRlTTd5Xr/6Dq9LXn7y2+RVTT86FsuSZVOyXGj8sCf5E6tlPispO84vVrx9+w1ffPEVH3/yCXVdstwsKOuSRbNkPIx4H9nv95iuI6/KeWE/ETbBFDjbXnAb4MsvvmZ3PLBsJLvg2+4bPvzwI1YvnhOCY7tekoD1ZoEykf1xR0ie3/1rv0uR57z67jueZ8949/aaJ+dXfL1Y05QLnlw9QZvA5CeyvJZe2fc8P4hNIKVI3RRUTc4//MPPiNFxdrbmg5cvZ5TYidzmLJsVm0VFnmUi0iCxahqGUQjCp9MRSFxdXlLVBUYnFGGm2MwJxQZ820uqixL/fGE12moCmnKxxBSiyS7qirKupAsfIzZagkLoQCERAoQIx1OLNXOZDDIxOHUC8ex7spNltW7ExDOJXNfHgKT1yCzce0kCmsZRrLWKR1GQMYaiKHDT9HiybDYbirKkn3psJideUUofoWkaikISjYubG45HGR86J9JprWcPfYyPCXXOOfI8J8bA8XhklW8e+yApeZK2QjDOs0fgR5pJzUqruR8QZ2m0GJFU8iIC8p4UA27sH6uP9HiqO2LiUa34YP+Nc2mQ4lzgzxummsGiD2O5NHs+EhIjr7xASLWxMPdjyrKkKAr6sWOaerwz2LpkvVpwmuD16zecfEbKarCGJ8/OuTirePFszfJ8Ta57TOq4v7/h2LYYW9L1J6om5/Wb71hv1rx8+YKyqjh1J5piwXa74GZ3z26/5/7+HpTm008/5f33P2SzCmzWW57+ped89/oNeZ5zdnbGL375c9brFc+fP+V43HN7e03TNAzjgPMDi2XJxZOzGd4Cw9Tz/ofvMXY9//D3fo/f/ct/hYvtOX/zP/U30eXIi0/WfPnVV3z15WtB233P82deB5RS/1ul1Dul1B/+2sf+h0qp75RSvzf/81/4td/7W0qpT5VSP1dK/ef+cTaBcRr5O3//b3Nod1RNztWTc66enKNtwhoock1VZegkxJ0wjUQ3URU5VZETg+N03LPf37Hb3TGMPdqAMaDVvBFEB9HLght7gYUOHePQoXViciNTCGAFXV03K5arDavNhmaxJM9zKfOMNMRcCJy6nnHy9KNjnLwAQn1gdIFj2wlbbxYxTXOD7GEBPMiHtX6Q7so8XcaCEe/kzuy9oMgVmhChaRZkWUFRVtg843g8zCEhokA7zDbklBJ5XmJtTkpaLMAh4Nw0ewtkI3iQsqZ5DPngHxincb57SzQ8iFXYZrIJiIDnQaqk5n/PbIS5AZqix/edvOYzWcn7ScRQ04RzgimbFUIy+lMPUJG5Wah+tUGkufkosePzm3cWWwUf5sBWPQM9c5GLzz2EzAo4xs5QUedEBr5cLCjLkq+++ppffvoZ/Thxc3vPv/Pv/nv88R//nJCgrErxoCjHZi2x9ZeXW8oyp6pyzs42PHv+hCy3TNPA119/iXMTz54/5ZNPPuHly5f85Cc/5urqKYtmRZYVtKeeRbPik09+xHsvXrJoal48f87Lly85nY4MQ8/LF89ZrRqyTLG7v+HbV1/j4iiK2jBRFJbf+I0fs1otsNZwOh24vDznN37yYwmbDTIx26w3XFxcfe/6+/PmDgD8L1JK/9Nf/4BS6i8B/xLwW8Bz4P+hlPpJksC473289/z93/u7/MZPfsxmu2a7WbFZLzAKmpnMa5Qm+pH9/pbjwfDixQuqOme324u1d3LkNqfKa06HjqpsObtck6lIwiP0bj2XmGCsphudmFWUYhonhnEU9LnNqJcrjLKMgyMkjel7jHficFNCHt8fBF/uo5LIKxTTJKXvMDlSUliTMQ090+gE+zU30Iyxj911uVsLbmvGBjzKYplEGu1NICtynj1/zma7xlrLOEqQRV2XAjPpjxyPJ/I85/72hn7REb0n05YpCnrbamlGVpWYkY7HlrquKIoSHwZxIhph6ksSs/AVyjlxRxmpdlJMoCOPXJ7HS71o+OU0B9d3kg4+jkzTIPyFaWAae7ybJM1YqcfNJM0A0ocNRsAfIi4K4UEslB5wLL/yRiSxY0dlsVmGDRHtgwBKvEMlj0KR5zl5nkvPQhu0guWiYTFpVuWK916+4Pb+NdPU8/rNK37xy4wff/iE9WLB9syyXje8ffOaZ8+fcXn5hCwvaYdBmBd5zuAdq7MV1aKgMjV5IWagZrlis7rEO7m6vHn1luPhyIfvveRuV3A4HsRFGDyTm7h6csnL917gg2N/WAndKs8YxoEYI3XRUJUl19dvaBYlP/7xx5RFzna14ubuLT44jocT93c71qstq9X5966/P1fuwD/i+S8D/8cZOPqFUupT4J8C/t1/1CcZa7h6dkVS8NHHn7BeLknJU+aG1999xcuXz5iGlv3uhlO/w/vE5nxBuHVcX99xPHT0nWe13GJoON57VkuLsTVRJyD8WqqwQ+tEZnP2O0/dLJicBHDgI8mLKw4sPinK7ZbMBfLjQYJL+h7jEzHm9J2WN6DSDCnhYmJwolbzQZFlBU3VcLfrGTrPeplhdEbTLOj7fj4JjYA4lSYrcoFzKMiMRSWYJkdMkawouLi6JC9zthdbpjCyP+1omlKs8Trw5vV3MuqLA8f9LUN7Yuw9mTJkKkPlkOKEn4RRl5mcFBLBJ0IEF4TGpFOiP40oD1WZ46fANExUVf0IKdVGvPYpxkfFbwhB4CpGk6aRNIlYqu8mrFZkxrLvO8b2RBwHdJKTO6ZISDIejSGh5wh5yZBM2Dwj8wWT80zeSc8gQUgKaywhyIaZeECRynTogZ7kpwmSl41XGfFpBCSmPkUyq7nYbFlsnzCeDtzffMPf+Os/pbSGd6/vOdz2vP/+FVeXDevNgsVyS2Y0n3z0nKJc8svPv+Kbt694+dH7OJX44NlzrDIcjz3rxRalCu5uDkytNH6JYJPh/t0dy7XmbJlxefaE3b7Gh4iPgdVqRaYSZWFYPj3ndDqIhLzK0drQ1A0hBG5vb7m4vGDRCB1rs1lx392xOT+jKgqiO7E/duzv/8lkEf53lFL/dYQk/N9NKd0DL5Awkofn2/lj/4Hn13MHtlsJU9yut9i85L33P6I97um7I6/fvCPLNH7q+O7V1wyDJyXNH/zxH1IUNVW5wI8JawqmMXLzbsei2VBlS0xeEJWM49zk0SpjHAJWW2ISPX5ZNuz395wOLXEULFmW5wLDSBq6AVMVZGVBMRUkN5GMZfCGcUh4HFHHWaMfGGeSjwsJpY1ETAfo2wnvIEb1qBZMPAA1k2gHzIzBfoBfznfipBR10/D06VOM1ZhMszudKMqMKq+Zxp7b+3fc379jtVqS25zgesLk6E6OImtEY681MSg639N3I94FjM7QWqy0avYvxKggJtwUKKzIc0MQhZ8xEqCZZnlwVKIIlKM7AQIaJQbJf5xG+pPkLcYg7MXkHDolzNw+9BGIkRiSQFrVg3JAygFjLDbP0eOE8vOXjyIUegCQhrkvEM38+hGF35AgOociSdM4SbJTTJI6jXdkwWFVztT3HIcddal47/mWZbOivf+Sf+/v/Iy//fd+wYcfbPlP/yd/ytOrShiEx4Ff/vI7pggfffwT6k2NSwOeke32gqiTJF2PiswaLi/OuL/bcX93w/NnF2gVuL3+hrPziouzZ1S5pRsm7vZ7VPLoJKCXFDzR9cQkzV5tkmRgVDnqYkNdl9xN91xcXHA6HfHKsVivKfKCi21iON1wPPyHPx34XwH/mvzk+deA/xkSQvKP/fx67sD7752n46Hnow9/wv7+nu9evRXkVpzQpuQP/uAXBD9wv7vj3dt7rJUGWF0vefn8Jc+unrM9OyMFOUmWq4Ky0ijl8X5CJUXXjjTNRhj/9ZLgPEZLz6Btj3RtSxidlMF1Q0xQ1DXK7jF5hslzKTOtxZsAWskEwkWSCUQVhYunxZLqQhDlXiFa/3GaJOk3Qd/PEIkiY5zk7Ao+EdNsk03yRp7b5djMkuc5dVNxdralH3rGaeTjjz7g+s0bQgi8e/tunskzMwQ0bgycTi12Vcp93mpskXHYHzge2/k1sHMlr9DKMHqHUokyz4lBtA/WZmR5MfPu818z8khvI8Yoi1bJ5pGCAFemYeB4ONB1HeMwSOCsczxcGeZ9bt4ApDGaQiTquRp4aAYqIS1nmfQ3nJvVg0rPGoogaC2diEqhjMYoSZIKQWjS2sw6hiizBT3Ll71zmJl90PcdTVPx4Y+e8+TqnMvzp7z9rudw/Ae8vr3n3d0blB35z/4zv8vTyzV3+5Z/+9/+d1muN1ze3XD+bMP2rGHqDnTWsihqDrs3nI4Dha0oa80iBPpxolyOeD/i7k+8eXNL27bYrKQdRvaHE8v1irOzDXUzT4XyHGssWVaw2+/57rt7yrqSjS8lplFAtr//B7/Pbr/nx5/8lMw2XFy+z2b9Ebc3B+Df/FPX4p9rE0gpPQqRlVL/a+D/Mv/yO+C9X/ujL+eP/SOfzGaQMm6ud9xcX9OdOoxWtKcDTbNmv/+WU9uyXJzTtvt/H9MvBkuWi5bATY6itCzXGTafGIc9p6GHpPEOqqKcuf8Cicyswk09Q3fCWkNQSoxEWU5Ck+U5ZV3RHjJhFRpL0oakNTqDKTpJs1EQlZTUSmVEJVz4YRqpNzVZmdO2HdPkyKzM4quqosjzOdVGTtLgxUqb5gL7UX6Loh96gvc0zYJTf6AqC4Zh4Hg4CiB0ciKaWm8YhomirJiGThp/M78gRkVRS4xWe2zRs2XXewkFQYl8GaUo8mJuEkKzXFLWFXlRzvoA9fizexwPPrjUUiIGL6zE45FxGGYBlMBLhsdG5MOnzQah2RcQZuhLIj02LPXsKMzzXMRKTHg3/Jo+gVmNKQ3JBw1iigKOtdqirUXPr0NK8fF1fWAKFllOcJYiz7m6vAIU1zfXXF+/w8dIVi3oXMff/b2f8fSFIMPe3u049Y5T9xadRZYLw2A8q7riiz/5JTbLsSbjgw8/4quvvyGypHctF89r2u6au7s7VuuG5HKGoedwc8ep62mWK4J3HA4Hlsun1E1NjIG2PaHmSmy/u2e336G0jKynaeL+7o6UksBhU5r1CoZnz15i9O5719+fN3fgWUrp9fzLfwF4mBz8n4H/g1Lqf440Bn8M/J0/6+sNw8T93ZG6OlAUFYfDif3+nmkc+cu/85f50Y9/hz/6o5/hfc5q9Zz9/YGL8y0vXz7n/PwMa8tZu23QKjKFA/f7SDhmtIN49leLLftdxKhMRldoFJ6hn3BjR1HmuD7HpUREkRUFSSmaxYJ9nqMzi7I5ymaQeSRK2+GD6BCCUgSnMEBKmn5yHLqW7XlDXpXs90e6vme9rOWNrrXo/mOHUonMGhGm6NmBpx9Y/wEfPM5PaKPxfpqzBzU/++M/5unlFd47iqKkaUqyrOD+/jAzBMIcuqroxhFGT1GIeMd7j9Fa7vJzOW0yeTs8JgJFGXcKGjwTYGcIZLPnXx5ZpIIZD4+0pb7vaNuWbF68Y69+NRacrdGPm8Gv+4iZJcVE2WDlO4Ikp7cxmiyDUU+MowOkSogR8dWniEoRq5HAUQ3WKMmiIJLmRKjgPTa3sy1bYfMMW9ZMceSbb77h1GW8ff2W/8//+0+4vx8YTUVW5nx3fcP/69/5B5isYjy1bM5fcLi/5q//lb/Bcf+GYXei9IZ331yzPx54772X/Mf+2t/gi88+5/Xr15zaI5dXV8SUyLKa1eaM5B1udNiyJN3C2XbDar3CxyA+jiwnhMir169YLGqaZkm9qGm7TpyG2tB1Pe/eXfPi5QsWzZL73Q1nFyuO7V7eL8VfgDH4PbkD/6xS6nfnn9qXwH8bIKX0R0qp/xPwx0g82b/6Z00GQMZif/yHf8LF+QXvvfeMydX0Y8d6taFpNrz33k/49rsdf/fv/B5VUVMWZ1ycv0ddLQnBcH1zz+39NRfnSxaLnLtdy90uMkWLTwZrS3SCvh9ZLtY0lQRv5kZGOn13pMjKubus0VlG2dQMvWCx0UaUhVqDydFZICUZSfmQ0GhiNEwhoaMi15opRtpxIhlDXtUkpWm7nqaR0FOZ/8uurjRkWtMP831aIyTciOC1vCDYFouGLLfUZc1XX31OP/Qslitevf4OrQ2b9ZauH2lbIdAKY0DGmsPQM44dNtPy90yzEeiBuy9t+l/5LpQkNrlJJgaTDxIRH+MMBxHJcEpRhDwpEYLHzLLhaZKRaFEWjHMuhIxDjUh+HzwG80YiWgAeK6EYRCL84BR8mJqklERAZAwhzHHyWqM1QoxKEZUSVivKIsNaNesxeExK9s7hJ4+x8xQjBmIKVFVJlRUMw46vv37N3c0tx8OecUy0MbLIGrRd8Msvrpn83+bl1RW//eMf8ZPfeM752TPefPsVP/7oPd6+ekuuK+osMPWeP/njX3C+veRPfvkpSpd8/cU1eVHz/PkLYkzc3L6GkLh68pQssyhtWCwq6U35ibYTpkKeZ9LwVInNZk1RioAreLk+FkXB9btrLi6fsDvecr+vCUEzXE9cnL/8828C///kDsx//l8H/vU/6+v++lMWFR998DGrxZL97o7zi61w8XIrd/NqybMXH5MVnxOjwuQlXTdR1p7VZkVZ1LTdPfvjgbxcQvAMY8exncjyBcvlhsP+lt39AT/1dFmJhJiu6LqO+7sbVqstp77H+QhGU9QVzkd88ELCTQi0Eghak4wBa+WdawpSNCSV8ElCtHyCzgWGACYvsUVBPznGyZEvhK/3iLk2XppiMaCsmk0680J5jOPWlGXOdrvh/rDj+vqaH//4RxyPJ67f3WBsTlUv2L95TUqKtusZxom8qFBzaMgwjvRdL6ev0sQgFBql5ri0JIIbkBGgYNkQx54TJLix2cPPGanjA9LX86SZcBOjJ8Yw32MNXRBy8MMM39gHNuCsmUCES6QkY0IeqqCEVmm+9z7Iv8X7YR5oTfP3GklzvJlUIkopCqvJdCaIsvigLIzEh4CWIJWJsg7cSIye9XJLs1rw5Vd3jMPAYpnz5ubA2DlsrufeUMGr1y1DfwfxW/6lf/Gf5+11h9YrvM/peke9WKKt4eLygndvb/jNv/RbbBbnZHnD2+GO4RiJQ8lhvOfm7oa+bVE2PaLxd3uom5r7+3uKsiQvC+FnEB8317PzCy4un9C2PW/fvmO5WPPmzVu2mzPeXr/ml59+ydn2CS+fP2Ozufje9feDUAxWVcl/5p/9myyWBX/v7/9txunIF198yvPn73N59YJxcqw35/xT//F/mrfffYcbO6qm4uz8jPV6w+XlihAvabs7tJ6Y3ISxlnE8YmxJVWb03YFpbOlazW37lqZeUBcZ93c37O5vaRqBl4Qk/oCiLDAm4+72lqwsUEZGhlNMuAReCcY6KgMqJ86uupgik/MoAqc+cH/oKLQBk9N3R079SNOUsxnJCO57mOidnGJaq8evE9LcEzDiLFRzKtDPfvYzFosFdd3wxadfMgwT773/ghhhHCa0toxTjw+RusnlZE1SejsX0I/ahDinMqnHdCarRGDjQ6SY75QgjsyirMjKSlyEaV6gKRGDEyWifOdE72TMWeSE4B7TmuPMMcyyTHQGSuzNAGnOhnjAi4kgSaApDz4LlJLx42OkXC4W4iBXJpPNU5/Zm/Fg1DKJ2aMw6xoejFtRNoGcBCrivWMaR9am4urqCdfX76RpfDrgekWvInldYZYLMJrrm57721/y9PL3eP/pmrNFxd/9B7+gKh1KB3yK5FVBXlU0zYIXz96T6PL6Ccf9RJ3X7IZ7bGawhcYWhqooMNowDC1v395xOJ7YbM8wmSbMZi3vPdPx+MiSqKqGw+HENDpevnyPly9e8svPPuWXP/+Cs+3EP/2f+Od59uyD711/P4hNAAW73S15sWGxLBimls12SVVn5IW8IMPQsVo1qHhBiiMXF2csmgofPV9+/Q2KibPzBX3fMo6Oq6cXpCSNpGVT8+7tNUoFYnD0vaT6nG02HA47rBHJK1phMoOxhrKq0LXheDySzdOBwTl6Lw220SumoElojC1Jk2QNpKjxM/ar7QO3u46zZUNAM/nE6ERhGJNEehdlge0GYjfKBpASQYmx6HH0hiTjeO+5vn7H/e0dv/07v8U3X3/D/f1OvATbc96+eUUIkoA0Dg6UZtEs6LuRRMLYWfqrzcM1W7Ias4wsz7F5RkgR70VhHZIANkJILKuGq6fPsFnBnPnOQyUgeQViiY7e4ybhGmZG0R87YQHOoS4xgp5L+AeRUJxL9JQkzVmp2a6M5AM+NrlmP0CaZcbaGsI4zarDOXYkPTgxZ9ehSmjEjpzmTTUlSFGR4qw8NGpG1AuCfRwn3nv5HjFMXL/ec9onqqOjHQeMF0iLygqyvKDtW/5v/89/h59+9IIPXlxhVMeL93I22xLjDdeHHc+fPAGdOD9bkrxm6hNq8my3Dbk/wy5eEMLEJx9/SF0WEAO7/Y5PP/ucmByigJaAlmGcAEXXdrx+9Y7nz1+wXK6IIbFeb7C2YNEseO/lB7x9d8/bN3dktiD4+KcsPHl+EJuAIuGmjuArLi63HI6J9foDxslDdAzDAa09Xbdjc1Yy9BP1wpDlGmsruuHA6Xgky42UkLqkKJasVpZpGhnGgaLIZqCn42y75u52x/F0YBolJ/4hjqqoS7I8I88zgpfyNgE2z+inUQIvk2YKGp+yGZxZP3bXpaMv48HTEGjHyNm2JChL0Badl7STpx8HNquVhJkWI9r02CxnShL1rWblXJqVcs57rm9u6fpCgBa7HT//5S9Zr8549uIlt3e3vHt7Q93UeN8yTZ4syymrit3uKM09osBFjJTO2vzq/m+toaoq2qEnJoc1GSEKnMSFKIq38wvR+acHdkB8NArpGWIavJ/depYUHM5NkOLc3HSPf6eUHriC0ktw0yg9EjsrKZWYhfwcUY4yWGMerwQPn+7mU///y9yfxViarel52LPW+uc97x1zRM5Z85l7ILvJJtlNgrZIyoQEQYJgGKbhGwH2hQFfWDB85Svd2ICubBiQABswaEqWOAjmYDZtmmyS3U32mU+NOUbGPOx5/+MafLH+yFNNdrFpNmDUDxSqcmdURGTGXmt96/ve93l909JbjAXt35+S7ffob1gI4asr55ue1rRJyG1EucCRpim9bsZg2OEhDyh/qeHDpxW3V0t+9NNnXEw31JXXe+jG+kBVEfL8+IrL6wWHB0PSSchwv0+VrwhEgEoyzq8uiWVAEsQUxQZrCgb9MYEcEFlo6pw8z9msFwx6Hd87CiRSejT9bLlCqZj1pvDvh8qrLQf9EU3T4BwMhyOWizXHr9+wu73DL/3iL/LJx59zdnrMern6yvX3tdgEwHF0b5/tnRHThUAp48vI+YrV8hb6ksm4j6lLtnb65EVAkiQeAhFndHuPKPMcaxuca4jjAK3h5maGtZqb6xseP378dhTWSTsIKZjPZ1R1TZo6n1asNVGS+LKwLluXWiteUQIZBFRNQ6BiGqNojEM5gXbOe80HGYvbhRf+BIJNUWGcwsoIIz3lKEg7aFNhas2kHSGpMESFEVJXCHtnzb2buvn7utGWN8cnTLaGNE3F5dUFy8WKd9/9CK0NH3/8KVmSoMqGLOuyXuXEUcpmk9M0NXESUS8Lmka3oqC22x74vgsIH4xZV+0p7DuUVVXTGXbJen2Wqw1q1KAi2waz+gRhJ1ozUitsUUpi6pr1atli0QWb9bqtCJRHhYufN/qwto1Gu+tH2LfyZSH894ATBJ2wnQSYtkDyO4EnEVmfNCXuxo3u52lG8LbyaO9X0GYtNnWDqAVR4CnRaZqyu7NHvr5kvV5zeLDH1vsThHbcv7fP3/n7/4wXJ7copahNgwwVxgaouMN8VZG/umbTbLi4ztmaDHh4MGa9iUlD0MLiQo0KBcNxSmPW1FZjXAAiYTa7pNwsqPIuQSDbkFrL2dkFZxfXbO8c0h+M0XUJBPT7fawVlGWDFIqTN6dkacbNzQ0PHj3g/v194khxcvIF/f7wK1ff12MTEBCEqgVxSnrdHkY3BDLk/OwKZ+DhgwHDfkC/HyIjn7dX5hWz2ZTBYMxkstXumhVpGrFaz0myLpvNgsVyxeXVFaol9745OWGzKgjUxitLCdAE1LomCzpvHVzdrIs1Xm1WlgX9QZ/lcoU2oK2kLA1CaKSS7GzvIQlZzG5xQoN0OCfRDorGIqIUwtyDL02DFQEy8AIkpGw1+eKtLt4PtPypKYXvql9d32CdaUETG/b3D4mjhFevjgEJMuD2dsbW1gQhPX1osVx6x2I7T9baoKRqjTrC98oA8MKbOxiHdOLtrD6MY6IoZpMXjL+kE/h9hiGrsdoHjPjKrqbIczAGUzdsNnnbHGyJQXinoCcvt6O9Vm9g7nDirVjIGl+iR5EXLuF8v0DcmY2cr7+EkN57YP1356sVuItBl0HoI9Xx/y1FgLMVuqmQuvLR4WUJTrBebZje3tDv9JCi5uhomyT5CN1Yfvv3PubTlyetjVkxv11g+hOkjEGnfPFszu2N5ehAoYsBGM3upIt0BXIY0e0k5Ospi8sLXJpxtVwz6Kc0TYAkoS4NJnBoDfP5mhevTikqw8HhOyRxl0465OjoiNubG6pKM5suETiWiwXRXki/18Na74k52Jvw4uVLitz9q+uufb4Wm8AdCfXs7AKjK6I4II0jpJNUeUnQtzTFAqvXFCUYW7NeF1yc3rBaFuzv1Ugh2doa+/twVRDFAZPxFnmxIYoTqqohCByr5ZLFbEkUJW03PMQhyPMS3TQkSczV5ZSbG4HaBqNrpHQEgeTo3iFp2uHjT54RhAlRIjBmw3I15+jeHlZXGLch6YTEsQ/4DGOPgLbS8+0bK6gbg200WgjSMIY2wkuqANNUWCFbIKfBOkEcxkgZMJ8twDnGkyHGOKRQzGZ+k+v3h1xfXRMoiTat1LfN7YuiiKLIPem2PUFVq6DTbXqztndhJgqhFEL7BXp3GjdtNoJqm4X2TiDUltLOGrSu0Y0PX60rHxUWhAHL+czDQMUdPsz/vO/SmEzTQCsW8gnFtgVy4MeRKqBpGoqyIIlbq1FbhQglEda9rVz85eTOgSjb3FTf+FRBjHFgnUCJ0H+8tR7q0lSUZc5i7icvFv/nr9oMgu3tCOsKHj3aJky+TV4t0cKS9Tq8fHPCdHoOMvJ9rWREvpS82Ew5fbXki4/P2d8ZMugH/OL33mNrK+b49ZS6yRnvHXFxXSBcQqw69LodTLNB1w11CVVhESJDCk0YdDg+vmC1XHH/3iOOjh4QhgGbdcFyPqOpG8qioN8f0M26rPMVZV5yczkjSb7mPIGyrLi8uMY5Q5Z2CQNFpAKmixmT4Yg4UEyvzmiMhqjBhor1ZkVRFYRxBNJxcnrC7fSGxWKKbioePDwijBTL5YZub8Cjx4+4vb1lvd6wd3CAJEA3DqOh2+1jnODq9TFJElEUGwaDLlWRo5uSpi4ZjYfc3izodDuEUcRiVtLp9gmjhMXsgvHEm2uuBj77b2dnQr+fIQVcXF+zWqwRtmHH+PwD7aBqDL1uiMXfVWUQYFyFxTPl/VgMhAzQjSUvcsBHihVljn5zwpGTLJcrpLirDva5uLj0kdbatOm8XgmpjSZQocd3KYVoHXk+CKMiShK63S5VU2Nc3YafRFjnPO68dUHe6RmttUjrBTie+1+93QS0Np5i7AxFURCoAP222XnXDvDXAN00WG0wdzxB7ynGOgPOoQJF3dSUlZ98KBW2V6W7fAKLtXgjlh9QQFtB+Z6N32CFjKANDLFtU8FXE14nYHRDnm84P79gazskSWICKVAxlHbNpllS1Cv6PcWv/tJT+uM+cSfh934c8oMfH7PKa6pyxXzdUMcDkjgjR7Ga1Zy+mTEcppxfr9nZ7SJVSRQLZDdkPHoE1iADQ13lnL25wZqK6+mC9VJzuHef2sB63XB2esNiueDHP/mE7333O2hdMx5tUWxyxuMJSirmsxlXV1dooymLirOTK54+ffcr19/XYhMwxlBVNXu7e/R7fV6/esnVZkWWRvR6GRcXJ+Aa4iSkkQ2VgPWqjX1WKVmaYULDYjGnaSpAU9cFi0XBZpMzHo8Yj72VMgxCqrLm/PSSUMWs1wXWSpIsA+FYr5fEcUiv1yEv1gjhMLpmMp7w4vkrdANH9+7x4viHJFnK7rjPwV7Ck6eHCBxR6H0AnvenuLq64uT8nDKv6WUR83VOoizOCdZ5yaBvqRpNWde+PG1n5Frbt4EkxvjMPoekaQwXF1cEkUJFERcXl8zmC5yzJHHCcrXi7OyCw4MDPx6TiqoqqSofp+0Pb383l9KDMb1i0J/6UexFU6YttaXwDTdjHVEcYdwdP9C9Pb1xhqaufF/GaJT0jUZrDOtljtHaVxRGtyAQ3vY8rDEtaKS5iy3AOfmlLr71TVu8D6CuG5Typ/7PlYd+5KdpGYOtOUm0oNQ7taNrsW3WehaBVyAq3yIQAL4SWcwWJEkCwqHCABUrblbXNMLRHyXcXs64f9hnvDWg1CUfvrNFlkqubiuOXy9pKlhMLyiLBCW6VC6mrlOKuuHVxTlZT7F3OKLTibieC4529ghlw+FuF2HWXJzN6XRisDHOxqTJmPv7B+RlTZbN2d8/4upyyu/8zr/gvXefMr29wRhLEsesV0ukELx89YzDo10Wy1usLdsK6g9+vhabwF0evNb+1JhNZ1hdU5cFL2fXbDZzDg93aYxBNJqyDeOQcUzciVqyTkCjY2wiKMoVm3xJnld0uz2MhtOzC6LQ5/htNjPOL8547+kHlKVmvd4glWI8HnL/6IC6rtBViXCWKAxomgrhNB999D7LRU5tJHvP36AiSFLFu+/eozeIqYoNu/tDsrTLYr5A4Mg6EcNRn01UI50hryqsspi6Yl2UaOuojaXUhjROEDLAGq+Yu4NolnVNrXWL9vOM+lHcJwwi3py8QQU+qmw8VLx5c4IA6qbxjTuhmM/nNI3xvETjCcihCglbMZZFtGGnymfxtV3zt4vPegdhGIZvgR5ee98+zqFrn7AspEBG/hRdzHOmt7c+TfguQYkv6fedL/ubVkwU3cFTjPGBodBmFUikkDRGt0AUjZRhaxyyHoVuHEZ6HoHAeXOTVEgl36YZeXGW73Uogp9Ls7XD0YCoELJGOEVVVnR6IUmacnV7xqa+IQlS3nv0IRLD5ekJ09slF1dnaCfJQsHjownvPLxPEod88fkrykpydVHy5uQa23RZV6AxrBrJvFp7n0t4xefJS0a9mL2tLr0U4jAiybrEaZ+DziH98YT+cA+xWrCzXfD48UPquuTk5DXaCKazJVkaEScder0h69WK0WTMcNLl489+4icINv/K9fe12ASsNhTrFW/yteffiQYZWirTcH5z6cdu13MQgp2DbUwr7FjVc8aDAWHg6UFZonA2wGiB0TVN3dDpdFjM1+SbkuGwR1VtmE1vSJOA4bBDIEMuL6asl0vCyJHGiigImc9uCcOQrck2USjI8xnvv/cReVHy/R/+hF/85Xc5uzxnMI5xsiav19R1TtYLUUJj7IbRoE8Y9kEqFuuK1WKOCCRGQJ5rVlWDVgFaKrSQaCFAhtR52arw/NTCOOF/3xhC4/zHGFjnOesqJxYJRVXQ6B55ntPv9jCNoTQVumko8spj052j0dpvuvhrhrAWsERRgjZ+HCWEQOI5DyCxGpIkIwwivxEJizENzjRIa0DX6HINpiZQMUp6UdNytaZqDFEQUbmiFQZZjPYOOq0bHyxjrB/ZWYESAmdcK2n2PgbpBIFUWOH9Bk0bdeavAIJaOz8eFNprPRSedSDcWwk2eD1AFkZoDdZIwOsWTOmw0oAtCWSO1YqmCQnCPiKIqBpHEmeYWiMDQRAptLNgFHHcZ9jpoeYVeWE52Bny3vv7fPPDXRqt+OKzc/7BP/hdyrpkuWm4XqwwjUSbkKqMKAiYOsl5FPL5M0cahxwe7NHvN6SdjN2DfUTTR6wDonDEvfsZzsJ4PMK6gLKSOJGRdMeMdnapqoLl7ZrShrw4ueHNxYxsuI/KvubR5M45yvWK+WpK1k1wGFb5iqN7Dwg6KY2G6UbT6fTQLgRXEShFFIckcYCgQeuG5eIWJSGLI6SUzKcblnpFXfvGVbnZIJUmUI7HT+4RKEOSBCRxRFWVdLIYKb3ibJMv0I0lS2J2d0eslmuqesHN9RVNM+Pe/UOyvmZnZ4vnLz4nTneJ05CdrS2qPCdfK5RsiELD3sGQaJkTxoamqrCNRSYRtYDCWlZVTQ2ESuCkoqosVvo7bjeLPaLb+W5+ZcGhWOcllWkQYYSMY0TVsFyvvTbfOG+MapqW4SeRSlJXBY3RBCbAWOfVkW2jzOEbik74EdzPLcke/57EKYFSfmbhapytwGjfV6grTJX7mHLlT9z1pqCsGrr9AeiaYiMJA4VtNMZU1FVBVZeUVUndWqybxuCsRFiBcj5rwEk/6gukxAUhWjvqpqFqaoQIvJagjWd30k9OaIGwttUaGGsQwhLQ4sWko9Y1BuerLquQQYAwFnRFU0qaqkOea0QQsrt7D+z8bdk93JoQxhnPn71CBoq9vceMhobj41O2Bn1uL19R1xt6/TEPjkI+eq9Hf7jH5e2K568lr95cerhJI9lUnnOx3oSEYYZbSG7WXr6dpCndL67p9DL29rbYH3cYZgFKOvqDHvPFHIQj66bkVcBiI3j1+oo47bOpU7R1WDnh+Dwn6X3NK4EsSwkjxWazJooVZ5dnoCT3HvoxWhanQMj2zi5pIqkqS1UWZIMOTaNZLVZUVcl6sUTrhm4no9cb+HBPXWOcpSpLxuMeaRrTNGsQDTfTK6oClIoJ0wARK5wSvHlzxmy5oNft8enzzz3KrN+hsQ2VLtjZ20JFlkcPd+n2uswXfQaDLpvNik2+YNjrcni0S7lZc3u7hkDiXEVRLLHGMur3CSQY3bCp1oRpQE91cRpU5GGmpi3TrZDkdYMUPug0TFPK9Rqco84bhrsjOt0OxVpTVJpEhZSloa7WNEYTBhKhBLZuKFv1XWMthlZoY72BSVsD2r0V2ChpcM7Ld3u9PqoNAfUiAx+2KqXANbYVVYl2vGcQrXa/2+0SKsFmMSeQgiAOaWyNwmFNjdENuq5pdI0S3qH4NmPsrfLPvdUEeIiIw+FzILzZyLMX60a/TUK+u6g459DWAm1DVPi+gtaWxtSeKYlAKU/rEQ6s8enNURi3piVBvztkvdpgtOOTjz9lb/eAyXiXJMm4ujzDGsHu7h5vjs8IpOTFy9dcXBzzx/7Yr2IbQ7GZkqUxTx8fMhh26PQUQZShopg8r5neLri9WaJ1QVkaNvnajzGl9NWMMCRJyCBO6CUJ/W6XKAkRyrMm0k5K1knpD4fM5lN6/R6r1RKpBJtVh+VCM71+9pXr72uxCTgsTjiyTsZisSJOOjgkVWHpZUPKyr85dibbIGqqckMnG9DpDMg3NdeXty2BWNDUlnmzoSg0SEnayVo3Xcq9B4fUzZrPP3/FOg9999hljPoD0jCgcDk/ffY569WaqiypnOXm+hqrBI8ePWFTlSTdDpQlQQC9TkyeL3nn6UNG4wEnb96wWS2RNCjAOt1GrJd0ki7dLETXmntHuxy/fMWmriirNY+e3KPIc148e0lvOODqZkVV1lghqI3PYQwCiZARSTZgudgQqoBKG7rdHa/JFxlSaSyCvGpAGLRuiOIQaQW1rr1kWEkiIZFhBEp5LLsQ1E2FM8IjzvB5fyoMCIKQXr+Hz0Dw9GDwDUXbZgk0xiFUBIFFyKAFpsR0OxnCGZpAkMYhwgqKpsDphroo3voNfJPOdxpM2zwEWnLx3TShVVCKlsbknJ9EyABjLdpaT+JpP+5OZ2FbcZAMQkCgjaG5m5q0PZZA+YkO7cTDf01BFMXkecnlZUGvGxLIiOcvnnPy5oI/9Sf/DPfu36fIGzrdDu9965t89ulnBEHA1mifutAkYY8qXyGF4vj4NaPJFpNxyoNmwnh3l263T11pZjcLri/nBGGHphHc3i5ZrXOvaNU1Vd1QFEvyOqVaxlyeX1O3lnIZBvjQHkkQ+VTqO8hIqGLfeNXay+K/4vlabAJlWVDUG/rDPvPjJfcfPGIwHGOtwMSSzWqKVAGb1QrrasqyZmdri53tXR8JPl/R63aJoxgVwHq94Xa6JEoDHo76WCxRGGHQXN9cstqsqHXI9mQHqyWlLnAEzJo1s82aTq/Dsiq4vrqkzHOy1ZJ7WIwzXNxes7e9hXQ1SSRYLNbs7AwxTYVzDc5pFss5xXpNucm93t04Qun44N0nPm2516cpN5SjHs5qgkTQUTHdYcrWeI/ZsuL5yzdoC6mEvCjpdEMMkk5vhDm7AivRNiTrTlgulxgXt+W88H0HXWOEojAeyV238/dISBIpEWHkqwFnkSKksRoQxCoGFFI6ojgmTbt0ez2CQCGlNzJFbfio1tqX7Phk58BBEIbESUwYKiSGptyQxCGik9JUObX00NFyvfGJzUoSSPl2IfrxnV/4d2GsflzoMWTaehGWc8JLoEUrLGqbgncaAYtoBU8CqUKkCvDBJF44FciQQN0lJKu3BYTXrEiKvMQqQaUrNmtNv7NFJ+tz7+ghV1c3XF5c8cH7H/Heu+8yHk2oi4Iw9FDU+0dP6aRDbq5WzOczPnzvA25mM3RTgBPEcUO3Y8jSmjSEYTxge5CSpn26nRGrVe5doHVNXmzIyzVVVROHQ5o64PLiGm00eblpMyU2rDcrdFMRJx2wFklDlbcAF7xE46uer8UmoJQizhTFpmodbSHf/MZ3+OlPP0ZQEwYBSRKzWkzb5pBDN4Zup4cSAadvzqjrmk7Xl3BB0CBkRd00ftYs/KlycnpKUW48ry6QdHpdri4WnJzeUAtBPOky2t1hPptTGEN3NGI4nvD48WOiNOXm6opOt+szCooaU5cMeh1MXXF1c8352SlpEoN1rUV5ijWWbmfIcjYlS2I6nQ66KRmN+ggxYD6fs8mXbG9v8+DxPbrdHZLuiArL5dUNYRKhkpB1kVM3liCKSbp9qrIk7sQMRlvcTBesiwqF7z6HgaJxAotXSBos2rTOOelokDQITNP4+OzQn/5KSU8PchZnfSUSpTFBGLTuPUueb1BJzF3GgJceh2CUDwkJPASDQCKsptAFIokITcKy2iDa6wLWIMFnIwZB62Xwp7fRvgGo7c/HpH7Ra+rGYDy75C0XwTqve0D5hqcfY/qrgo9MU3f1BkIJwsCDW4w1fpTpRCst9lWErn0zNa9rrPQgmun1gs1mRbcz4MnjMYv5kuVijXOOosj55B/+v5E4dKNZbCpsI1nOc5wR7B3sE4QK7TSNq5kMY7oZJKnFlv59PO6n5HlNKDaMepJhLwPRYTZ39HpbjLe3MK5DVSmWqzX9fp/1Zk3d1Lx89ZI3b96wu7fL1taEMI548ewlp69PKYuCre0twHL6t3/wB66/fxOoyH8J/CXgyjn3jfa1vwa8137IEJg7577TUok/AT5rf++3nXP/yR+6CwiHNjkWS9pNub25YbVcsV5tsMa0UWQBCMNitWKyvcXW9sSP8kzD4dEhl5eX5HmBkpLReEwYh6yKBXWjCYKIxlhOz8+o6hVNs6Hf76AdlHXDJi+olSSUfVQUc3x6QjfrMNneIV8uCcKIs/Nzbi4v+TN/6k/z+Sc/YzO9JJQ7DIZDLs4umM5nlHmFEgH5JqcsGoIgIa9ymqoBp9ms1ighKauKvMhJk7Tt1guO7t/j9uYWJ1IO7j/EhXB7s2CdN9x/9JAffP/H5HmOwbK1t8319Q07O9ukvYTG1iw3C7YnI1aLNVTeZWeca0EpPijFOb/IujagtpKibJAOZJxiTYNUijBKMMZr1mvdtHduL+3NN2vSJMW293Ep2jyDIEKYEOU8LFUpBdZTfE2ofGUiHc42mLpCOkcSRr5MFcKbtawXSfsN23heo3NoI1qkuPB6irL2KU/WoW0bY4bwcmJxxyHAR8kJiZABPla6NUtJ4SEwGJzTGC/N4o6RaI0XTmVxTNBaoYui4fRsyWa9ZNCv+OjDD1Ei4uWr1zR1zfbWNo2u2d3fxRlHUZQ4JN1unzQJSeMEcITKR+4lnSFGGEJlKXTJqqhIki4YDYFkPJxgrWO1WaGrBelWQjeVLDcbtIFON6DTkwzHY7a3t7n/YIubm0f0B32m01tUGNDvPmFnHHB9fclo3CNNYv7G3/6Dl9+/Ve6Ac+4/+tIm8b8DFl/6+OfOue/8G3zet491Bm0Lkk6H5SpnuZzxwx9+n0BFGN2QJCFCasIoQM8KkiQkSUJubi/J89LDK0JBUVZoI1jnK9IsxeaONyfnKBVijBcCzeZXWFdirODmdsnVzZxVXlEJqC6uWS03GG1558k75KsNF+eXZHHCYjrjaG8fhaDX6bK6gun1nMV8w+18RtU0bPIKayR11SBFzNbWNlVWoGtNUzUkYUpTGS7OL6mbmjCKmM9njLcmdAcDbmczlqsZ880KGWp+/c/9ST7/4hX93hb9YY/nX7xi92CbbqfLs+fPee/dd1jnM6LUYUSBiAbkzRqtLVHsoSiNdhjhZ++KVk5MiCGksT7iS6jYj+gQgMeSpZ0uxniRzx3Lb71e0dvZbUEgfnJwhwRSYYzEtsjxNkzFNigsjdH+umQaqrKgqUqU8AvZ4pOXtTEtafnLAaXC48FbMZAXVWksLR0JHz9rWlWkFL4SwLX9SxRChkgVIYLgrc/AGNt687202icg46Eowm8WzjpCFWER3Fxf4OyaQAmSxJGkPQKVUFYn1E3Bq9fHvPvOU8qqIkszkJLxZEzWSVHCkmYR21s73M4umYzGjLYGvDx+Qd40YGExXxJFNVGYeBLyYOAbfmnEZDwAZzg/PeZ2UbMqLL3BkFevvyBJUt577x1GozH37h2w2ax58fwzPvv8M9558oB7RyO2J15Re//+va9cf3+k3AHhOzj/IfAb/78s+n/5UVKQdSK6nT7OKLqZxZiKQa9HKS3WlNimotsdsLMzIooFt9MLirykrhvy3FE3Bcb6PL/ZfM5utI9UIevVhqrMESjefe99FostfvTjf05ZWlbrho8/fUU369NIGCYRulwy6AzY3drlB69+j+VsQfg4xFYNaRTz7LMv6Hc6RGGH9WpDXi6pmprr6RShFJ3OGCEk69WGQGiKTY2pGyIVYhrBbDHj9OSSnb0dxpMd78wLE/KiRoYxq/yCbr9HEFvG212aT9Yc3fuQw8Nd9nZ3EELx4MF9dvbHHB3t81v/9Df54FsPKZspRV4QdwTNqiavDFXlME4hVIxt3Y7OGfLKoAlonKLSFZUB5xSdrEujQciQKE28DiBQNKZhsZhzsL3dcgt/ngbkqUQCpHceRkHgaUNNhakrmrrAGN/MXc49SPb65gaJtzI3dd026hy6NQ/ZtjHn8FmPjXFtspOlbAzGarTzlYBuhwc/bwz63qVUor0K+KwBkF416PxVUhuDVPwcjuI1xH5Pa1WVpjEEQYjWsMkrJI7J1j6NFiyWG5K0R5b2+Cf/5B/zztN329Qpr58Yb9/n8uKc6e0tTyaPiDYxzkr29+6xKdYIF+GsZbPO2dm7TyfrUlUNZVnTaOvBslYjVcj0ds717Q3TRQNBj15/C2cUJ8fnXJxf8+TxE957/3163S6BSLg+n/Po8AGyG/Lg6BFlXRCr9CvX3x+1J/BrwKVz7osvvfZICPEDYAn8b5xz//gP+yRhGHL/wT2wEVujPawJuLlakIQRo1GHk5NXBKEANINBhrE119e36DZssqk1YRzQCTKWixVpJ0Hbhizr0MlGnJ1dA5LRcIdvfuPbHB8fE6iE+SJnsdjQ1Ir3PvqAR+8+YHpzw2q95Nmnz1jNlkz6I0xZY2rNzcUVVVnx5OFDNquKomi4uLql0prlekOcJgw3hrp2rFYV8+kZURASKUVn1EGImKq0ZNmQg8OHPHnnCaPJDrPFnOvbBUnaYTAa8O77j4mjjDBySKFJEuhkfb79nfe5vLhme2fA3uEEa2s6g4DHj+/T7UlevnjFcJTx4vkxdS1JspCigqL0JXMYxPR6HXr9IUEY42RAkedsyhqnG7YmWxhj6HQ6dPtdqmLjU43rGfvdIXWbKtx1PjZdCu9+VEqhrWf5qUDhTO2dkqbxSsJiw3w+4+b2ms1m4yuIlvajddu9ph2L3oE/2n+sEzTG+yxq7YVCvhfQVgj4iYF2DrTx6VJSoYQEEYAMcCgsCi+B8lVAow3yzkwlLQiLUvbtV/abhY8lz9Ieq/WC+WJOfHpNnHzOzfUVD+4fMRmP2Du4T5B0GAWeVHV5cUoQKV/xRBHXt1Oevzxms1mzWlacX90Shn3SKOL89Bn3jiZsbe9ydXXN1c0pTuQMBgOqfM3tdElRFERRl/EkQoZ9QhUzHm1jNJxfXPDm9RlJ1OHpkycMuhO+881fYDLcYj2/JVENYRjz8vnZV66/P+om8B8Df/VLvz4H7jvnboUQvwD8DSHER8655b/8P345fGRnu0MvG2BqcDZExjHZvQ7OQhgG5MWCPF+2phXD9fSK8/Nzoijm3r372NBjvIWUdHoZKlTUVcNkvEevO2ExK1mtcj7/9CXWOEajHbr9lI8//ZQgiEjTDjuTXbpJl/5Rh3/+z3+XL24+J1SSQbdDHETs7+xxdXlBr9Ph6vKay6sZRVlzM12DlIRRF1BcX68YDPoMB9tMb27o98cU65yr6xlx0qU/2mK4vcPDR+8QRjGD4YSb2YLpbM7QDUjShCgKGI/7WK14+OCQzWpGvl6zt3OA1iVZJyBJY47fnDKcpCQdyaMnh+T5DCUt09ktghQpM5arhsurOVWpSeOQne1thsMBjdWeuhMGNNYSRxFOKcqyJDQhveEQazXFpsQa3zBbzuf0trZx1n4JSOLzCY3xyUQ+gLT2aU1lTpFvWCzmTGe35EWBBYIo9iV50/gFrH0TULVQVGtaKbCFxjhqbdtNwI9LtXXthnEnIfBmoKppUBKiSBIhccJvAE4oLNJfEdqgF+u8UEhJz1HEWKQ0KOktzc7Zt76ENO0iRMSmaHj2/JjZYsVquWA6W7Kzs8Vo2Of18SlpGnN6fsnp6QkyDNBVxfZki8+fveD41WsmkwmzRcnl1YrpfMajR4+J0zHrEsQ0Jy8tYdwjjLrs7ByyWMyoKk2Wdal1Q5j0yHojrq9viaOIg/0tOlmE0YZQOTbrObs7Y44Odjg7OeVm3fBsekwYBazX/8oS/KNvAsITIP594BfuXmvjx6r2v39PCPEceBefUvT7ni+Hjzx+MHJN4VOE1puCJFHcu/eQ9XrNbDYjCDyBNQxjnIQwUKRpG6gRBjTGcHF1gTGWra1dj5uSkp3tXVaLgkAq0jhjPlvw9/7ub3L/4S77e4f85Ccfs7W1zdZkj8vLSxwN3/7mN3GNpcorDh7co9/zo8f7h4feHmsdl1fXLNYlm02JExFSBURJhp9NS+I4wxlDGKU0jWO1KcA5posVw/GQfn+AUAHnl1dYZxmMhjgEt9MZ462Uy8tLri+u+eC9b7K7PeHTj5+Rpl16nYxAaqBqw09z7j24z3IxJQ5DxltDojD0MFEbtZtAjQDW64J+t+/HmUYznV5RVb6fUpuawXBEXuXkxYZONyFOU2QY0picXnfI1dUl21GMEPi8gjaRGHwTUiERTmJ0RV3m6LLw9//am5e0MSRpSl1pynKNCEKUUARCoiyY2seL+Uhx6wU92lE1kqpuqJqGWluM8xWDtpa7JESsa0eF2lc8LYzFCekdmu2I3OF+nsTc2rWlkn4q0CLQhTVgtZdDW4twEAYRYdwFGbNYzKn1LUY3LJbPOb+8ZtDrUjcVaRp7FF6zYnv/gMuzS5abinxZsnvwgP29fYoKwrDHcnnFbF7SG+5wc7tiNsvp93o8efoB1hpmixVlUbO7e4gQjtOzE5arGXE3QqiCNAsZjbqkGZRFhSNHyoogkFycn1IUG7Iso8gLpJIc7P+BQWB/tE0A+HPAp865k7sXhBDbwNQ5Z4QQj/G5Ay/+sE8kRYC0GVWliYKMne09v2imUy4uLzk/v2B3bxdtBE1TMZls0+8PWS5XbZqvwBrQ2lHVmjBKONjapdfrcvzylE6aga188GhdcP/efbrdLtvbWwgXMJ6MWcwXLOZLrHHs7e3z4vlzut0eR0dHnBy/ptNJidOU9WqJBipt0U4SxBkIQZxkGGP8Iiwr5re3FJs1TVozHI/p9noICWXTsCoKTs/PidOI+w8fknYSPvvsU8JAomTAy+fHNEXD/b3HbJYb6qLi/uF9ivXKO/makul6hrGGOMpQqqCqKvb3Dih7BcLAfLah0xmxWFZI4SjyiiROGQ0Trq6vyfMZxhn2D+4z6PeJEm+UQhr6o54nPeNduSoMubq65v477xJFoV84yjfP7kChsjXuWKvb9CifyeiiyAuHun3StIOQIZYAkDTaQJ7TCWKipqGpG4w/lqF1UmoNjbbUjRf5/P5KoO0dSIswbRkvpO9PtIIiY/3/75RD3qkQW77AHXhFSYETuk1Esm1Qi2npyRYhI3qDMUk2ZbHcsM4bAuV1DPNlwenZJTjr2ZRJQJQFPH99Qb7eYGzEwe4eH334EWVecHp2Rtbp8O3v/jKLxYLVqmC9WtPtdlHDsDU0aS4vrlAStsYj0jRGKcH5zQlJqtkKE/rdhNEwwbkVoDG6JAwH3N7O+NnP/gVb4z3SdMhku8e9e/cYj4dfuf7+rXIHnHP/BT59+K/+Sx/+p4D/rRCiad8//4lzbvqHfY0oSlC2y3J5S5IGhCrm8vKGzz9/RlFV1I0DkTCdTtG2bN1sAXGc0tQWCDg8fIBxjtU6ZzDc4smT91jeejdioCJWiznD8Zjvfefb9AYJSsA7T5/4mbNVCOFYLBY8e/6Chw8fM53OmM7nDEdD5qslyy+WVGXOeDRiGHe4njeY2neltTVor7OjbHz6blkVOGfY3p7w6MlT6ha7lZebt2iqw91DHj19yMXlBafnp3z3u9+iWC958fkrtkc7XJ/fsFps2Nve4+HRfY5P3hAqxezmmrOrC0QYIcIu9w7f4dWLL4iChNlmRlUUBNIy7CekccTWuEdVGarS+wnOzpdosyKIQvYPxxweHHBzfUMa9lgvHDL0oaLaGGpdc3V1iQwiBoOBTypu8wE8B/BO5ut5/0r63D2iAEuE0xFZlqGHQz+hCGLibOAbfWWJvQaTF4SynedXDUJYhPDRYF4k5KhNm33Q2oeduBMHObAChCVQsp1YeCCpsc5vABhwEm+KdP73hcAa0W4aos0voIUR+s3NtGhyFTr6wxFZt4+T1+SbnDgKieOExoATIVHkI+bzqkF1El6+uSYOI8LAsGUU11OfxlRrSGXA/uE9rm5mSAEPHzwkjiOyNGa9XBBI6GYJUlhPcjaKThoThjBbXCEE1NWKXi9m/3CLszenpHEHYwpubs6YTHrgarTJkcqCqFmsbv7tN4GvyB3AOfdX/oDX/hvgv/nDPue//EgRoGwH6Qpev3rDZpPjFNzezgmjhPsPnqIbx+3thm4voK4Ml5fnBGGEBaI4Y7K1TVHWzOYFggghAtbrNVjNcrkmjgMOD3YJY8V6tWAw7tLrpnS7AzZ5hVr4OO6f/uxjfuM3fp37Dx5wdvaGN2enrMoCo2s/OtMNvX6X7nDAMq8odUNebKhtQxKFhEow6vfoZFuU6zWjUZ8o9ZLTMAzIrzcMJwOCUNHtZ5xfnvG7v/vbnJ294dvf/ghnII36bI32qHJDQEQSphTrElM1LPSMn37yU6aLGePdQ/YOPqKTbpOvPiULBTdXU64uL9je2iJQlsF2j729Q7R2XF5ccXp2RpI6VNAQhhIZNMjIEkSWyXYf5yqWmxmN8Z6LoipZzTc8ffou/X6fOIpbrEhL9nHtgsLHf0kpEWGIcw1VA+BDMbq9HtY6wrhD3NGtacgRhAnHr4+pW1S6EL7pSKsK1MbSWO80bLTxykf3JUzZHTsQ3uLFrPPmKGNaS7H1mZNeDuypyLQAVyH855J416Lk58j3u4oA54jihN5gRBilOLEBFeJQNLqhOxgThwHguLi6wqwaEIKiqJFsUOqKV69OGY0GJFGEdo6y+YxnL55zsLvLu08et6g2Q6h8YlI26mN0TSAsVbHm5vaay8tLbGAZjoZMb+dIccbDew8IVUY3G1BVFetlyc72oddTOEFZlrx89Zy6rr9y/X0tFINaG5KojxIrnn3+itevJZPdCVGUkXW6hGGMUoq8rEkSf/d88eIVUiqybp/Dew+AgDxfgfVXg9V8hRQCbWrCEHZ2dxlvd1ms5pT1mkwHLBZTsk5Gr5uyXud0sw4vX7xENw2dTpcw9D79pmno9rs4Z7maTskbixWCNMtYrReoUBEnIUpCGAhGY9/5XccBjalZLKfsHO4zXy55c/6GTbXhyZNHJJ2U58+/4PT8lE434/T0hG7S4xsffZtYRSgVEUrJ2dkFxaYkiAMub8757d/+53T6HWTYoyo0r1+e8vlnL1hu9xEOticTQiVoyg3xsEc380GWi+klUWB59GAPFXhvRTcLaMoFo1FGFEGaBiwXK897lKK1FkOtG+IkIYw9d8BrbL3TSeBR4b7D5o1Fpl2kQRShghAVxljnyJwkyiuKsibLMkZbu2gnef3iNXVRYp1sk50sxnoxV1VrGtPmMDjeJhALhQ8eFd4D4D0FvgIwLaJMWcvduPEOOy5aDLmQEov/WlhNYAVKBF4D8XPSK7TwsvFkQq/fp6xKAqVomhqHoNaWKFRUdUnVaHRlCaOQpm5YbRrK4gJnGpYbD10ZDHsgHPO5b/jqquDDD95jNOzR63WwtqGuCopig7MNt7c3vHj5kmW5Zv/BEZPhPuXGcX56y2ap2Z5s00kU1kRIUvK1pdsbUhtDmvbJi5w3J2++cv19LTYBozXnV+d88ewLXrw8Ze9gi6K5Ymd/l739Q7Q1hDF0exG31xf0M4VrDOumJIgz/yYLAtIkRfRh3O0imobJYMhme0TVVKiwpjA3ENXYoGJTrr0EFh/zPL++JMvGPL53H2UsWRAQI1iXJaYq6aRbaGO4uZ0ynZ+QRCOiOGGns0MYCAb9DlZX2KYhiUOaqqbT6eBwrDcLukWH5WbOcrPianZL2E2J+x0Wm4Ks06fXSTHGUtUVT99/ijOOxe2C25sZr45fs7e963l2x6es8oYw8131YjPldrNhs7rl1eqc957eZ3u0z3x6A6am2qy5PD3BWMfJq9dIKfjo6WOePjzAWEOWpVxeXYGxlCuDqStsU7OezqBpiEJFKUtkrLDKi4IgBHcH+DQgvAwYazBG+0XqBAQxQSL94D6IPIVZKGSYIIKc7mBM1h2gZcLtoqQ4u8AKSWVKKuPYNJpcazZ1/TZ/wLYcUWu9yKilorRqQYG2IK2jMRZldEsnDrBCtA3A1pjUJhnh7tDpYIX/tbAC4e7iyzzUxFhNv99jsrXFfLHwzU5tUIFguVqR5yucMwgJgZKYxhOTKhmQ64YsS7ierTC2Idc+LCWQktXiGuEs77z3DiIMQSmEchTrhulyBc5yenrKycUlKlSsFxtWiw1p0mU6W1E2mulyRVUbdN2AUJydX3CoHrLKKzppxv0H7+GIgX/0B66/r8UmUOuan332U16+esXrkyuyQZ+ODJnO1oznC7b3JhTVhr2DIcqskc7y3jtPWdc1WkhUFCAk7OyMWc8WJAF0YkUYhvR6XcrZimWxpAkXVNrQ4FhcL5nPlsRhhHTQjWOyOCLZnmDLnHffeYRez3hzVqFIQHuIY9PULJZL6lgy6Cvee/IeVpdMby4JFKRpjHA+Ybg3GCEkzFY3rNcLOt2EnYNdLm9uma3X/LN//n2yJEYGMb3eiN3JmOViTpxFaG25nF/zs88+ZXq7oLIgbyTz+Yrdg3uEUchgOGQyTtiszvjgvSMuzt4QhYIoUExGY0KlqOuG+e2U9SonX23Y2prQTzP6/TGbfMVyucBsVlS1JYw6mEpTFxXr6Zw4jomigNpUDLdGOCX87J3AKw9Ng7M1WI01DdzBQZA4GWIluEB6e24oUc7P9EIrCGNL1OnSmWxzJGOOzm6ZzwtqvcSIgFxbNlqz0Q2buvZNwNZabKwFC9IKvxfZNiJdttFlziGtQZgGZSTKSN98FgHCCYz2Px+ka2PRPEhGhVGbZ+B7BAjlpdHSpzUFgWRnZ4eTkxMWi2ULa5UYa9nkHksXhiHyDlJalYRBiLWWSlvyoiBJIjaVoywbL5ILIrrDMUYo8lqzzG8RwouFblYb1usNy3WJljG9Toem0rx5/Yb+aESn26PRDbPlgpvbKcJBqiLCKGS1yjm/WJLnZ4RRl+9971eA//IPXH9fi02gqmtenb6hbBqQAW9Or9jd26ZsNEVd8FQ/oj/MCIKQvf0DlAURJpjNBhFFbG2PMaZBqpAoFcwW52A36Bpmsxl1UyECqJsaGYREMuL2aoM1gtUiZ3p9zdZ4RJJmvHx+xrAfMB4lbE0ypNzCBYJNWeFUQ7KCNFXU5Zrh8JDd3TFnJ8csFjOcNuxMJgRCoWSA0ZYgVCRxTKAEvW6Xfi9nU1RobTg7PWMyGNJLE5IoIWgBmrP5nMvLa4qqZrnacHF5zWpdcv/+AywSFfocuvF4wnx2ze3VOU8fP0LY2jP/jVe6BUFInnvXX7fbpywdZdFweXFNvknZbBbc3t4glaKTdagah5QBYRDR1DXOWTabJWEcEiURabeL1oYgbIU8bXKQsE3LHcTDOaSPa3OyjVETCuF8leCDfgxCBMgwQoUhw+0J737wAVdnl3w+m6GtpagbNmVFXlbU5i6qzKcnW+1Hd0JapAsQTnrDUOuNMNaX+FIYjGrn/W+re088Ns5hmsYHrMgEoTyM1Drf4PV7jo9IF1iCwKc5b00m7GzvcHszQymJVHhEexBigcaPqTDaenB8K03e5DlV463eqBgVpVjdkHX7FLXl9ZtzbmcLinKNa/+uZvMZ89kcYyxRGFJrSUdGrNYFGsX9hw/48c9+ShwlZGnKoN9HWTg8us/L56cIJzh+dUwUSP7SX/jvf+X6+1psAmEY4oTAONg/3OXmdsrrN2fs7G7RHRzy/R/8hMdP7hMoR5NvSIKApJOBFBwc7HO4v8ez559zsbqh30mpzIpnr88ITIemFhS6IO4rZKDo9UcEQQelu5zVF5yf3/Dm5Wvee/cRu/tjsq6kahYcn3xBXs6IEsvWzjal1nRWMfPFNauVIR0kPHy4T12vKYsNBweHXF9cUlWaUDmUDNisc1Qg6A0zTNVwe3XNzeUV5aYCK9gZTeh1Oti6pspLrssK4yyff/aMi4tr9veO6PUGDIeVd1rGCUVRkmUJo9EQgJ/88McUmyU7WxN6vR7CWTbrFaEKqcoVVdnQ6UgCFVNUmvV6zWK5BmcwtsYaw2R7G4ekbEqckPTHQ0xlOTs5ZlPlZIPh26+f5zmdTvL7PAWiteta0WrwuVP/eSdfEEjAh7cKA1pXWB+rhzY1UZRw7/4+3/jm+7x59cKHfTYNq01Brb2HwDqL0d7r7xy+2kJg4C2A5A6nbi0Y4zDCtr6Dtl2B9M2/AKSzfqpjQbUqRGG8zdjh0FYjtUTVFVLHBA6wln63y/7eHifHJ1SNR6T5pOY7DLtgvc6RSB+m0m6OWltA/pzfKBXaarQRnJxcc3Z6RdaJCSPVpmVpNsWG1WKFlIo0SajyCiW97TnUgvFkj4ePas7Pzuh0+hwe3Of68pLG+kmXbRymKdB1zpvXz79y/X0tNoFOp8Of/vVf55/9s3/ObJWzqSocgqLWWBFwdn7DYr2i38sYDxLiEL75+B67u3s4oFgvQdfkqyVx4Oj0u+RFweqqoFgZ5utbuuMEFzoWi5p7957SSQYINyVLB/yJX/3TRJEjTSPuPzjks09/Rl2t2NvdIs8rimJD4yymKqnyDaGEo6MdnC2Zz3J2drZYztZIAurakIxSxqMReb7BOcPWaMj19JLZYka9KeilXaQK2N3ZRQlBtdmAsbw5PqU7GPD6zRuur6eeqJz1+O5377G/f8CrV6+QUrK3t8NyuaAqN5R5STfrEoURk/GEm+tL74pTIcbWOKGYzlZEkcYISW1Al4b5dIZuSk96NiGD0ZBef4R2lqIoaYwn/rjW2dfv95jeXGNsShz1CNuuvFIK4QIvFjISazWNcVhfFGOdIFRha9OV7SZRIqQ/QbWucU4TJwHvffQur16+4PXpG1YXOUIFON3iwA002iHbeDY/+Gs3AS8DQr6NR+NtkMpbebHjrT5AESKCwJ/ezjcZ68bnIgRhm4LktP+zS4GoYlxYEkQJuqkZDQZsb21xcnZKVfmrShDG7XcE1jSEUUAUxW8hJQJJFAZvbfBV5XUR13WDaSqEMyRZRBgqwDMcwXszpFTUdY3TIM+nNKbm4EixXFU8fvQeRkufUYEiiFLOzq+YL5e8/uINEkMYwG/9o3/4levva7EJCCnYOdpnUxfMVgvCNCbLevSGIyyS7Z19zs7fMJ3OOPwTHzHoB9RmTVkuWC9zrHH0k4w0DKmamtvbOecXcxanBaIKsNLSSQY0omFxu2GQbcBFfO87v8ze9hb729us1tdY1tRVSRQmvHz52t9BnaWsNCry48i9yR73DmN6wxHPnn/Ow/tPePzoEf+fF79Fp9NjOBj4hV179dbWZMxw2GWzXqAzS5JkWBFwdTPl8vQMjGHSH9KJE5bTOWfnl7w+OQchKYvXfPvb36EqG5yFg/3DNm/R8PLlCwIJe6MeQjjSOGM0GjOdzggjy2K1JgpjJsM+ddkAisosEEFJUxu0URSV9Ej2HUWU9pBRhLA1i5sl46zHoyePmK8WFNowHA65vDin1z/wPzOglQ+C9UQfJ+9AIBKpYq/UEyBU6C28wkeXqSAhFpYwinAYimKDUSG9YYdf/ZO/wsXNDa9OLyiKijyv0c4vfteSgaxrx3nWaxP8uFB5qpBt+4RtExHnASNeYuw3gSAICAXELfW4bse/fCkZCXzD0VifR6DLklBFlOsNnTTh3tEBN7e35GVBFCXEaUJZ5+imIUs7ZGlGEIZ+TO08Ksx/QwJrHFXpORlN4whVinOGRnsnp9GmtcAHDPt9hPDY+LIWLDc+09Gd3fL/+ge/xaOnj7FGc3Z2wvXlLft7e6w2Obt7+xx/cUoUwez2hrJcf+X6+1psAnVTc3Z5wmKzoDfqc28wYTAasTWZsFwtePf994myiOntOWkvYrKd0e+FzG7PuTmbMhntUjSG1TonryueH79iOisJy4hB3KXb6XG4ewghvHjzBl17EUaWpP6HEYYEQUReSIwJ6fV2MPqCVy8vePLkMUncYblaA4qt4SG9QZdC5+SbNXEUU2xKRuMJAk/HkWjvaKxzVisDtiKUAfcPDiEIeXF8TFMUrGdzhHXsDsaM+2Mmwy2Wp6dIEdIfDOlkXcbDLX74ox/xN/76f8ev/8af5uGj+1hrGA4G7ExGSF1xc33Jy5evSZKUIIgwDhqzwjpDvx8xGA3I8xLDgiCKWSxmLDcVRVERhR1Gkz20hc9/9jMGkx5pL2F3dweJRCUhy7zAWkMYhT7LQCk/n2/luK0Z1+8MKkQ6EMr6xes8J9Lngyqc9dqAIGjvy05TNQW62hB0HPce3+PP/fk/x+vTC/7m3/ktNnnZ5iFEICSNadrQWYEwBqcFrt2IVBu67mUADiXBCV+WO9duBEL6FKVAvaXtBLrBWo9096ewhpahKPCAAmkdgfDagiQMOTzY5/rmFgQ0zhDEEY1uMDjCUBKGEWHoI9PCIMbhfHiKCghUQJYqut0uTVlTV7X3vjhHEMWkWULU5i2GcUZTaxojcJX1QicUN7cbjk+vePXmnOGwz3R6gxJw/8E9ynzDh++8xzvvP6IsclQASRJ95fr7WmwCDkdlco4e7CGI6PVGTLZ2AHh9+ordgy22trfY3u0xGies1pdkkURa6MYRmYr45LNnvDo+I+72iII+3/rgPbqyiy1qluspuq7J0g6RDJle3dAfTLi6uKDTSamP9nj27AXGaCaTMWV5zAcf/iKBhMcPH2GdpcxfkCQdDo/uE6ch59M3fPjeR2yNt4ijhMePn3Jxccl0es3D+wcM+wnLxRVVvmE+q4ijjPFgBErx8TrHVBWhkPR6HTpxSrkuEE7y+NE7hEkfnKTX64MTpHEHKRJmt1OKfE2/36XTSX3qcBiwDGOOj09otKE/7DNbLCjykjCIiaIu25MOUZKRpClCBQRhwuHhg1Z1GbG7v82mXjIuJ9x7uE+WxVTLkqYs0dbw6PFD7ub/AkApkKrNCvQnsMCP2gKpcDKkaUqkCgkD34txzvpRoXDESQcRtoxCW2NtDcZQl2ukkzx5+ph/7z/497lZFvz27/6QzTpHWIfgLlgUkJ4gZLRGO4sxjkiFBEL57xVQysNIpAp8z8l6RJnl58pCKUUr9LEILMZqhJFtUrEPsNV1TRJbXF0TRjEYQy9N+eCD97A4zi4vqcoa3VgCFSIt6MbgLNRVQxAKjPG/ts6gG40KI6z1kmxTlERxQpJ6LFsUBQjB215DURUUZU0aR6w2XpItJKjQO2HXeYmSsF4umC1WOAz5uqAbxgz6XTr9jH6/95Xr72uyCVimi2v2723TSYeUpWE46pEkCe+++5it7RHdQcxwkJAmOdPLFdfnNzzYfsA3v/ttVrOC+XiFtDFOhezdv8f+0T2G6YBytebl8eek/YjesMc74WOKwjCbrpDSIqXl9fFzLi4uwEm2tnbY3t6n2025f++IvZ1dnj9/zsHBQzpZDykUl+fXFE1NGvdYrwq6Xcnp+RnGGt778F2SEJwr6A4iDg5GLK4LrFZEYcR8ueTm4pJqU3B0eMSDe/fZ3dphvVphtSHOQqQMaGrPxH/16jUg+Na33ufXfu1P8tu/809ZrdYcHR1iGsN0uXjbCDu/vGZdVsyXc6RQ7O70KcqKm5spg9GQ8daI5WpFFMWMB9soGRInCUka0lMJW/s90n7Ii+efc35yQTft0TQNe/t7ZJ0Ot9MF3d4+d+m+4i4zUXoSsAeeghMa20JAVRh6Yo9uEPi0nzgLEYGjJgfneRLKgW4qVuWMuDPml37pFxAqocj/j/ze939Eo70RSgpJEPkMBW0NRhu08X9+GbXORrzL0dHCTdpd4854pK1DujZRuYWjKBV4MqH1piKrG3Tj+YVVWREGJVhBRypqawmThKP9fWbzGdPZjOVqhWkMcZqhpHdI1nVNWVSIqsHhCMOIummomwYVRJRFwWTs4SNBIOl0M4T0Vx8vRPIINI+ON5SioZOl9Htd1pslTVNTNV5JmcQ+H8EKS6fT4c3ZNdJatiYjpIIHD/4IUJH/fzxVVWIo+da3vsezz17z6vVLtrcnnJ6eE4aCKPIl3e7ONq5ZIAb3mBXXBHQQJsTVBd/71ndYrDY8e/2Sh4e7DCd9bG0ZHm5z9GgLQ8XZxRmTrTGIiMuLKVeXVxwdjul0IlRguLq6YT7f4dd+7U/w/R/+C4q64OL6gh//7MdsTbZJ4pQf/eRHSCkY7PRxVrFcFWh3QdbrsN4sEcoiQkeRr8hXNyzmkKoxw/4eadZhUxQ8efSYvCw8CcdaiqJguVzhHJydnVFVDXXVsLubsNmUXF6eUJYl1hoG/T5Pnj4i36w5v7ygH8WEUUKW9hhtT5ivFgxHE9brnDjNyJIOy8WKxXrJzsEW3V7K5fqG5XrGoDdiPl8zCYc4V/PZi0+Y7PZIsohuv4N0giRKODk9IeuMSNMh49HQn8bWglQ44Ud2qj1VrTX+eiADVCDaEl57u2vgtRu+f2AIVYQzAbryvEPT1CgRUW6WqMby4XtP+fN/9td5+fKU25sLtDVYbQmzGLSmblrOYaAw1viphLa+BG9DXD2T0CFDCVKhrUeuBQifUt1ahqW6yysUKCSE3qGqmxpnPQxXSElQFURxjMRRVzlHB3vULTZ9vlh66bRoR5V1Q5ImNHVDkmWs1xu0MV5/EQTEUYTWNSoQRLFCSkvdVFRVRZ7nSCnJ0i4q8A3LIAgJwphNUdHtDomiAGMbqsoDSII8R0hBXtREQYQIJDeLgn6/w9n1/CvX39diE4jiiPG4z97OmLOTM0ajLpvNnCgUpEmHOBQESmGamlF3i67scfN6w3qhWcQlr16fsLuzzXhrxGAQ0etCr+MwiS9LV8sVeblgtrglr3JevTqlLDXvvfcenU5EnAi+9e13OT255Pr2DcvNfR4/PeRHP/wBe/t7fO+Xv8lPf/IzVOCIEt/I7HZ7FDOfj3h4dEDWyzg9P0bGgtvFFRenL0hjwf7OHoENOT4+5otnz0mShMnWhG5Vs1wuPdRjuSYMIzZF6VOHlEIrH7nlnOP+/ftcnJ/zgx/8gDzf8M47T7m5nXJycsqf+uO/ShgGHD18wO1yRjW7ZVN5k9VqvWZr6HULXzz/gjCBB48eYLUlChLKfMP19SVXN8eEqSKOFYN+n7opiZKIIq8YDcasNysWyyVPHz/03Xl714yTGONl396E4xtfUinCIMQ51WY5epKxV+5DEHnuX+1qdGVw2iCcwBpN1eTYQqNFjlApv/arv8RmOeOv/rX/ltPLK7ppgNPNW/qPChRxFLUbZ00kvctRt+zGMAxpjH6bYBwHMSoMsC1Z2P/jDVN4HxIAzrajxjv0oXHopsHoBhcqmqZACkM3y7h/dMAm33D85oR8k2O1P72DICDrJtSNJz1nWYa1liRNCYIQYwy68ZMwZRyB9YgzKR1RpAiCqB0XeqS40T5Byuc8QJZN6CYdijImjgOiKOJmekOjaxorsFJhrONmsWG62nzl+vtabAI4x3I244vPP8M2NR+8+y5FXrG1u0OcxOzubjGf33B1fskgHBDJLsP+EZGSPH91ymeffcZiPeW7o4948t4BlZ7z/MUrju5/RNob8bPPn3F88oLReMh6dczJm0v6/TECzfHxc3Z2R7z77lN2dvr8vb//9/j409/h4N4B6+qadaVQqSHpOXYOe/QGIaPhNq9PvB//0btPCFLF69PnbIoVQdwnzmKsFNTGEsUdNtOas4sr8jxnOBzQH/QBwe7uLrPbOcdnb9jZ2SOIYh4cbnFyccFkMubdd95nsVjR7XT547/8S/zs459hdMPF+QWL2Zzd3QO+ePaS/YM9drsd8qqm0+uzXM3Ji5x+t8/V9SUhAYNul6ooePXiOb1OH1s3nJ6cEgQKJy3OBIQqYnp9iwokYRQyHE4Iw5CzswviOKTf77/9ed1Z+V2baizUnYzY24qlUu38/svI69b1p/DRYNoLfLyaz5e+zmigwVlNaQriuMtf/kt/HlzFf/V//7u8ObnAOI1TgiSSBGEIUpLEMba2GNsQojC2odEObUNqXfnQUe0wRFgstfEBsEELR3F3TUAlvYlItOkKQuKM5S3FBN/DMrrBOINSngz8/jtPEDg+/tknhEpCHOGcD7NVUhJFMVEUsVqvETjSJCaKI7StqKoNzmm0dv5EDySdzoAwTLDWsdnkXgAWxQSBz3nUTcPtzQ3GNN7mHo2Io6RFmmdet2EdSoWUVU6ZF1+5/L4Wm4BuGpaLJfJI8c6Td0jjHudnFzz/4hkHe3vsjAcIYwmFYLVY4ExOZ9hjMb3ldHaJ7EWszIab9TUfPX2f1bJhtTHk9Zp17egMegxyj8f6+NOPicOMus5RCsJQMJ1ec3YekqYxDx/sEXdSeoOEh08OmS8XdEWHnf0Rt8tLrs6viTsJs/k1o8mAolpTkuNUQ+MK8kbR73ToDydMr66ZL2rWiwoZBAxGI4ajIbs722hjyPOCTZljrKOsKpIsRVvN03ce8eTJO/zTf/I7nJ2d80u/9MfY39/n008/JQgCzs7OWa2W7DzZQbQ2259+8inTxS0H9/fpt+M8FfhU3irPqcqc1XTFcrVgb3ePJ48f0++mzBdzHBZtvGZ9mHroye18SqUrbmc37czdpz4PB12ghXC1JbgKAqRUrePOL3rXynxtu3DuTl3woSx3G0YYRKggwVQaYQVha+0NQkmgLWWxIIoy/nt/9tcY9jP+5n/3t/nsixM0BiskZaMpi5o4ifCdfUvTNICfPtR1TV3XHnuGo6xLRCCRVhG4yPckWsXhz0NPBJLQZyGIACsMTpgWve4j06UzJFGHyajPcDzmnpN0Un9N+b3vf5849o3bqqpI0ogoTnEO4jhuKyjDar1CKX/K4yy68eNK1WodBIo7CHMURqgg8IDaLCV0AU1dUtc1oVLk65xKN0ip6Hb6NMZS1Q1pknCX2+CJf//q87XYBJpGc30x5Xn4gg/+4reIw4zbyymPjh7yjY/exznNq8svWCxmvLh5wTovkEqQZikPv/EQ4Q65uT7jbHZF+YMN2IrL8wvqZ5fsHDxhZ2eLXXFAHIWs1yVxmDHsD9nb2WGTh3z8yY8pizmPHj9ka2tMZSquri54cfyK0/Mz/tTWFk5IPn/2jMV8RRCl9EcDZBBwcvWaycGEwVaH7mSP1XLNdLGk29+mLgLWa7i8muOM5WB/CxUGVFrTNDXHJ2+oK81oa8L19RStLSqCI3XI1dUZN7cX/Mqv/HH6/SG/+Zu/SVVVHB3d4/z8lNXSv8n/2K/8Kh9/9gnHn31M4yrC24gwFFxdX5IvFhzt7JEGMXVZgxUEMkIJnxEQhYqmLhFC0NQ1UijUKKYpIct6nJ694frqisP9Iy4vLxCuS/LOFsnQk3hqUyMCfNrxl/LGvfmGtwRh4Vwbc+5PWydse4d3BDLEyghrFIGVSDxCTkhHkAT00pjlqiANJb/xp36FfrfD3/p//F1+8JNPWG4qep0uva5iuc5xxraR7haU9xS42hE0AUorAgLKukRFAXGYYJy/hjjrUDJEKB/Q6ulDrV1aKN+sA4IgAGexxhIEAUcHO7z/4Yds7+6yXpVsjQYcHRxQ1zXX19eUZYWNfH7j/PaGTr/fVhGauq79qFNInDEg/eSgrisEAtMAxmclWO1QgSRNvKKwripM09BNUwIp/EJ3IGh7CCpkvVlijEOlkjAIyKLkK9ffvwlU5B4eN76LPwD+T865/1wIMQb+GvAQeAX8h865WUsg/s+BvwDkwF9xzn3/X/c1lAzYGu6wM9nn+vyW5fw1u9u7XvOe9nj54gvyZU4chsSZJug5Kt3QHXXZfzphvd5wkwcYI1gWNZGUbAqYbRZsHylmyxVG10il+N4v/AKhSKiKmmfPnrGz6/UIL158QZp06A0HrIo1pW7YbGo2ueZv/K3f5Bvf+JAw7fP+4ROasmI6v6aoc2oqjE04v7phe3eP0/MTFtOC7374y9w72uPm/JZaX7FZrxmNK5brJYvlnG6vS619B31nb4/L2xlJJ6M3SLm4OOX09JTxeEivl/GP//E/oiorlAzpdrtkaYd+v+bq6oZnz17y2efPsA72j46QgWW1mhPHoQ8g1RXjXs8z+CtDN+vTSWJW8wWr5Zxxv+/n2UGII+CTnzyjM+zzrT/+If1xj+BT2Z4mvmLTRnsUl3ForQkD76M32tzRx9ubgmtn396h5zsCznfkVRs26rzMVjhFpGKCCJwuaazXAjosSjj6nZBNXlLkJY8fHvLv/sV/hzhJ+Ke/+xMsEMcJurGUrmq5gG0MuueeUFU+1CZOEoSUREYTCdESh/3m5NOMFaJ18WHvchA9pBW8glBIQdaJGY+HPHnyiMODPbJOl06S0e1mDAZ9/of/8X/E3/l//n0+/tnHWBxhGJKXN547aA22zV2PkxgpoK61byY6Q1Pr1r0Yev+BVL5aUn7KkqYxdZWjmwqShGKzIRAtCKX9u6iNpqlqAqWwusHpBvVHTCDSwP/SOfd9IUQP+D0hxN8H/grwD5xz/5kQ4j8F/lPgfwX8O3is2DvAHwP+D+2//zWbgCJUCd/7zi/w+tUJP/z+j/h3/8L/gJ3JDlXRkK9LrHYkacjevS7DvQgjJOtCszI3hP0uv/obfwZlFIvLKcfPXpFklkkW0FjBcjZnZ2vIy5eveXT/IZWxnJ9eMJ9f0++l7GzvcH56gdMJt1c5tTMQh1gbU1UBv/s7LxmPD+lmPcpKIogYjkOGQcrx+WuevfqUVZnz+uyY64slQmdUlWDQnzAaJVT7FZ9//mPKuiLLYibjAQeHByAci7mPX9va2mJ3b5+imBMqjZIhO7v7/PQnP6KpCrYmW1xeXnJ1ec7R0SFJHHN2esbJ6RmNNqRZh16vj1CG6eymDfWISeOYzWrJ9HqOkCk7e7tslhtCBcPBwIeiFgVZNyXrjrHNDXGQIYWi1++wvbNDUzSkaUKapV6Wq5s20ci8hZBCiyDHn8BaG0yjCZR4iyi31vhxXevpvwscVUIRxikSgXYaERhc6NDO0tQ1Rls6SYzRBYWwfPTBOwzHY3b2Dvnt3/0+nz97hQqTn5fazr6lHwVhgHGGdb7Gn+8WWUiC2CtJVSBRyuPSjXNeZ+BbAUjhlz9Son1cCUmacnR0wKNH99neGhNI0FWBkop+J6Wuejx4cI/vfe/bCCyffv4FcRyzvbVFrbVPZxKSoix9AG8QEiqvC7DGYBvPQTAanBYkiSSKEoIwIs83UHlzURgqyipHOEtRbNDWU5eCJKZu492UgKrIqarCG6D+bTcB59w5niKMc24lhPgEOAT+Mh47BvB/Bv5huwn8ZeD/4pxzwG8LIYZCiP328/zBm0AQU9eCL55/zjvvPGI0+uPMFldo7djbPmB3+wG319fkmynL5RnToiHu9AnjPkHYJw4ztsb7zK5XvDy+5uNPXrG3vYuUIW+OL1nMrxn3h+zt3cNYyZs3pygUDx8+5fL6Fn2+IesMubla8+Of/IitgwkP3nmErqGpBIeHY5Ts8tnnx0yncx49OmK3N6axOc4JAhXy7tN3ubqekaWGYbbvm0kI9vf2MfWG42OfHLu7OyRLJIEqOTwckaUhcexR2EVeksYBw70JNzdTJpMeJycNo0mCdkve/8ZDer0hcZRhtODw4IAojNlbbPP8+DmL6ZI4i7BagFX0+z0sUFcl/UHX47vrDUJYGl0zTgfc3G6YL5bkpeEoG/DgwT2CJGR6PeXly2viOCJUAYvljF53G0eDNTlNbX3akBNto1DeaYk9LbjRWOt8PBhtj+AOOuLwZX+jwRiUFAgl0BK0ksgwQcYKaTSRtATGpwRlHQFhSFHV7O8M+Q/+vb/I/u4W//V//dd59WaKVIIkjr2GwBgPgI1TtDWUZYWUTStwkkRR5BWLYYyVIUY6NBYr7gLLIBCtCEq02YYCOr0uDx7c58njh+A0cSgRwvMSwyhkPOqz3Kz57rc/YtDtsFwuuLi4RFgf274pSlTgO/kqUF5cddc/ET/HnSEltdG4umxpSo4gkij85iakYJPnHq3uHNJayqpEubv8xjYr0hnquvHw3X/bTeDLTxtC8l3gd4DdLy3sC/x1AfwG8WWMyUn72lduAtYKRlv7/N6Pf4eoswYruDzd8M79LtpErNcGbQRZJ+XkJEc2lnhdcnN7w9GR4p1f+0VcHTG/XfPi5Rmb2tAdT6hKeP36gihM6HRGbI37zG9nDEdjyrxEG4iTDldvzrl/8ITJ7hEnx2d88N77DHaGfPbsJePBhNHggPFol3/0j3+HrAvz1Q1bZcZwOGBv5wgVBaS9DldnS+7vP6Qbj5ne3BCLjM5uzGRri/feex9HzvZOjzhsuLl5TRTF7Ox2ccbRSSLy1ZIsjKjyBaHS1NWCrCvojTJW+ZLH723TVJBvKmoN3bhDXaxII0mID0ctipBeNmG1nNHpjjHGNyWFcAhTe/utCtCmoqh8XFYYpxgsebHEAbe3N9iFY12uePjwHtpqzk7PcCLm4PARadphtcwZjcaEUqF1468T1r+JHb7cV9JTop31VwghQRhQeOiGKUqP9QoDtLBUyuHSCBUGiFBhjSEIILBeWh4KSScMCKOaqmpQTc0f/96HZMry1/+73+TTFyeIKAIkZd0gEagoxjYNKvCk4qpskEjquCRUISY0OOkdhwJLoLzi0IuefGNTW4uREEQhg9GAg4M9olAiRYgUnjMZhQqlBEEYsbcz5vZ2yvvvPGL9a3+Cv/f3/j7zmylxmmEbn7GQpTF12bTJzg2mtUsHUSuusg7jNNL5A8I6R1MaIhf6NGIESZZ5PQH465P00etCSsrK60qSJCHOMv8z+qNuAkKILp4f+L9wzi3vOqkAzjknxJ2j/N/4873NHRgMuuzsj/n4+SnX8z7nJ5d0oj2CWKJCxWqTc317i5vNyNIRlSs5P52zmOV04w2bhXcLzqYzjo72uXdvjzAI2GwKBv0RT5484PDgiM167nlyKmC12tDrdZlMRgilOdy5R71WHBwc8vDRI4Y7A27nCz7/4pjR1iH9fp/trT7T2xu+8Y1H9HodGq2Jwpj3P3yfm9mMe0f3sY1ierVkMc3pxl3czj7b2zs0dc7LVz/BGI2WFZ1OQJKEGG1Ieym/8Evf5uZ6hXIbfvD9n/HNb32H9XrD9vYWeb3h/HbOajPj/PSW5VyzM76PNJLV9IrBcES30+H08hoVxcRxShymCKeoqgZ0RRxKwsDffeumoShqVJB6XT2+BL68uiJOYmrdsFqW9AYZb16foE1NWTV0bq5YLm5RhNS1IUsCwtCPCFUgvTCobsB5Gs+dpsC1jUFn77IJQFc1rtHIUCKExQkLSuBkgAsjCBR3oFHVCnhkoAgxUNiW+NMgCfnutz5gvVyRVw1Xy4Ki9sAOb/6qWwejv6pYaynLErX0oJEk7qAD3UqIA6xspckS7x8IJKFQKAJ6vYzReESaJiglUcIbzFzri7bWIBDEoaLbSYmDkG9+9CFXF5csl2sa45BByHS9pKprvwFojTWtF7KFo0RRRJxGbcKTeOvWXK1W1HVNkiSgvIszTmLquqGsK3Tj8yTjICaOI7QxCKVw1nr82h9lExBChO0G8H91zv237cuXd2W+EGIfuGpfPwW+rFE8al/7fc+XcwcePtxzYdrw6PEhcRpxdnHC7iikbJZk/YCjB7tcTbf50Y+/YPvegLIBIRL2D3bo9UbMZ4v2L1BzeDihaUpevnyFkn36/R5SwHqz5vTkhMVsRhwkbG9vMxwMydKIspPx8sUL6jxgsVrw4x/9kO/9ynfZ2hrzwx9/wvce3uPy+oZ333mMVCVHBwcMBl1ubm/pdFPCULFczKjKgnzdEAQh944O2JlskWUJm7zCEbKzc0QQKHx2ZkOta+qqIe0Yxls9yrpmdj1je+eQwXCH6fEbQhEwn2/QDVxd3mIN9LtDkjhjNV9RFiVJ4sVB/W6XrNcnShLiQCEQ3pxS5ZhQ+eBPo6lrDSjCuCKKJcYpwiBgvrih27ID4yimqTSv3xzT7WZ0ul3iMGA+u8E2EEcdyjwGpzE4YttgDARBjEARSH/Xbhq/CKWQ6Ka1+oq7CYAgDAPvSfAVsB8lKl9iWym9Wk4ohJI4KwHjS1tXe7yXlCRRyOH+Lr/w3W/y6YsTvnjxEhmHRJ2M5XpJ1um22gWvdNRakxcFQRCTZiVSBZi7rALnEMFdglEbVS49Zqzf7zMcjnxAinVI5XxFYz28VDkIAlBK0ut22YiCna0tPvzgA07PLvjksy9QgSTLUmpjEMKLmZzyPgzTbgZ31wXwrkznPMC10+kAnr9hjPc1SKVQgaWu67chrlJKwjAk63Rwxl8TjPvqM/rfZDoggP8C+MQ597//0m/9LeB/DPxn7b//5pde/58LIf5v+Ibg4l/XD/BfxDBbnnFwb5c892z9vFpzfPYZw9GYnckew/GQdV6RbTSbyr/htreG9PtD8rygLDYkaYhSjrJc00kF25M95tOa2+k1aSYoy4I07TAZTijzgpvbG1YrKOslP/vkUzZLx87+hJvZDT/92U/RgHUNOztjrq7Pefr4IcassY2mKgvms1uyfoeXL5+zWMxYL5dIETEcTpgMdrGN4/PPPycK+yglyTp9rCspygata+pqQxR10LamsSVCWW5nM8bbB5Q1vH5zwfXtLd1+wr2HD8nSjO54wPy2ZDFdopBEYcR0OqV2sLe3y9buHqvNmqYqqIolxhjSNKXX7aK1Y3mzIM8rkjRjsbxLM0pRkTcWWRRWa/KyIEkj0jhjf++QLMsIpGR6c4VtHDvbAcZUbNYV63xDmHgA6Wi0TRBECAKc8LmEgVLe2td2643RmLeuPYfWDbqp4S5YtD0RhfCx50oFOO2xYFhHGMYYbdo3e8BmucZhuH+0R28wJo4Dnr08RpuGUDqU8BgxL2v2dGFrIS9K4vUGhCS6y6+wFmyAJCAI1VvtgAoUg/6A4XCIUgHg0ed1U/vvxV/W/RUIfP6EKHDOMp6MefedpxyfnnJ5c0O3PyAvfSBLmsTtAeabp19ad28X+t1mkCQJYeivA3meU1XVz7UNbf6D1pqmaUjTlG6nixUGrRW60f/2mwDwJ4D/EfATIcQP29f+1+3i/6+EEP9T4DU+mBTgb+PHg8/wI8L/yR/2BYytybqStNPl+OU1/eEY6QIa1nz/J/+IX/j2r7DczEmyHutNQ6kNcZSQpj36/SFYy2w2JSsV3V4EtuLhgz0e3HuHTz5+w/n5a5I0ZjS8z6g3QteGzz75lKYpAV8m9QY9sizk3qN75PWSsqro9Hu8++4T0jQgkJZOllJsBNYYVqsVVV3h1o6Lqwt/jDnLaDQgjRK6nS7lRvOTl58yGd9jd28X4wRRkrFZzyirmizrkCQdprNbZgsPKKm0Yb4oOD655fNnrxAyZDAecrB/H2sMygVMb865vlhytH9Ivl5zPb1GxSmjrZDZbEpVlfR7HTrJiK1hhzRWBDJgOtsQhJqsmzIcjrAO0qzH9u4uVVN6UIfV1HVBs1oShSFZ0qWX9el2u1hnmU1vCFVIMxyQbyTGWC6uLul0OwyHY/KlIk27EMZY4y3HUqqWAeDfsFVdok2DUIJGG5qq8JgyKQich5EqGbQtegUqBGtwQuNEgFKCOHFYbdGiodvJ6Hc7TJc5Tx4c0OtmFEXBFy/f0O10UYF3DBrjaULgG3913bBerxFC4fDpR+BZBIEUEAZvv+ckjr3asz8gDCOU0J5d0EaaSe5EUXdkI9NWH4JuJ+Xhg/s8ffKI2WKBksKX/NaPAGU7v7tb4HXt8yHuqoAgCN5uEkopoijCGENR+NAZYwymrSyUUjSteanIc09VdhCqP9p04Ld4KxL9V54/+wd8vAP+Z3/Y5/19j4AwDri8vOXqagE47h1uk3YlZycnLDYXOGX48BvfYFOvqU1BJ+2yt3/AYDBguVgwm96yEJr793cY9BO2J2PCwCcWhZFCNzVxv8N4PKbYlNy7f4+qLLCmQNucvQNNEPS49+CIUm84vTgm66TsHx5ibUWWhfQ6Kf1OQJwoiipnMtoiL3OuL68xzqFExLBnyOucs+KMOOyyvb1N1unQ7WdIIYgTiOIJ19dreoMhTWM5OXuN0QHORQRRBCKkqBuStMeTp0/QpsBoRxIn5MuC2+trTt9c0c+6SOXn8UbUVGWBEzCejDnY3yEOJdLVWF35BKJSMpr4iO6s06WsSiY7u+zu73M7u0YGjrIqkKWgU1WUReFVd6Vh2ayI4sC/QesNi8U189ktYZgwu7lCMUYO+mxWM0xdEcUpKohI0gxn2zIbrxbUpsEJhxP+5NK6wehW3w9vNwGhAozAgz5lAO0oTThJEgZY7e/UvX6Pra0x0/kS3RQMewnfeO8pm03OMi+Jo4BaW2p7V7r7OHOFpCorpMp9dLmUCAQKhwnuuvZ+YadJQq/XJY5jzxQUPvlYqtLjwtSdD0EgHTSmIQwCjxA3hrre5qMPP+Dq5pbz6xsEkCUJVV23suqfTy2MMVSV1zxIKb1Iid9/NYiiiCiK2Gw2b68Rd9eAOI7RjabY5G+Vml/u4f3Lz9dCMVhXNV88e+U56quCyWTA7v4BQlTcf7yDiGp2D8Z0s11kKFiXC8q8RApFECh63S6D/oC6XCGcRMkQiWS5XJCkIY+fPGSxuKXfyxAt/WZ/b5/r60vKoiEOUhbLVoPeSVAWquOGRjdEUYB1FQ/u7yMBZzV1XZLEXYpSs1mXXF9OqWvN9vYu+bJgvV6ynB1zuP+Qp0/eBxnQ6ycEgSSKaoaDXcpqgbWS9SpntSxoasXTdx4hhOL2Zs54e4tN1fDoySNubi49QFRr8o3HUAsMnSxmsr1D2km5vp2hlIeaPn70kPv3D8nXc26uzlksl5RFgwwSwiRmNp2zygsm2xOyboeqqSjrktrUaBpfQhpNEidEYYJtHLPZjDQLieIAgWY+u6IoGvb27qOkYz2fMg0DhAy5NQ4pQ3b39omjwOOvWkGLNl504+/9zrsAhWyZA63GoG48jSdSoFKcDBDKgg296tBJpIQoiqmDEmcNnU7KaNjlzekFy1XB7mTItz58j+//+GcoJahr7cEhrSYAIIxCnHXeIajUW1VjoHwp3uiGUEmk8nr9LE1RrdEIIZCBz1TA+RP4joYsgVAFSDSJjJBDX64/fvSAy+trpssFi5sZQZL4Zl4rp77zYdR1/fbUv1vAWnsTUtM0b2Ph7yoHb+H2VxnPgoy9qrDWb68H/7rna7EJNI3h+RcnZOk23/jgm9y7v0e/H1JUlxzdOyJflzROsbu/TZKFTJcBs+mcxXSJ1gFZmnL/3gPWyxmYGlML6soRRjAc9hGyR76ZIYCqrji/OCeNEtbrFXEssc6RpDEiiFmuFiw2c8C1Nt81SRqQxIqri0uMthR5gRGS6cIn0zqtCGXI/vYhnazP7PqcMIgYDSdsbW1T1BtkWJN1/CKNIsloOOHy8or1ukbJDlZKjo6eMp1dczv/gjju4KTFCsvO3jbL1RxTV2Ad43GPgIB+v0MUx3zw4YfsLRaoMCJKEvq9LsZoqqpsycVXXhYbOC6vb3n+3LMKf3n8i1RNwaZaMp1fE8WSxlZoV5N1Uw537qFrw3q5RsoAZ7whpq7WVLWmrC1bepemqXhz8obbmysGwzF5UaOCkE43ZTQe0jS03Xc/9hMty1/i7+dOSVSgEK7NHzQWh0YpQyAVIgjxZFLju/zONwiDKCGMStarJVJJsiwG17BaTMl6I3YmQ8aDPvNNia5rnLGoMMA4j/CSQmCln17UVUUuJUoJkjhEmwatFTYMkCIkCkPSNCEIQxzWVw1S+n7FnbHIWV95BjFhoBDOtVVETL/fZasa8/TpY16+Puby6paqKLFtH+SupP/yqX53et8BXYG3Xoj/b3tvEiNblt73/c6dx5gjIzNfTi/fq1dT19Dd1YObZIMizabZHigZXghemAIMeGMD0kILCtpoawP2woBhwIIEyIPEjWmYliybNkWKNsUeqqtrfFO9OeeMjDlu3PkeL05kdqldBTVFtfIVKv9AIiNuBDK/wInz3e98w/+vaRq6ruO6LpqmXTiPc0iJEiSNY6bT6UVu4dPwXDgBwzApc5tr12/ya7/679Dthnx47/9hPBnTavs8Ozjg7DhnZ+sloixjEY9BlsznY5XFLSRpkmNoNpblYGoW0SzHtGNF3pAm1Os1DMNgNBoxn82ZVVMMXeD7Lv2zMa7rYnkhs/kc11XZcARMZ2MkGdkioX/Sp1FrM+iPmC5yKiHottbxnZCqqrh142VMw6bMDJqNFXZ3XyKs1RnPU6JkQJqbuK679NgGk3HEbJqxvnod267jey3eefdtvMBWLECDitOzY3qdcz7DDcLQY2Jr1Ooei8WcrEzpra9yo3MDNA0/CBgM+9y/9wyqgiLPiaKIIKhRlRmzaEKcRFi2xSwa83Q/pd4MyMoYU7PRNYmmG9TbXVbaPcaDKVlS4DkWVRVTyIhoMSVJM9AcxtMJ9+/f53j/Gb1ej24cI4WG7bjEiylZusAwHYRmKMLhZRSgCbm8qxtUSHShhngqWS7lzPQLVSHVrKMpHQBdR6sK9V4K8gryUmkTOo6N61iKDVkDU2i0mw3Gs0Oli8DyjioUj2CaJRiG0gpASLIsJUl0St+lqrTlplTRg2Wp6ophGEiZnY9JYJgWy/ymmlUoSrWrlg5ARW0Vjm1SCzyura3y4ou3ePR0n9OzAaajyo3ARSLQsqyLu/15LkDTtItI4fzOfx4tGIZBnucX7z//O7rjXvyt/F9Fn8DPE4ZucmPnFV68+SqNWgfb0ZGVxnyu5JOe7e2TJy6Pnn7McHRKGFqYusNsOoFCw7V80iSnFoSsraywWMw4OTmmEnOa3TZJEqEbSkDi+PiY8XgMEjY3VjEtgzSL8UIPXVdnqp3t65iWiWHCaX+fvf0+vu0ghPKup8WIJC4pJXz9rVco84Qkiem2VpYOTcPz6viehxAllUyIFgPm8wzKFt12m/F4RrzImU0Stq+t0eluEgZt8jzn1iu7uG6NJI1JkoRSKvbalV6H0ekZZ4NTZGEoTkNpc//+x2xtb+H6Ht2VNuOJIJrPyLMU09TI8owkS3B9m0YzQIh1XNejkjlPnh6yJa5RVhnJaIrr2ViGSZrFzBczkjQB1LnU8yzQLU5O98ikJAhtSlkxGCnN2aIomEwnhGENKQsm0xFnZye0Wl0c10eWqM2hL3UMhURIfblRNKpSItEwTAPdsFRCcMnrVwFCN9ANDYEOOWS5UiuWmuL993yfXm8Fw3TICkGaw0on4uRsxHg2V625skLoOrZhIZekqFVVsiRLIssS5vMpvtsGKrIsARHgOPaykUjlLMqqULyDxpK6LFcavJpQxzYhxAU9mVwSjXiuTafd5tYLN/nw9j1OTvrqiInibZRymd9ZRkvnP9py6hB+khc4PwacHxGK5f+En1QKKpR9tusgdI3RcPLp++/ntK//TNCEzos3X2att8aTJ0/wQhgOR2gYjIZTXMdltbvOaf+I46M9drbWicoFpmEQL2I8K6S3soZt2himAyQkaQm6ZDQaYFoaVVaQJymnJ2eMBzN0Tee1L70EIiYIfBzHIi8KTMOkLCXtVge0nNP+HtPpiM2XXmKuJ5RFhe141CoP3bRp1tvIKidNFwipmmNqoU+W5UwmAxzfpihjinxBNJ+gU+I7DlVe4TshkQV5XjEZR6x0t9jZ3kaIDF2XtDsNFouEerPO6voqRVmQpDHzaIZn1XB9h6yQ7B/sY1gmW1sb5FmKY5s0G3X6/VPm0XwZwirJMNe18P0ejUaDyXSKpkkm0zGIEsc1yTLJZDLCtWNMw2M2jVlME0LP5vr166BHfPzofQzbpZIVWVWwsrpGlSSYpoFA4vkuCMHZ6clFdluFryZC0zEse0lULKmERGjnzUQlUhMYtoNpOpSaDrqm+AmFoigXmq4chlZRCQ1hmJjCVcM/VKysruL6dRaxIudcpCUngzFH/QF5VWJZNsJQ1RJdCrIsJ80qNMPEqBTX4HiS0ah7tBo+VZGTxNFScVndsTVDJSWLskQXqvpZVRWiKhG6Rp5lygmUBXmZg5AITccydeq1gK3NDd547TUePnrCbBEjK1XutG0bUCH/J8/6tm1fHA+qqvrnnMC545BSXrRCq56BklKqDkjX87AdG3iOnYBhGPS6bY6P9iirAs5iiiyl2+kxmfaxDQ3TUGq46701bMPh+GzAem8bXdjUgga6ZjIZT+n3z5CyRNcN3NBmthjjBTUG/RGWbuO6LnrboswLbNvm9PSYWi3EWCa18gIW0QI/8BlNJ3i+h+taWJZJlk+ZT4d4fpNGq8nG1jaBH5LGMzy7zmDYZ7GIltRaNkWpLefBC7I0QVYVRZZT5hWe7eG7JbvbHUzLYTwccnp8hGEI7t+/Tau1Sp6rzHi70yVNIk5Oj2k0Wmxu7xC6Deq1LvuHx9i2je97tNtt0jQmTRIMQ6deC5kdTrBtm7AWIoVOMZtTr/s4jk2WO9y8cYPJfEyaxax0VxiOzxgOh2xt1tBNjeF4hF6ZmGZAnuc4lqDTbaNZNkleMJnN8MMaxZIuyzJ1/DAkSWJG4yFC06jX6mhCI/DrGLajaEmXiUIhNIS2LMUZKruumzaaZSvp8aVUuK7pinb8XElI6Oimg+l4ihegLECUBELRnZtWjhQW80XB9mTBo719ivkc23MoKjWYdF4hAYmsBGlVIIRFnuZMJiN63SaGqTGbTxUH5JLqHABNOa1iqTiktBgrSqmSmlVZKpagc/db5lSyRGAQ+j5vvvEG9z5+xJ98/3sUhRpNVuvoq/LzUgj3fCLSdV0cx7l4LqW8SPidVxTOHUCe5+i6riohmoZumZia/dn77+e7vX82aAJMU3J6+oTXXn+F/cMzwtCh2fKJZkvRxcGA69s32eit8vTxE0zhUA+b6MImzyrOxn2mkymTyQjdEHS7LWzHosDG81xmtkXdr9Pa6jKfJmoctqqYTCds73SZzmZohqOEPGxP1X8r2N7epqoWHJ8cMYsyHKOpmFsMk15vhSSakqUJuqMTRxOOjw+JFjH1Vptmu4NhN8nShCzN8Wwf3w0wNYu4zMjTnM3NbYrCIEsrHj++z2hxTFFk5FmG7zdJkwLX9dnZ2SVdxDSaHbwX61i6jyYsZosUy3HY2tqiFoakaYwAklhNjumaWFY5LBwvIIriZbRT4fsBa+trnPaP1RGj0ljMU9qtDs12AzTJLJrRra/ieh5P956xsVWju9ohKyWzkzkFOdFkQbGI8D0PxzFJ8gzT1MnLnLIqGJz1KYsKfVXH1TS0TAnIiqUgibbsbtQ00NDBsFQXnaa2kGCZKRcaslB3P9XqrCOFrrQEXQ8pc1KhYVYaRqGh6w61Wp1ut8vqygpJqSINWakBqqpSYqqmaaiBnSShNDRMQ2M8GXJ66rG+2kNWJdPJRPUyLPv6QfEo5GlBmeeYQtHOVWWJoZvkpWptNiyTCkmSqRJuJdRY8NbWFt/61rd4+OQxTw/2L8L5IFCkLWVZXlQNVBn1J8cEKeXFZrcsC8/zLnoDikLpFVi2rbosBWiGflFm/DQ8F04gzzNms1P8QKIbCybTI9KzBZq2jaxMdN0kmo3VUIqwEKXJrRs3aTa6TMZzDvb3GI8nQEUpC1zbw3YVrVIUzWk2Q27s7pLFKknmeyGNeoPR8BTXcQl8n/l8TpkXrG2vc3o2YDaZETZr1OsOYS3k4GAP12oS1uogNbI8ZTabMB6coouc4dmIJJkhq5Tp7Iy0WDCPxxTyGmVZUPObrHQ6uJZNVSgOOyTMZxPKUsdxLe5//BjDi9nZvo6mOexef5koSikLie/V2NzapcwKbE3H0j3yXNJd6VFVBY1GQ2kDLMkxo2hGUag7ghCCebTAsn1qYZ0kTdF0k1arhWt7rC87Ag8O96HSeOnWyzS6NfrHY0pZ0h8M6HWb+L7PaDIiyobkUhCnJbOoz+B4TBHH2JaB65hUVc762iqB7yNlyf7eM2bTObbl0BQGlWZgVRJMA11TEmYS0CSwJPeQutqYQpYqOtDVMUBqakipLHKKJYW4bhmYjoMrQ0WQUghElFMtmXxMw6DdbjOYTRnMp7CcyxdCYtumGqhadimapk6jFhBHM45PDum264SBimziNFFTkVWpGouE4vzL0xTNMjEMjaKQiKXwoaYLTMNQYbmmhE1Vac9GGB5f/cqX2Ts65B/9H/+Yvb29iwx/VVXYto3jOJRlebG54zj+5xKEpqkSzedHAdM0L44SumkidW05Cr2ke/sMPBdOQGgwHp+QZWPu3X2H4WCfJC2ohXV2dm4Sxzknh0OSKCVPS671NvGdEFO30UgY9AdM5xOC0KPba+EFNmglg7M+J6eH1OsBYRAyGA44eHrM669+BU0TzGZTwtDj7KyvEl+mT6fT4dHjpyRZguVIjg5HCAmNepMyNxmORvTadRzHZdA/RRMFjmdxcjxGiAzXM9jc7IFuMJ7O6J+pKcbV7iqdVg9LNxgNhlSlSogeHR4hhEGz3SXP55AXaKKOaViEYYN6zeLktM+Dj5/i+46SpJ5N8FotNF0S1kNqtYBKFsRJxmIRcXR8xHA0ZDwe4/kepuVQlpAmKY7jMp1G2LYkCEKmkxm6odFbWSOKFuoM6QS02x2m4wTDMjk7GOAFb+L7kgdPHmB5krPJFNNu8+jJY1rhCkWSMRpPkXUfXUdx9Jk6SRor9uiOmjr0/Bqm61NqaoT4vMauuvUUeam2JPfgXBtALJ9XSk5cCLUREDqGaWPaynGYtousKrJcghZRFKrVNggC2u0WjfGQ4XyCpuvUwhBD07BziyTJQEg6nQZh4FMLPCIL0jgiz1Nct0uaxMwmE6qqwtC1JbNxru7AeY6l68qp6Tp5liMEF59LWx5nHMdWTs60KNHottv82q/+KqPxiN+fTZnP56RpieO4+J5SMIrjWE0YChBFiWGo49Enx6GLvMANXUxzWelAUEg1Fl1J1R1ZlM95iVDTNNJFiqmZeI6gHrisrdZZ6ayw1lvj9LRPu15HLwUiV8osH7z/Y3av3wJhoBtgWhqNdsi17VWOT/ZI4xipFfiBGqN8++0fYOkuGxvXSLOY05Nj4sWcwPd5+OgBnZU1tre3kDLHMqHRaHFw9JSzs0N2rm+wsbLLs6eHHO0fcq27g0wznh0dsbWzjuMGBKGPrAwESpLKsF3C2YzpfEE8XzDkjEYQ4tgOo/GU8XBGmpakuaSsYpw0otOrEWVTRuMZjYbJdDJHw6fKbeJIaddZKx7TxYL2aolXtzDzAClzcpEwGA44OeyDVF/SwXjI6eCMTnedra0NAs/FMAyyLMd1FRNOvIhBgGNbXFtfpyi7lLLgrD9CCDW+fW3bRzgmb3/wI/JqwWs7t+hP7uEFLmFo8NZbr/HswT5PHj9GN2zqjQDH8ylkiSwKJosxXuqzSBakWYKnkh2cywVVslRkICzn5Q0DTaAiAcNCKCmRiwShEMpR2Lal1t7WlpRgGsKwcTxwvAVJnBMEPtd1k3macDoesX9yTAE4rksjDFQORyhZ8W63jW2bCKEir+m4pKwSDEOyiBaM+6dkUYQVBpQSZKlyGtVS0wBhoJs6eZEoToViKYCqK65HE0FJTh5PSXJJWRnsrHf5zl/4Nlk05eGTJ5RlxSJJkUuNhDTNyYsKx3HUjIemNAkU+5BOkig6smopdCorlWPLi1R1I0rFbHR+hPk0PBdOoMgLzo4nStbbLTEqyWq7jecH3Llzm+OjfUInwBEmaTRnMDzl9GiPMPBYXd+k3anhpSaWo1GKhEpPSZMZW5vblEXFeDgiSRZsXN9kfWUVWQj6x6dYho5paDQbdZWhNTTyIkY3clqNBnuPYg4fHXKttUGFhi199AqiyYBWuIpeVhzu7VGRklcS3/Ep85RolmIVBoHXYjROmI6n6EXJoO+SF5LjkyGm4WOaPvV2m0UyQ3d0knJBd32NOF2QZimzacR0uODZk2NaXY8oGjGZRVy7vs047aPXAvIKqjLBsSHTZhRagags2r0eBQUHR8e4fp1avUerEVCVCUJIHNdBVjm1uku73eb45AjbMai5AfsH+xwdD3Bcn7AW8MKtV7l77z4f7x+ysbFCqfnU2qsk6YKd7RZ5Nubk+IgkKWi2HFqdLossJo8j2q2QVq+OsCTTeMLx6RGg0W21MW0TSUlZSCUaKjRMJ0C72OgmaBaVFFAtJ/qkVEk4VK89uupuFEhKqSE1Ey+wWVk1iOYRoV9jZU1H6oKD0xPuP3rEJFpQlhDW6khKLEtybW0F29LIi0SV/SqNxbygIsE0JZYBaTwjW8wQgYcmwdB0bMslzwpKKaiEobgRLY3pZEaWlfhugOtaVFVBWSYsFjOGgwmD4RTD8Gn11nhxe4213/oP6Q9H3L57j9//gz/k5HSAZtr4foDlSJXht6zloNVPugXFMoEYx+nyaHA+u1ApyjdN6SucVzY+Dc+FE6iqiu3NG/Q6K+T5EUY3g0ojWeTsPTsgmg/ZeKGHJ+qKmz6NWOm1CQKXPE/xA49aK2AyHzEeDWi2aqAXRPEMS7NAlmxsrBPNpzyY3qfXXmOxiNjaXKPRtJhHHoXUGYxGZHnKZDwkXUzwbIedjetMziJ006bTXOFgfw/ftXntpRcJPY/HR4+5f/8utq3RatTQpMR3A5r1NvO8II5zHMsl9AM1XWabGIZOrdFACJvOyipP92Ke7j1DGNBotpjuR7RXWvz4nXdp125w9/Z9/Iak2XHRbZug2eTew3usFy2ODkY06jarnZBGp0FVOCymBe1mk7WNDjfmtxCyhpCOCkelQDcEtVpAHC+AEj9wyfczFmlMw9CYTMbEUYxje2zv7rC9u8XxoI/Udbrr1zAdn+OTPq2mS6PpcfDsMXmeMR7PefGlW6xvbHH/0YcYpkacp7S6LUZnU45OjonnOZQaNddFlyZVHqNpUEmJbjpomkFcCYxS4JjqSy2lWNKAq94CkFDlKvsuNNANqqpQAiKmiS7VpjF0AyqVF9je3uT1117j6eERH939GCEEo/GYqszorbTZvb7JfD4gmqc0W3Vm8zn1ho/n20gKeitttjbWcW1TKRxpS/WlysJ1PNX7YJiUZYbQBV7gUU1jNF1xL5RVRp7FpPGCZDFl1D8mjkum0zG7t17mhRvX2bq+wyJaoEuIogjTrjAdfxmdaCRJhkaFEBpFUZLnqrFoPo+W+QFBUSgmoThPkDp4rqvoyv889GL/OqBpGjdv3WRz4zrxpMFwGnJ0NqAsNBqNNr1ugziOSdIhWZ5QVBCGdYKwjmG6TGYLRsMxg0kfy9Wo5S5JFhNnc6pc0moo5/Hs2R69zgbD4ZDDo2M8z2Y6L4jjDC+sc3zY52ka47o6H7x7h631LVZWesRRjh/UaHdbbG9ts7W9iRolzSnLXJ3Jq1Qlmiwbz/PQDR2trGi3O4T2NfSqUMoWmsAwdLIsRjcE/f4xsioYDIes9JoUeYlAo7vS4f/8h3/CpC4xbQ3X1XAci8ePHjGezjFMlw/evc3J6YRaoCFevcnOZo3V1VWCnSaPHj5g79FDavUmq71VTOERBA7zeYKUJXG8UAnZeYJEkKQpumaoHIFmcuvWC1RorKyuc3JyjGEIXnn1Zb72ta/i2IIPPvwBjmtTFBlBLeDXfu0b7O/3abSa2LZFp92mlDGnpwdc39qhvtOhHnbIFiWz6ZT9/X22N9cwNEkSx1SAKQUFOkkR49bAanSX2gXLL8p5fU4s++yXyTddN8nz5flXCASVOi9LGA/HaFmBbTm88frrHPbP2D86JYkTyiIj8C06nS6O4xDN1aDQaq+H47homoFtu1iWyfb2Bts7mziOtexrgKoo1P+yl2w/ukFRFQhNxw1CFnGB7bpkyQKJoJQVpVQdmbphUJQ5UbRgNBziBSFhvcWtWy/wzW9+g7PRhLPJDCkMpCiUgnNVURU5aZJcNBCddwSCIlSN41jNF4gKJ/SwdINFlhAtZp+5/54LJ+A4Dnfu3Obue3dptQ3miz7zJKcUBbql01nt8OzhA7bXNnn85AmD8QCETTBfEIQOum6yv3/E3sEjbE/H9XUQJaudFTzTwjZ00rKg1+2wee0aunBxbI+g5nNw+IA8n1EKB90IOHn2jJu727z22pvEswV7zw7Y2tzFtGwGgwG2Y1NVJYdHe5ycHDAYnrB1Y5MgbLGYTRiPR8RRjDYYo7ketq2ScvNZTJpFoBWEYUh3ZZWsEHx0+x71RoP19XXCusdsGiGExu3bd7AdNbHYaPoIY06ax1QS9veO+Lf/4q/wz34wpVG/xnR6SBxnHB+dUrN13NUa/X6fg4N9NE1j4gyoBQLPq5GmGqbpUyzZlJvNJkVZUqs3MAydDz/8CMMyee1LX+KdH/+YeDHn0aMHS976kqJISZG88ebr6KLgvXd+SJlY6LrGL/3SL3B0csJoOsKybM4GAyzTpqogL0uQglrYoEgUqUdeFAQ1D1nlJGlGkiSkUUKUQUt3aKI2NVL11V1oGMkSllGAEPJihPa87KsDSFgsFkwmE4oKbD9gfes6b331LT66c58fvvM2nucQeBYnR8fUfJNGo8FwcMpwMKQCup0OK6triBxczyaOp+gTCGQdzTApCsVErOnGRWJT1w2qXI05Z3mBbpgIw0QXJXppYVg2Yb3BWmVSr+VgWhiGyWw6Iyskhm7w5Tff5Gw05U++9wOyUiJ0k2ixIPA9Qr/GXFMKS0mSUJYlnqcqBIuFEinRdQ3bcVQJM8vRhUYSP+fiI3mR82TvGQ4eZemR5Qmvffkt3vvoCXmZE0UJw9EI1zilqCSuV6OoBAeHpwhtTKvVpt3s8uTJIwanAzrdkNP+CC2RvPrSDWbjEY7tsHltnUcPH7K6ukOj2WY4GvD42SFeoJOVUyzTwLZCbMunWQ84iY9YXQ25vnOD49MThrMZJ/0jRqNTmm6DvCwJQ49FEuEFFscnx4z6A4TUcYM6wnJZZCVFVCGLnLX1FmvXWqT5gvliRCUNFvEEzYDOSod2u8lwPGOl1+P//Wd/gO1YTGcjHj96yne++y3e/tEPefHlL9PpbrPa26JZ72FaNrXAoMingCCOY54928M0dOr1kLDm02rV2Nm6TuBq3L/3Y+I4plZvEKcJ2VlGvz8kCANsx6EoKnZ3N4miiMl0zGg6JppPeflLXyLLU0bDMw4OnnBto8sijak1G4xPFkxnI+bRhNF4QBQvkJqiXtvd3WY8nDAejjjaH2LrHje2d2k16mRZQiUdLMsiThPiJCbOIWeZByiXvPyaphyArKAqKYtCTevp4iIq0HU1sJOlKULXKYuc+WRKkReUKIeg6wY3btzgF37hF3my95TTkyM0CqhSLLPia197A0OHx08eEScpYVgjzXKlGj0ecdY/Ym19g43NbXw/xDRdMEzOT9sVKJaiFKbzKUmaU1aqioFmKOo3IfF9HcepEy8KKjRFyKIZJGlKkpfUajW+8Y1vEGcFP37/Q4aTKYZhEkURsswJAm85ZsxFGVERjEjC0Fd9ApZJnMZKT0IzCD3/M/ffc+EEyrIk8ENqVosiiyhyQT1cQeOEd997n48+nOEYFRQOuy+8SFZWPH28j6kXlGXEwcExjmPRarap1ddZv9bm0cM7TPp9fvT9M37hF79Fu9NiNJqy0u3g+S5hqM59vbU1emsthHQ42pvxysuvUeQL3nnnPXY2tui0enzve99nvpjz4ssvoBsS04az/SOSLKW51sYJPUajAZ7nUt/ZYTKaoRk2B2cDHj095MWd1yiLktksxp9Omccj5osZlTRo1H2ysuSjO3e5efMG+/sndNpNyrLg2sY1Pr57yOb2Gr/07W/y8OnHCKHx8kuvMh7M8N0WpqXRWm+SJmNc08MSdcb9ObIqubG7w+6NmzQa63iOxXx2xmBwwvHJKa9+6XW63Q4HB0f4gU8Q1jg5PsWxXXw/5OT0mGazzuHxCWHosrbaIc4S/v4/+B9xHIOV1QZn/TPa3R6T/hPidMH3f/CnSKGz+8JNmq06ml4yGJzwp3/6PQzh0Ay7JPMBRVJAlaPRQcgM09BU/3tZoesubtAgDGuKU0CoISJRlajOvpKqLJDVssS4hBACwzAos5xqSbiRZRm2ZamBIc1gMh4TtNr8hV/5FY77p/xvv/e7IJcjulnBndt3CXwbgWIt9jyfaL6AvGA8m6pmKNskCF2EkHiepMwMdNPG9ZZNPpUETWc6j3BdHyk0dMNEFgW26WHZJqZuomkZssoQhjoapLlq8mn4IR3LYfP6TXZv3uL3/uH/zj/5oz9mHkUYloFlmoRheNFhmCTJxcgxqPzHeeORoelUQiPLUoKg9pn777lwApZt0uq0aDprhLbg8dOH/M7f/11Mf4U0kZQyIZIL+icf0F3foBIGZ6MJO5sdHDvgj//pPyVezHnj9Zd487VXMMySwLU4O9xjrdtmd3eHu3fvkeawiEc82+/jugeUUqno3L3/ENeu06nt4Ht1onnB2to12u0O0Tzm4cOHCF2wut5lPB3SW21SyoKDw2eMkjEb1zdIswRRwt7+Hu1mh06nQ2t1nbWN65jUsTQLxysZjR9TkpJHMX7Q5MYLN4nigg9v30HTNObzTA225AXra6vcv/uEsF7n4wd3+MY33+LsNOPw4ISKgq999VscHD1F1yKKbMHDB48wZEDoNWm3W0ix4OzsiOkkQVQmhpbTbjdotBr0VnvU6k0Ojk4QUmM2jZhMpjQbTabjKc2Oh9Ar0jxFN00ePLjHwdEhX/vql7Fck8PDA+7c/RBd13C1gFaQMxwOaHV7zOdzxpMRSRYxHJ0i0SiKiryoGI0npFGMkDm6yJnPLAxd4Hk+lTAxXQfXcfE8H820+DQ+G5UPKBGV4iM8b6BR1yvm0xmzyUSRp3geUmjkFTx7+pQNw2R1bYPf+M6vc7T/jNsfvUctDBhPxhwePObWzev4gU9RVYzHE6bTGc3AIzA16rUVNK3i7PSIeBHjejWSXBKETTa3d7EsizRLSLKc6WxOr7eJRFOFeiHQl3MpUuiqr8HR0AzFLqxaoB1022YeJUzmc1ZWVvgrf+W3+O53v8v9jx/wh3/4T7h9+zaLxYIwDGk0Gkyn0+URQL9oJ06SBNuy0JcNSoamOB8/C8+FE8jznL29fZ5Gp7zxyk3+/b/0H/DO+3f4R7//JwgMNM1gNp2z2t6kt7pGVsIrr5jUax0l49VsUZY5a+vrVJXkg/c/RFYJvVYN33V478fvMJnOiJMKx28RRxkPPn6G6disXutSyBLbdnj7hz/izkcf8e/9u98hSxa89+6HbG5s8fWvfZOSnEUyYzQa0mi6RNEUUHwD9+7fo9loMBmMkAU0Gg3yPGORJEynEYHl8eobr/Pg4TtkmSJIuX3nI0aTKb3VLTwvYPfGLrYT8OD+j1nvdZlMS6bTCXmeYhgaP3j7+/zqv/nrUFXEcYpmCEzTwfNC4sWcWhiytnYNrXCgNHBdjXk84/7H97GMBs36Cr4jmc7GBGGTjx/cp1Zvsbm1xXQacffOXWzbptFsUBbFsk1X0Gw22DvYJ0lT/o1vfJ1C5jTbTTStotNt8Ud/9Adcu9ZiMDwjyWJ6qyvUGy0KmVNvbPH0iUWRlIzOptzYvUHNa9A/PkYzdMaTCYtIYpqCWr2hSE8KDSeIVd37PBF4oWgqLngK1fBMpSS4dR1ZFOSZat6ZTMbMhmPCIFSddI7LNE45ODjAqTfwgjobGxt8+9vfZm/vMXt7ezTrNr3uCo6t+vNNw8DWDG7s3oAiJZuN6PU6gGRv7ymafkQYtomzipXeJmvXtnBME5mmjMYTxtMptuMRRwlCk+RlhSjkUv+gQFQ6jquOX7P5HN2w8Go1vFodx6thWDMms4ig1uD111/njTe/zC//8i/z4YcfsLe3x+3btzk+Pr6YITg/EmjLfIHveZRFjkBQr9UvqNM+DeKT5IaXBSFEH4iAs8u25c+BDp9v++Hz/xk+7/bDz/czbEspuz998blwAgBCiLellG9dth3/svi82w+f/8/webcfLuczfHaMcIUrXOELgSsncIUrfMHxPDmB/+6yDfhz4vNuP3z+P8Pn3X64hM/w3OQErnCFK1wOnqdI4ApXuMIl4NKdgBDi3xJC3BNCPBBC/PZl2/OzQgjxRAjxgRDiXSHE28trLSHE/yWE+Hj5u3nZdn4SQoi/K4Q4FUJ8+Ilrn2qzUPivl+vyvhDiK5dn+YWtn2b/3xJCHCzX4V0hxHc/8drfWNp/Twjx65dj9U8ghNgUQvyhEOK2EOIjIcRfXV6/3DU477S6jB+UEOBDYBewgPeAVy7Tpj+D7U+Azk9d+y+A314+/m3gP79sO3/Kvm8DXwE+/BfZjNKT/Meolr1vAt9/Tu3/W8Bf/5T3vrL8PtnA9eX3TL9k+9eArywfh8D9pZ2XugaXHQl8HXggpXwkpcyA3wF+85Jt+vPgN4G/t3z894C/eHmm/P8hpfxjYPhTlz/L5t8E/nup8D2gsZSgvzR8hv2fhd8EfkdKmUopH6MEcr/+czPuZ4CU8khK+c7y8Qy4A1zjktfgsp3ANWDvE8/3l9c+D5DA7wshfiSE+E+W13ryJzLsx0Dvckz7M+GzbP48rc1/tgyX/+4njmDPtf1CiB3gy8D3ueQ1uGwn8HnGL0opvwL8BvCfCiG+/ckXpYrnPlell8+jzcB/C9wA3gSOgP/yUq35GSCECID/GfhrUsrpJ1+7jDW4bCdwAGx+4vnG8tpzDynlwfL3KfC/oELNk/Nwbfn79PIs/JnxWTZ/LtZGSnkipSyllBXwt/lJyP9c2i+EMFEO4H+SUv7u8vKlrsFlO4EfAi8IIa4LISzgLwO/d8k2/QshhPCFEOH5Y+A7wIco239r+bbfAv7Xy7Hwz4TPsvn3gP9omaH+JjD5RMj63OCnzsh/CbUOoOz/y0IIWwhxHXgB+MG/bvs+CaFkl/4OcEdK+V994qXLXYPLzJZ+IgN6H5W9/ZuXbc/PaPMuKvP8HvDRud1AG/gD4GPg/wZal23rT9n9D1Ahc446X/7Hn2UzKiP93yzX5QPgrefU/v9had/7y02z9on3/82l/feA33gO7P9FVKj/PvDu8ue7l70GVx2DV7jCFxyXfRy4whWucMm4cgJXuMIXHFdO4ApX+ILjyglc4QpfcFw5gStc4QuOKydwhSt8wXHlBK5whS84rpzAFa7wBcf/BwI3KsaKbddtAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(input_batch[0].astype(np.float32))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "resnet50_gpu = models.resnet50(pretrained=True, progress=False).to(\"cuda\").eval()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We need to move our batch onto GPU and properly format it to shape [32, 3, 224, 224]. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "torch.Size([32, 3, 224, 224])" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "input_batch_chw = torch.from_numpy(input_batch).transpose(1,3).transpose(2,3)\n", - "input_batch_gpu = input_batch_chw.to(\"cuda\")\n", - "\n", - "input_batch_gpu.shape" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can run a prediction on a batch using .forward():" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 1000)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "with torch.no_grad():\n", - " predictions = np.array(resnet50_gpu(input_batch_gpu).cpu())\n", - "\n", - "predictions.shape" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Verify Baseline Model Performance/Accuracy:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For a baseline, lets time our prediction in FP32:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "31.5 ms ± 72.1 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "with torch.no_grad():\n", - " preds = np.array(resnet50_gpu(input_batch_gpu).cpu())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also time FP16 precision performance:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 1000)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "resnet50_gpu_half = resnet50_gpu.half()\n", - "input_half = input_batch_gpu.half()\n", - "\n", - "with torch.no_grad():\n", - " preds = np.array(resnet50_gpu_half(input_half).cpu()) # Warm Up\n", - " \n", - "preds.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "19.4 ms ± 5.42 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "with torch.no_grad():\n", - " preds = np.array(resnet50_gpu_half(input_half).cpu())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's also make sure our results are accurate. We will look at the top 5 accuracy on a single image prediction. The image we are using is of a Golden Retriever, which is class 207 in the ImageNet dataset our model was trained on." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Class | Likelihood\n" - ] - }, - { - "data": { - "text/plain": [ - "[(207, 13.121688),\n", - " (208, 9.614037),\n", - " (257, 9.361297),\n", - " (205, 8.777787),\n", - " (160, 8.557351)]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "indices = (-predictions[0]).argsort()[:5]\n", - "print(\"Class | Likelihood\")\n", - "list(zip(indices, predictions[0][indices]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have a model exported to ONNX and a baseline to compare against! Let's now take our ONNX model and convert it to a TensorRT inference engine." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, let's restart our Jupyter Kernel so PyTorch doesn't collide with TensorRT: " - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "os._exit(0) # Shut down all kernels so TRT doesn't fight with PyTorch for GPU memory" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?\n", - "\n", - "We are going to run with a fixed batch size of 32 for this example. Note that above we set BATCH_SIZE to 32 when saving our model to ONNX. We need to create another dummy batch of the same size (this time it will need to be in our target precision) to test out our engine.\n", - "\n", - "First, as before, we will set our BATCH_SIZE to 32. Note that our trtexec command above includes the '--explicitBatch' flag to signal to TensorRT that we will be using a fixed batch size at runtime." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "BATCH_SIZE = 32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Importantly, by default TensorRT will use the input precision you give the runtime as the default precision for the rest of the network. So before we create our new dummy batch, we also need to choose a precision as in the next section:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?\n", - "\n", - "Remember that lower precisions than FP32 tend to run faster. There are two common reduced precision modes - FP16 and INT8. Graphics cards that are designed to do inference well often have an affinity for one of these two types. This guide was developed on an NVIDIA V100, which favors FP16, so we will use that here by default. INT8 is a more complicated process that requires a calibration step.\n", - "\n", - "__NOTE__: Make sure you use the same precision (USE_FP16) here you saved your model in above!" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "USE_FP16 = True\n", - "target_dtype = np.float16 if USE_FP16 else np.float32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " To create a test batch, we will once again repeat one open-source dog image from http://www.dog.ceo:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 224, 224, 3)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from skimage import io\n", - "from skimage.transform import resize\n", - "from matplotlib import pyplot as plt\n", - "import numpy as np\n", - "\n", - "url='https://images.dog.ceo/breeds/retriever-golden/n02099601_3004.jpg'\n", - "img = resize(io.imread(url), (224, 224))\n", - "input_batch = np.array(np.repeat(np.expand_dims(np.array(img, dtype=np.float32), axis=0), BATCH_SIZE, axis=0), dtype=np.float32)\n", - "\n", - "input_batch.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(input_batch[0].astype(np.float32))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Preprocess Images:\n", - "\n", - "PyTorch has a normalization that it applies by default in all of its pretrained vision models - we can preprocess our images to match this normalization by the following, making sure our final result is in FP16 precision:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "from torchvision.transforms import Normalize\n", - "\n", - "def preprocess_image(img):\n", - " norm = Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n", - " result = norm(torch.from_numpy(img).transpose(0,2).transpose(1,2))\n", - " return np.array(result, dtype=np.float16)\n", - "\n", - "preprocessed_images = np.array([preprocess_image(image) for image in input_batch])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT path am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can use trtexec, a command line tool for working with TensorRT, in order to convert an ONNX model originally from PyTorch to an engine file.\n", - "\n", - "Let's make sure we have TensorRT installed (this comes with trtexec):" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import tensorrt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To convert the model we saved in the previous step, we need to point to the ONNX file, give trtexec a name to save the engine as, and last specify that we want to use a fixed batch size instead of a dynamic one." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "&&&& RUNNING TensorRT.trtexec # trtexec --onnx=resnet50_pytorch.onnx --saveEngine=resnet_engine_pytorch.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n", - "[06/09/2021-20:23:03] [I] === Model Options ===\n", - "[06/09/2021-20:23:03] [I] Format: ONNX\n", - "[06/09/2021-20:23:03] [I] Model: resnet50_pytorch.onnx\n", - "[06/09/2021-20:23:03] [I] Output:\n", - "[06/09/2021-20:23:03] [I] === Build Options ===\n", - "[06/09/2021-20:23:03] [I] Max batch: explicit\n", - "[06/09/2021-20:23:03] [I] Workspace: 16 MiB\n", - "[06/09/2021-20:23:03] [I] minTiming: 1\n", - "[06/09/2021-20:23:03] [I] avgTiming: 8\n", - "[06/09/2021-20:23:03] [I] Precision: FP32+FP16\n", - "[06/09/2021-20:23:03] [I] Calibration: \n", - "[06/09/2021-20:23:03] [I] Refit: Disabled\n", - "[06/09/2021-20:23:03] [I] Safe mode: Disabled\n", - "[06/09/2021-20:23:03] [I] Save engine: resnet_engine_pytorch.trt\n", - "[06/09/2021-20:23:03] [I] Load engine: \n", - "[06/09/2021-20:23:03] [I] Builder Cache: Enabled\n", - "[06/09/2021-20:23:03] [I] NVTX verbosity: 0\n", - "[06/09/2021-20:23:03] [I] Tactic sources: Using default tactic sources\n", - "[06/09/2021-20:23:03] [I] Input(s): fp16:chw\n", - "[06/09/2021-20:23:03] [I] Output(s): fp16:chw\n", - "[06/09/2021-20:23:03] [I] Input build shapes: model\n", - "[06/09/2021-20:23:03] [I] Input calibration shapes: model\n", - "[06/09/2021-20:23:03] [I] === System Options ===\n", - "[06/09/2021-20:23:03] [I] Device: 0\n", - "[06/09/2021-20:23:03] [I] DLACore: \n", - "[06/09/2021-20:23:03] [I] Plugins:\n", - "[06/09/2021-20:23:03] [I] === Inference Options ===\n", - "[06/09/2021-20:23:03] [I] Batch: Explicit\n", - "[06/09/2021-20:23:03] [I] Input inference shapes: model\n", - "[06/09/2021-20:23:03] [I] Iterations: 10\n", - "[06/09/2021-20:23:03] [I] Duration: 3s (+ 200ms warm up)\n", - "[06/09/2021-20:23:03] [I] Sleep time: 0ms\n", - "[06/09/2021-20:23:03] [I] Streams: 1\n", - "[06/09/2021-20:23:03] [I] ExposeDMA: Disabled\n", - "[06/09/2021-20:23:03] [I] Data transfers: Enabled\n", - "[06/09/2021-20:23:03] [I] Spin-wait: Disabled\n", - "[06/09/2021-20:23:03] [I] Multithreading: Disabled\n", - "[06/09/2021-20:23:03] [I] CUDA Graph: Disabled\n", - "[06/09/2021-20:23:03] [I] Separate profiling: Disabled\n", - "[06/09/2021-20:23:03] [I] Skip inference: Disabled\n", - "[06/09/2021-20:23:03] [I] Inputs:\n", - "[06/09/2021-20:23:03] [I] === Reporting Options ===\n", - "[06/09/2021-20:23:03] [I] Verbose: Disabled\n", - "[06/09/2021-20:23:03] [I] Averages: 10 inferences\n", - "[06/09/2021-20:23:03] [I] Percentile: 99\n", - "[06/09/2021-20:23:03] [I] Dump refittable layers:Disabled\n", - "[06/09/2021-20:23:03] [I] Dump output: Disabled\n", - "[06/09/2021-20:23:03] [I] Profile: Disabled\n", - "[06/09/2021-20:23:03] [I] Export timing to JSON file: \n", - "[06/09/2021-20:23:03] [I] Export output to JSON file: \n", - "[06/09/2021-20:23:03] [I] Export profile to JSON file: \n", - "[06/09/2021-20:23:03] [I] \n", - "[06/09/2021-20:23:04] [I] === Device Information ===\n", - "[06/09/2021-20:23:04] [I] Selected Device: Tesla V100-DGXS-16GB\n", - "[06/09/2021-20:23:04] [I] Compute Capability: 7.0\n", - "[06/09/2021-20:23:04] [I] SMs: 80\n", - "[06/09/2021-20:23:04] [I] Compute Clock Rate: 1.53 GHz\n", - "[06/09/2021-20:23:04] [I] Device Global Memory: 16155 MiB\n", - "[06/09/2021-20:23:04] [I] Shared Memory per SM: 96 KiB\n", - "[06/09/2021-20:23:04] [I] Memory Bus Width: 4096 bits (ECC enabled)\n", - "[06/09/2021-20:23:04] [I] Memory Clock Rate: 0.877 GHz\n", - "[06/09/2021-20:23:04] [I] \n", - "[06/09/2021-20:23:20] [I] [TRT] ----------------------------------------------------------------\n", - "[06/09/2021-20:23:20] [I] [TRT] Input filename: resnet50_pytorch.onnx\n", - "[06/09/2021-20:23:20] [I] [TRT] ONNX IR version: 0.0.6\n", - "[06/09/2021-20:23:20] [I] [TRT] Opset version: 9\n", - "[06/09/2021-20:23:20] [I] [TRT] Producer name: pytorch\n", - "[06/09/2021-20:23:20] [I] [TRT] Producer version: 1.9\n", - "[06/09/2021-20:23:20] [I] [TRT] Domain: \n", - "[06/09/2021-20:23:20] [I] [TRT] Model version: 0\n", - "[06/09/2021-20:23:20] [I] [TRT] Doc string: \n", - "[06/09/2021-20:23:20] [I] [TRT] ----------------------------------------------------------------\n", - "[06/09/2021-20:23:24] [I] [TRT] Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output.\n", - "[06/09/2021-20:24:49] [I] [TRT] Detected 1 inputs and 1 output network tensors.\n", - "[06/09/2021-20:24:49] [I] Engine built in 105.672 sec.\n", - "[06/09/2021-20:24:50] [I] Starting inference\n", - "[06/09/2021-20:24:53] [I] Warmup completed 0 queries over 200 ms\n", - "[06/09/2021-20:24:53] [I] Timing trace has 0 queries over 2.9909 s\n", - "[06/09/2021-20:24:53] [I] Trace averages of 10 runs:\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35326 ms - Host latency: 6.18286 ms (end to end 10.1932 ms, enqueue 0.460231 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35654 ms - Host latency: 6.19131 ms (end to end 10.2018 ms, enqueue 0.473865 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.38982 ms - Host latency: 6.22551 ms (end to end 10.2071 ms, enqueue 0.460098 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.3761 ms - Host latency: 6.24244 ms (end to end 10.2638 ms, enqueue 0.456512 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36218 ms - Host latency: 6.22775 ms (end to end 9.37773 ms, enqueue 0.441846 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35991 ms - Host latency: 6.22073 ms (end to end 9.77996 ms, enqueue 0.443829 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.38082 ms - Host latency: 6.25148 ms (end to end 10.0299 ms, enqueue 0.44693 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.39341 ms - Host latency: 6.26748 ms (end to end 10.0738 ms, enqueue 0.456384 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.38766 ms - Host latency: 6.26089 ms (end to end 10.2009 ms, enqueue 0.461377 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.37385 ms - Host latency: 6.24359 ms (end to end 9.65547 ms, enqueue 0.442078 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35819 ms - Host latency: 6.21615 ms (end to end 8.21369 ms, enqueue 0.436646 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34844 ms - Host latency: 6.20999 ms (end to end 9.77367 ms, enqueue 0.433765 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35132 ms - Host latency: 6.21758 ms (end to end 10.6213 ms, enqueue 0.435864 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36421 ms - Host latency: 6.23065 ms (end to end 10.5457 ms, enqueue 0.436438 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.39054 ms - Host latency: 6.25834 ms (end to end 10.4534 ms, enqueue 0.444727 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36874 ms - Host latency: 6.23105 ms (end to end 8.89895 ms, enqueue 0.443665 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35729 ms - Host latency: 6.21859 ms (end to end 8.51741 ms, enqueue 0.437866 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33851 ms - Host latency: 6.19753 ms (end to end 9.1334 ms, enqueue 0.438574 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34199 ms - Host latency: 6.21041 ms (end to end 10.6064 ms, enqueue 0.44613 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33002 ms - Host latency: 6.20233 ms (end to end 10.5858 ms, enqueue 0.458911 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.38256 ms - Host latency: 6.25411 ms (end to end 9.77722 ms, enqueue 0.460205 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.3837 ms - Host latency: 6.2543 ms (end to end 9.4882 ms, enqueue 0.448364 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.35146 ms - Host latency: 6.20986 ms (end to end 8.36691 ms, enqueue 0.434412 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34351 ms - Host latency: 6.20732 ms (end to end 10.1922 ms, enqueue 0.439209 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.3502 ms - Host latency: 6.21951 ms (end to end 10.6236 ms, enqueue 0.451489 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34368 ms - Host latency: 6.21904 ms (end to end 10.4949 ms, enqueue 0.462231 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33777 ms - Host latency: 6.21189 ms (end to end 9.99021 ms, enqueue 0.455859 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33193 ms - Host latency: 6.19707 ms (end to end 9.02058 ms, enqueue 0.445972 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33115 ms - Host latency: 6.19114 ms (end to end 9.11257 ms, enqueue 0.433862 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34673 ms - Host latency: 6.21465 ms (end to end 10.6074 ms, enqueue 0.442139 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.38572 ms - Host latency: 6.25532 ms (end to end 10.3253 ms, enqueue 0.446631 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36335 ms - Host latency: 6.23845 ms (end to end 10.6406 ms, enqueue 0.45625 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36877 ms - Host latency: 6.24153 ms (end to end 10.2023 ms, enqueue 0.449341 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.36023 ms - Host latency: 6.21748 ms (end to end 8.45557 ms, enqueue 0.436719 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34392 ms - Host latency: 6.20728 ms (end to end 10.1899 ms, enqueue 0.438428 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.34636 ms - Host latency: 6.21821 ms (end to end 10.6184 ms, enqueue 0.447217 ms)\n", - "[06/09/2021-20:24:53] [I] Average on 10 runs - GPU latency: 5.33555 ms - Host latency: 6.20952 ms (end to end 10.5899 ms, enqueue 0.459546 ms)\n", - "[06/09/2021-20:24:53] [I] Host Latency\n", - "[06/09/2021-20:24:53] [I] min: 6.16092 ms (end to end 6.17383 ms)\n", - "[06/09/2021-20:24:53] [I] max: 6.2887 ms (end to end 10.8184 ms)\n", - "[06/09/2021-20:24:53] [I] mean: 6.22352 ms (end to end 9.90214 ms)\n", - "[06/09/2021-20:24:53] [I] median: 6.22021 ms (end to end 10.6108 ms)\n", - "[06/09/2021-20:24:53] [I] percentile: 6.28583 ms at 99% (end to end 10.7902 ms at 99%)\n", - "[06/09/2021-20:24:53] [I] throughput: 0 qps\n", - "[06/09/2021-20:24:53] [I] walltime: 2.9909 s\n", - "[06/09/2021-20:24:53] [I] Enqueue Time\n", - "[06/09/2021-20:24:53] [I] min: 0.424072 ms\n", - "[06/09/2021-20:24:53] [I] max: 0.49585 ms\n", - "[06/09/2021-20:24:53] [I] median: 0.445618 ms\n", - "[06/09/2021-20:24:53] [I] GPU Compute\n", - "[06/09/2021-20:24:53] [I] min: 5.30127 ms\n", - "[06/09/2021-20:24:53] [I] max: 5.42108 ms\n", - "[06/09/2021-20:24:53] [I] mean: 5.35895 ms\n", - "[06/09/2021-20:24:53] [I] median: 5.35571 ms\n", - "[06/09/2021-20:24:53] [I] percentile: 5.41693 ms at 99%\n", - "[06/09/2021-20:24:53] [I] total compute time: 2.00961 s\n", - "&&&& PASSED TensorRT.trtexec # trtexec --onnx=resnet50_pytorch.onnx --saveEngine=resnet_engine_pytorch.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n" - ] - } - ], - "source": [ - "# step out of Python for a moment to convert the ONNX model to a TRT engine using trtexec\n", - "if USE_FP16:\n", - " !trtexec --onnx=resnet50_pytorch.onnx --saveEngine=resnet_engine_pytorch.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16\n", - "else:\n", - " !trtexec --onnx=resnet50_pytorch.onnx --saveEngine=resnet_engine_pytorch.trt --explicitBatch" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This will save our model as 'resnet_engine.trt'." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?\n", - "\n", - "Now, we have a converted our model to a TensorRT engine. Great! That means we are ready to load it into the native Python TensorRT runtime. This runtime strikes a balance between the ease of use of the high level Python APIs used in frameworks and the fast, low level C++ runtimes available in TensorRT." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 15.9 s, sys: 556 ms, total: 16.5 s\n", - "Wall time: 19.3 s\n" - ] - } - ], - "source": [ - "%%time\n", - "\n", - "import tensorrt as trt\n", - "import pycuda.driver as cuda\n", - "import pycuda.autoinit\n", - "\n", - "f = open(\"resnet_engine_pytorch.trt\", \"rb\")\n", - "runtime = trt.Runtime(trt.Logger(trt.Logger.WARNING)) \n", - "\n", - "engine = runtime.deserialize_cuda_engine(f.read())\n", - "context = engine.create_execution_context()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now allocate input and output memory, give TRT pointers (bindings) to it:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# need to set input and output precisions to FP16 to fully enable it\n", - "output = np.empty([BATCH_SIZE, 1000], dtype = target_dtype) \n", - "\n", - "# allocate device memory\n", - "d_input = cuda.mem_alloc(1 * input_batch.nbytes)\n", - "d_output = cuda.mem_alloc(1 * output.nbytes)\n", - "\n", - "bindings = [int(d_input), int(d_output)]\n", - "\n", - "stream = cuda.Stream()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, set up the prediction function.\n", - "\n", - "This involves a copy from CPU RAM to GPU VRAM, executing the model, then copying the results back from GPU VRAM to CPU RAM:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "def predict(batch): # result gets copied into output\n", - " # transfer input data to device\n", - " cuda.memcpy_htod_async(d_input, batch, stream)\n", - " # execute model\n", - " context.execute_async_v2(bindings, stream.handle, None)\n", - " # transfer predictions back\n", - " cuda.memcpy_dtoh_async(output, d_output, stream)\n", - " # syncronize threads\n", - " stream.synchronize()\n", - " \n", - " return output" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's time the function!" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warming up...\n", - "Done warming up!\n" - ] - } - ], - "source": [ - "print(\"Warming up...\")\n", - "\n", - "pred = predict(preprocessed_images)\n", - "\n", - "print(\"Done warming up!\")" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "6.28 ms ± 1.07 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "pred = predict(preprocessed_images)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally we should verify our TensorRT output is still accurate." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Class | Probability (out of 1)\n" - ] - }, - { - "data": { - "text/plain": [ - "[(207, 12.44), (208, 7.508), (220, 7.492), (160, 7.426), (226, 7.383)]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "indices = (-pred[0]).argsort()[:5]\n", - "print(\"Class | Probability (out of 1)\")\n", - "list(zip(indices, pred[0][indices]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Look for ImageNet indices 150-275 above, where 207 is the ground truth correct class (Golden Retriever). Compare with the results of the original unoptimized model in the first section!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next Steps:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

Profiling

\n", - "\n", - "This is a great next step for further optimizing and debugging models you are working on productionizing\n", - "\n", - "You can find it here: https://docs.nvidia.com/deeplearning/tensorrt/best-practices/index.html\n", - "\n", - "

TRT Dev Docs

\n", - "\n", - "Main documentation page for the ONNX, layer builder, C++, and legacy APIs\n", - "\n", - "You can find it here: https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html\n", - "\n", - "

TRT OSS GitHub

\n", - "\n", - "Contains OSS TRT components, sample applications, and plugin examples\n", - "\n", - "You can find it here: https://github.com/NVIDIA/TensorRT\n", - "\n", - "\n", - "#### TRT Supported Layers:\n", - "\n", - "https://github.com/NVIDIA/TensorRT/tree/main/samples/opensource/samplePlugin\n", - "\n", - "#### TRT ONNX Plugin Example:\n", - "\n", - "https://docs.nvidia.com/deeplearning/tensorrt/support-matrix/index.html#layers-precision-matrix" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/5. Understanding TensorRT Runtimes.ipynb b/quickstart/IntroNotebooks/5. Understanding TensorRT Runtimes.ipynb deleted file mode 100644 index 05e8b3df..00000000 --- a/quickstart/IntroNotebooks/5. Understanding TensorRT Runtimes.ipynb +++ /dev/null @@ -1,107 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Runtimes: What are my options? How do I choose?\n", - "\n", - "Remember that TensorRT consists of two main components - __1. A series of parsers and integrations__ to convert your model to an optimized engine and __2. An series of TensorRT runtime APIs__ with several associated tools for deployment.\n", - "\n", - "In this notebook, we will focus on the latter - various runtime options for TensorRT engines.\n", - "\n", - "The runtimes have different use cases for running TRT engines. \n", - "\n", - "### Considerations when picking a runtime:\n", - "\n", - "Generally speaking, there are a few major considerations when picking a runtime:\n", - "- __Framework__ - Some options, like TF-TRT, are only relevant to Tensorflow\n", - "- __Time-to-solution__ - TF-TRT is much more likely to work 'out-of-the-box' if a quick solution is required and ONNX fails\n", - "- __Serving needs__ - TF-TRT can use TF Serving to serve models over HTTP as a simple solution. For other frameworks (or for more advanced features) TRITON is framework agnostic, allows for concurrent model execution or multiple copies within a GPU to reduce latency, and can accept engines created through both the ONNX and TF-TRT paths\n", - "- __Performance__ - Different TensorRT runtimes offer varying levels of performance. For example, TF-TRT is generally going to be slower than using ONNX or the C++ API directly.\n", - "\n", - "### Python API:\n", - "\n", - "__Use this when:__\n", - "- You can accept some performance overhead, and\n", - "- You are most familiar with Python, or\n", - "- You are performing initial debugging and testing with TRT\n", - "\n", - "__More info:__\n", - "\n", - " \n", - "The [TensorRT Python API](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#perform_inference_python) gives you fine-grained control over the execution of your engine using a Python interface. It makes memory allocation, kernel execution, and copies to and from the GPU explicit - which can make integration into high performance applications easier. It is also great for testing models in a Python environment - such as in a Jupyter notebook.\n", - " \n", - "The [ONNX notebook for Tensorflow](./3.%20Using%20Tensorflow%202%20through%20ONNX.ipynb) and [for PyTorch](./4.%20Using%20PyTorch%20through%20ONNX.ipynb) are good examples of using TensorRT to get great performance while staying in Python\n", - "\n", - "### C++ API: \n", - "\n", - "__Use this when:__\n", - "- You want the least amount of overhead possible to maximize the performance of your models and achieve better latency\n", - "- You are not using TF-TRT (though TF-TRT graph conversions that only generate a single engine can still be exported to C++)\n", - "- You are most familiar with C++\n", - "- You want to optimize your inference pipeline as much as possible\n", - "\n", - "__More info:__\n", - "\n", - "The [TensorRT C++ API](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#perform_inference_c) gives you fine-grained control over the execution of your engine using a C++ interface. It makes memory allocation, kernel execution, and copies to and from the GPU explicit - which can make integration into high performance C++ applications easier. The C++ API is generally the most performant option for running TensorRT engines, with the least overhead.\n", - "\n", - "[This NVIDIA Developer blog](https://developer.nvidia.com/blog/speed-up-inference-tensorrt/) is a good example of taking an ONNX model and running it with dynamic batch size support using the C++ API.\n", - "\n", - "\n", - "### Tensorflow/TF-TRT Runtime: (Tensorflow Only) \n", - " \n", - "__Use this when:__\n", - " \n", - "- You are using TF-TRT, and\n", - "- Your model converts to more than one TensorRT engine\n", - "\n", - "__More info:__\n", - "\n", - "\n", - "TF-TRT is the standard runtime used with models that were converted in TF-TRT. It works by taking groups of nodes at once in the Tensorflow graph, and replacing them with a singular optimized engine that calls the TensorRT Python API behind the scenes. This optimized engine is in the form of a Tensorflow operation - which means that your graph is still in Tensorflow and will essentially function like any other Tensorflow model. For example, it can be a useful exercise to take a look at your model in Tensorboard to validate which nodes TensorRT was able to optimize.\n", - "\n", - "If your graph entirely converts to a single TF-TRT engine, it can be more efficient to export the engine node and run it using one of the other APIs. You can find instructions to do this in the [TF-TRT documentation](https://docs.nvidia.com/deeplearning/frameworks/tf-trt-user-guide/index.html#tensorrt-plan).\n", - "\n", - "As an example, the TF-TRT notebooks included with this guide use the TF-TRT runtime.\n", - "\n", - "### TRITON Inference Server\n", - "\n", - "__Use this when:__\n", - "- You want to serve your models over HTTP or gRPC\n", - "- You want to load balance across multiple models or copies of models across GPUs to minimze latency and make better use of the GPU\n", - "- You want to have multiple models running efficiently on a single GPU at the same time\n", - "- You want to serve a variety of models converted using a variety of converters and frameworks (including TF-TRT and ONNX) through a uniform interface\n", - "- You need serving support but are using PyTorch, another framework, or the ONNX path in general\n", - "\n", - "__More info:__\n", - "\n", - "\n", - "TRITON is an open source inference serving software that lets teams deploy trained AI models from any framework (TensorFlow, TensorRT, PyTorch, ONNX Runtime, or a custom framework), from local storage or Google Cloud Platform or AWS S3 on any GPU- or CPU-based infrastructure (cloud, data center, or edge). It is a flexible project with several unique features - such as concurrent model execution of both heterogeneous models and multiple copies of the same model (multiple model copies can reduce latency further) as well as load balancing and model analysis. It is a good option if you need to serve your models over HTTP - such as in a cloud inferencing solution.\n", - " \n", - "You can find the TRITON home page [here](https://developer.nvidia.com/nvidia-triton-inference-server), and the documentation [here](https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/Additional Examples/1. TF-TRT Classification.ipynb b/quickstart/IntroNotebooks/Additional Examples/1. TF-TRT Classification.ipynb deleted file mode 100644 index 4fa0bab1..00000000 --- a/quickstart/IntroNotebooks/Additional Examples/1. TF-TRT Classification.ipynb +++ /dev/null @@ -1,711 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TF-TRT Keras Classification Examples:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook, we cover a variety of classification base networks pulled from the tensorflow.keras.applications project!\n", - "\n", - "This demonstrates TF-TRT working on a variety of model architectures out of the box. This is a great way to demonstrate the ease of use of TF-TRT. TF-TRT can still optimize parts of your network even if it contains layers that are not supported by TensorRT itself. This makes it easy to get a first-pass at an optimized model - as we will demonstrate here." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's make sure our GPUs are properly configured and visible:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fri Jan 29 22:55:18 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 |\n", - "| N/A 43C P0 62W / 300W | 125MiB / 16155MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 |\n", - "| N/A 42C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 |\n", - "| N/A 41C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 |\n", - "| N/A 42C P0 37W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "+-----------------------------------------------------------------------------+\n" - ] - } - ], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to sucessfully deploy a TensorRT model, you have to make __five key decisions__:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What batch size(s) am I running inference at?__\n", - "3. __What precision am I running inference at?__\n", - "4. __What TensorRT path am I using to convert my model?__\n", - "5. __What runtime am I targeting?__\n", - "\n", - "Let's get to it!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TF-TRT requires SavedModel format in Tensorflow 2.x:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir -p tmp_savedmodels" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "downloading and initializing models...\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels.h5\n", - "553467904/553467096 [==============================] - 73s 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/inception_v3/inception_v3_weights_tf_dim_ordering_tf_kernels.h5\n", - "96116736/96112376 [==============================] - 3s 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/xception/xception_weights_tf_dim_ordering_tf_kernels.h5\n", - "91889664/91884032 [==============================] - 5s 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_224.h5\n", - "14540800/14536120 [==============================] - 1s 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/densenet/densenet121_weights_tf_dim_ordering_tf_kernels.h5\n", - "33193984/33188688 [==============================] - 1s 0us/step\n", - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50v2_weights_tf_dim_ordering_tf_kernels.h5\n", - "102875136/102869336 [==============================] - 10s 0us/step\n", - "saving ...\n", - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Layer.updates (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/0/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/1/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/2/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/3/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/4/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/5/assets\n", - "finished saving!\n", - "saving ...\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/6/assets\n", - "finished saving!\n" - ] - } - ], - "source": [ - "from tensorflow.keras.applications import ResNet50, VGG16, InceptionV3, Xception, MobileNetV2, DenseNet121, ResNet50V2\n", - "\n", - "print(\"Downloading and initializing models...\")\n", - "models = [ResNet50, VGG16, InceptionV3, Xception, MobileNetV2, DenseNet121, ResNet50V2]\n", - "models = [model(include_top=True, weights='imagenet') for model in models]\n", - "\n", - "model_dirs = []\n", - "for idx, model in enumerate(models):\n", - " print(\"Saving\", model,\"...\")\n", - " model_dir = 'tmp_savedmodels/%s' % idx\n", - " model_dirs.append(model_dir)\n", - " model.save(model_dir) \n", - " print(\"Finished saving!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use a batch size of 32 for all models:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "BATCH_SIZE = 32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We create a series of randomized \"dummy\" batches to test our model on:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "dummy_input_batch = lambda x: np.zeros((BATCH_SIZE, x, x, 3))\n", - "\n", - "dummy_inputs = [224, 224, 299, 299, 224, 224, 224]\n", - "dummy_inputs = [dummy_input_batch(size) for size in dummy_inputs]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Last, we \"warm up\" all of our models so their one time start-up costs aren't throw off any of our Jupyter magic %%timeit timer calls:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:5 out of the last 5 calls to .predict_function at 0x7f59d856e488> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n", - "WARNING:tensorflow:6 out of the last 6 calls to .predict_function at 0x7f5b3820d6a8> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n", - "WARNING:tensorflow:7 out of the last 7 calls to .predict_function at 0x7f596ca93950> triggered tf.function retracing. Tracing is expensive and the excessive number of tracings could be due to (1) creating @tf.function repeatedly in a loop, (2) passing tensors with different shapes, (3) passing Python objects instead of tensors. For (1), please define your @tf.function outside of the loop. For (2), @tf.function has experimental_relax_shapes=True option that relaxes argument shapes that can avoid unnecessary retracing. For (3), please refer to https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_args and https://www.tensorflow.org/api_docs/python/tf/function for more details.\n" - ] - } - ], - "source": [ - "# Warm up:\n", - "for idx, model in enumerate(models):\n", - " model.predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will leave it as the default:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "PRECISION = \"FP32\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT tool or integration am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will be using TF-TRT through the ModelOptimizer example wrapper used in this guide:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Starting resnet50 tmp_savedmodels/0\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/0_FP32/assets\n", - "[[1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]\n", - " [1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]\n", - " [1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]\n", - " ...\n", - " [1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]\n", - " [1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]\n", - " [1.6964252e-04 3.3007402e-04 6.1350249e-05 ... 1.4622317e-05\n", - " 1.4449877e-04 6.6086568e-04]]\n", - "Finished!\n", - "\n", - "Starting vgg16 tmp_savedmodels/1\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_1_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/1_FP32/assets\n", - "[[0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]\n", - " [0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]\n", - " [0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]\n", - " ...\n", - " [0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]\n", - " [0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]\n", - " [0.00022801 0.00222478 0.00050746 ... 0.00011863 0.00026599 0.01312881]]\n", - "Finished!\n", - "\n", - "Starting inception_v3 tmp_savedmodels/2\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_2_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/2_FP32/assets\n", - "[[0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]\n", - " [0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]\n", - " [0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]\n", - " ...\n", - " [0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]\n", - " [0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]\n", - " [0.00043102 0.00033233 0.0002535 ... 0.00012701 0.00023254 0.00082577]]\n", - "Finished!\n", - "\n", - "Starting xception tmp_savedmodels/3\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_3_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/3_FP32/assets\n", - "[[0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]\n", - " [0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]\n", - " [0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]\n", - " ...\n", - " [0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]\n", - " [0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]\n", - " [0.00022673 0.00034859 0.00021873 ... 0.00012943 0.00032854 0.00086526]]\n", - "Finished!\n", - "\n", - "Starting mobilenetv2_1.00_224 tmp_savedmodels/4\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_4_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/4_FP32/assets\n", - "[[1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]\n", - " [1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]\n", - " [1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]\n", - " ...\n", - " [1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]\n", - " [1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]\n", - " [1.8110585e-04 6.4528472e-04 6.8695762e-04 ... 7.9570833e-05\n", - " 1.3486181e-04 3.3463116e-03]]\n", - "Finished!\n", - "\n", - "Starting densenet121 tmp_savedmodels/5\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_5_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/5_FP32/assets\n", - "[[2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]\n", - " [2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]\n", - " [2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]\n", - " ...\n", - " [2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]\n", - " [2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]\n", - " [2.3581024e-04 3.7533988e-04 1.1308040e-04 ... 5.6219425e-05\n", - " 2.6299071e-04 1.1581751e-03]]\n", - "Finished!\n", - "\n", - "Starting resnet50v2 tmp_savedmodels/6\n", - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_6_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/6_FP32/assets\n", - "[[0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]\n", - " [0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]\n", - " [0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]\n", - " ...\n", - " [0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]\n", - " [0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]\n", - " [0.00082353 0.00079469 0.00060477 ... 0.00036948 0.00069747 0.00154858]]\n", - "Finished!\n", - "\n" - ] - } - ], - "source": [ - "from helper import ModelOptimizer\n", - "\n", - "opt_models = []\n", - "for model_class, model, dummy in zip(models, model_dirs, dummy_inputs):\n", - " print(\"Starting\", model_class._name, model)\n", - " model_opt = ModelOptimizer(model)\n", - " opt_trt = model_opt.convert(model+'_'+PRECISION, precision=PRECISION)\n", - "\n", - " print(opt_trt.predict(dummy))\n", - " \n", - " opt_models.append(opt_trt)\n", - " \n", - " print(\"Finished!\\n\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will stay inside our Tensorflow/Python runtime:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858],\n", - " [0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858],\n", - " [0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858],\n", - " ...,\n", - " [0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858],\n", - " [0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858],\n", - " [0.00082353, 0.00079469, 0.00060477, ..., 0.00036948, 0.00069747,\n", - " 0.00154858]], dtype=float32)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "opt_models[idx].predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Performance Comparisons:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "idx = 0 #resnet" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 160 ms, sys: 5.52 ms, total: 166 ms\n", - "Wall time: 148 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04],\n", - " [1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04],\n", - " [1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04],\n", - " ...,\n", - " [1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04],\n", - " [1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04],\n", - " [1.69642386e-04, 3.30075040e-04, 6.13506127e-05, ...,\n", - " 1.46224065e-05, 1.44499005e-04, 6.60870341e-04]], dtype=float32)" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "models[idx].predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 30.2 ms, sys: 8.3 ms, total: 38.5 ms\n", - "Wall time: 36.6 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " ...,\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04],\n", - " [1.6964252e-04, 3.3007402e-04, 6.1350249e-05, ..., 1.4622317e-05,\n", - " 1.4449877e-04, 6.6086568e-04]], dtype=float32)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "opt_models[idx].predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "idx = -3 # mobilenets" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 105 ms, sys: 14.4 ms, total: 120 ms\n", - "Wall time: 63.5 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03],\n", - " [1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03],\n", - " [1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03],\n", - " ...,\n", - " [1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03],\n", - " [1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03],\n", - " [1.8110899e-04, 6.4530974e-04, 6.8695901e-04, ..., 7.9570033e-05,\n", - " 1.3486811e-04, 3.3462986e-03]], dtype=float32)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "models[idx].predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 19.9 ms, sys: 4.48 ms, total: 24.4 ms\n", - "Wall time: 22.4 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "array([[1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03],\n", - " [1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03],\n", - " [1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03],\n", - " ...,\n", - " [1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03],\n", - " [1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03],\n", - " [1.8110585e-04, 6.4528472e-04, 6.8695762e-04, ..., 7.9570833e-05,\n", - " 1.3486181e-04, 3.3463116e-03]], dtype=float32)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "\n", - "opt_models[idx].predict(dummy_inputs[idx])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/Additional Examples/2. TF-TRT Detection.ipynb b/quickstart/IntroNotebooks/Additional Examples/2. TF-TRT Detection.ipynb deleted file mode 100644 index ed694d7f..00000000 --- a/quickstart/IntroNotebooks/Additional Examples/2. TF-TRT Detection.ipynb +++ /dev/null @@ -1,585 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TF-TRT Keras Retinanet Detection Example:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook, we are going to optimize a Retinanet detection model from the official Keras examples! \n", - "\n", - "You can find the implementation here: https://keras.io/examples/vision/retinanet/\n", - "\n", - "In general, detection models can be tricky to optimize because they tend to require a lot of custom logic for sub-tasks such as region proposal, output decoding, or non-maximum suppression. This makes them a good demonstration of TF-TRT's capabilities - It does a great job of optimizing a large part of the network while leaving the custom logic untouched." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's make sure our GPUs are properly configured and visible:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fri Jan 29 23:17:01 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 |\n", - "| N/A 42C P0 37W / 300W | 125MiB / 16155MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 |\n", - "| N/A 43C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 |\n", - "| N/A 42C P0 38W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 |\n", - "| N/A 43C P0 37W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "+-----------------------------------------------------------------------------+\n" - ] - } - ], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will also need matplotlib to run the model. If you do not have it, run:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (3.3.4)\n", - "Requirement already satisfied: numpy>=1.15 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (1.17.3)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (0.10.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (1.3.1)\n", - "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (2.4.7)\n", - "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (2.8.1)\n", - "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.6/dist-packages (from matplotlib) (8.1.0)\n", - "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from cycler>=0.10->matplotlib) (1.15.0)\n", - "\u001b[33mWARNING: You are using pip version 20.2.3; however, version 21.0 is available.\n", - "You should consider upgrading via the '/usr/bin/python -m pip install --upgrade pip' command.\u001b[0m\n" - ] - } - ], - "source": [ - "!pip install matplotlib" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to sucessfully deploy a TensorRT model, you have to make __five key decisions__:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What batch size(s) am I running inference at?__\n", - "3. __What precision am I running inference at?__\n", - "4. __What TensorRT path am I using to convert my model?__\n", - "5. __What runtime am I targeting?__\n", - "\n", - "Let's give it a shot!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will work with one of the Keras example RetinaNet implementations. We can download the implementation code for the specific version of it required here:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2021-01-29 23:17:05-- https://raw.githubusercontent.com/keras-team/keras-io/cd6201c1bfa37625f503f51e8fd3c572666770e4/examples/vision/retinanet.py\n", - "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133\n", - "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 35046 (34K) [text/plain]\n", - "Saving to: ‘retinanet.py’\n", - "\n", - "retinanet.py 100%[===================>] 34.22K --.-KB/s in 0.002s \n", - "\n", - "2021-01-29 23:17:05 (20.1 MB/s) - ‘retinanet.py’ saved [35046/35046]\n", - "\n" - ] - } - ], - "source": [ - "!wget -O retinanet.py https://raw.githubusercontent.com/keras-team/keras-io/cd6201c1bfa37625f503f51e8fd3c572666770e4/examples/vision/retinanet.py" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The code has some unnecessary setup steps, so we will pull out just the model implementation itself using sed (you can check the end result in the [retinanet_model.py](./retinanet_model.py) file)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "!sed -n '1,40 p; 71,820 p' retinanet.py > retinanet_model.py" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir -p tmp_savedmodels" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We perform some imports and setup:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "import tensorflow as tf\n", - "from tensorflow import keras\n", - "from tensorflow.keras import layers" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "img_size = (224, 224)\n", - "num_classes = 10" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can import our necessary RetinaNet functions from the example and initialize our detection model:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5\n", - "94773248/94765736 [==============================] - 2s 0us/step\n" - ] - } - ], - "source": [ - "from retinanet_model import RetinaNet, DecodePredictions, get_backbone\n", - "\n", - "resnet50_backbone = get_backbone()\n", - "model = RetinaNet(num_classes, resnet50_backbone)\n", - "\n", - "image = tf.keras.Input(shape=[None, None, 3], name=\"image\")\n", - "predictions = model(image, training=False)\n", - "detections = DecodePredictions(confidence_threshold=0.5)(image, predictions)\n", - "inference_model = tf.keras.Model(inputs=image, outputs=detections)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we save our model in SavedModel format!" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Layer.updates (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/detect_model/assets\n" - ] - } - ], - "source": [ - "model_dir = \"tmp_savedmodels/detect_model\"\n", - "model.save(model_dir) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will create a dummy batch of size 32:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "dummy_input = np.zeros((32, img_size[0], img_size[1], 3))" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "CombinedNonMaxSuppression(nmsed_boxes=array([[[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]],\n", - "\n", - " [[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]],\n", - "\n", - " [[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]],\n", - "\n", - " ...,\n", - "\n", - " [[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]],\n", - "\n", - " [[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]],\n", - "\n", - " [[0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.],\n", - " [0., 0., 0., 0.]]], dtype=float32), nmsed_scores=array([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]], dtype=float32), nmsed_classes=array([[0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " ...,\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.],\n", - " [0., 0., 0., ..., 0., 0., 0.]], dtype=float32), valid_detections=array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int32))" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "inference_model.predict(dummy_input)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will stick with the same FP32 precision used during training:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "PRECISION = \"FP32\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT path am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use our example TF-TRT based ModelOptimizer wrapper:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "from helper import ModelOptimizer\n", - "\n", - "model_opt = ModelOptimizer(model_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert to our target precision, saving the result in a new SavedModel:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_2 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_1 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_3 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/detect_model_FP32/assets\n", - "conversion complete! prediction shape: (32, 9441, 14)\n" - ] - } - ], - "source": [ - "opt_trt = model_opt.convert(model_dir+'_'+PRECISION, precision=PRECISION)\n", - "print(\"conversion complete! prediction shape:\", opt_trt.predict(dummy_input).shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will stick to our TF-TRT/Tensorflow runtime:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warming up...\n", - "(32, 9441, 14)\n", - "(32, 9441, 14)\n", - "Done warming up!\n" - ] - } - ], - "source": [ - "print(\"Warming up...\")\n", - "\n", - "print(model.predict(dummy_input).shape)\n", - "print(opt_trt.predict(dummy_input).shape)\n", - "\n", - "print(\"Done warming up!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Performance Comparisons:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "109 ms ± 5.53 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "preds = model.predict(dummy_input)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "45.1 ms ± 106 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "preds = opt_trt.predict(dummy_input)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/Additional Examples/3. TF-TRT Segmentation.ipynb b/quickstart/IntroNotebooks/Additional Examples/3. TF-TRT Segmentation.ipynb deleted file mode 100644 index 5c091c79..00000000 --- a/quickstart/IntroNotebooks/Additional Examples/3. TF-TRT Segmentation.ipynb +++ /dev/null @@ -1,480 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# TF-TRT Keras UNet Segmentation Example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this notebook, we are going to optimize a UNet-style segmentation model from the official Keras examples! \n", - "\n", - "You can find the implementation here: https://keras.io/examples/vision/oxford_pets_image_segmentation/\n", - "\n", - "Segmentation is a great demonstration for TensorRT as it tends to be very heavy on convolutional layers, which accelerate well. This is especially true of UNet, which consists entirely of convolutional layers." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's make sure our GPUs are properly configured and visible:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fri Jan 29 23:22:33 2021 \n", - "+-----------------------------------------------------------------------------+\n", - "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |\n", - "|-------------------------------+----------------------+----------------------+\n", - "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", - "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", - "| | | MIG M. |\n", - "|===============================+======================+======================|\n", - "| 0 Tesla V100-DGXS... On | 00000000:07:00.0 Off | 0 |\n", - "| N/A 43C P0 62W / 300W | 125MiB / 16155MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 1 Tesla V100-DGXS... On | 00000000:08:00.0 Off | 0 |\n", - "| N/A 43C P0 41W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 2 Tesla V100-DGXS... On | 00000000:0E:00.0 Off | 0 |\n", - "| N/A 42C P0 40W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - "| 3 Tesla V100-DGXS... On | 00000000:0F:00.0 Off | 0 |\n", - "| N/A 43C P0 39W / 300W | 6MiB / 16158MiB | 0% Default |\n", - "| | | N/A |\n", - "+-------------------------------+----------------------+----------------------+\n", - " \n", - "+-----------------------------------------------------------------------------+\n", - "| Processes: |\n", - "| GPU GI CI PID Type Process name GPU Memory |\n", - "| ID ID Usage |\n", - "|=============================================================================|\n", - "+-----------------------------------------------------------------------------+\n" - ] - } - ], - "source": [ - "!nvidia-smi" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Remember to sucessfully deploy a TensorRT model, you have to make __five key decisions__:\n", - "\n", - "1. __What format should I save my model in?__\n", - "2. __What TensorRT tool or integration am I using to convert my model?__\n", - "3. __What batch size(s) am I running inference at?__\n", - "4. __What precision am I running inference at?__\n", - "5. __What TensorRT runtime am I targeting?__\n", - "\n", - "Let's try converting our segmentation model!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 1. What format should I save my model in?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, some setup:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "!mkdir -p tmp_savedmodels" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "import tensorflow\n", - "from tensorflow import keras\n", - "from tensorflow.keras import layers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next, we will download a specific implementation of U-Net from the Keras examples:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "--2021-01-29 23:22:36-- https://raw.githubusercontent.com/keras-team/keras-io/cd6201c1bfa37625f503f51e8fd3c572666770e4/examples/vision/oxford_pets_image_segmentation.py\n", - "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133\n", - "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 7422 (7.2K) [text/plain]\n", - "Saving to: ‘oxford_pets_image_segmentation.py’\n", - "\n", - "oxford_pets_image_s 100%[===================>] 7.25K 29.9KB/s in 0.2s \n", - "\n", - "2021-01-29 23:22:37 (29.9 KB/s) - ‘oxford_pets_image_segmentation.py’ saved [7422/7422]\n", - "\n" - ] - } - ], - "source": [ - "!wget -O oxford_pets_image_segmentation.py https://raw.githubusercontent.com/keras-team/keras-io/cd6201c1bfa37625f503f51e8fd3c572666770e4/examples/vision/oxford_pets_image_segmentation.py" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The example has some unnecessary setup lines, we can pull out just the model itself using sed:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "!sed -n '70,74 p; 108,170 p' oxford_pets_image_segmentation.py > unet_model.py" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Last, we import and save our model:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "img_size = (224, 224)\n", - "num_classes = 10" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/training/tracking/tracking.py:111: Layer.updates (from tensorflow.python.keras.engine.base_layer) is deprecated and will be removed in a future version.\n", - "Instructions for updating:\n", - "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/segment_model/assets\n" - ] - } - ], - "source": [ - "from unet_model import get_model\n", - "\n", - "model = get_model(img_size, num_classes)\n", - "\n", - "model_dir = \"tmp_savedmodels/segment_model\"\n", - "model.save(model_dir) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. What batch size(s) am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will create a dummy batch of size 32:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "dummy_input = np.zeros((32, img_size[0], img_size[1], 3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can test our original model, before any optimization:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(32, 224, 224, 10)" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "prediction = model.predict(dummy_input)\n", - "\n", - "prediction.shape" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 3. What precision am I running inference at?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will stick with the same FP32 precision used during training:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "PRECISION = \"FP32\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 4. What TensorRT tool or integration am I using to convert my model?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will use our example TF-TRT based ModelOptimizer wrapper:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "from helper import ModelOptimizer\n", - "\n", - "model_opt = ModelOptimizer(model_dir)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Convert to our target precision, saving the result in a new SavedModel:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "INFO:tensorflow:Linked TensorRT version: (7, 2, 1)\n", - "INFO:tensorflow:Loaded TensorRT version: (7, 2, 2)\n", - "INFO:tensorflow:Loaded TensorRT 7.2.2 and linked TensorFlow against TensorRT 7.2.1. This is supported because TensorRT minor/patch upgrades are backward compatible\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_1 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_10 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_11 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_2 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_12 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_5 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_3 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_6 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_7 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_4 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_8 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_9 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Could not find TRTEngineOp_0_0 in TF-TRT cache. This can happen if build() is not called, which means TensorRT engines will be built and cached at runtime.\n", - "INFO:tensorflow:Assets written to: tmp_savedmodels/segment_model_FP32/assets\n", - "conversion complete! prediction shape: (32, 224, 224, 10)\n" - ] - } - ], - "source": [ - "opt_trt = model_opt.convert(model_dir+'_FP32', precision=PRECISION)\n", - "print(\"conversion complete! prediction shape:\", opt_trt.predict(dummy_input).shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 5. What TensorRT runtime am I targeting?" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will stick to our TF-TRT/Tensorflow runtime:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warming up...\n", - "(32, 224, 224, 10)\n", - "(32, 224, 224, 10)\n", - "Done warming up!\n" - ] - } - ], - "source": [ - "print(\"Warming up...\")\n", - "\n", - "print(model.predict(dummy_input).shape)\n", - "print(opt_trt.predict(dummy_input).shape)\n", - "\n", - "print(\"Done warming up!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Performance Comparisons:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "182 ms ± 41.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "preds = model.predict(dummy_input)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "22.3 ms ± 95.9 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" - ] - } - ], - "source": [ - "%%timeit\n", - "\n", - "preds = opt_trt.predict(dummy_input)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "jupyter": { - "source_hidden": true - } - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.9" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/quickstart/IntroNotebooks/Additional Examples/helper.py b/quickstart/IntroNotebooks/Additional Examples/helper.py deleted file mode 100644 index c00ed985..00000000 --- a/quickstart/IntroNotebooks/Additional Examples/helper.py +++ /dev/null @@ -1,111 +0,0 @@ -# -# SPDX-FileCopyrightText: Copyright (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# SPDX-License-Identifier: Apache-2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -from tensorflow.python.compiler.tensorrt import trt_convert as tf_trt -from tensorflow.python.saved_model import tag_constants -import tensorflow as tf -import tensorrt as trt - -import numpy as np - -precision_dict = { - "FP32": tf_trt.TrtPrecisionMode.FP32, - "FP16": tf_trt.TrtPrecisionMode.FP16, - "INT8": tf_trt.TrtPrecisionMode.INT8, -} - -# For TF-TRT: - -class OptimizedModel(): - def __init__(self, saved_model_dir = None): - self.loaded_model_fn = None - - if not saved_model_dir is None: - self.load_model(saved_model_dir) - - - def predict(self, input_data): - if self.loaded_model_fn is None: - raise(Exception("Haven't loaded a model")) - x = tf.constant(input_data.astype('float32')) - labeling = self.loaded_model_fn(x) - try: - preds = labeling['predictions'].numpy() - except: - try: - preds = labeling['probs'].numpy() - except: - try: - preds = labeling[next(iter(labeling.keys()))] - except: - raise(Exception("Failed to get predictions from saved model object")) - return preds - - def load_model(self, saved_model_dir): - saved_model_loaded = tf.saved_model.load(saved_model_dir, tags=[tag_constants.SERVING]) - wrapper_fp32 = saved_model_loaded.signatures['serving_default'] - - self.loaded_model_fn = wrapper_fp32 - -class ModelOptimizer(): - def __init__(self, input_saved_model_dir, calibration_data=None): - self.input_saved_model_dir = input_saved_model_dir - self.calibration_data = None - self.loaded_model = None - - if not calibration_data is None: - self.set_calibration_data(calibration_data) - - - def set_calibration_data(self, calibration_data): - - def calibration_input_fn(): - yield (tf.constant(calibration_data.astype('float32')), ) - - self.calibration_data = calibration_input_fn - - - def convert(self, output_saved_model_dir, precision="FP32", max_workspace_size_bytes=8000000000, **kwargs): - - if precision == "INT8" and self.calibration_data is None: - raise(Exception("No calibration data set!")) - - trt_precision = precision_dict[precision] - conversion_params = tf_trt.DEFAULT_TRT_CONVERSION_PARAMS._replace(precision_mode=trt_precision, - max_workspace_size_bytes=max_workspace_size_bytes, - use_calibration= precision == "INT8") - converter = tf_trt.TrtGraphConverterV2(input_saved_model_dir=self.input_saved_model_dir, - conversion_params=conversion_params) - - if precision == "INT8": - converter.convert(calibration_input_fn=self.calibration_data) - else: - converter.convert() - - converter.save(output_saved_model_dir=output_saved_model_dir) - - return OptimizedModel(output_saved_model_dir) - - def predict(self, input_data): - if self.loaded_model is None: - self.load_default_model() - - return self.loaded_model.predict(input_data) - - def load_default_model(self): - self.loaded_model = tf.keras.models.load_model('resnet50_saved_model') - diff --git a/quickstart/IntroNotebooks/images/tf_onnx.png b/quickstart/IntroNotebooks/images/tf_onnx.png deleted file mode 100644 index f08b3c70..00000000 Binary files a/quickstart/IntroNotebooks/images/tf_onnx.png and /dev/null differ diff --git a/quickstart/IntroNotebooks/images/tf_trt.png b/quickstart/IntroNotebooks/images/tf_trt.png deleted file mode 100644 index e2800821..00000000 Binary files a/quickstart/IntroNotebooks/images/tf_trt.png and /dev/null differ diff --git a/quickstart/quantization_tutorial/qat-ptq-workflow.ipynb b/quickstart/quantization_tutorial/qat-ptq-workflow.ipynb deleted file mode 100644 index cadd4de8..00000000 --- a/quickstart/quantization_tutorial/qat-ptq-workflow.ipynb +++ /dev/null @@ -1,1732 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "b861c182", - "metadata": {}, - "outputs": [], - "source": [ - "# Copyright 2022 NVIDIA Corporation. All Rights Reserved.\n", - "#\n", - "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", - "# you may not use this file except in compliance with the License.\n", - "# You may obtain a copy of the License at\n", - "#\n", - "# http://www.apache.org/licenses/LICENSE-2.0\n", - "#\n", - "# Unless required by applicable law or agreed to in writing, software\n", - "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", - "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", - "# See the License for the specific language governing permissions and\n", - "# limitations under the License.\n", - "# ==============================================================================" - ] - }, - { - "cell_type": "markdown", - "id": "c6384192", - "metadata": {}, - "source": [ - "\n", - "\n", - "# Accelerate Deep Learning Models using TensorRT " - ] - }, - { - "attachments": { - "img1.JPG": { - "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDuRXhpZgAATU0AKgAAAAgABAE7AAIAAAAMAAAISodpAAQAAAABAAAIVpydAAEAAAAYAAAQzuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFubmllIFN1cmxhAAAFkAMAAgAAABQAABCkkAQAAgAAABQAABC4kpEAAgAAAAM5NgAAkpIAAgAAAAM5NgAA6hwABwAACAwAAAiYAAAAABzqAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAyMjowNjowNiAxNDo0MTozOQAyMDIyOjA2OjA2IDE0OjQxOjM5AAAAQQBuAG4AaQBlACAAUwB1AHIAbABhAAAA/+ELHmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMjItMDYtMDZUMTQ6NDE6MzkuOTYzPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFubmllIFN1cmxhPC9yZGY6bGk+PC9yZGY6U2VxPg0KCQkJPC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0n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Jj+ckjJxnv6VGqhpvZffYrTm17/gU9f8S6lP4W8PXi6vZ+H7TUYkkvtQndAYgUztjViMsTx3xWT4H8Xy3HxFbw/aeJ5fEmmz2L3C3M0IVonVgpUMBhhz+FX9Q8B69CvhTUNIbTLrUNCtDbPaahuMEmVALqwGVYY4OO9WbDwr4tb4i2vinWrvTZFjsJLU2dsHRYcsGXaxyXyQck47YFae7zvtr+Tt+hH2TD1DxT4p0PXp/BHnPd6pqUu/S9RkxhISfmLY7p29a9VsLeW006C3uLmS6ljjCvPJjdIe5OK88k+GV9q1lqOqa1dwr4puJhNaXcDEpZ7D+7RCQDt9eOa7/STqH9kW39tLAt+IwJ/s7Foy/cqSAcfhUr4bPf8Ar+mD30/r+uhcooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAbJGk0bRyqGRwQykcEVFY2NrptlFZ2EEdvbQrtjijXCqPQCiigCeiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqtcabZXV7bXdzaxS3FqS0ErLloiRgkHtkHFFFAFmiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q==" - } - }, - "cell_type": "markdown", - "id": "f5454823", - "metadata": {}, - "source": [ - "## Overview\n", - "\n", - "Deep Learning has touched almost every industry and has transformed the way industries operate and provide services. We perform or experience real-time analytics all the time around us, for example, an advertisement that you saw while swiping through the stories on Instagram, or the video recommendation that floated on your youtube home screen. To cater to these real-time inferences, deep learning practitioners need to maximise model throughput while having highly accurate predictions. Among many techniques, quantization can be used to accelerate models.\n", - "\n", - "Model Quantization is a popular way of optimization which reduces the size of models thereby accelerating inference, while also opening up the possibilities of deployments on devices with lower computation power such as Jetson. Simply put, quantization is a process of mapping input values from a larger set to output values in a smaller set. In the context of deep learning, we often train deep learning models using floating-point 32 bit arithmetic (FP32) as we can take advantage of a wider range of numbers, resulting in more accurate models. The model data (network parameters and activations) are converted from this floating point representation to a lower precision representation, typically using 8-bit integers (int8). In the case of int8, the range [qmin, qmax] would be [-128, 127].\n", - "\n", - "![img1.JPG](attachment:img1.JPG)\n", - "\n", - "A quick rationale of how higher throughput is achieved through quantization can be shown through the following thought experiment: Imagine the complexity of multiplying 3.999x2.999 versus 4x3. The latter is easier to perform than the former. This is the simplicity in calculation seen by quantizing the numbers to lower precision. However, the challenge here is that round errors can result in a lower accuracy model. To address this loss of accuracy, different quantization techniques have been developed. These techniques can be classified into two categories, post-training quantization (PTQ) and quantization-aware training (QAT).\n", - "\n", - "In this notebook, we illustrate the workflow that you can adopt in order to quantize a deep learning model using TensorRT. The notebook takes you through an example of Mobilenetv2 for a classification task on a subset of Imagenet Dataset called Imagenette which has 10 classes. \n", - "\n", - "1. [Requirements](#1)\n", - "2. [Setup a baseline Mobilenetv2 model](#2)\n", - "3. [Convert to TensorRT](#3)\n", - "4. [Post Training Quantization (PTQ)](#4)\n", - "5. [Quantization Aware Training (QAT)](#5)\n", - "6. [Evaluation and Benchmarking](#6)\n", - "7. [Conclusion](#7)\n", - "8. [References](#8)\n", - "\n", - "This notebook is implemented using the NGC pytorch container nvcr.io/nvidia/pytorch:22.04-py3. Follow instructions here https://ngc.nvidia.com/setup/api-key to setup your own API key to use the NGC service through the Docker client. " - ] - }, - { - "cell_type": "markdown", - "id": "06b37d07", - "metadata": {}, - "source": [ - "\n", - "## 1. Requirements\n", - "Please install the required dependencies and import these libraries accordingly" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "0a068b12", - "metadata": {}, - "outputs": [], - "source": [ - "!pip install ipywidgets --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org\n", - "!pip install wget\n", - "!pip install pycuda" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4e2e58b2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.1.2\n" - ] - } - ], - "source": [ - "import torch\n", - "import torch.nn as nn\n", - "import torch.optim as optim\n", - "import torch.utils.data as data\n", - "import torchvision.transforms as transforms\n", - "from torchvision import models, datasets\n", - "\n", - "import pytorch_quantization\n", - "from pytorch_quantization import nn as quant_nn\n", - "from pytorch_quantization import quant_modules\n", - "from pytorch_quantization import calib\n", - "from tqdm import tqdm\n", - "\n", - "print(pytorch_quantization.__version__)\n", - "\n", - "import os\n", - "import tensorrt as trt\n", - "import numpy as np\n", - "import time\n", - "import wget\n", - "import tarfile\n", - "import shutil" - ] - }, - { - "cell_type": "markdown", - "id": "0575e590", - "metadata": {}, - "source": [ - "\n", - "## 2. Setup a baseline Mobilenetv2 Model" - ] - }, - { - "cell_type": "markdown", - "id": "a83b886f", - "metadata": {}, - "source": [ - "#### Preparing the Dataset\n", - "\n", - "Imagenette is a subset of ImageNet and has 10 classes. The classes are as follows in the order of their labels : 'tench', 'English springer', 'cassette player', 'chain saw', 'church', 'French horn', 'garbage truck', 'gas pump', 'golf ball' and 'parachute'. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "50d60fbe", - "metadata": {}, - "outputs": [], - "source": [ - "def download_data(DATA_DIR):\n", - " if os.path.exists(DATA_DIR):\n", - " if not os.path.exists(os.path.join(DATA_DIR, 'imagenette2-320')):\n", - " url = 'https://s3.amazonaws.com/fast-ai-imageclas/imagenette2-320.tgz'\n", - " wget.download(url)\n", - " # open file\n", - " file = tarfile.open('imagenette2-320.tgz')\n", - " # extracting file\n", - " file.extractall(DATA_DIR)\n", - " file.close()\n", - " else:\n", - " print(\"This directory doesn't exist. Create the directory and run again\")" - ] - }, - { - "cell_type": "markdown", - "id": "2e25dc45", - "metadata": {}, - "source": [ - "Let's create the data directory if it doesn't exist." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4a4d8949", - "metadata": {}, - "outputs": [], - "source": [ - "if not os.path.exists(\"./data\"):\n", - " os.mkdir(\"./data\")\n", - "download_data(\"./data\")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "07d1fc63", - "metadata": {}, - "outputs": [], - "source": [ - "# Define main data directory\n", - "DATA_DIR = './data/imagenette2-320' \n", - "# Define training and validation data paths\n", - "TRAIN_DIR = os.path.join(DATA_DIR, 'train') \n", - "VAL_DIR = os.path.join(DATA_DIR, 'val')" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "acd3cd99", - "metadata": {}, - "outputs": [], - "source": [ - "# Performing Transformations on the dataset and defining training and validation dataloaders\n", - "transform = transforms.Compose([\n", - " transforms.Resize(256),\n", - " transforms.CenterCrop(224),\n", - " transforms.ToTensor(),\n", - " ])\n", - "train_dataset = datasets.ImageFolder(TRAIN_DIR, transform=transform)\n", - "val_dataset = datasets.ImageFolder(VAL_DIR, transform=transform)\n", - "calib_dataset = torch.utils.data.random_split(val_dataset, [2901, 1024])[1]\n", - "\n", - "train_dataloader = data.DataLoader(train_dataset, batch_size=64, shuffle=True, drop_last=True)\n", - "val_dataloader = data.DataLoader(val_dataset, batch_size=64, shuffle=False, drop_last=True)\n", - "calib_dataloader = data.DataLoader(calib_dataset, batch_size=64, shuffle=False, drop_last=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "a2f8914c", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0)\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Visualising an image from the validation set\n", - "import matplotlib.pyplot as plt\n", - "for images, labels in val_dataloader:\n", - " print(labels[0])\n", - " image = images[0]\n", - " img = image.swapaxes(0, 1)\n", - " img = img.swapaxes(1, 2)\n", - " plt.imshow(img)\n", - " break" - ] - }, - { - "cell_type": "markdown", - "id": "4b7441e6", - "metadata": {}, - "source": [ - "#### Setting up Mobilenetv2\n", - "\n", - "Mobilenetv2 available in Torchvision is pretrained on the ImageNet that has 1000 classes. The Imagenette dataset has 10 classes. \n", - "We set up this model by freezing the weights excpet for the last classification layer and train only the last classification layer to be able to predict the 10 classes of the dataset. " - ] - }, - { - "cell_type": "markdown", - "id": "b9577f2a", - "metadata": {}, - "source": [ - "*Define the Mobilenetv2 model*" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "c29ae7b8", - "metadata": {}, - "outputs": [], - "source": [ - "# This function allows you to set the all the parameters to not have gradients, \n", - "# allowing you to freeze the model and not undergo training during the train step. \n", - "def set_parameter_requires_grad(model, feature_extracting):\n", - " if feature_extracting:\n", - " for param in model.parameters():\n", - " param.requires_grad = False\n", - " \n", - "feature_extract = True #This varaible can be set False if you want to finetune the model by updating all the parameters. \n", - "model = models.mobilenet_v2(pretrained=True)\n", - "set_parameter_requires_grad(model, feature_extract)\n", - "#Define a classification head for 10 classes.\n", - "model.classifier[1] = nn.Linear(1280, 10)\n", - "model = model.cuda()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "5c03df98", - "metadata": {}, - "outputs": [], - "source": [ - "# Declare Learning rate\n", - "lr = 0.0001\n", - "\n", - "# Use cross entropy loss for classification and SGD optimizer\n", - "criterion = nn.CrossEntropyLoss()\n", - "optimizer = optim.SGD(model.parameters(), lr=lr)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7095a995", - "metadata": {}, - "outputs": [], - "source": [ - "# Define functions for training, evalution, saving checkpoint and train parameter setting function\n", - "def train(model, dataloader, crit, opt, epoch):\n", - " model.train()\n", - " running_loss = 0.0\n", - " for batch, (data, labels) in enumerate(dataloader):\n", - " data, labels = data.cuda(), labels.cuda(non_blocking=True)\n", - " opt.zero_grad()\n", - " out = model(data)\n", - " loss = crit(out, labels)\n", - " loss.backward()\n", - " opt.step()\n", - " running_loss += loss.item()\n", - " if batch % 100 == 99:\n", - " print(\"Batch: [%5d | %5d] loss: %.3f\" % (batch + 1, len(dataloader), running_loss / 100))\n", - " running_loss = 0.0\n", - " \n", - "def evaluate(model, dataloader, crit, epoch):\n", - " total = 0\n", - " correct = 0\n", - " loss = 0.0\n", - " class_probs = []\n", - " class_preds = []\n", - " model.eval()\n", - " with torch.no_grad():\n", - " for data, labels in dataloader:\n", - " data, labels = data.cuda(), labels.cuda(non_blocking=True)\n", - " out = model(data)\n", - " loss += crit(out, labels)\n", - " preds = torch.max(out, 1)[1]\n", - " class_preds.append(preds)\n", - " total += labels.size(0)\n", - " correct += (preds == labels).sum().item()\n", - " return correct / total\n", - "\n", - "def save_checkpoint(state, ckpt_path=\"checkpoint.pth\"):\n", - " torch.save(state, ckpt_path)\n", - " print(\"Checkpoint saved\")\n", - " \n", - "# Helper function to benchmark the model\n", - "cudnn.benchmark = True\n", - "def benchmark(model, input_shape=(1024, 1, 32, 32), dtype='fp32', nwarmup=50, nruns=1000):\n", - " input_data = torch.randn(input_shape)\n", - " input_data = input_data.to(\"cuda\")\n", - " if dtype=='fp16':\n", - " input_data = input_data.half()\n", - " \n", - " with torch.no_grad():\n", - " for _ in range(nwarmup):\n", - " features = model(input_data)\n", - " torch.cuda.synchronize()\n", - " \n", - " timings = []\n", - " with torch.no_grad():\n", - " for i in range(1, nruns+1):\n", - " start_time = time.time()\n", - " output = model(input_data)\n", - " torch.cuda.synchronize()\n", - " end_time = time.time()\n", - " timings.append(end_time - start_time)\n", - "\n", - " print('Average batch time: %.2f ms'%(np.mean(timings)*1000))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "02a625c9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch: [ 1 / 5] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 2.315\n", - "Test Acc: 22.93%\n", - "Epoch: [ 2 / 5] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 2.177\n", - "Test Acc: 35.09%\n", - "Epoch: [ 3 / 5] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 2.053\n", - "Test Acc: 49.33%\n", - "Epoch: [ 4 / 5] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 1.935\n", - "Test Acc: 61.50%\n", - "Epoch: [ 5 / 5] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 1.836\n", - "Test Acc: 71.11%\n", - "Checkpoint saved\n" - ] - } - ], - "source": [ - "# Train the model for 5 epochs to attain an acceptable accuracy.\n", - "num_epochs=5\n", - "for epoch in range(num_epochs):\n", - " print('Epoch: [%5d / %5d] LR: %f' % (epoch + 1, num_epochs, lr))\n", - "\n", - " train(model, train_dataloader, criterion, optimizer, epoch)\n", - " test_acc = evaluate(model, val_dataloader, criterion, epoch)\n", - "\n", - " print(\"Test Acc: {:.2f}%\".format(100 * test_acc))\n", - " \n", - "save_checkpoint({'epoch': epoch + 1,\n", - " 'model_state_dict': model.state_dict(),\n", - " 'acc': test_acc,\n", - " 'opt_state_dict': optimizer.state_dict()\n", - " },\n", - " ckpt_path=\"models/mobilenetv2_base_ckpt\")" - ] - }, - { - "cell_type": "markdown", - "id": "b829681d", - "metadata": {}, - "source": [ - "We will first generate and evaluate our models and then finally look at the performance to the end of the notebook." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "411d0ebc", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 Baseline accuracy: 71.11%\n" - ] - } - ], - "source": [ - "# Evaluate the baseline model\n", - "test_acc = evaluate(model, val_dataloader, criterion, 0)\n", - "print(\"Mobilenetv2 Baseline accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "markdown", - "id": "71fdd581", - "metadata": {}, - "source": [ - "\n", - "### Convert to TensorRT\n", - "\n", - "TensorRT is an SDK facilitating high-performance deep learning inference, optimized to run on NVIDIA GPUs. It accelerates models through graph optimization and quantization. This notebook uses the trtexec CLI tool to build TensorRT engine. " - ] - }, - { - "cell_type": "markdown", - "id": "f75ab9fd", - "metadata": {}, - "source": [ - "Let us convert the above FP32 Mobilenetv2 into a TensorRT engine. Before we do that, we need to first export our model into ONNX format. ONNX is a standard for representing deep learning models enabling them to be transferred between frameworks. The average run time of the TRT model would be the 'GPU Compute Time' printed in the logs." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e24451cf", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "&&&& RUNNING TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_base.onnx --saveEngine=models/mobilenetv2_base.trt\n", - "[07/25/2022-16:42:22] [I] === Model Options ===\n", - "[07/25/2022-16:42:22] [I] Format: ONNX\n", - "[07/25/2022-16:42:22] [I] Model: models/mobilenetv2_base.onnx\n", - "[07/25/2022-16:42:22] [I] Output:\n", - "[07/25/2022-16:42:22] [I] === Build Options ===\n", - "[07/25/2022-16:42:22] [I] Max batch: explicit batch\n", - "[07/25/2022-16:42:22] [I] Workspace: 16 MiB\n", - "[07/25/2022-16:42:22] [I] minTiming: 1\n", - "[07/25/2022-16:42:22] [I] avgTiming: 8\n", - "[07/25/2022-16:42:22] [I] Precision: FP32\n", - "[07/25/2022-16:42:22] [I] Calibration: \n", - "[07/25/2022-16:42:22] [I] Refit: Disabled\n", - "[07/25/2022-16:42:22] [I] Sparsity: Disabled\n", - "[07/25/2022-16:42:22] [I] Safe mode: Disabled\n", - "[07/25/2022-16:42:22] [I] DirectIO mode: Disabled\n", - "[07/25/2022-16:42:22] [I] Restricted mode: Disabled\n", - "[07/25/2022-16:42:22] [I] Save engine: models/mobilenetv2_base.trt\n", - "[07/25/2022-16:42:22] [I] Load engine: \n", - "[07/25/2022-16:42:22] [I] Profiling verbosity: 0\n", - "[07/25/2022-16:42:22] [I] Tactic sources: Using default tactic sources\n", - "[07/25/2022-16:42:22] [I] timingCacheMode: local\n", - "[07/25/2022-16:42:22] [I] timingCacheFile: \n", - "[07/25/2022-16:42:22] [I] Input(s)s format: fp32:CHW\n", - "[07/25/2022-16:42:22] [I] Output(s)s format: fp32:CHW\n", - "[07/25/2022-16:42:22] [I] Input build shapes: model\n", - "[07/25/2022-16:42:22] [I] Input calibration shapes: model\n", - "[07/25/2022-16:42:22] [I] === System Options ===\n", - "[07/25/2022-16:42:22] [I] Device: 0\n", - "[07/25/2022-16:42:22] [I] DLACore: \n", - "[07/25/2022-16:42:22] [I] Plugins:\n", - "[07/25/2022-16:42:22] [I] === Inference Options ===\n", - "[07/25/2022-16:42:22] [I] Batch: Explicit\n", - "[07/25/2022-16:42:22] [I] Input inference shapes: model\n", - "[07/25/2022-16:42:22] [I] Iterations: 10\n", - "[07/25/2022-16:42:22] [I] Duration: 3s (+ 200ms warm up)\n", - "[07/25/2022-16:42:22] [I] Sleep time: 0ms\n", - "[07/25/2022-16:42:22] [I] Idle time: 0ms\n", - "[07/25/2022-16:42:22] [I] Streams: 1\n", - "[07/25/2022-16:42:22] [I] ExposeDMA: Disabled\n", - "[07/25/2022-16:42:22] [I] Data transfers: Enabled\n", - "[07/25/2022-16:42:22] [I] Spin-wait: Disabled\n", - "[07/25/2022-16:42:22] [I] Multithreading: Disabled\n", - "[07/25/2022-16:42:22] [I] CUDA Graph: Disabled\n", - "[07/25/2022-16:42:22] [I] Separate profiling: Disabled\n", - "[07/25/2022-16:42:22] [I] Time Deserialize: Disabled\n", - "[07/25/2022-16:42:22] [I] Time Refit: Disabled\n", - "[07/25/2022-16:42:22] [I] Skip inference: Disabled\n", - "[07/25/2022-16:42:22] [I] Inputs:\n", - "[07/25/2022-16:42:22] [I] === Reporting Options ===\n", - "[07/25/2022-16:42:22] [I] Verbose: Disabled\n", - "[07/25/2022-16:42:22] [I] Averages: 10 inferences\n", - "[07/25/2022-16:42:22] [I] Percentile: 99\n", - "[07/25/2022-16:42:22] [I] Dump refittable layers:Disabled\n", - "[07/25/2022-16:42:22] [I] Dump output: Disabled\n", - "[07/25/2022-16:42:22] [I] Profile: Disabled\n", - "[07/25/2022-16:42:22] [I] Export timing to JSON file: \n", - "[07/25/2022-16:42:22] [I] Export output to JSON file: \n", - "[07/25/2022-16:42:22] [I] Export profile to JSON file: \n", - "[07/25/2022-16:42:22] [I] \n", - "[07/25/2022-16:42:22] [I] === Device Information ===\n", - "[07/25/2022-16:42:22] [I] Selected Device: NVIDIA Graphics Device\n", - "[07/25/2022-16:42:22] [I] Compute Capability: 8.0\n", - "[07/25/2022-16:42:22] [I] SMs: 124\n", - "[07/25/2022-16:42:22] [I] Compute Clock Rate: 1.005 GHz\n", - "[07/25/2022-16:42:22] [I] Device Global Memory: 47681 MiB\n", - "[07/25/2022-16:42:22] [I] Shared Memory per SM: 164 KiB\n", - "[07/25/2022-16:42:22] [I] Memory Bus Width: 6144 bits (ECC enabled)\n", - "[07/25/2022-16:42:22] [I] Memory Clock Rate: 1.215 GHz\n", - "[07/25/2022-16:42:22] [I] \n", - "[07/25/2022-16:42:22] [I] TensorRT version: 8.2.5\n", - "[07/25/2022-16:42:23] [I] [TRT] [MemUsageChange] Init CUDA: CPU +440, GPU +0, now: CPU 452, GPU 5848 (MiB)\n", - "[07/25/2022-16:42:23] [I] [TRT] [MemUsageSnapshot] Begin constructing builder kernel library: CPU 452 MiB, GPU 5848 MiB\n", - "[07/25/2022-16:42:23] [I] [TRT] [MemUsageSnapshot] End constructing builder kernel library: CPU 669 MiB, GPU 5920 MiB\n", - "[07/25/2022-16:42:23] [I] Start parsing network model\n", - "[07/25/2022-16:42:23] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:42:23] [I] [TRT] Input filename: models/mobilenetv2_base.onnx\n", - "[07/25/2022-16:42:23] [I] [TRT] ONNX IR version: 0.0.7\n", - "[07/25/2022-16:42:23] [I] [TRT] Opset version: 13\n", - "[07/25/2022-16:42:23] [I] [TRT] Producer name: pytorch\n", - "[07/25/2022-16:42:23] [I] [TRT] Producer version: 1.13.0\n", - "[07/25/2022-16:42:23] [I] [TRT] Domain: \n", - "[07/25/2022-16:42:23] [I] [TRT] Model version: 0\n", - "[07/25/2022-16:42:23] [I] [TRT] Doc string: \n", - "[07/25/2022-16:42:23] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:42:23] [I] Finish parsing network model\n", - "[07/25/2022-16:42:24] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +839, GPU +362, now: CPU 1532, GPU 6290 (MiB)\n", - "[07/25/2022-16:42:24] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +128, GPU +58, now: CPU 1660, GPU 6348 (MiB)\n", - "[07/25/2022-16:42:24] [I] [TRT] Local timing cache in use. Profiling results in this builder pass will not be stored.\n", - "[07/25/2022-16:42:28] [I] [TRT] Some tactics do not have sufficient workspace memory to run. Increasing workspace size may increase performance, please check verbose output.\n", - "[07/25/2022-16:43:21] [I] [TRT] Detected 1 inputs and 1 output network tensors.\n", - "[07/25/2022-16:43:21] [I] [TRT] Total Host Persistent Memory: 82528\n", - "[07/25/2022-16:43:21] [I] [TRT] Total Device Persistent Memory: 8861184\n", - "[07/25/2022-16:43:21] [I] [TRT] Total Scratch Memory: 4194304\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageStats] Peak memory usage of TRT CPU/GPU memory allocators: CPU 8 MiB, GPU 624 MiB\n", - "[07/25/2022-16:43:21] [I] [TRT] [BlockAssignment] Algorithm ShiftNTopDown took 1.67234ms to assign 4 blocks to 59 nodes requiring 449576960 bytes.\n", - "[07/25/2022-16:43:21] [I] [TRT] Total Activation Memory: 449576960\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +8, now: CPU 2512, GPU 6760 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +1, GPU +10, now: CPU 2513, GPU 6770 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in building engine: CPU +0, GPU +9, now: CPU 0, GPU 9 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 2521, GPU 6724 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] Loaded engine size: 10 MiB\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 2522, GPU 6746 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +1, GPU +8, now: CPU 2523, GPU 6754 (MiB)\n", - "[07/25/2022-16:43:21] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +8, now: CPU 0, GPU 8 (MiB)\n", - "[07/25/2022-16:43:22] [I] Engine built in 59.1433 sec.\n", - "[07/25/2022-16:43:22] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 2289, GPU 6696 (MiB)\n", - "[07/25/2022-16:43:22] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +1, GPU +8, now: CPU 2290, GPU 6704 (MiB)\n", - "[07/25/2022-16:43:22] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +438, now: CPU 0, GPU 446 (MiB)\n", - "[07/25/2022-16:43:22] [I] Using random values for input input.1\n", - "[07/25/2022-16:43:22] [I] Created input binding for input.1 with dimensions 64x3x224x224\n", - "[07/25/2022-16:43:22] [I] Using random values for output 536\n", - "[07/25/2022-16:43:22] [I] Created output binding for 536 with dimensions 64x10\n", - "[07/25/2022-16:43:22] [I] Starting inference\n", - "[07/25/2022-16:43:25] [I] Warmup completed 34 queries over 200 ms\n", - "[07/25/2022-16:43:25] [I] Timing trace has 501 queries over 3.01732 s\n", - "[07/25/2022-16:43:25] [I] \n", - "[07/25/2022-16:43:25] [I] === Trace details ===\n", - "[07/25/2022-16:43:25] [I] Trace averages of 10 runs:\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88872 ms - Host latency: 8.93236 ms (end to end 11.4268 ms, enqueue 2.05089 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88841 ms - Host latency: 8.92661 ms (end to end 11.4266 ms, enqueue 2.07079 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88647 ms - Host latency: 8.93378 ms (end to end 11.4245 ms, enqueue 2.07513 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.8879 ms - Host latency: 8.93474 ms (end to end 11.4218 ms, enqueue 2.04516 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88708 ms - Host latency: 8.92472 ms (end to end 11.2913 ms, enqueue 2.04477 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88964 ms - Host latency: 8.93073 ms (end to end 11.4241 ms, enqueue 2.04273 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.89016 ms - Host latency: 8.92474 ms (end to end 11.4283 ms, enqueue 2.04633 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88841 ms - Host latency: 8.92583 ms (end to end 11.4307 ms, enqueue 2.05944 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88973 ms - Host latency: 8.92712 ms (end to end 11.4225 ms, enqueue 2.06941 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.88892 ms - Host latency: 8.92521 ms (end to end 11.4224 ms, enqueue 2.05708 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.92097 ms - Host latency: 8.96465 ms (end to end 11.4841 ms, enqueue 2.04125 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.09852 ms - Host latency: 9.13358 ms (end to end 11.7906 ms, enqueue 2.04748 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.44015 ms - Host latency: 9.47874 ms (end to end 12.5498 ms, enqueue 2.05565 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.25358 ms - Host latency: 9.28981 ms (end to end 12.1605 ms, enqueue 2.05262 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.14546 ms - Host latency: 9.18715 ms (end to end 11.9508 ms, enqueue 2.06964 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.02576 ms - Host latency: 9.06241 ms (end to end 11.7147 ms, enqueue 2.04923 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.92704 ms - Host latency: 8.96814 ms (end to end 11.5024 ms, enqueue 2.04821 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.01957 ms - Host latency: 9.05573 ms (end to end 11.6706 ms, enqueue 2.04988 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.94579 ms - Host latency: 8.98406 ms (end to end 11.5354 ms, enqueue 2.13973 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.89835 ms - Host latency: 8.94883 ms (end to end 11.4496 ms, enqueue 2.08344 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.99513 ms - Host latency: 9.03672 ms (end to end 11.6076 ms, enqueue 2.0929 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.08859 ms - Host latency: 9.12035 ms (end to end 11.8224 ms, enqueue 2.06177 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.9467 ms - Host latency: 8.987 ms (end to end 11.5444 ms, enqueue 2.06372 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.89579 ms - Host latency: 8.93199 ms (end to end 11.4334 ms, enqueue 2.04498 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.91914 ms - Host latency: 8.95847 ms (end to end 11.4744 ms, enqueue 2.06753 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.92528 ms - Host latency: 8.96528 ms (end to end 11.4935 ms, enqueue 2.05543 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.92607 ms - Host latency: 8.96593 ms (end to end 11.4996 ms, enqueue 2.05464 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.11134 ms - Host latency: 9.14991 ms (end to end 11.8276 ms, enqueue 2.06058 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.24971 ms - Host latency: 9.2879 ms (end to end 12.1685 ms, enqueue 2.05168 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.1583 ms - Host latency: 9.19552 ms (end to end 11.9784 ms, enqueue 2.05416 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.03793 ms - Host latency: 9.07539 ms (end to end 11.7194 ms, enqueue 2.04376 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.03723 ms - Host latency: 9.07742 ms (end to end 11.7207 ms, enqueue 2.04446 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.16055 ms - Host latency: 9.1936 ms (end to end 11.9269 ms, enqueue 2.06987 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.24443 ms - Host latency: 9.28486 ms (end to end 12.1531 ms, enqueue 2.04836 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.94749 ms - Host latency: 8.98728 ms (end to end 11.5623 ms, enqueue 2.05354 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.91284 ms - Host latency: 8.95781 ms (end to end 11.4716 ms, enqueue 2.04207 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.98567 ms - Host latency: 9.02083 ms (end to end 11.6108 ms, enqueue 2.04358 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.93113 ms - Host latency: 8.97266 ms (end to end 11.533 ms, enqueue 2.06318 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.89543 ms - Host latency: 8.92844 ms (end to end 11.4434 ms, enqueue 2.05273 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.95349 ms - Host latency: 8.99211 ms (end to end 11.5469 ms, enqueue 2.07312 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.94853 ms - Host latency: 8.98025 ms (end to end 11.5569 ms, enqueue 2.04573 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.97844 ms - Host latency: 9.01548 ms (end to end 11.6017 ms, enqueue 2.05762 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 5.96038 ms - Host latency: 9.00027 ms (end to end 11.5838 ms, enqueue 2.04302 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.03623 ms - Host latency: 9.07041 ms (end to end 11.7005 ms, enqueue 2.05886 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.08901 ms - Host latency: 9.12502 ms (end to end 11.8232 ms, enqueue 2.06831 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.07283 ms - Host latency: 9.11433 ms (end to end 11.8008 ms, enqueue 2.07654 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.10923 ms - Host latency: 9.14961 ms (end to end 11.8509 ms, enqueue 2.05337 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.05793 ms - Host latency: 9.09639 ms (end to end 11.776 ms, enqueue 2.06641 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.1678 ms - Host latency: 9.20984 ms (end to end 11.9751 ms, enqueue 2.05627 ms)\n", - "[07/25/2022-16:43:25] [I] Average on 10 runs - GPU latency: 6.05857 ms - Host latency: 9.0998 ms (end to end 11.7799 ms, enqueue 2.06199 ms)\n", - "[07/25/2022-16:43:25] [I] \n", - "[07/25/2022-16:43:25] [I] === Performance summary ===\n", - "[07/25/2022-16:43:25] [I] Throughput: 166.041 qps\n", - "[07/25/2022-16:43:25] [I] Latency: min = 8.90146 ms, max = 9.52582 ms, mean = 9.04623 ms, median = 8.99896 ms, percentile(99%) = 9.50714 ms\n", - "[07/25/2022-16:43:25] [I] End-to-End Host Latency: min = 10.1021 ms, max = 12.6202 ms, mean = 11.6584 ms, median = 11.5563 ms, percentile(99%) = 12.5932 ms\n", - "[07/25/2022-16:43:25] [I] Enqueue Time: min = 1.93103 ms, max = 2.48816 ms, mean = 2.05872 ms, median = 2.05432 ms, percentile(99%) = 2.24194 ms\n", - "[07/25/2022-16:43:25] [I] H2D Latency: min = 3.00195 ms, max = 3.14062 ms, mean = 3.03002 ms, median = 3.02588 ms, percentile(99%) = 3.08609 ms\n", - "[07/25/2022-16:43:25] [I] GPU Compute Time: min = 5.87982 ms, max = 6.47681 ms, mean = 6.00728 ms, median = 5.94946 ms, percentile(99%) = 6.47375 ms\n", - "[07/25/2022-16:43:25] [I] D2H Latency: min = 0.00708008 ms, max = 0.0134277 ms, mean = 0.00893093 ms, median = 0.00878906 ms, percentile(99%) = 0.0117188 ms\n", - "[07/25/2022-16:43:25] [I] Total Host Walltime: 3.01732 s\n", - "[07/25/2022-16:43:25] [I] Total GPU Compute Time: 3.00965 s\n", - "[07/25/2022-16:43:25] [I] Explanations of the performance metrics are printed in the verbose logs.\n", - "[07/25/2022-16:43:25] [I] \n", - "&&&& PASSED TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_base.onnx --saveEngine=models/mobilenetv2_base.trt\n" - ] - } - ], - "source": [ - "# Exporting to Onnx\n", - "dummy_input = torch.randn(64, 3, 224, 224, device='cuda')\n", - "input_names = [ \"actual_input_1\" ]\n", - "output_names = [ \"output1\" ]\n", - "torch.onnx.export(\n", - " model,\n", - " dummy_input,\n", - " \"models/mobilenetv2_base.onnx\",\n", - " verbose=False,\n", - " opset_version=13,\n", - " do_constant_folding = False)\n", - "\n", - "# Converting ONNX model to TRT\n", - "!trtexec --onnx=models/mobilenetv2_base.onnx --saveEngine=models/mobilenetv2_base.trt" - ] - }, - { - "cell_type": "markdown", - "id": "0a079b97", - "metadata": {}, - "source": [ - "\n", - "## 4. Post Training Quantization (PTQ)" - ] - }, - { - "attachments": { - "img4.JPG": { - "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDuRXhpZgAATU0AKgAAAAgABAE7AAIAAAAMAAAISodpAAQAAAABAAAIVpydAAEAAAAYAAAQzuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFubmllIFN1cmxhAAAFkAMAAgAAABQAABCkkAQAAgAAABQAABC4kpEAAgAAAAM4NAAAkpIAAgAAAAM4NAAA6hwABwAACAwAAAiYAAAAABzqAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAyMjowNjoxMyAxMDo0MDowNgAyMDIyOjA2OjEzIDEwOjQwOjA2AAAAQQBuAG4AaQBlACAAUwB1AHIAbABhAAAA/+ELHmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMjItMDYtMTNUMTA6NDA6MDYuODQxPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFubmllIFN1cmxhPC9yZGY6bGk+PC9yZGY6U2VxPg0KCQkJPC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMABwUFBgUEBwYFBggHBwgKEQsKCQkKFQ8QDBEYFRoZGBUYFxseJyEbHSUdFxgiLiIlKCkrLCsaIC8zLyoyJyorKv/bAEMBBwgICgkKFAsLFCocGBwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKv/AABEIALYCnAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APpGiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACq9/dGy0+e5C7zEhbbnGcVYqnq8Mlxo91DCu+R4yFUdzWVZyVOTjvZl00nNJ7FGHWroXFol7ZJFHd8Rsku45xnkYqe01pL3V3s4Y28tY94lbjdzjgenvSaXodlZJFMtqEuQgDMWLYPfqcD8KUWsw8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TwcwQQKRHGf7xzyTXeUVR1jVoNF0uS9uUmkVMARwRl3djwFAHUmiEIU48sVZAklojN8WeErXxTZRrJK1td25LW9wgGVPoR3B9K42H4X6zcTeTqWq2sdpnDtao3mOvtu4FdL4N8W3viDw/qupapp5tJbG+uIBaxjc4WPoD1y30rHk8W+L9N0rT/EOtWWmw6XeTQo+nKsgurdZWCrlicMw3DK7R35qJ4elVkpTim9Px2FKKerW36Hd6Zp1tpGmQWFjH5cFugRF9h3PqatVwvjLUvGWgwX+rW2qeH7fSbddyJc2c0kx4AC5WQAsW4AA7iui8KT63c+GLOfxTFbQ6pKm+aK2UqiZ6DBJOQOvPWtlqVsbFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGV4ii16bSwvha5sba+8wHffRNJHs5yMKQc9KdpEerxaGq+I57S41ABvMks42SM+mAxJ/WtOigDzzwl4gsvC3wbbWtTbbbWZnd8dT+9YAD3JIH41jeD/ABl4X8UeK7PVdb8R2V3rcmY9M0yEsY7MMOccfNIRwWPToK9cooWjDpY8O1CDwrPda4/j9Jh4tNzILLIkEpjB/cfZwvBHTp3zmvXPC7ai3hTTG1sEagbZPtAIwd+Oc+9atFC0VgeruFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcJ4GvrfTNG8W317IIre212/llc/wqrZJ/IVyWkfEfwn4z8QWep+IvENpBDDOG0vRvmJEmcLJLxgvzwvQZ9a9oooWlvJL8Byd7+dzivFa/2x4+8M6FIN1tE0mpzoRw5iwIwfo7A/hXa0UUdLCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z" - } - }, - "cell_type": "markdown", - "id": "bf3d4397", - "metadata": {}, - "source": [ - "As the name suggests, PTQ is performed on a trained model that has achieved acceptable accuracy. It is effective and also quick to implement because it does not require any retraining of the network. Now that we have the trained checkpoint ready, let's start quantizing the model. \n", - "\n", - "To perform PTQ, we perform inference in FP32 on calibration data, a subset of training or validation data, to determine the range of representable FP32 values to be quantized. This gives us the scale that can be used to map the values to the quantized range. We call this process of choosing the input range \"Calibration\". The three popular techniques used to calibrate are:\n", - "\n", - "- Min-Max: Use the minimum and maximum of the FP32 values seen during calibration. The disadvantage with this method is that, if there is an outlier, our mapping can induce a larger rounding error. \n", - "\n", - "- Entropy: Not all values in the FP32 tensor may be equally important. Hence using cross entropy with different range values [T1, T2], we try to minimize the information loss between the original FP32 tensor and quantized tensor. \n", - "\n", - "- Percentile: Use the percentile of the distribution of absolute values seen during calibration. Say, at 99% calibration, we clip 1% of the largest magnitude values, and determine [P1, P2] as the representable range to be quantized\n", - "\n", - "\n", - "![img4.JPG](attachment:img4.JPG)\n", - "\n", - "\n", - "We will be using the Pytorch Quantization toolkit, a toolkit built for training and evaluating PyTorch Models with simulated quantization. \n", - "\n", - "`quant_modules.initialize()` will ensure quantized modules are called instead of original modules. For example, when you define a model with convolution, linear snd pooling layers, you will make a call to `QuantConv2d`, `QuantLinear` and `QuantPooling` respectively. `QuantConv2d` basically wraps quantizer nodes around inputs and weights of regular `Conv2d`. Please refer to all the quantized modules in pytorch-quantization toolkit for more information. " - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "f1520afc", - "metadata": {}, - "outputs": [], - "source": [ - "quant_modules.initialize()" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "ee09402f", - "metadata": {}, - "outputs": [], - "source": [ - "# We define Mobilenetv2 again just like we did above\n", - "# All the regular conv, FC layers will be converted to their quantized counterparts due to quant_modules.initialize()\n", - "feature_extract = True\n", - "q_model = models.mobilenet_v2(pretrained=True)\n", - "set_parameter_requires_grad(q_model, feature_extract)\n", - "q_model.classifier[1] = nn.Linear(1280, 10)\n", - "q_model = q_model.cuda()\n", - "\n", - "# mobilenetv2_base_ckpt is the checkpoint generated from Step 2 : Training a baseline Mobilenetv2 model.\n", - "ckpt = torch.load(\"./models/mobilenetv2_base_ckpt\")\n", - "modified_state_dict={}\n", - "for key, val in ckpt[\"model_state_dict\"].items():\n", - " # Remove 'module.' from the key names\n", - " if key.startswith('module'):\n", - " modified_state_dict[key[7:]] = val\n", - " else:\n", - " modified_state_dict[key] = val\n", - "\n", - "# Load the pre-trained checkpoint\n", - "q_model.load_state_dict(modified_state_dict)\n", - "optimizer.load_state_dict(ckpt[\"opt_state_dict\"])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "b8726956", - "metadata": {}, - "outputs": [], - "source": [ - "def compute_amax(model, **kwargs):\n", - " # Load calib result\n", - " for name, module in model.named_modules():\n", - " if isinstance(module, quant_nn.TensorQuantizer):\n", - " if module._calibrator is not None:\n", - " if isinstance(module._calibrator, calib.MaxCalibrator):\n", - " module.load_calib_amax()\n", - " else:\n", - " module.load_calib_amax(**kwargs)\n", - " model.cuda()\n", - "\n", - "def collect_stats(model, data_loader, num_batches):\n", - " \"\"\"Feed data to the network and collect statistics\"\"\"\n", - " # Enable calibrators\n", - " for name, module in model.named_modules():\n", - " if isinstance(module, quant_nn.TensorQuantizer):\n", - " if module._calibrator is not None:\n", - " module.disable_quant()\n", - " module.enable_calib()\n", - " else:\n", - " module.disable()\n", - "\n", - " # Feed data to the network for collecting stats\n", - " for i, (image, _) in tqdm(enumerate(data_loader), total=num_batches):\n", - " model(image.cuda())\n", - " if i >= num_batches:\n", - " break\n", - "\n", - " # Disable calibrators\n", - " for name, module in model.named_modules():\n", - " if isinstance(module, quant_nn.TensorQuantizer):\n", - " if module._calibrator is not None:\n", - " module.enable_quant()\n", - " module.disable_calib()\n", - " else:\n", - " module.enable()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "da627181", - "metadata": {}, - "outputs": [], - "source": [ - "# Calibrate the model using max calibration technique.\n", - "with torch.no_grad():\n", - " collect_stats(q_model, train_dataloader, num_batches=16)\n", - " compute_amax(q_model, method=\"max\")" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "73e6d51c", - "metadata": {}, - "outputs": [], - "source": [ - "# Save the PTQ model\n", - "torch.save(q_model.state_dict(), \"./models/mobilenetv2_ptq.pth\")" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c7dadbf2", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 PTQ accuracy: 68.11%\n" - ] - } - ], - "source": [ - "# Evaluate the PTQ Model \n", - "test_acc = evaluate(q_model, val_dataloader, criterion, 0)\n", - "print(\"Mobilenetv2 PTQ accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "markdown", - "id": "efd5ff11", - "metadata": {}, - "source": [ - "Let us now prepare this model to export into ONNX. Setting `quant_nn.TensorQuantizer.use_fb_fake_quant = True` enables the quantized model to use `torch.fake_quantize_per_tensor_affine` and `torch.fake_quantize_per_channel_affine` operators instead of `tensor_quant` function to export quantization operators. " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3f10f707", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "W0725 16:43:50.537823 139848660895552 tensor_quantizer.py:280] Use Pytorch's native experimental fake quantization.\n", - "/opt/conda/lib/python3.8/site-packages/pytorch_quantization/nn/modules/tensor_quantizer.py:283: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", - " if amax.numel() == 1:\n", - "/opt/conda/lib/python3.8/site-packages/pytorch_quantization/nn/modules/tensor_quantizer.py:285: TracerWarning: Converting a tensor to a Python number might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", - " inputs, amax.item() / bound, 0,\n", - "/opt/conda/lib/python3.8/site-packages/pytorch_quantization/nn/modules/tensor_quantizer.py:291: TracerWarning: Converting a tensor to a Python boolean might cause the trace to be incorrect. We can't record the data flow of Python values, so this value will be treated as a constant in the future. This means that the trace might not generalize to other inputs!\n", - " quant_dim = list(amax.shape).index(list(amax_sequeeze.shape)[0])\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "&&&& RUNNING TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_ptq.onnx --int8 --saveEngine=models/mobilenetv2_ptq.trt\n", - "[07/25/2022-16:43:56] [I] === Model Options ===\n", - "[07/25/2022-16:43:56] [I] Format: ONNX\n", - "[07/25/2022-16:43:56] [I] Model: models/mobilenetv2_ptq.onnx\n", - "[07/25/2022-16:43:56] [I] Output:\n", - "[07/25/2022-16:43:56] [I] === Build Options ===\n", - "[07/25/2022-16:43:56] [I] Max batch: explicit batch\n", - "[07/25/2022-16:43:56] [I] Workspace: 16 MiB\n", - "[07/25/2022-16:43:56] [I] minTiming: 1\n", - "[07/25/2022-16:43:56] [I] avgTiming: 8\n", - "[07/25/2022-16:43:56] [I] Precision: FP32+INT8\n", - "[07/25/2022-16:43:56] [I] Calibration: Dynamic\n", - "[07/25/2022-16:43:56] [I] Refit: Disabled\n", - "[07/25/2022-16:43:56] [I] Sparsity: Disabled\n", - "[07/25/2022-16:43:56] [I] Safe mode: Disabled\n", - "[07/25/2022-16:43:56] [I] DirectIO mode: Disabled\n", - "[07/25/2022-16:43:56] [I] Restricted mode: Disabled\n", - "[07/25/2022-16:43:56] [I] Save engine: models/mobilenetv2_ptq.trt\n", - "[07/25/2022-16:43:56] [I] Load engine: \n", - "[07/25/2022-16:43:56] [I] Profiling verbosity: 0\n", - "[07/25/2022-16:43:56] [I] Tactic sources: Using default tactic sources\n", - "[07/25/2022-16:43:56] [I] timingCacheMode: local\n", - "[07/25/2022-16:43:56] [I] timingCacheFile: \n", - "[07/25/2022-16:43:56] [I] Input(s)s format: fp32:CHW\n", - "[07/25/2022-16:43:56] [I] Output(s)s format: fp32:CHW\n", - "[07/25/2022-16:43:56] [I] Input build shapes: model\n", - "[07/25/2022-16:43:56] [I] Input calibration shapes: model\n", - "[07/25/2022-16:43:56] [I] === System Options ===\n", - "[07/25/2022-16:43:56] [I] Device: 0\n", - "[07/25/2022-16:43:56] [I] DLACore: \n", - "[07/25/2022-16:43:56] [I] Plugins:\n", - "[07/25/2022-16:43:56] [I] === Inference Options ===\n", - "[07/25/2022-16:43:56] [I] Batch: Explicit\n", - "[07/25/2022-16:43:56] [I] Input inference shapes: model\n", - "[07/25/2022-16:43:56] [I] Iterations: 10\n", - "[07/25/2022-16:43:56] [I] Duration: 3s (+ 200ms warm up)\n", - "[07/25/2022-16:43:56] [I] Sleep time: 0ms\n", - "[07/25/2022-16:43:56] [I] Idle time: 0ms\n", - "[07/25/2022-16:43:56] [I] Streams: 1\n", - "[07/25/2022-16:43:56] [I] ExposeDMA: Disabled\n", - "[07/25/2022-16:43:56] [I] Data transfers: Enabled\n", - "[07/25/2022-16:43:56] [I] Spin-wait: Disabled\n", - "[07/25/2022-16:43:56] [I] Multithreading: Disabled\n", - "[07/25/2022-16:43:56] [I] CUDA Graph: Disabled\n", - "[07/25/2022-16:43:56] [I] Separate profiling: Disabled\n", - "[07/25/2022-16:43:56] [I] Time Deserialize: Disabled\n", - "[07/25/2022-16:43:56] [I] Time Refit: Disabled\n", - "[07/25/2022-16:43:56] [I] Skip inference: Disabled\n", - "[07/25/2022-16:43:56] [I] Inputs:\n", - "[07/25/2022-16:43:56] [I] === Reporting Options ===\n", - "[07/25/2022-16:43:56] [I] Verbose: Disabled\n", - "[07/25/2022-16:43:56] [I] Averages: 10 inferences\n", - "[07/25/2022-16:43:56] [I] Percentile: 99\n", - "[07/25/2022-16:43:56] [I] Dump refittable layers:Disabled\n", - "[07/25/2022-16:43:56] [I] Dump output: Disabled\n", - "[07/25/2022-16:43:56] [I] Profile: Disabled\n", - "[07/25/2022-16:43:56] [I] Export timing to JSON file: \n", - "[07/25/2022-16:43:56] [I] Export output to JSON file: \n", - "[07/25/2022-16:43:56] [I] Export profile to JSON file: \n", - "[07/25/2022-16:43:56] [I] \n", - "[07/25/2022-16:43:56] [I] === Device Information ===\n", - "[07/25/2022-16:43:56] [I] Selected Device: NVIDIA Graphics Device\n", - "[07/25/2022-16:43:56] [I] Compute Capability: 8.0\n", - "[07/25/2022-16:43:56] [I] SMs: 124\n", - "[07/25/2022-16:43:56] [I] Compute Clock Rate: 1.005 GHz\n", - "[07/25/2022-16:43:56] [I] Device Global Memory: 47681 MiB\n", - "[07/25/2022-16:43:56] [I] Shared Memory per SM: 164 KiB\n", - "[07/25/2022-16:43:56] [I] Memory Bus Width: 6144 bits (ECC enabled)\n", - "[07/25/2022-16:43:56] [I] Memory Clock Rate: 1.215 GHz\n", - "[07/25/2022-16:43:56] [I] \n", - "[07/25/2022-16:43:56] [I] TensorRT version: 8.2.5\n", - "[07/25/2022-16:43:57] [I] [TRT] [MemUsageChange] Init CUDA: CPU +440, GPU +0, now: CPU 452, GPU 5862 (MiB)\n", - "[07/25/2022-16:43:57] [I] [TRT] [MemUsageSnapshot] Begin constructing builder kernel library: CPU 452 MiB, GPU 5862 MiB\n", - "[07/25/2022-16:43:57] [I] [TRT] [MemUsageSnapshot] End constructing builder kernel library: CPU 669 MiB, GPU 5934 MiB\n", - "[07/25/2022-16:43:57] [I] Start parsing network model\n", - "[07/25/2022-16:43:57] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:43:57] [I] [TRT] Input filename: models/mobilenetv2_ptq.onnx\n", - "[07/25/2022-16:43:57] [I] [TRT] ONNX IR version: 0.0.7\n", - "[07/25/2022-16:43:57] [I] [TRT] Opset version: 13\n", - "[07/25/2022-16:43:57] [I] [TRT] Producer name: pytorch\n", - "[07/25/2022-16:43:57] [I] [TRT] Producer version: 1.13.0\n", - "[07/25/2022-16:43:57] [I] [TRT] Domain: \n", - "[07/25/2022-16:43:57] [I] [TRT] Model version: 0\n", - "[07/25/2022-16:43:57] [I] [TRT] Doc string: \n", - "[07/25/2022-16:43:57] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:43:57] [W] [TRT] parsers/onnx/onnx2trt_utils.cpp:506: Your ONNX model has been generated with double-typed weights, while TensorRT does not natively support double. Attempting to cast down to float.\n", - "[07/25/2022-16:43:57] [W] [TRT] parsers/onnx/onnx2trt_utils.cpp:368: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.\n", - "[07/25/2022-16:43:57] [I] Finish parsing network model\n", - "[07/25/2022-16:43:57] [I] FP32 and INT8 precisions have been specified - more performance might be enabled by additionally specifying --fp16 or --best\n", - "[07/25/2022-16:43:58] [W] [TRT] Calibrator won't be used in explicit precision mode. Use quantization aware training to generate network with Quantize/Dequantize nodes.\n", - "[07/25/2022-16:43:59] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +838, GPU +362, now: CPU 1543, GPU 6342 (MiB)\n", - "[07/25/2022-16:43:59] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +128, GPU +58, now: CPU 1671, GPU 6400 (MiB)\n", - "[07/25/2022-16:43:59] [I] [TRT] Local timing cache in use. Profiling results in this builder pass will not be stored.\n", - "[07/25/2022-16:44:20] [I] [TRT] Detected 1 inputs and 1 output network tensors.\n", - "[07/25/2022-16:44:21] [I] [TRT] Total Host Persistent Memory: 75056\n", - "[07/25/2022-16:44:21] [I] [TRT] Total Device Persistent Memory: 2367488\n", - "[07/25/2022-16:44:21] [I] [TRT] Total Scratch Memory: 0\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageStats] Peak memory usage of TRT CPU/GPU memory allocators: CPU 11 MiB, GPU 184 MiB\n", - "[07/25/2022-16:44:21] [I] [TRT] [BlockAssignment] Algorithm ShiftNTopDown took 3.69334ms to assign 4 blocks to 87 nodes requiring 131661824 bytes.\n", - "[07/25/2022-16:44:21] [I] [TRT] Total Activation Memory: 131661824\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +8, now: CPU 1674, GPU 6412 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +0, GPU +10, now: CPU 1674, GPU 6422 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in building engine: CPU +2, GPU +4, now: CPU 2, GPU 4 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 1665, GPU 6384 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] Loaded engine size: 2 MiB\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 1666, GPU 6398 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +0, GPU +8, now: CPU 1666, GPU 6406 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +2, now: CPU 0, GPU 2 (MiB)\n", - "[07/25/2022-16:44:21] [I] Engine built in 24.535 sec.\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 1435, GPU 6312 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +1, GPU +8, now: CPU 1436, GPU 6320 (MiB)\n", - "[07/25/2022-16:44:21] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +128, now: CPU 0, GPU 130 (MiB)\n", - "[07/25/2022-16:44:21] [I] Using random values for input inputs.1\n", - "[07/25/2022-16:44:21] [I] Created input binding for inputs.1 with dimensions 64x3x224x224\n", - "[07/25/2022-16:44:21] [I] Using random values for output 1225\n", - "[07/25/2022-16:44:21] [I] Created output binding for 1225 with dimensions 64x10\n", - "[07/25/2022-16:44:21] [I] Starting inference\n", - "[07/25/2022-16:44:24] [I] Warmup completed 64 queries over 200 ms\n", - "[07/25/2022-16:44:24] [I] Timing trace has 967 queries over 3.00851 s\n", - "[07/25/2022-16:44:24] [I] \n", - "[07/25/2022-16:44:24] [I] === Trace details ===\n", - "[07/25/2022-16:44:24] [I] Trace averages of 10 runs:\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.62079 ms - Host latency: 4.67811 ms (end to end 4.69463 ms, enqueue 1.64643 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58894 ms - Host latency: 4.64457 ms (end to end 4.66023 ms, enqueue 1.64765 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58884 ms - Host latency: 4.68113 ms (end to end 4.69763 ms, enqueue 1.4498 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59182 ms - Host latency: 4.74732 ms (end to end 4.76547 ms, enqueue 1.01564 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.57819 ms - Host latency: 4.72507 ms (end to end 4.74366 ms, enqueue 1.02484 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.57656 ms - Host latency: 4.72242 ms (end to end 4.74165 ms, enqueue 1.02861 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.57644 ms - Host latency: 4.71519 ms (end to end 4.7332 ms, enqueue 1.01613 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58525 ms - Host latency: 4.71598 ms (end to end 4.73434 ms, enqueue 1.02659 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58402 ms - Host latency: 4.73148 ms (end to end 4.74992 ms, enqueue 1.01769 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.5875 ms - Host latency: 4.73852 ms (end to end 4.75818 ms, enqueue 1.01811 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58987 ms - Host latency: 4.73746 ms (end to end 4.75689 ms, enqueue 1.03277 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58997 ms - Host latency: 4.7413 ms (end to end 4.75951 ms, enqueue 1.01619 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58946 ms - Host latency: 4.72262 ms (end to end 4.74041 ms, enqueue 1.02238 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58925 ms - Host latency: 4.73135 ms (end to end 4.74933 ms, enqueue 1.01594 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59028 ms - Host latency: 4.73451 ms (end to end 4.75285 ms, enqueue 1.02201 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58268 ms - Host latency: 4.73112 ms (end to end 4.74874 ms, enqueue 1.02508 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58301 ms - Host latency: 4.72178 ms (end to end 4.74047 ms, enqueue 1.01762 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58886 ms - Host latency: 4.65172 ms (end to end 4.66926 ms, enqueue 1.51528 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58914 ms - Host latency: 4.64406 ms (end to end 4.65896 ms, enqueue 1.63688 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58699 ms - Host latency: 4.64383 ms (end to end 4.65996 ms, enqueue 1.65472 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58555 ms - Host latency: 4.64166 ms (end to end 4.65729 ms, enqueue 1.63208 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.5912 ms - Host latency: 4.70112 ms (end to end 4.71844 ms, enqueue 1.32826 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59344 ms - Host latency: 4.73959 ms (end to end 4.75857 ms, enqueue 1.02899 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58987 ms - Host latency: 4.73836 ms (end to end 4.75505 ms, enqueue 1.01709 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59006 ms - Host latency: 4.73572 ms (end to end 4.75276 ms, enqueue 1.02136 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59048 ms - Host latency: 4.71992 ms (end to end 4.73885 ms, enqueue 1.02228 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59038 ms - Host latency: 4.70565 ms (end to end 4.72057 ms, enqueue 1.07745 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59613 ms - Host latency: 4.654 ms (end to end 4.66982 ms, enqueue 1.64631 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60891 ms - Host latency: 4.6658 ms (end to end 4.68058 ms, enqueue 1.64453 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.63901 ms - Host latency: 4.72241 ms (end to end 4.74214 ms, enqueue 1.34059 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.62897 ms - Host latency: 4.68709 ms (end to end 4.69999 ms, enqueue 1.66216 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.63082 ms - Host latency: 4.70751 ms (end to end 4.7218 ms, enqueue 1.45334 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.62992 ms - Host latency: 4.6874 ms (end to end 4.70267 ms, enqueue 1.64911 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.622 ms - Host latency: 4.73571 ms (end to end 4.75325 ms, enqueue 1.20652 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59867 ms - Host latency: 4.6564 ms (end to end 4.67043 ms, enqueue 1.59722 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60093 ms - Host latency: 4.65856 ms (end to end 4.67501 ms, enqueue 1.66334 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60172 ms - Host latency: 4.72034 ms (end to end 4.73595 ms, enqueue 1.27314 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60275 ms - Host latency: 4.7422 ms (end to end 4.76001 ms, enqueue 1.03055 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60154 ms - Host latency: 4.75237 ms (end to end 4.76968 ms, enqueue 1.01521 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60103 ms - Host latency: 4.65785 ms (end to end 4.67402 ms, enqueue 1.57283 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59702 ms - Host latency: 4.65447 ms (end to end 4.66899 ms, enqueue 1.6537 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60101 ms - Host latency: 4.66719 ms (end to end 4.68365 ms, enqueue 1.57606 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60033 ms - Host latency: 4.66338 ms (end to end 4.67982 ms, enqueue 1.52695 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61044 ms - Host latency: 4.6709 ms (end to end 4.68477 ms, enqueue 1.65308 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61915 ms - Host latency: 4.75122 ms (end to end 4.76687 ms, enqueue 1.15017 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60728 ms - Host latency: 4.74371 ms (end to end 4.76132 ms, enqueue 1.03044 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59255 ms - Host latency: 4.72791 ms (end to end 4.74779 ms, enqueue 1.03347 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59315 ms - Host latency: 4.74182 ms (end to end 4.75947 ms, enqueue 1.01835 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59058 ms - Host latency: 4.73859 ms (end to end 4.75806 ms, enqueue 1.01575 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59283 ms - Host latency: 4.73408 ms (end to end 4.75116 ms, enqueue 1.02853 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59253 ms - Host latency: 4.73284 ms (end to end 4.7496 ms, enqueue 1.0173 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59139 ms - Host latency: 4.73563 ms (end to end 4.7526 ms, enqueue 1.01703 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59039 ms - Host latency: 4.68552 ms (end to end 4.70142 ms, enqueue 1.15013 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58688 ms - Host latency: 4.64351 ms (end to end 4.65852 ms, enqueue 1.65355 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59246 ms - Host latency: 4.78259 ms (end to end 4.79854 ms, enqueue 0.765063 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58976 ms - Host latency: 4.79293 ms (end to end 4.80812 ms, enqueue 0.447778 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59243 ms - Host latency: 4.72633 ms (end to end 4.74291 ms, enqueue 1.14955 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58927 ms - Host latency: 4.70409 ms (end to end 4.71877 ms, enqueue 1.46211 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58922 ms - Host latency: 4.69727 ms (end to end 4.71404 ms, enqueue 1.4674 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60126 ms - Host latency: 4.71378 ms (end to end 4.72882 ms, enqueue 1.4665 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.6146 ms - Host latency: 4.72861 ms (end to end 4.74229 ms, enqueue 1.46687 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61904 ms - Host latency: 4.73428 ms (end to end 4.75139 ms, enqueue 1.45776 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.6167 ms - Host latency: 4.72507 ms (end to end 4.7394 ms, enqueue 1.46343 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.6165 ms - Host latency: 4.72825 ms (end to end 4.74551 ms, enqueue 1.48093 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61758 ms - Host latency: 4.72815 ms (end to end 4.74431 ms, enqueue 1.47295 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60859 ms - Host latency: 4.727 ms (end to end 4.74077 ms, enqueue 1.45435 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.6021 ms - Host latency: 4.71687 ms (end to end 4.73274 ms, enqueue 1.45869 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61111 ms - Host latency: 4.72588 ms (end to end 4.73958 ms, enqueue 1.46362 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.6085 ms - Host latency: 4.71299 ms (end to end 4.72961 ms, enqueue 1.4863 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.62021 ms - Host latency: 4.73657 ms (end to end 4.75117 ms, enqueue 1.46689 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61001 ms - Host latency: 4.7217 ms (end to end 4.73774 ms, enqueue 1.47329 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60894 ms - Host latency: 4.72175 ms (end to end 4.73774 ms, enqueue 1.45996 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59602 ms - Host latency: 4.69124 ms (end to end 4.70601 ms, enqueue 1.48582 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58879 ms - Host latency: 4.7061 ms (end to end 4.72107 ms, enqueue 1.45811 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59341 ms - Host latency: 4.7093 ms (end to end 4.72632 ms, enqueue 1.46155 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59861 ms - Host latency: 4.67756 ms (end to end 4.69421 ms, enqueue 1.54897 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59929 ms - Host latency: 4.65381 ms (end to end 4.66875 ms, enqueue 1.64392 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60144 ms - Host latency: 4.71389 ms (end to end 4.73044 ms, enqueue 1.3313 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59775 ms - Host latency: 4.71812 ms (end to end 4.73245 ms, enqueue 1.02263 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.57788 ms - Host latency: 4.66929 ms (end to end 4.68704 ms, enqueue 1.26707 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.58318 ms - Host latency: 4.64211 ms (end to end 4.6571 ms, enqueue 1.6553 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59839 ms - Host latency: 4.6543 ms (end to end 4.66938 ms, enqueue 1.65542 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59526 ms - Host latency: 4.66873 ms (end to end 4.68474 ms, enqueue 1.57432 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60022 ms - Host latency: 4.74575 ms (end to end 4.76467 ms, enqueue 1.02512 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59861 ms - Host latency: 4.725 ms (end to end 4.74438 ms, enqueue 1.03474 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60442 ms - Host latency: 4.74048 ms (end to end 4.75903 ms, enqueue 1.02407 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60613 ms - Host latency: 4.74568 ms (end to end 4.76294 ms, enqueue 1.02964 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60151 ms - Host latency: 4.74846 ms (end to end 4.76499 ms, enqueue 1.01465 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60273 ms - Host latency: 4.7436 ms (end to end 4.76155 ms, enqueue 1.02131 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59956 ms - Host latency: 4.73704 ms (end to end 4.75496 ms, enqueue 1.02078 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60122 ms - Host latency: 4.74536 ms (end to end 4.76064 ms, enqueue 1.02913 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60396 ms - Host latency: 4.75247 ms (end to end 4.77131 ms, enqueue 1.0165 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60598 ms - Host latency: 4.74436 ms (end to end 4.76189 ms, enqueue 1.01392 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.59995 ms - Host latency: 4.71816 ms (end to end 4.73706 ms, enqueue 1.02988 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.60974 ms - Host latency: 4.7179 ms (end to end 4.73477 ms, enqueue 1.07554 ms)\n", - "[07/25/2022-16:44:24] [I] Average on 10 runs - GPU latency: 1.61443 ms - Host latency: 4.66958 ms (end to end 4.68594 ms, enqueue 1.65239 ms)\n", - "[07/25/2022-16:44:24] [I] \n", - "[07/25/2022-16:44:24] [I] === Performance summary ===\n", - "[07/25/2022-16:44:24] [I] Throughput: 321.422 qps\n", - "[07/25/2022-16:44:24] [I] Latency: min = 4.61383 ms, max = 5.11646 ms, mean = 4.71056 ms, median = 4.71863 ms, percentile(99%) = 4.80322 ms\n", - "[07/25/2022-16:44:24] [I] End-to-End Host Latency: min = 4.62366 ms, max = 5.13928 ms, mean = 4.72723 ms, median = 4.73462 ms, percentile(99%) = 4.81934 ms\n", - "[07/25/2022-16:44:24] [I] Enqueue Time: min = 0.337158 ms, max = 1.83459 ms, mean = 1.28084 ms, median = 1.0896 ms, percentile(99%) = 1.71924 ms\n", - "[07/25/2022-16:44:24] [I] H2D Latency: min = 3.01642 ms, max = 3.51599 ms, mean = 3.09767 ms, median = 3.10742 ms, percentile(99%) = 3.1925 ms\n", - "[07/25/2022-16:44:24] [I] GPU Compute Time: min = 1.56671 ms, max = 1.6599 ms, mean = 1.59911 ms, median = 1.59741 ms, percentile(99%) = 1.63635 ms\n", - "[07/25/2022-16:44:24] [I] D2H Latency: min = 0.00561523 ms, max = 0.0314941 ms, mean = 0.0137833 ms, median = 0.0134277 ms, percentile(99%) = 0.0292969 ms\n", - "[07/25/2022-16:44:24] [I] Total Host Walltime: 3.00851 s\n", - "[07/25/2022-16:44:24] [I] Total GPU Compute Time: 1.54634 s\n", - "[07/25/2022-16:44:24] [W] * Throughput may be bound by host-to-device transfers for the inputs rather than GPU Compute and the GPU may be under-utilized.\n", - "[07/25/2022-16:44:24] [W] Add --noDataTransfers flag to disable data transfers.\n", - "[07/25/2022-16:44:24] [I] Explanations of the performance metrics are printed in the verbose logs.\n", - "[07/25/2022-16:44:24] [I] \n", - "&&&& PASSED TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_ptq.onnx --int8 --saveEngine=models/mobilenetv2_ptq.trt\n" - ] - } - ], - "source": [ - "# Set static member of TensorQuantizer to use Pytorch’s own fake quantization functions\n", - "quant_nn.TensorQuantizer.use_fb_fake_quant = True\n", - "\n", - "# Exporting to ONNX\n", - "dummy_input = torch.randn(64, 3, 224, 224, device='cuda')\n", - "input_names = [ \"actual_input_1\" ]\n", - "output_names = [ \"output1\" ]\n", - "torch.onnx.export(\n", - " q_model,\n", - " dummy_input,\n", - " \"models/mobilenetv2_ptq.onnx\",\n", - " verbose=False,\n", - " opset_version=13,\n", - " do_constant_folding = False)\n", - "\n", - "# Converting ONNX model to TRT\n", - "!trtexec --onnx=models/mobilenetv2_ptq.onnx --int8 --saveEngine=models/mobilenetv2_ptq.trt" - ] - }, - { - "attachments": { - "img5.JPG": { - "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDuRXhpZgAATU0AKgAAAAgABAE7AAIAAAAMAAAISodpAAQAAAABAAAIVpydAAEAAAAYAAAQzuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFubmllIFN1cmxhAAAFkAMAAgAAABQAABCkkAQAAgAAABQAABC4kpEAAgAAAAM5NwAAkpIAAgAAAAM5NwAA6hwABwAACAwAAAiYAAAAABzqAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAyMjowNjoxMyAxMTowMToxNAAyMDIyOjA2OjEzIDExOjAxOjE0AAAAQQBuAG4AaQBlACAAUwB1AHIAbABhAAAA/+ELHmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMjItMDYtMTNUMTE6MDE6MTQuOTY3PC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFubmllIFN1cmxhPC9yZGY6bGk+PC9yZGY6U2VxPg0KCQkJPC9kYzpjcmVhdG9yPjwvcmRmOkRlc2NyaXB0aW9uPjwvcmRmOlJERj48L3g6eG1wbWV0YT4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0ndyc/Pv/bAEMABwUFBgUEBwYFBggHBwgKEQsKCQkKFQ8QDBEYFRoZGBUYFxseJyEbHSUdFxgiLiIlKCkrLCsaIC8zLyoyJyorKv/bAEMBBwgICgkKFAsLFCocGBwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKv/AABEIAKoCGgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APpGiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKMj1oyPWgAooyPWjI9aACijI9aMj1oAKKMj1oyPWgAooyPWjI9aACijI9aMj1oAKKMj1oyPWgAooyPWjI9aACijI9aMj1oAKKMj1oyPWgAooyPWjI9aACijI9aMj1oAKKMj1oyPWgAooyPWjI9aACijI9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" - } - }, - "cell_type": "markdown", - "id": "d3e676e7", - "metadata": {}, - "source": [ - "\n", - "## 5. Quantization Aware Training (QAT)\n", - "\n", - "PTQ resulted in a ~3% accuracy drop. After PTQ is performed, sometimes the model may perform poorly by not retaining the accuracy as the process is not able to mitigate the large quantization error induced by low-bit quantization. This could happen if there are sensitive layers in the network, like the Depth wise convolutional networks, in MobileNets which are more susceptible to producing larger quantization error. \n", - "\n", - "This is when we might want to consider using QAT. The idea behind QAT is simple: you can improve the lost accuracy of the quantized model, if you had trained the model with quantization error. There are many ways of doing this, starting the training of the model from scratch or fine-tuning a pre-trained model. Whatever method you choose, the quantization error is induced in the training loss by inserting fake-quantization operations. The operation is called “fake” because we quantize the data and immediately perform a dequantize operation producing an approximate version of the data where both input and output still remain as floating point values. We are here trying to simulate the effects of quantization without changing much in the model. \n", - "In the forward-pass, we fake-quantize the weights and activations and use these fake-quantized outputs to perform the layer operations.\n", - "\n", - "![img5.JPG](attachment:img5.JPG)\n", - "\n", - "In the backward pass, while calculating gradient, the quantization operation’s derivative is undefined at the step boundaries, and zero everywhere else. To handle this, QAT uses Straight-through Estimator by approximating the derivative to be 1 for inputs in the representable range. This estimator is essentially letting gradients pass as is through this operator in the backward pass. When the QAT process is done, the scales that were used to quantize the weights and activations are stored in the model and can be used for inference. " - ] - }, - { - "cell_type": "markdown", - "id": "bcc10e0f", - "metadata": {}, - "source": [ - "Usually the finetuning of QAT model should be quick compared to the full training of the original model. For this Mobilenetv2 model, it is enough to finetune for 2 epochs to get acceptable accuracy. \n", - "\n", - "tensor_quant function in `pytorch_quantization` toolkit is responsible for the above tensor quantization. Usually, per channel quantization is recommended for weights, while per tensor quantization is recommended for activations in a network.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "dc144132", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Epoch: [ 1 / 2] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 1.806\n", - "Test Acc: 69.88%\n", - "Epoch: [ 2 / 2] LR: 0.000100\n", - "Batch: [ 100 | 147] loss: 1.800\n", - "Test Acc: 69.49%\n", - "Checkpoint saved\n" - ] - } - ], - "source": [ - "# Finetune the QAT model for 2 epochs\n", - "num_epochs=2\n", - "\n", - "for epoch in range(num_epochs):\n", - " print('Epoch: [%5d / %5d] LR: %f' % (epoch + 1, num_epochs, lr))\n", - "\n", - " train(q_model, train_dataloader, criterion, optimizer, epoch)\n", - " test_acc = evaluate(q_model, val_dataloader, criterion, epoch)\n", - "\n", - " print(\"Test Acc: {:.2f}%\".format(100 * test_acc))\n", - " \n", - "save_checkpoint({'epoch': epoch + 1,\n", - " 'model_state_dict': q_model.state_dict(),\n", - " 'acc': test_acc,\n", - " 'opt_state_dict': optimizer.state_dict()\n", - " },\n", - " ckpt_path=\"models/mobilenetv2_qat_ckpt\")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "0d801c67", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 QAT accuracy: 69.49%\n" - ] - } - ], - "source": [ - "# Evaluate the QAT model\n", - "test_acc = evaluate(q_model, val_dataloader, criterion, 0)\n", - "print(\"Mobilenetv2 QAT accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "markdown", - "id": "70bdaeed", - "metadata": {}, - "source": [ - "As you can see, accuracy recovered by ~1.3%. Fine-tuning for more epochs with learning rate annealing can improve accuracy further. It should be noted that the same fine-tuning schedule will improve the accuracy of the unquantized model as well. Please refer to Achieving FP32 Accuracy for INT8 Inference Using Quantization Aware Training with NVIDIA TensorRT for detailed recommendations.\n", - "\n", - "During inference, we use `torch.fake_quantize_per_tensor_affine` and `torch.fake_quantize_per_channel_affine` to perform quantization as this is easier to convert into corresponding TensorRT operators. \n", - "\n", - "Let us now prepare this model to export into ONNX. " - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "176a6bfd", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "&&&& RUNNING TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_qat.onnx --int8 --saveEngine=models/mobilenetv2_qat.trt\n", - "[07/25/2022-16:46:43] [I] === Model Options ===\n", - "[07/25/2022-16:46:43] [I] Format: ONNX\n", - "[07/25/2022-16:46:43] [I] Model: models/mobilenetv2_qat.onnx\n", - "[07/25/2022-16:46:43] [I] Output:\n", - "[07/25/2022-16:46:43] [I] === Build Options ===\n", - "[07/25/2022-16:46:43] [I] Max batch: explicit batch\n", - "[07/25/2022-16:46:43] [I] Workspace: 16 MiB\n", - "[07/25/2022-16:46:43] [I] minTiming: 1\n", - "[07/25/2022-16:46:43] [I] avgTiming: 8\n", - "[07/25/2022-16:46:43] [I] Precision: FP32+INT8\n", - "[07/25/2022-16:46:43] [I] Calibration: Dynamic\n", - "[07/25/2022-16:46:43] [I] Refit: Disabled\n", - "[07/25/2022-16:46:43] [I] Sparsity: Disabled\n", - "[07/25/2022-16:46:43] [I] Safe mode: Disabled\n", - "[07/25/2022-16:46:43] [I] DirectIO mode: Disabled\n", - "[07/25/2022-16:46:43] [I] Restricted mode: Disabled\n", - "[07/25/2022-16:46:43] [I] Save engine: models/mobilenetv2_qat.trt\n", - "[07/25/2022-16:46:43] [I] Load engine: \n", - "[07/25/2022-16:46:43] [I] Profiling verbosity: 0\n", - "[07/25/2022-16:46:43] [I] Tactic sources: Using default tactic sources\n", - "[07/25/2022-16:46:43] [I] timingCacheMode: local\n", - "[07/25/2022-16:46:43] [I] timingCacheFile: \n", - "[07/25/2022-16:46:43] [I] Input(s)s format: fp32:CHW\n", - "[07/25/2022-16:46:43] [I] Output(s)s format: fp32:CHW\n", - "[07/25/2022-16:46:43] [I] Input build shapes: model\n", - "[07/25/2022-16:46:43] [I] Input calibration shapes: model\n", - "[07/25/2022-16:46:43] [I] === System Options ===\n", - "[07/25/2022-16:46:43] [I] Device: 0\n", - "[07/25/2022-16:46:43] [I] DLACore: \n", - "[07/25/2022-16:46:43] [I] Plugins:\n", - "[07/25/2022-16:46:43] [I] === Inference Options ===\n", - "[07/25/2022-16:46:43] [I] Batch: Explicit\n", - "[07/25/2022-16:46:43] [I] Input inference shapes: model\n", - "[07/25/2022-16:46:43] [I] Iterations: 10\n", - "[07/25/2022-16:46:43] [I] Duration: 3s (+ 200ms warm up)\n", - "[07/25/2022-16:46:43] [I] Sleep time: 0ms\n", - "[07/25/2022-16:46:43] [I] Idle time: 0ms\n", - "[07/25/2022-16:46:43] [I] Streams: 1\n", - "[07/25/2022-16:46:43] [I] ExposeDMA: Disabled\n", - "[07/25/2022-16:46:43] [I] Data transfers: Enabled\n", - "[07/25/2022-16:46:43] [I] Spin-wait: Disabled\n", - "[07/25/2022-16:46:43] [I] Multithreading: Disabled\n", - "[07/25/2022-16:46:43] [I] CUDA Graph: Disabled\n", - "[07/25/2022-16:46:43] [I] Separate profiling: Disabled\n", - "[07/25/2022-16:46:43] [I] Time Deserialize: Disabled\n", - "[07/25/2022-16:46:43] [I] Time Refit: Disabled\n", - "[07/25/2022-16:46:43] [I] Skip inference: Disabled\n", - "[07/25/2022-16:46:43] [I] Inputs:\n", - "[07/25/2022-16:46:43] [I] === Reporting Options ===\n", - "[07/25/2022-16:46:43] [I] Verbose: Disabled\n", - "[07/25/2022-16:46:43] [I] Averages: 10 inferences\n", - "[07/25/2022-16:46:43] [I] Percentile: 99\n", - "[07/25/2022-16:46:43] [I] Dump refittable layers:Disabled\n", - "[07/25/2022-16:46:43] [I] Dump output: Disabled\n", - "[07/25/2022-16:46:43] [I] Profile: Disabled\n", - "[07/25/2022-16:46:43] [I] Export timing to JSON file: \n", - "[07/25/2022-16:46:43] [I] Export output to JSON file: \n", - "[07/25/2022-16:46:43] [I] Export profile to JSON file: \n", - "[07/25/2022-16:46:43] [I] \n", - "[07/25/2022-16:46:43] [I] === Device Information ===\n", - "[07/25/2022-16:46:43] [I] Selected Device: NVIDIA Graphics Device\n", - "[07/25/2022-16:46:43] [I] Compute Capability: 8.0\n", - "[07/25/2022-16:46:43] [I] SMs: 124\n", - "[07/25/2022-16:46:43] [I] Compute Clock Rate: 1.005 GHz\n", - "[07/25/2022-16:46:43] [I] Device Global Memory: 47681 MiB\n", - "[07/25/2022-16:46:43] [I] Shared Memory per SM: 164 KiB\n", - "[07/25/2022-16:46:43] [I] Memory Bus Width: 6144 bits (ECC enabled)\n", - "[07/25/2022-16:46:43] [I] Memory Clock Rate: 1.215 GHz\n", - "[07/25/2022-16:46:43] [I] \n", - "[07/25/2022-16:46:43] [I] TensorRT version: 8.2.5\n", - "[07/25/2022-16:46:44] [I] [TRT] [MemUsageChange] Init CUDA: CPU +440, GPU +0, now: CPU 452, GPU 5862 (MiB)\n", - "[07/25/2022-16:46:44] [I] [TRT] [MemUsageSnapshot] Begin constructing builder kernel library: CPU 452 MiB, GPU 5862 MiB\n", - "[07/25/2022-16:46:44] [I] [TRT] [MemUsageSnapshot] End constructing builder kernel library: CPU 669 MiB, GPU 5934 MiB\n", - "[07/25/2022-16:46:44] [I] Start parsing network model\n", - "[07/25/2022-16:46:44] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:46:44] [I] [TRT] Input filename: models/mobilenetv2_qat.onnx\n", - "[07/25/2022-16:46:44] [I] [TRT] ONNX IR version: 0.0.7\n", - "[07/25/2022-16:46:44] [I] [TRT] Opset version: 13\n", - "[07/25/2022-16:46:44] [I] [TRT] Producer name: pytorch\n", - "[07/25/2022-16:46:44] [I] [TRT] Producer version: 1.13.0\n", - "[07/25/2022-16:46:44] [I] [TRT] Domain: \n", - "[07/25/2022-16:46:44] [I] [TRT] Model version: 0\n", - "[07/25/2022-16:46:44] [I] [TRT] Doc string: \n", - "[07/25/2022-16:46:44] [I] [TRT] ----------------------------------------------------------------\n", - "[07/25/2022-16:46:44] [W] [TRT] parsers/onnx/onnx2trt_utils.cpp:506: Your ONNX model has been generated with double-typed weights, while TensorRT does not natively support double. Attempting to cast down to float.\n", - "[07/25/2022-16:46:44] [W] [TRT] parsers/onnx/onnx2trt_utils.cpp:368: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.\n", - "[07/25/2022-16:46:45] [I] Finish parsing network model\n", - "[07/25/2022-16:46:45] [I] FP32 and INT8 precisions have been specified - more performance might be enabled by additionally specifying --fp16 or --best\n", - "[07/25/2022-16:46:45] [W] [TRT] Calibrator won't be used in explicit precision mode. Use quantization aware training to generate network with Quantize/Dequantize nodes.\n", - "[07/25/2022-16:46:47] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +838, GPU +362, now: CPU 1543, GPU 6342 (MiB)\n", - "[07/25/2022-16:46:47] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +128, GPU +58, now: CPU 1671, GPU 6400 (MiB)\n", - "[07/25/2022-16:46:47] [I] [TRT] Local timing cache in use. Profiling results in this builder pass will not be stored.\n", - "[07/25/2022-16:47:09] [I] [TRT] Detected 1 inputs and 1 output network tensors.\n", - "[07/25/2022-16:47:09] [I] [TRT] Total Host Persistent Memory: 82480\n", - "[07/25/2022-16:47:09] [I] [TRT] Total Device Persistent Memory: 2413056\n", - "[07/25/2022-16:47:09] [I] [TRT] Total Scratch Memory: 0\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageStats] Peak memory usage of TRT CPU/GPU memory allocators: CPU 11 MiB, GPU 184 MiB\n", - "[07/25/2022-16:47:09] [I] [TRT] [BlockAssignment] Algorithm ShiftNTopDown took 3.32319ms to assign 4 blocks to 84 nodes requiring 130056192 bytes.\n", - "[07/25/2022-16:47:09] [I] [TRT] Total Activation Memory: 130056192\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +8, now: CPU 1674, GPU 6412 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +0, GPU +10, now: CPU 1674, GPU 6422 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in building engine: CPU +2, GPU +4, now: CPU 2, GPU 4 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 1665, GPU 6384 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] Loaded engine size: 2 MiB\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 1666, GPU 6398 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +0, GPU +8, now: CPU 1666, GPU 6406 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +2, now: CPU 0, GPU 2 (MiB)\n", - "[07/25/2022-16:47:09] [I] Engine built in 25.2523 sec.\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +10, now: CPU 1435, GPU 6322 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +1, GPU +8, now: CPU 1436, GPU 6330 (MiB)\n", - "[07/25/2022-16:47:09] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +126, now: CPU 0, GPU 128 (MiB)\n", - "[07/25/2022-16:47:09] [I] Using random values for input inputs.1\n", - "[07/25/2022-16:47:09] [I] Created input binding for inputs.1 with dimensions 64x3x224x224\n", - "[07/25/2022-16:47:09] [I] Using random values for output 1225\n", - "[07/25/2022-16:47:09] [I] Created output binding for 1225 with dimensions 64x10\n", - "[07/25/2022-16:47:09] [I] Starting inference\n", - "[07/25/2022-16:47:12] [I] Warmup completed 63 queries over 200 ms\n", - "[07/25/2022-16:47:12] [I] Timing trace has 976 queries over 3.0073 s\n", - "[07/25/2022-16:47:12] [I] \n", - "[07/25/2022-16:47:12] [I] === Trace details ===\n", - "[07/25/2022-16:47:12] [I] Trace averages of 10 runs:\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.92225 ms - Host latency: 5.03344 ms (end to end 5.05219 ms, enqueue 1.40172 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.66963 ms - Host latency: 4.78574 ms (end to end 4.80028 ms, enqueue 1.39754 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61669 ms - Host latency: 4.73438 ms (end to end 4.75002 ms, enqueue 1.40104 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59776 ms - Host latency: 4.70923 ms (end to end 4.72325 ms, enqueue 1.40551 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59918 ms - Host latency: 4.715 ms (end to end 4.72859 ms, enqueue 1.39258 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59212 ms - Host latency: 4.70311 ms (end to end 4.71815 ms, enqueue 1.40127 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59171 ms - Host latency: 4.70111 ms (end to end 4.71709 ms, enqueue 1.3924 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.58884 ms - Host latency: 4.69999 ms (end to end 4.71507 ms, enqueue 1.38793 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59119 ms - Host latency: 4.70641 ms (end to end 4.72385 ms, enqueue 1.39411 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.58546 ms - Host latency: 4.70263 ms (end to end 4.7179 ms, enqueue 1.39454 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.58618 ms - Host latency: 4.69799 ms (end to end 4.71401 ms, enqueue 1.38189 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59365 ms - Host latency: 4.70694 ms (end to end 4.72247 ms, enqueue 1.40284 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59426 ms - Host latency: 4.70533 ms (end to end 4.71981 ms, enqueue 1.40167 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59406 ms - Host latency: 4.70507 ms (end to end 4.72038 ms, enqueue 1.39868 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59302 ms - Host latency: 4.70604 ms (end to end 4.72096 ms, enqueue 1.39022 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.5956 ms - Host latency: 4.70856 ms (end to end 4.72499 ms, enqueue 1.39016 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59622 ms - Host latency: 4.71029 ms (end to end 4.72501 ms, enqueue 1.39351 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59784 ms - Host latency: 4.70826 ms (end to end 4.72278 ms, enqueue 1.39263 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59805 ms - Host latency: 4.71088 ms (end to end 4.72592 ms, enqueue 1.39367 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59795 ms - Host latency: 4.71144 ms (end to end 4.72837 ms, enqueue 1.3975 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59713 ms - Host latency: 4.70555 ms (end to end 4.72311 ms, enqueue 1.40206 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59601 ms - Host latency: 4.68881 ms (end to end 4.70304 ms, enqueue 1.3645 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.58742 ms - Host latency: 4.69799 ms (end to end 4.71174 ms, enqueue 1.39108 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59344 ms - Host latency: 4.70665 ms (end to end 4.72214 ms, enqueue 1.39278 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59734 ms - Host latency: 4.70482 ms (end to end 4.71854 ms, enqueue 1.39332 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59714 ms - Host latency: 4.70997 ms (end to end 4.72628 ms, enqueue 1.40047 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61176 ms - Host latency: 4.72535 ms (end to end 4.7418 ms, enqueue 1.39706 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61494 ms - Host latency: 4.72816 ms (end to end 4.7448 ms, enqueue 1.39434 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61383 ms - Host latency: 4.72913 ms (end to end 4.7439 ms, enqueue 1.40642 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61697 ms - Host latency: 4.73928 ms (end to end 4.75625 ms, enqueue 1.41578 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61782 ms - Host latency: 4.83635 ms (end to end 4.85382 ms, enqueue 0.316187 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61688 ms - Host latency: 4.81012 ms (end to end 4.82694 ms, enqueue 0.524707 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62682 ms - Host latency: 4.69824 ms (end to end 4.71261 ms, enqueue 1.44248 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62582 ms - Host latency: 4.68247 ms (end to end 4.69834 ms, enqueue 1.57075 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62538 ms - Host latency: 4.68074 ms (end to end 4.69913 ms, enqueue 1.56764 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62548 ms - Host latency: 4.68276 ms (end to end 4.69795 ms, enqueue 1.58025 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62765 ms - Host latency: 4.68287 ms (end to end 4.70229 ms, enqueue 1.56355 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62581 ms - Host latency: 4.68279 ms (end to end 4.69857 ms, enqueue 1.57596 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62439 ms - Host latency: 4.68186 ms (end to end 4.69902 ms, enqueue 1.56841 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62468 ms - Host latency: 4.6818 ms (end to end 4.69666 ms, enqueue 1.57666 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62562 ms - Host latency: 4.68257 ms (end to end 4.6985 ms, enqueue 1.57379 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61575 ms - Host latency: 4.67201 ms (end to end 4.68948 ms, enqueue 1.58751 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61467 ms - Host latency: 4.67125 ms (end to end 4.68734 ms, enqueue 1.57214 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.6139 ms - Host latency: 4.66783 ms (end to end 4.6828 ms, enqueue 1.56377 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61342 ms - Host latency: 4.67017 ms (end to end 4.68673 ms, enqueue 1.57308 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61005 ms - Host latency: 4.66664 ms (end to end 4.68411 ms, enqueue 1.55513 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.59465 ms - Host latency: 4.65076 ms (end to end 4.66672 ms, enqueue 1.56719 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.5959 ms - Host latency: 4.65466 ms (end to end 4.66882 ms, enqueue 1.5709 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.60471 ms - Host latency: 4.66272 ms (end to end 4.68046 ms, enqueue 1.58149 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61157 ms - Host latency: 4.66888 ms (end to end 4.68478 ms, enqueue 1.62261 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61403 ms - Host latency: 4.66865 ms (end to end 4.68436 ms, enqueue 1.61089 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61339 ms - Host latency: 4.66898 ms (end to end 4.6855 ms, enqueue 1.59581 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61229 ms - Host latency: 4.66919 ms (end to end 4.68688 ms, enqueue 1.57114 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61361 ms - Host latency: 4.67148 ms (end to end 4.68864 ms, enqueue 1.57201 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61329 ms - Host latency: 4.66671 ms (end to end 4.6823 ms, enqueue 1.56505 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61117 ms - Host latency: 4.66793 ms (end to end 4.68323 ms, enqueue 1.58344 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61322 ms - Host latency: 4.67312 ms (end to end 4.68901 ms, enqueue 1.57474 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61351 ms - Host latency: 4.6689 ms (end to end 4.68566 ms, enqueue 1.57411 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.6125 ms - Host latency: 4.67083 ms (end to end 4.68839 ms, enqueue 1.56761 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61216 ms - Host latency: 4.66829 ms (end to end 4.68427 ms, enqueue 1.57145 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61221 ms - Host latency: 4.66812 ms (end to end 4.68464 ms, enqueue 1.57742 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61724 ms - Host latency: 4.67236 ms (end to end 4.69009 ms, enqueue 1.58645 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.6342 ms - Host latency: 4.69334 ms (end to end 4.70886 ms, enqueue 1.58391 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.64475 ms - Host latency: 4.70205 ms (end to end 4.71633 ms, enqueue 1.57148 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.64463 ms - Host latency: 4.70203 ms (end to end 4.71699 ms, enqueue 1.56494 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.64092 ms - Host latency: 4.69741 ms (end to end 4.71147 ms, enqueue 1.57456 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62642 ms - Host latency: 4.68474 ms (end to end 4.70034 ms, enqueue 1.56938 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62737 ms - Host latency: 4.68528 ms (end to end 4.70254 ms, enqueue 1.57288 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62422 ms - Host latency: 4.68096 ms (end to end 4.69629 ms, enqueue 1.58088 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62236 ms - Host latency: 4.67939 ms (end to end 4.69592 ms, enqueue 1.56531 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61946 ms - Host latency: 4.67705 ms (end to end 4.69207 ms, enqueue 1.57915 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62383 ms - Host latency: 4.68113 ms (end to end 4.69565 ms, enqueue 1.56628 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62493 ms - Host latency: 4.68076 ms (end to end 4.69827 ms, enqueue 1.57712 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62881 ms - Host latency: 4.68533 ms (end to end 4.70332 ms, enqueue 1.59106 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62705 ms - Host latency: 4.77595 ms (end to end 4.79063 ms, enqueue 1.23335 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.63042 ms - Host latency: 4.83225 ms (end to end 4.84863 ms, enqueue 0.584692 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62356 ms - Host latency: 4.80049 ms (end to end 4.81941 ms, enqueue 0.722852 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61289 ms - Host latency: 4.70488 ms (end to end 4.72126 ms, enqueue 1.16353 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61414 ms - Host latency: 4.67012 ms (end to end 4.6865 ms, enqueue 1.55625 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61272 ms - Host latency: 4.66924 ms (end to end 4.68572 ms, enqueue 1.57039 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61147 ms - Host latency: 4.66743 ms (end to end 4.6821 ms, enqueue 1.57139 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61204 ms - Host latency: 4.66624 ms (end to end 4.68369 ms, enqueue 1.57068 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61245 ms - Host latency: 4.67002 ms (end to end 4.68525 ms, enqueue 1.56729 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61497 ms - Host latency: 4.67256 ms (end to end 4.68835 ms, enqueue 1.5822 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61396 ms - Host latency: 4.6707 ms (end to end 4.6873 ms, enqueue 1.56724 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61487 ms - Host latency: 4.67173 ms (end to end 4.68682 ms, enqueue 1.57334 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61299 ms - Host latency: 4.66936 ms (end to end 4.68381 ms, enqueue 1.57117 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61013 ms - Host latency: 4.66755 ms (end to end 4.68381 ms, enqueue 1.57551 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61992 ms - Host latency: 4.67517 ms (end to end 4.69097 ms, enqueue 1.58848 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62769 ms - Host latency: 4.6877 ms (end to end 4.70227 ms, enqueue 1.57029 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62732 ms - Host latency: 4.68355 ms (end to end 4.70088 ms, enqueue 1.56836 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.62974 ms - Host latency: 4.6852 ms (end to end 4.69971 ms, enqueue 1.56511 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61794 ms - Host latency: 4.67524 ms (end to end 4.68911 ms, enqueue 1.57212 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.61436 ms - Host latency: 4.6708 ms (end to end 4.68591 ms, enqueue 1.5667 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.60833 ms - Host latency: 4.66543 ms (end to end 4.68132 ms, enqueue 1.57961 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.6125 ms - Host latency: 4.66885 ms (end to end 4.68545 ms, enqueue 1.56494 ms)\n", - "[07/25/2022-16:47:12] [I] Average on 10 runs - GPU latency: 1.63328 ms - Host latency: 4.69219 ms (end to end 4.70671 ms, enqueue 1.57573 ms)\n", - "[07/25/2022-16:47:12] [I] \n", - "[07/25/2022-16:47:12] [I] === Performance summary ===\n", - "[07/25/2022-16:47:12] [I] Throughput: 324.544 qps\n", - "[07/25/2022-16:47:12] [I] Latency: min = 4.63513 ms, max = 5.62218 ms, mean = 4.69772 ms, median = 4.68481 ms, percentile(99%) = 4.86353 ms\n", - "[07/25/2022-16:47:12] [I] End-to-End Host Latency: min = 4.64392 ms, max = 5.64146 ms, mean = 4.71364 ms, median = 4.70197 ms, percentile(99%) = 4.88013 ms\n", - "[07/25/2022-16:47:12] [I] Enqueue Time: min = 0.310181 ms, max = 4.23633 ms, mean = 1.46804 ms, median = 1.5567 ms, percentile(99%) = 1.67847 ms\n", - "[07/25/2022-16:47:12] [I] H2D Latency: min = 3.01538 ms, max = 3.23657 ms, mean = 3.06713 ms, median = 3.05371 ms, percentile(99%) = 3.20923 ms\n", - "[07/25/2022-16:47:12] [I] GPU Compute Time: min = 1.578 ms, max = 2.49139 ms, mean = 1.61667 ms, median = 1.61377 ms, percentile(99%) = 1.69678 ms\n", - "[07/25/2022-16:47:12] [I] D2H Latency: min = 0.00561523 ms, max = 0.0319824 ms, mean = 0.0139259 ms, median = 0.0134277 ms, percentile(99%) = 0.0289307 ms\n", - "[07/25/2022-16:47:12] [I] Total Host Walltime: 3.0073 s\n", - "[07/25/2022-16:47:12] [I] Total GPU Compute Time: 1.57787 s\n", - "[07/25/2022-16:47:12] [W] * Throughput may be bound by Enqueue Time rather than GPU Compute and the GPU may be under-utilized.\n", - "[07/25/2022-16:47:12] [W] If not already in use, --useCudaGraph (utilize CUDA graphs where possible) may increase the throughput.\n", - "[07/25/2022-16:47:12] [W] * Throughput may be bound by host-to-device transfers for the inputs rather than GPU Compute and the GPU may be under-utilized.\n", - "[07/25/2022-16:47:12] [W] Add --noDataTransfers flag to disable data transfers.\n", - "[07/25/2022-16:47:12] [I] Explanations of the performance metrics are printed in the verbose logs.\n", - "[07/25/2022-16:47:12] [I] \n", - "&&&& PASSED TensorRT.trtexec [TensorRT v8205] # trtexec --onnx=models/mobilenetv2_qat.onnx --int8 --saveEngine=models/mobilenetv2_qat.trt\n" - ] - } - ], - "source": [ - "# Set static member of TensorQuantizer to use Pytorch’s own fake quantization functions\n", - "quant_nn.TensorQuantizer.use_fb_fake_quant = True\n", - "\n", - "# Exporting to ONNX\n", - "dummy_input = torch.randn(64, 3, 224, 224, device='cuda')\n", - "input_names = [ \"actual_input_1\" ]\n", - "output_names = [ \"output1\" ]\n", - "torch.onnx.export(\n", - " q_model,\n", - " dummy_input,\n", - " \"models/mobilenetv2_qat.onnx\",\n", - " verbose=False,\n", - " opset_version=13,\n", - " do_constant_folding = False)\n", - "\n", - "# Converting ONNX model to TRT\n", - "!trtexec --onnx=models/mobilenetv2_qat.onnx --int8 --saveEngine=models/mobilenetv2_qat.trt" - ] - }, - { - "cell_type": "markdown", - "id": "b5108ef4", - "metadata": {}, - "source": [ - "\n", - "### 6. Evaluation and Benchmarking" - ] - }, - { - "cell_type": "markdown", - "id": "2e5362ca", - "metadata": {}, - "source": [ - "Now, we have converted our model to a TensorRT engine. Great! That means we are ready to load it into the native Python TensorRT runtime to perform inference and evaluate our models." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "790d73a6", - "metadata": {}, - "outputs": [], - "source": [ - "# Import needed libraries and define the evaluate function\n", - "\n", - "import pycuda.driver as cuda\n", - "import pycuda.autoinit\n", - "import time \n", - "\n", - "def evaluate_trt(engine_path, dataloader, batch_size):\n", - " \n", - " def predict(batch): # result gets copied into output\n", - " # transfer input data to device\n", - " cuda.memcpy_htod_async(d_input, batch, stream)\n", - " # execute model\n", - " context.execute_async_v2(bindings, stream.handle, None)\n", - " # transfer predictions back\n", - " cuda.memcpy_dtoh_async(output, d_output, stream)\n", - " # syncronize threads\n", - " stream.synchronize()\n", - " return output\n", - " \n", - " with open(engine_path, 'rb') as f, trt.Runtime(trt.Logger(trt.Logger.WARNING)) as runtime, runtime.deserialize_cuda_engine(f.read()) as engine, engine.create_execution_context() as context:\n", - " total = 0\n", - " correct = 0\n", - " for images, labels in val_dataloader:\n", - " input_batch = images.numpy()\n", - " labels = labels.numpy()\n", - " output = np.empty([batch_size, 10], dtype = np.float32) \n", - "\n", - " # Now allocate input and output memory, give TRT pointers (bindings) to it:\n", - " d_input = cuda.mem_alloc(1 * input_batch.nbytes)\n", - " d_output = cuda.mem_alloc(1 * output.nbytes)\n", - " bindings = [int(d_input), int(d_output)]\n", - "\n", - " stream = cuda.Stream()\n", - " preds = predict(input_batch)\n", - " pred_labels = []\n", - " for pred in preds:\n", - " pred_label = (-pred).argsort()[0]\n", - " pred_labels.append(pred_label)\n", - "\n", - " total += len(labels)\n", - " correct += (pred_labels == labels).sum()\n", - " \n", - " return correct/total" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "f3fd416f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 TRT Baseline accuracy: 71.13%\n" - ] - } - ], - "source": [ - "# Evaluate and benchmark the performance of the baseline TRT model (TRT FP32 Model)\n", - "batch_size = 64\n", - "test_acc = evaluate_trt(\"models/mobilenetv2_base.trt\", val_dataloader, batch_size)\n", - "print(\"Mobilenetv2 TRT Baseline accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "a5ec3a81", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 TRT PTQ accuracy: 68.11%\n" - ] - } - ], - "source": [ - "# Evaluate the PTQ model\n", - "batch_size = 64\n", - "test_acc = evaluate_trt(\"models/mobilenetv2_ptq.trt\", val_dataloader, batch_size)\n", - "print(\"Mobilenetv2 TRT PTQ accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "eb95977d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Mobilenetv2 TRT PTQ accuracy: 70.31%\n" - ] - } - ], - "source": [ - "# Evaluate the QAT model\n", - "batch_size = 64\n", - "test_acc = evaluate_trt(\"models/mobilenetv2_qat.trt\", val_dataloader, batch_size)\n", - "print(\"Mobilenetv2 TRT PTQ accuracy: {:.2f}%\".format(100 * test_acc))" - ] - }, - { - "cell_type": "markdown", - "id": "20c82807", - "metadata": {}, - "source": [ - "Compared to the TRT FP32 model, we observe a speedup of ~3.7x with only a ~0.8% loss in accuracy. " - ] - }, - { - "cell_type": "markdown", - "id": "52f311fb", - "metadata": {}, - "source": [ - "\n", - "## 7. Conclusion\n", - "We put together all the observations that were made in this notebook. Note that, these numbers can vary with every run due to the stochastic nature of the training process, but a similar pattern can still be noticed.\n", - "\n", - "| Model | Accuracy | Performance |\n", - "| ------------------------ | -------- | ----------- |\n", - "| Baseline MobileNetv2 | 71.11% | 11.92ms |\n", - "| Base + TRT
(TRT FP32) | 71.13% | 5.95ms |\n", - "| PTQ + TRT
(TRT int8) | 68.11% | 1.59ms |\n", - "| QAT+TRT
(TRT INT8) | 70.31% | 1.61ms |" - ] - }, - { - "cell_type": "markdown", - "id": "91dfc2c1", - "metadata": {}, - "source": [ - "\n", - "## 8. References\n", - "* Very Deep Convolution Networks for large scale Image Recognition\n", - "* Achieving FP32 Accuracy for INT8 Inference Using Quantization Aware Training with NVIDIA TensorRT\n", - "* Pytorch-quantization toolkit from NVIDIA\n", - "* Pytorch quantization toolkit userguide\n", - "* Quantization basics\n", - "* TensorRT Developer Guide" - ] - } - ], - "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.8.13" - }, - "vscode": { - "interpreter": { - "hash": "b8290132a159428f0004735847c0b4016c8a5153e62fd80cc71ad5cd485f05b0" - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}