diff --git a/.gitignore b/.gitignore
index 45c8c19..e6bf6ce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,7 +11,9 @@ test-trainer
bert_dataset
trained_model
results
+results_qlora
output
+qlora_final_model
src
tmp
diff --git a/README.md b/README.md
index 9091e98..5670640 100644
--- a/README.md
+++ b/README.md
@@ -16,4 +16,4 @@ A sandbox environment to experiment with large language models and various NLP t
- **Fine-tuning Series**: Develop a series of proof-of-concept (POC) repositories for fine-tuning LLMs, hosted on GitHub (e.g.,[ft2](https://github.com/locchh/ft2), [ft3](https://github.com/locchh/ft3), etc.). 🔥
- **LLM Blog**: Write and publish insightful blog posts on LinkedIn, sharing perspectives and research related to LLMs (e.g.,[Artificial Intelligence For Programming](https://www.linkedin.com/posts/chuong-loc_artificialintelligence-softwaredevelopment-activity-7278039943480856576-2o3E?utm_source=share), [The Limitation of Context](https://www.linkedin.com/posts/chuong-loc_%F0%9D%90%93%F0%9D%90%A1%F0%9D%90%9E-%F0%9D%90%8B%F0%9D%90%A2%F0%9D%90%A6%F0%9D%90%A2%F0%9D%90%AD%F0%9D%90%AC-%F0%9D%90%A8%F0%9D%90%9F-%F0%9D%90%86%F0%9D%90%A2%F0%9D%90%AF%F0%9D%90%A2%F0%9D%90%A7%F0%9D%90%A0-%F0%9D%90%82%F0%9D%90%A8%F0%9D%90%A7%F0%9D%90%AD%F0%9D%90%9E%F0%9D%90%B1%F0%9D%90%AD-activity-7274037081000034304-tTY4?utm_source=share), etc.). 📝🌐
- **POC Repositories**: Create and share repositories showcasing new technologies and quick demonstrations for easy exploration (e.g.,[lr4lg](https://github.com/locchh/lr4lg), [debugger](https://github.com/locchh/debugger), etc.). 📂
-- **Build Continuously Growing Repositories**: Develop and maintain long-term, evolving repositories for ongoing projects (e.g., [Synthflow](https://github.com/locchh/synthflow), [Antflow](https://github.com/locchh/antflow), [Antelligence](https://github.com/locchh/antelligence), etc.). 🔄
+- **Build Continuously Growing Repositories**: Develop and maintain long-term, evolving repositories for ongoing projects (e.g., [Synthflow](https://github.com/locchh/synthflow), [Antflow](https://github.com/locchh/antflow), [Antelligence](https://github.com/locchh/antelligence), etc.). 🔄
\ No newline at end of file
diff --git a/docs/render.html b/docs/generative_AI _engineering_and_fine-tuning_transformers.html
similarity index 100%
rename from docs/render.html
rename to docs/generative_AI _engineering_and_fine-tuning_transformers.html
diff --git a/docs/instruction_tuning_best_practices.md b/docs/instruction_tuning_best_practices.md
new file mode 100644
index 0000000..b5fd7a5
--- /dev/null
+++ b/docs/instruction_tuning_best_practices.md
@@ -0,0 +1,43 @@
+
+# Best Practices for Instruction-Tuning Large Language Models
+
+Instruction-tuning is a powerful fine-tuning approach that adapts large language models (LLMs) to follow specific instructions more effectively, enhancing their usefulness in practical applications. Below, we outline best practices for optimizing instruction-tuning in LLMs.
+
+## Data Selection for Instruction-Tuning
+
+High-quality data is crucial for effective instruction-tuning. The selected data should reflect diverse instructions and responses to help the model generalize and respond accurately across varied scenarios.
+
+- **Diverse Dataset Collection**: Use datasets that cover a wide range of topics, contexts, and instructions. Including different prompt types and response styles helps the model handle a broader set of instructions.
+- **Balance of Specialized and General Data**: While it's beneficial to include domain-specific instructions, balancing this with general data improves versatility, allowing the model to perform well across various domains.
+
+## Optimize Prompt Engineering
+
+Effective prompt engineering enables the model to understand and respond appropriately to different instructions.
+
+- **Contextual Prompt Design**: Design prompts that reflect real-world use cases and specific contexts the model might encounter. For instance, instructions could vary in formality, complexity, or specificity, helping the model adapt to different audiences.
+- **Testing Prompt Variability**: Experiment with different prompts to assess how well the model generalizes to unseen instructions. This helps ensure that the model doesn't overly rely on specific patterns or structures.
+
+## Measure Response Consistency
+
+Consistency in response quality is key to creating a reliable model.
+
+- **Evaluate Accuracy and Consistency**: Regularly test the model with similar instructions to measure consistency. Consistent and accurate responses to repeated instructions indicate a well-tuned model.
+- **Monitor Task-Specific Performance**: If the model is tuned for a specialized application, evaluate its performance across task-specific scenarios to ensure consistency within that context.
+
+## Limit Overfitting on Instruction Style
+
+Overfitting on specific instruction styles or tones can reduce the model’s adaptability.
+
+- **Style Variety in Instructions**: Include a variety of tones and structures in the instruction dataset to avoid making the model too reliant on specific formats.
+- **Balance Precision and Flexibility**: Fine-tune the model to be precise in its responses without limiting its ability to adapt to different instruction types. This balance helps create a model that is accurate yet flexible in understanding various instructions.
+
+## Implement Regular Evaluation Metrics
+
+Regular evaluation of the fine-tuned model ensures it meets the desired quality standards.
+
+- **Use Metrics for Instruction Adherence**: Implement metrics that evaluate how closely the model's responses align with provided instructions.
+- **Human Review and Quality Checks**: Regular human review of model responses provides insights that are difficult to capture with automated metrics, adding another layer of evaluation for adherence and appropriateness.
+
+## Conclusion
+
+Following these best practices for instruction-tuning can significantly enhance an LLM's performance, enabling it to respond more accurately and flexibly to a wide array of instructions. By focusing on quality data, diverse prompt engineering, and regular evaluation, you can create an instruction-tuned model that is both effective and reliable in real-world applications.
diff --git a/docs/peft.md b/docs/peft.md
new file mode 100644
index 0000000..c64ae06
--- /dev/null
+++ b/docs/peft.md
@@ -0,0 +1,136 @@
+
+### **LoRA (Low-Rank Adaptation):**
+
+- **Core Idea:**
+ LoRA introduces trainable low-rank matrices into the model, targeting specific weight matrices (e.g., attention layers). Instead of fine-tuning the full model, LoRA adds a low-rank decomposition to certain layers and fine-tunes only these low-rank matrices.
+
+- **Implementation:**
+ - Adds two small low-rank matrices \( A \) and \( B \) to the original weights \( W \) of the model, where \( \Delta W = AB^T \).
+ - The original pre-trained weights \( W \) remain frozen during training, and only \( A \) and \( B \) are updated.
+
+- **Advantages:**
+ - Memory efficient: Fewer parameters are updated.
+ - Doesn't require modifying the model architecture significantly.
+ - Easy to integrate into transformer-based models.
+
+- **Use Case:**
+ - Primarily used for fine-tuning language models (e.g., LLaMA, GPT).
+ - Common in NLP and generative tasks.
+
+---
+
+### **Adapters:**
+
+- **Core Idea:**
+ Adapters are small trainable modules inserted into the layers of a pre-trained model. These modules are trained while keeping the original model weights frozen.
+
+- **Implementation:**
+ - Adapters are typically lightweight neural network modules (e.g., feedforward layers) inserted between layers of a model, such as attention or feedforward blocks.
+ - During training, only the parameters of the adapters are updated, while the rest of the model remains fixed.
+
+- **Advantages:**
+ - Modular: Different tasks can have separate adapters without modifying the original model.
+ - Memory efficient: Reduces the need to fine-tune the entire model.
+ - Easy task-switching by replacing adapters.
+
+- **Use Case:**
+ - Popular in multi-task learning and scenarios requiring task-specific fine-tuning.
+ - Useful in both NLP and multimodal applications.
+
+---
+
+### **Key Differences:**
+
+| Feature | LoRA | Adapters |
+|-----------------------|-------------------------------|--------------------------------|
+| **Architecture** | Adds low-rank matrices to weight updates. | Inserts small modules between layers. |
+| **Frozen Parameters** | Original model weights are frozen. | Original model weights are frozen. |
+| **Parameter Updates** | Updates low-rank matrices \( A, B \). | Updates adapter parameters only. |
+| **Overhead** | Minimal: modifies specific weight matrices. | Moderate: introduces new modules into the model. |
+| **Use Cases** | NLP fine-tuning, generative tasks. | Multi-task learning, task-specific adaptation. |
+
+---
+
+Both methods are highly efficient and suitable for scenarios where training large models directly is infeasible. However, the choice depends on your use case, such as the number of tasks, modularity requirements, and computational constraints.
+
+
+### **1. LoRA for Fine-Tuning**
+
+#### **Advantages:**
+
+1. **Efficiency:**
+ - LoRA modifies only a small subset of trainable parameters (the low-rank matrices), making it highly parameter-efficient.
+2. **Minimal Overhead:**
+ - No additional modules are inserted into the architecture; only the weight matrices of certain layers are modified.
+3. **Better for Single Tasks:**
+ - Works well for scenarios where you want to fine-tune on a single or specific domain/task without modularity concerns.
+4. **Speed:**
+ - Training and inference are faster compared to adapters due to the lightweight nature of LoRA’s modifications.
+
+#### **Use Cases:**
+- Single-task fine-tuning.
+- Resource-constrained environments (e.g., limited GPU memory).
+- Generative tasks such as text generation or summarization.
+
+#### **Limitations:**
+- Less modular: Difficult to manage multiple tasks or transfer fine-tuned components across models.
+- Potentially less effective when task-switching is required.
+
+---
+
+### **2. Adapters for Fine-Tuning**
+
+#### **Advantages:**
+
+1. **Modularity:**
+ - Adapters are ideal for multi-task setups since each task can have its own adapter, enabling seamless task switching.
+2. **Transfer Learning:**
+ - Adapters trained on one task can be reused or adapted for related tasks, making them versatile.
+3. **Isolation:**
+ - Fine-tuning with adapters avoids interference between tasks, which is especially useful in multi-task or federated learning setups.
+
+#### **Use Cases:**
+- Multi-task learning or scenarios requiring task switching.
+- Incremental fine-tuning on new tasks/domains.
+- Applications where modularity and reusability of components are important.
+
+#### **Limitations:**
+- Higher computational overhead compared to LoRA due to added modules.
+- Slightly more complex integration into existing architectures.
+
+---
+
+### **Comparison Table:**
+
+| Feature | LoRA | Adapters |
+|--------------------------|---------------------------------|---------------------------------|
+| **Parameter Efficiency** | High | Moderate |
+| **Modularity** | Low | High |
+| **Fine-Tuning Overhead** | Minimal | Moderate |
+| **Use Case** | Single-task fine-tuning | Multi-task or modular setups |
+| **Scalability** | Limited for multiple tasks | Scalable for multi-task setups |
+| **Inference Efficiency** | Higher | Lower due to added modules |
+
+---
+
+### **What’s Better?**
+
+- **LoRA** is generally better if:
+ - You are working on a single task or domain.
+ - You prioritize efficiency and minimal computational overhead.
+ - You have limited resources (e.g., GPU memory).
+
+- **Adapters** are better if:
+ - You need to fine-tune on multiple tasks or domains.
+ - Task modularity and reusability are important.
+ - You want a framework that supports incremental learning.
+
+---
+
+### **Best Practices:**
+- **Experimentation:**
+ If resources allow, experiment with both methods to see which performs better for your specific task.
+- **Hybrid Approaches:**
+ Recent work combines both methods for more efficient and effective fine-tuning.
+- **Task-Specific Considerations:**
+ Consider the complexity of the task, the expected level of generalization, and memory constraints.
\ No newline at end of file
diff --git a/docs/render.pdf b/docs/soft_prompts.pdf
similarity index 100%
rename from docs/render.pdf
rename to docs/soft_prompts.pdf
diff --git a/notebooks/LLM_Specialization/Adapters in PyTorch.ipynb b/notebooks/LLM_Specialization/Adapters in PyTorch.ipynb
deleted file mode 100644
index 7f236d0..0000000
--- a/notebooks/LLM_Specialization/Adapters in PyTorch.ipynb
+++ /dev/null
@@ -1,3389 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "b75e0832-1651-4d74-85dd-14fd49ef56e3",
- "metadata": {},
- "source": [
- "
\n",
- "\n",
- "# **Adapters in PyTorch**\n",
- "\n",
- "Estimated time needed: **45** minutes\n",
- "\n",
- "**_Note to advanced users_: If you are already familiar with classical fine-tuning and you only want to see the section that relates to adapters, skip forward to Adapters and run all of the cells above that section by going to _Run --> Run All Above Selected Cell_**\n",
- "\n",
- "You can fine-tune a neural network in several ways. Common strategies include adjusting only the final layer or fine-tuning all layers. However, these methods have their drawbacks: fine-tuning just the final layer often leads to less than optimal results, while fine-tuning all layers can be very time-consuming.\n",
- "\n",
- "To address these issues, researchers have developed various parameter efficient fine-tuning (PEFT) techniques. One such technique involves the use of adapters. Adapters enable modular training, where small, task-specific modules are trained within the model without changing the pre-existing pretrained parameters. This approach efficiently tailors the model to new tasks with a reduced risk of overfitting. However, adapters are not a cure-all solution. While they are less likely to overfit and are computationally efficient, they might not always reach the same level of accuracy as full model fine-tuning, particularly if the task necessitates substantial changes from the pretrained model's original capabilities.\n",
- "\n",
- "In this hands-on lab, you learn how to apply an adapter to a transformer-based neural network that has been trained on the AG News data set, with the aim of using this model on the IMDB data set. You also evaluate and compare the performance of this method with that of a fully fine-tuned model and a model where only the last layer is fine-tuned.\n",
- "\n",
- "---\n",
- "\n",
- "# __Table of contents__\n",
- "\n",
- "\n",
- "
\n",
- "\n",
- "\n",
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9e4d071d-35d8-4d69-9168-a40d25df2205",
- "metadata": {},
- "source": [
- "# Objectives\n",
- "\n",
- "After completing this lab, you are able to:\n",
- "\n",
- "- Define and pretrain a transformer-based neural network using PyTorch for a classification task [Optional]\n",
- "- Fully fine-tune the pretrained model for a different classification task [Optional]\n",
- "- Compare results by fine-tuning only the last layer of the pretrained model [Optional]\n",
- "- Understand how adapters work\n",
- "- Apply adapters to linear layers in a neural network\n",
- "- Train a neural network in a parameter efficient way by training just the adapted layers\n",
- "\n",
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "35a85867-b5fa-4780-b512-35bdf829b33c",
- "metadata": {},
- "source": [
- "# Setup\n",
- "\n",
- "### Install required libraries\n",
- "\n",
- "For this lab, you use the following libraries, which are __not__ preinstalled in the Skills Network Labs environment. __You must run the code in the following cell__ to install them.\n",
- "\n",
- "```bash\n",
- "!pip install --upgrade portalocker==2.8.2 torchtext==0.17.0 torchdata==0.7.1 pandas==2.2.2 matplotlib==3.9.0 scikit-learn==1.5.0 torch==2.2.0 numpy==1.26.4\n",
- "```\n",
- "\n",
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a2d7c12f-2141-4af9-91a8-b0c1c8088d66",
- "metadata": {},
- "source": [
- "### Import required libraries\n",
- "\n",
- "The following code imports the required libraries.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "81927908-a8c5-42d6-b24c-97b8b13a42e6",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "True\n",
- "Tesla P40\n",
- "Import Successfully!\n"
- ]
- }
- ],
- "source": [
- "# Environment setup\n",
- "import os\n",
- "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
- "\n",
- "# Suppress warnings\n",
- "import warnings\n",
- "warnings.filterwarnings('ignore')\n",
- "def warn(*args, **kwargs):\n",
- " pass\n",
- "warnings.warn = warn\n",
- "\n",
- "# PyTorch and related libraries\n",
- "import torch\n",
- "from torch import nn\n",
- "from torch.utils.data import DataLoader, Dataset\n",
- "from torch.utils.data.dataset import random_split\n",
- "from torch.nn.utils.rnn import pad_sequence\n",
- "\n",
- "# TorchText for NLP tasks\n",
- "from torchtext.datasets import AG_NEWS, IMDB\n",
- "from torchtext.data.utils import get_tokenizer\n",
- "from torchtext.vocab import build_vocab_from_iterator, GloVe, Vectors\n",
- "from torchtext.data.functional import to_map_style_dataset\n",
- "\n",
- "# Utility libraries\n",
- "import time\n",
- "from itertools import accumulate\n",
- "import math\n",
- "import pickle\n",
- "import io\n",
- "from urllib.request import urlopen\n",
- "import tarfile\n",
- "import tempfile\n",
- "\n",
- "# Data manipulation and visualization\n",
- "import numpy as np\n",
- "import pandas as pd\n",
- "import matplotlib.pyplot as plt\n",
- "from tqdm import tqdm\n",
- "\n",
- "# Jupyter Notebook utilities\n",
- "from IPython.display import Markdown as md\n",
- "\n",
- "# PyTorch-specific configurations\n",
- "torch.set_num_threads(1)\n",
- "\n",
- "# CUDA-related checks\n",
- "print(torch.cuda.is_available())\n",
- "print(torch.cuda.get_device_name())\n",
- "\n",
- "print(\"Import Successfully!\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5e710480-51b4-46c7-a3b4-5c80021007b2",
- "metadata": {},
- "source": [
- "### Define helper functions\n",
- "\n",
- "The following code shows some helper functions to help with plotting, saving, and loading files. These functions are not the main focus of this lab, so you do not have to dwell on these too long. However, do run the cells in this section to define these helper functions.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "57d49c2a-d309-4608-8e45-b9fa8ec63cbd",
- "metadata": {},
- "outputs": [],
- "source": [
- "def plot(COST,ACC):\n",
- "\n",
- " fig, ax1 = plt.subplots()\n",
- " color = 'tab:red'\n",
- " ax1.plot(COST, color=color)\n",
- " ax1.set_xlabel('epoch', color=color)\n",
- " ax1.set_ylabel('total loss', color=color)\n",
- " ax1.tick_params(axis='y', color=color)\n",
- "\n",
- " ax2 = ax1.twinx()\n",
- " color = 'tab:blue'\n",
- " ax2.set_ylabel('accuracy', color=color) # you already handled the x-label with ax1\n",
- " ax2.plot(ACC, color=color)\n",
- " ax2.tick_params(axis='y', color=color)\n",
- " fig.tight_layout() # otherwise the right y-label is slightly clipped\n",
- "\n",
- " plt.show()\n",
- "\n",
- "\n",
- "def save_list_to_file(lst, filename):\n",
- " \"\"\"\n",
- " Save a list to a file using pickle serialization.\n",
- "\n",
- " Parameters:\n",
- " lst (list): The list to be saved.\n",
- " filename (str): The name of the file to save the list to.\n",
- "\n",
- " Returns:\n",
- " None\n",
- " \"\"\"\n",
- " with open(filename, 'wb') as file:\n",
- " pickle.dump(lst, file)\n",
- "\n",
- "\n",
- "def load_list_from_file(filename):\n",
- " \"\"\"\n",
- " Load a list from a file using pickle deserialization.\n",
- "\n",
- " Parameters:\n",
- " filename (str): The name of the file to load the list from.\n",
- "\n",
- " Returns:\n",
- " list: The loaded list.\n",
- " \"\"\"\n",
- " with open(filename, 'rb') as file:\n",
- " loaded_list = pickle.load(file)\n",
- " return loaded_list"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fb4827b6-33c9-4370-bfbf-983d89623c98",
- "metadata": {},
- "source": [
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0d6f6a86-020b-4ed5-8c52-5fa69dceca97",
- "metadata": {},
- "source": [
- "# Positional encodings\n",
- "\n",
- "Positional encodings play a pivotal role in transformers and various sequence-to-sequence models, aiding in conveying critical information regarding the positions or sequencing of elements within a given sequence. To illustrate, let's examine the sentences: \"He painted the car red\" and \"He painted the red car.\" Despite their distinct meanings, it's worth noting that the embeddings for these sentences remain identical in the absence of positional encodings. The following class defines positional encodings by inheriting from PyTorch's `Module` class.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "88c9cebf-7dbe-46d0-81d2-5a116120c374",
- "metadata": {},
- "outputs": [],
- "source": [
- "class PositionalEncoding(nn.Module):\n",
- " \"\"\"\n",
- " https://pytorch.org/tutorials/beginner/transformer_tutorial.html\n",
- " \"\"\"\n",
- "\n",
- " def __init__(self, d_model, vocab_size=5000, dropout=0.1):\n",
- " super().__init__()\n",
- " self.dropout = nn.Dropout(p=dropout)\n",
- "\n",
- " pe = torch.zeros(vocab_size, d_model)\n",
- " position = torch.arange(0, vocab_size, dtype=torch.float).unsqueeze(1)\n",
- " div_term = torch.exp(\n",
- " torch.arange(0, d_model, 2).float()\n",
- " * (-math.log(10000.0) / d_model)\n",
- " )\n",
- " pe[:, 0::2] = torch.sin(position * div_term)\n",
- " pe[:, 1::2] = torch.cos(position * div_term)\n",
- " pe = pe.unsqueeze(0)\n",
- " self.register_buffer(\"pe\", pe)\n",
- "\n",
- " def forward(self, x):\n",
- " x = x + self.pe[:, : x.size(1), :]\n",
- " return self.dropout(x)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "aadc814f-d060-47be-963f-c28cfd0618e4",
- "metadata": {},
- "source": [
- "# Import IMDB data set\n",
- "\n",
- "The following code loads the IMDB data set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "c479b278-01b9-4863-9821-528b1607a74b",
- "metadata": {},
- "outputs": [],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/35t-FeC-2uN1ozOwPs7wFg.gz')\n",
- "tar = tarfile.open(fileobj=io.BytesIO(urlopened.read()))\n",
- "tempdir = tempfile.TemporaryDirectory()\n",
- "tar.extractall(tempdir.name)\n",
- "tar.close()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ec7531bd-8b33-45d9-8061-9de43bd188b8",
- "metadata": {},
- "source": [
- "## IMDB data set overview\n",
- "\n",
- "The **IMDB data set** contains movie reviews from the Internet Movie Database (IMDB) and is commonly used for binary sentiment classification tasks. It's a popular data set for training and testing models in natural language processing (NLP), particularly in the context of sentiment analysis.\n",
- "\n",
- "### Data set composition\n",
- "\n",
- "- **Reviews**: The data set consists of 50,000 movie reviews, divided evenly into 25,000 training and 25,000 testing samples.\n",
- "- **Sentiment labels**: Each review is labeled as either positive or negative, indicating the sentiment expressed in the review. The data set is balanced, with an equal number of positive and negative reviews in both the training and testing sets.\n",
- "- **Text content**: Reviews are presented as plain text and have been preprocessed to some extent. For example, HTML tags are removed, but the text retains its original punctuation and capitalization.\n",
- "- **Usage**: The data set is commonly used to train models for binary sentiment classification, where the goal is to predict whether a given review is positive or negative based on its text content.\n",
- "\n",
- "### Applications\n",
- "\n",
- "- **Sentiment analysis**: The primary application of the IMDB data set is in sentiment analysis, where it serves as a benchmark for various text classification algorithms.\n",
- "- **Natural language processing**: The data set is widely used in NLP research and applications, providing a basis for testing the effectiveness of different models and approaches in understanding human language.\n",
- "\n",
- "### Challenges\n",
- "\n",
- "The data set is small, so it's hard to train a model from scratch.\n",
- "\n",
- "The following class is defined to traverse the IMDB data set. The need to define this class arises from the fact that the IMDB data set is split across a large number of files.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "51bc66a7-506d-4ac4-aa0b-1813c6a0e4c5",
- "metadata": {},
- "outputs": [],
- "source": [
- "class IMDBDataset(Dataset):\n",
- " def __init__(self, root_dir, train=True):\n",
- " \"\"\"\n",
- " root_dir: The base directory of the IMDB dataset.\n",
- " train: A boolean flag indicating whether to use training or test data.\n",
- " \"\"\"\n",
- " self.root_dir = os.path.join(root_dir, \"train\" if train else \"test\")\n",
- " self.neg_files = [os.path.join(self.root_dir, \"neg\", f) for f in os.listdir(os.path.join(self.root_dir, \"neg\")) if f.endswith('.txt')]\n",
- " self.pos_files = [os.path.join(self.root_dir, \"pos\", f) for f in os.listdir(os.path.join(self.root_dir, \"pos\")) if f.endswith('.txt')]\n",
- " self.files = self.neg_files + self.pos_files\n",
- " self.labels = [0] * len(self.neg_files) + [1] * len(self.pos_files)\n",
- " self.pos_inx=len(self.pos_files)\n",
- "\n",
- " def __len__(self):\n",
- " return len(self.files)\n",
- "\n",
- " def __getitem__(self, idx):\n",
- " file_path = self.files[idx]\n",
- " label = self.labels[idx]\n",
- " with open(file_path, 'r', encoding='utf-8') as file:\n",
- " content = file.read()\n",
- " return label, content"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6bb31d42-b20e-413d-96f6-7d680eb83bb2",
- "metadata": {},
- "source": [
- "The following code uses the `IMDBDataset` class previously defined to create iterators for the train and test data sets. In the latter part of the cell, you can return 20 examples from the train set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "01513044-f657-4203-b933-bad10ebeb4c8",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "(0, 'It is important not to be insulted by lack of logic or common sense and those who have any \"gray matters\" will agree that this movie just doesn\\'t work.
The problems lay in the direction, cast selections and lack of depth in the character building. The word comedy was very hard thing to say when i expect to laugh when these words are used. Let\\'s look at the problems in direction/script.
Brother and sister both in their mid 30\\'s seem to be well adjusted. They meet a complete stranger at a park and Heather Graham character walks up to her and asks the most intimate questions that even half sane person would be running the other way or at least scream for a police officer. He then awkwardly walks over and makes some stupid statements and she falls for him. Then after ONE date were they all go out together he falls in love with her and decides to get married in Vegas in a week\\'s time???? Hello does anyone feel stupid yet? He goes out with thousands of women and he meets this one person who says about 10 words that WE see on the screen and he wants to marry her. Not only was there no chemistry it just doesn\\'t make sense. Sure it\\'s a romantic comedy and I want to believe it could, but the direction made it completely flat.
Now Heather falls head over heels with her too and when Heather Graham and Bridget Moynahan (very shallow character) kiss or more to the point it was sloppiest kiss ever that chemistry MIGHT be there. I found it unromantic and unfunny and while many say Heather cannot act i think the reality is Heather was clearly the wrong person for this role.
This was Sue Kramer debut as a director and to me it was just too much for her to chew. It would take a lot of craft to make this movie work and IMHO it could be done with better writers and casting and direction.')\n",
- "(0, \"THE SCREAMING SKULL (1 outta 5 stars) This movie boasts some pretty cool opening credits (an offscreen narrator warning that movie patrons will be offered a free burial if they die of fright watching this movie, a scary shot of a skull emerging from a placid pool and the ubiquitous scary music) but, sadly, the movie is all downhill from there. A widowed man takes his new bride to his secluded mansion... admonishing his servants and friends that the new Mrs. has a very fragile disposition due to a tragedy in her past. Well, in no time at all she begins to see and hear mysterious things that no one else can. Her husband assures her that it's all merely in her mind and... well, you can probably see where this all is going. You will have figured out what's going on long before our hapless heroine... because you have probably seen the exact same plot in hundreds of other movies and TV shows (and done better, too). To add to the movie's myriad transgressions, most cuts of this movie (on numerous cheap DVD compilations) seem to be missing a few key scenes. You see the heroine slowly walking towards the window... she goes to open it... you know she is going to see something scary... and then... suddenly the scene cuts to her sobbing in her husband's arms. So what did she see??? I guess we'll never know.\")\n",
- "(0, \"
Whether any indictment was intended must be taken into consideration. If in the year 2000 there were still rifts of feeling between Caucasian and Afro-Americans in Georgia, such as shown in this film, obviously there remains a somewhat backward mentality among a lot of people out there. It is rather hypocritical, to say the least, if everyone adores Halle Berry, Whoopie Goldberg, Beyoncé, Noemi Campbell, Denzel Washington, Will Smith, et. al., whilst out in the backs there persist manifest racial divides.
White grandmother suddenly gets black grand-daughter thrust upon her, only to meet up with black grandfather in a very white social backwater. The story is sweet, not lacking tragic overtones, and eminently predictable as in most of these kinds of TV films, though the final scene has you guessing............ will he? won't he.......?
Gena Rowlands in her typical style offers a sincere rendering, and Louis Gossett is a good match for her; the little Penny Bae fortunately does not steal the show.
A `nice' way of relaxing after Sunday lunch without having to force your mind too much, though you might just find yourself having a little siesta in the middle of it.\")\n",
- "(0, 'First, it takes a full half hour to get Hackman out of jail and to start doing the job. What a waste of time, we all know Hackman is getting out to do some job for his masters, why waste almost a third of the movie on these sequences. Then Hackman stays in a hotel and the story arc again goes nowhere, simply proving to us that Hackman is under close watch and anything he says or does is know by the masters. Again, another 20 minutes. Then more wasted time showing the reunion with his wife. All of this should have taken 10-15 minutes at most simply as a set-up for the real action, intrigue and plot twists. By the time the real action gets going, I was so bored that I just wanted the movie to end. Hackman is great as usual, and the other actors as well, but this is a dud of the first magnitude.')\n",
- "(0, \"Banned as a 'Video Nasty' in the UK, Unhinged has naturally gained quite a bit of notoriety. However, the most shocking thing I found about the film was its amateurishness in all departments. The bloodletting I could handle: the terrible acting, shoddy editing, awful direction, lousy script and abysmal soundtrack were much harder to take.
Three girls on their way to a music festival crash into a ravine during a storm. They are rescued by a friendly stranger who takes them to a nearby house. The owner of the house, a batty old lady, and her spinster daughter, welcome the girls in, allowing them to stay for a few days in order to recuperate. However, someone doesn't want the girls to leave\\x97ever! One by one they fall victim to an unseen assailant.
Taking a long time to get going and featuring some of the worst performances ever in a horror film (and that takes some doing), Unhinged is a truly awful film. The music is a total mess (it sounds like a three year old has been let loose on a synthesiser) and as such, it complements the movie perfectly. Only a couple of bloody scenes towards the end and a bit of gratuitous nudity save Unhinged from getting the lowest possible score.
If you are a horror completist (and unfortunately, I am), you will want to see this in order to tick it off the Video Nasty watch-list. But be warned\\x97it is really, really bad.\")\n",
- "(0, \"When great director/actor combinations are talked about the team of J. Lee Thompson and Charles Bronson is not usually mentioned. Probably because the output of nine joint ventures between the two of them runs the gamut from the really good action entertainment to the mediocre. Unfortunately Kinjite: Forbidden Subjects falls in the latter.
That's sad because Kinjite could have been a whole lot better. But for the life of me I don't understand why it was necessary to make the father of the missing Japanese girl, a guy used to getting some cheap jollies because the romance in his marriage has run out. That might have been good for another film altogether, but it served no purpose here.
A straightforward cop drama with Charles Bronson as a vice cop who's seen a bit too much in his line of work and has a strong prejudice against orientals. That part could also have used a little explaining as well. But he's going to have to overcome it if he and patient partner Perry Lopez are going to locate a captured Japanese school girl.
Bronson's time in the vice squad have told him exactly where to look for the kidnapper. A stylish, murderous pimp played by Jaime Fernandez is the guy and he and Bronson have some history. In fact in the film's best scene, Bronson made him eat an expensive rolex watch and set his car on fire.
At one point Fernandez happens to spot Bronson and Lopez in an all night delicatessen and this being after his rolex snack, he sprays the place with an Uzi killing everyone, but Bronson and Lopez. I really think that little incident would have had more than a couple vice cops from the LAPD after Fernandez. But that's another terribly big hole in the plot.
Still there is a very rough justice in the end for Fernandez. I wish the whole film had been better though. This was the last film of the Bronson-Thompson team and J. Lee Thompson's last as a director. He should have gone out with something better.\")\n",
- "(0, 'First off, let me say that I am a great believer in Fanpro stuff. I see it as a way to continue a good show long after it has been cancelled. Star Trek Voyages and Star Wars Revelations are examples of decent efforts. So I have a soft-spot for fanpro stuff that means I\\'ll overlook things that I would ordinarily slate badly.
So on to ST: HF. Well, first off the good things. Enthusiasm is a major part of making any show believable and, for the most part, the crew of the various ships all seem to be having a good time with their roles. Next, the effects aren\\'t bad for a home-brew effort, with nothing to make you really wince. The stories aren\\'t too bad either. Nothing particularly innovative, but solid enough stuff and at least there are ongoing story-arcs.
But it has a lot of faults.
First off, although they quite obviously HAVE to rip-off Star Trek footage, set backdrops, music and effects, I see no reason why they proceeded to rip off virtually every other sci-fi musical score ever made. Everything from Aliens to Starship Troopers rears it orchestral head at one point or another. Likewise, much of the footage is from other movies, dutifully CGI\\'d over to make it look different. The Grey warships, for instance, though disguised, are quite obviously Star Destroyers from Star Wars. And the station is also rather obviously Fleet Battle Station Ticonderoga from Starship Troopers. Likewise, sound effects from various Star Wars movies appear in space battles between fighters, as does animated over footage. In one scene in either first or second season, I think, you even see two TIE fighters fly past during a battle, which hardly does your suspension of disbelief any favours.
Acting varies from the reasonable to the hideously painful to watch. Everyone does improve as the seasons progress, though, but expect to grimace at the screen a lot, especially in the early seasons. They\\'ve also made some interesting acting choices. Let\\'s just say that the food replicators on this show seem permanently set to \"cake\" and leave it at that.
Make-up effects are generally quite effective on the whole. But they really ought to mercilessly club to death the person who decided to use cheap Ferengi and Cardassian masks for anything other than background use or \"passing\" shots. They are just beyond unrealistic. Every time I saw one of these (apart from trying not to laugh too much) I kept expecting the unfortunate soul wearing it to pull out a gun and announce that \"This is a stick-up!\" In one scene a \"Cardassian\" actually talks whilst wearing one of these. Not only do the lips not move, but the mask doesn\\'t even have an opening where the mouth should be. Someone needs to be slapped hard for that. Couldn\\'t they have taken a craft knife to it, for goodness\\' sake! There are also some well-done, but unintentionally funny make-up jobs, such as the Herman Munster look alike.
The writing, though coherent, is nothing new. Instead the script runs like a continuation of DS9, with the ships heading out from DS12 on various missions. The new enemy, \"The Grey\" aren\\'t very menacing and the plot line involving them is effectively a reworking of the Borg threads. i.e. Starfleet meet the Grey, the Grey are hugely powerful, Starfleet barely escape with their lives, then through technology they begin to find ways to combat the enemy etc etc. All done before with the Borg.
Another bone of contention is the dialogue. Star Trek writers have long had the ability to write \"insert technobabble here\" into a script. It usually means an exposition of the latest plan to combat the enemy using \"quantum phase discriminators\" or \"isolytic charges\" etc. In other words, nonsense that tells you that they are on the case and a resolution is at hand.
The words are just gibberish really. I\\'ve no problem with this, but where ST:HF makes a mess of it is where they include real-world comments into this concept.
Tactical advice such as \"We need to regroup\" sounds good, but not when uttered by trio of characters already standing in a group. Likewise when asked what the situation is, a tactical officer is heard to reply \"We count three battleships\". He actually needed to count them? C\\'mon! I expected the questioner to ask him \"Are you sure?\" or \"Can you double check\". But my all-time favourite comment is this:
Captain: \"Can we establish two-way communication?\"
Comms officer: \"No, we can only send and receive..\"
Well, duh!.....
Having said all the above, the show does improve as it goes along. Seasons 1 and 2 are pretty bad, 3 shows an improvement but 4 & 5 are where it starts to get noticeably better. Season 6 so far looks quite reasonable.
I do have a problem with their choice of media for the shows though. Quicktime sucks, quite frankly and the sooner they move to divx/avi format the better. Some of us like to actually take our downloaded shows and watch them on decent size screen and not peer at a tiny QT window on a computer monitor. Not only does Quicktime make this difficult, but the 320x180 resolution the shows are in does not scale at all well. In fact, it makes the shows pretty unwatchable, like they were a tenth-generation VHS tape copy. The least they could do was to include a hi-res downloadable option.
Anyway, the show has promise, and I\\'m even beginning to like some of the characters. But that\\'s 40 episodes on, so I\\'m not sure this says that much about character development at all.
But what can you say, it\\'s free....
PS: Out of 28 votes, 19 people rated this show as a 9 or 10. Hmmmm... were we watching the same show? Or are you 19 all three year olds?')\n",
- "(0, 'I read in the papers that W.Snipes was broke so no wonder he would take parts in low budget projects like The Contractor.He is just the next action star to join a growing club:the penniless action stars of the 90s (Van Damme,Segal,Lundgren,Snipes). Here he stars the lead in a cheap action flick which was shot in Bulgaria( we are supposed to believe that the location is London, like only a complete moron would buy that)The story is the one of 1000 other movies: retired special forces good guy gets hired by the government again to do a wet job- after that government wants to get rid of him- good guy gets away after killing bad guys (was that a spoiler? guess not!) The star of the movie: the little girl (Eliza Bennett) outperforms everybody else of the cast!!!One star is for her plus one star for eye candy Lena Headey, makes 2 stars. Only for die hard Snipes fans!Everybody else:avoid!')\n",
- "(0, \"Did HeidiJean really see this movie? A great Christmas movie? Not even close. Dull, bland and completely lacking in imagination and heart. I kept watching this movie wondering who the hell thought that Carly Pope could play the lead in this movie! The woman has no detectable personality and gives a completely lackluster performance. Baransky was great as usual and provided the only modicum of interesting the whole thing. Probably her involvement was the only reason this project was green lighted to begin with. Maybe I'm expecting too much for a Lifetime movie played 15 days from Christmas but I sat through this thing thinking that with a different director and a recasting JJ with an actress that at least could elicit sympathy this could have been quite a cute little movie.\")\n",
- "(0, 'Band Camp was awful, The Naked Mile was a little better, and this third straight to DVD in the American Pie franchise seems the same quality as the predecessor. Basically Erik Stifler (John White) split from his girlfriend after losing his virginity, and now him and Mike \\'Cooze\\' Coozeman (Jake Siegel) are joining Erik\\'s cousin Dwight (Steve Talley) at college. With the promise of many parties, plenty of booze, and enough hot chicks at the Beta House, they only have fifty listed tasks to carry out to become official privileged members. But a threat comes into sight with the rivals, GEK (\"Geek\") House, led by power-hungry nerd (and sheep shagger) Edgar (Tyrone Savage) offering bigger and better than what Beta have. To settle it once and for all, Beta and Gek go into battle with the banned, for forty years, Greek Games to beat each other in, with the loser moving out. The last champion of the games, Noah Levenstein aka Jim\\'s Dad (the only regular Eugene Levy) runs the show, which sees the people unhooking bras, a gladiator duel floating on water, catching a greased pig, Russian Roulette in the mouth with cartridges of aged horse spunk, wife carrying and drinking a full keg of alcohol (with puking not disqualifying). It all comes to the sudden death, with a guy getting stripper lap dancing, and they have to resist cumming, Beta House win when Edgar cums with a girl dressed as a sheep on his lap. Also starring Flubber\\'s Christopher McDonald as Mr. Stifler, Meghan Heffern as Ashley, Dan Petronijevic as Bull, Nic Nac as Bobby, Christine Barger as Margie, Italia Ricci as Laura Johnson, Moshana Halbert as Sara Coleman, Sarah Power as Denise, Andreja Punkris as Stacy and Jordan Prentice as Rock. The nudity amount is very slightly increased, as is the grossness of the jokes, and I could guess it being rated one star out of five, but I like it. Adequate!')\n",
- "(1, \"I saw this recently on a cable channel. The movie is great; it's one of the few musicals I have seen that doesn't shy away from the light and dark. It portrays some of the splendour of the age along with a lot of the squalor. Some of the set piece dance sequences so much is going on, I didn't know where to look next. One day I shall go and see this on the big screen, just so that I see what's happening. But what really lifts this to another level is Oliver Reed's performance as Bill Sykes. Not only is a thoroughly mean and menacing man but there is something else, some inner demons. He gave me the impression that if you pushed him into a corner, he was capable of anything. It was almost as if the Sykes character was on the edge of madness, just awaiting the trigger. I have seen the Robert Newton's Bill Sykes from the 1948 movie, and I thought he was 'just' a bad egg, but Oliver Reed's performance intimidated me in my own living room.\")\n",
- "(1, '\"The Gingerbread Man is the first thriller I\\'ve ever done!\" \\x96 Robert Altman
In 1955 Charles Laughton directed \"The Night of the Hunter\", a spooky slice of Southern Gothic in which Robert Mitchum plays a scary serial killer. One of the film\\'s more famous sequences consists of two kids escaping from Mitchum on a rowboat, the kids frantically paddling whilst Mitchum wades after them like a monster.
Seven years later Mitchum played an equally spooky killer in \"Cape Fear\", another film set in the American South. That film featured a local attorney trying to protect his family and likewise ended with Mitchum terrorising folks on a boat. In 1991 Martin Scorsese, trying to branch out and tackle something more mainstream, remade \"Cape Fear\", boat scene and all.
Now we have Robert Altman\\'s \"The Gingerbread Man\", another slice of small town Southern Gothic. Altman says he consulted \"The Night of the Hunter\" for inspiration and tackled such a mainstream film purely because he wanted to \"spread his wings and try a popcorn picture\", but what he\\'s secretly attempting to do here is deconstruct the canonical films of the Southern Gothic genre.
So instead of a showdown on small boat, we get a showdown on a giant ship. Instead of two kids being kidnapped, we get two kids being safely returned to the police. Instead of money being hidden, we have money being readily given via a last will and testament. Instead of the righteous attorney of the 1961 film and the deplorable attorney of the 1991 remake, we get a rather three-dimensional lawyer in Kenneth Branagh. Instead of the monster chasing the family we get the hero chasing the bad guys. Instead of the monster breaking into the family\\'s house boat, we have the hero hunting the monster on board the monster\\'s \"house ship\". Similarly, instead of a murderous serial killer we get an innocent weirdo played by Robert Duvall. . .etc etc etc.
Altman goes on and on, reversing everything just a little slightly, pulling at the edges and doing his own thing. His touch is most apparent during the film\\'s first half-hour, the film existing in an uneasy space between conventional plot-driven movie storytelling and Altman\\'s fondness for overlapping dialogue, casual narratives, prowling camera movement and the way that characters aren\\'t so much introduced as they are simply part of what\\'s going on.
Still, despite Altman\\'s best intentions, the film never rises above mediocrity. Altman\\'s too bound to the conventions of the \"thriller format\" to do much damage, his style is too lethargic to generate tension and the film is simply not radical enough to counterpoint other canonical films in the genre. \"Gingerbread Man\" is thus too mainstream to work as a more pure Altman film and too Altman to work as a mainstream thriller.
The film\\'s not a complete waste, though. Robert Downey Junior, Kenneth Branagh and the usually intolerable Daryl Hannah, all turn in juicy performances. The film also has a nice atmosphere, set against a approaching hurricane, and the final act contains some interesting twists and turns. While it\\'s not the complete disaster that Scorsese\\'s \"Cape Fear\" was, the film still never amounts to anything special.
7/10 \\x96 In the late 90s Altman made 3 successive films set in the American South: \"Kansas City\", \"Gingerbread Man\" and \"Cookie\\'s Fortune\". Unlike \"Gingerbread Man\", both \"Kansas City\" and \"Cookie\\'s Fortune\" tackle the genre on the broader, more looser canvases that Altman was most comfortable with.
\"Kansas City\" is the more important of these two films, its hierarchies of class, politics and crime, and its desire to break radically away from typical gangster genre frameworks, would prove influential on all serious 21st century film crime writers (see, for example, \"The Wire\"). That said, \"Cookie\\'s Fortune\", while a much slighter tale, is perhaps the better picture.
Note: Altman claims that this is his first thriller, but he directed \"Images\", an art house thriller, in 1972.
Worth one viewing.')\n",
- "(1, '\"Read My Lips (Sur mes lèvres)\" (which probably has different idiomatic resonance in its French title) is a nifty, twisty contemporary tale of office politics that unexpectedly becomes a crime caper as the unusually matched characters slide up and down an ethical and sensual slippery slope.
The two leads are magnetic, Emmanuelle Devos (who I\\'ve never seen before despite her lengthy resume in French movies) and an even more disheveled than usual Vincent Cassel (who has brought a sexy and/or threatening look and voice to some US movies).
The first half of the movie is on her turf in a competitive real estate office and he\\'s the neophyte. The second half is on his turf as an ex-con and her wrenching adaptation to that milieu.
Writer/director Jacques Audiard very cleverly uses the woman\\'s isolating hearing disability as an entrée for us into her perceptions, turning the sound up and down for us to hear as she does (so it\\'s even more annoying than usual when audience members talk), using visuals as sensory reactors as well.
None of the characters act as anticipated (she is not like that pliable victim from \"In the Company of Men,\" not in individual interactions, not in scenes, and not in the overall arc of the unpredictable story line (well, until the last shot, but heck the audience was waiting for that fulfillment) as we move from a hectic modern office, to a hectic disco to romantic and criminal stake-outs.
There is a side story that\\'s thematically redundant and unnecessary, but that just gives us a few minutes to catch our breaths.
This is one of my favorites of the year!
(originally written 7/28/2002)')\n",
- "(1, \"This was a pretty decent movie. This movie is good to just sit down and watch and be entertained. Just a typical Hollywood film. This movie will never win an Oscar or anything and definitely doesn't deserve one, but I thought it was pretty good. It's kind of like the show 24 but set into movie format. If you like the whole we've got to stop the terrorist from killing the president kind of movie then you will enjoy this flick. I personally think that storyline has been done WAY too much, but The Sentinel does add a little twist with the mole in the Secret Service. All in all, this movie won't leave your jaw to the floor or change your life, but who says every single movie has to be like that to be good?\")\n",
- "(1, 'Actually they could not have chosen a better diversified actor to portray Little Richard than Leon. He captures Little Richard to a most believable essence. The outfits where wonderful and any person watching this movie will definitely keep a smile on their face through the entire movie. Although the movie is a little long, it keeps your attention with the personality and outfits of Little Richard in mind. The ending should have taken a direction of moving Little Richard more into the present where you could see him as he has aged into this new millennium. He will always be the King of Rock-N-Roll as far as I am concerned regardless of what the other media says.')\n",
- "(1, \"If you are a fan of Altman's large ensemble casts, as evidenced in major films like M.A.S.H., Nashville, Gosford Park, and lesser seen films like A Wedding, then you will no doubt be entertained by HealtH. Centered around a Health Convention where two women are running for President, HealtH contains many of Altman's latter 70s regulars like Paul Dooley (who helped write the film), Carol Burnett, and Henry Gibson, while also including top star Altman newcomers like Lauren Bacall, James Garner, and Glenda Jackson. Like a lot of Altman ensemble films there are numerous subplots in this film, but it is not nearly as overwhelming as films like Nashville or A Wedding, rather it has a more centered feel, perhaps like M.A.S.H. or Gosford Park. The whole thing is an obvious satire on the Health movement, filled with over-top, outlandish, contradictive characters, with guest stars like Dick Cavett providing a wry commentary on the whole thing. Underlining the whole election process is Altman's characteristic pessimism about politics and public appeal but what is most appealing about this film is the sheer fun most people seem to be having. This would be one of Altman's last films like this for a while!\")\n",
- "(1, 'I saw the movie with two grown children. Although it was not as clever as Shrek, I thought it was rather good. In a movie theatre surrounded by children who were on spring break, there was not a sound so I know the children all liked it. There parents also seemed engaged. The death and apparent death of characters brought about the appropriate gasps and comments. Hopefully people realize this movie was made for kids. As such, it was successful although I liked it too. Personally I liked the Scrat!!')\n",
- "(1, \"This show has been my escape from reality for the past ten years. I will sadly miss it. Although Atlantis has filled the hole a small bit.
The last ever episode of SG1(on television anyway)was beautifully done. Robert wrote something that felt close to reality. As though he was trying to explain what it was like on the set of the show. (Everyone working closely together for such a long time there are bound to up's and downs. But over the years they've turned into a family). I thought this was a wonderful way to end despite anyone else's criticisms.
SG1 was something special and time and time again it took me across thresholds of disbelief and amazement. The wonderful characters, stories, directors, writers. From episode one I was hooked. The blend of action, science, drama and especially comedy worked so well that made me keep wanting more.
There are no real words in which to completely express what this show meant to me. I can only thank those who kept the show so fresh and entertaining for so many years. It has inspired me to do many things that I thought was impossible.
I look forward to the movies next year and I really hope there will be a number of them. I never want the show to die.
Stargate SG1 - 1997 - 2007?\")\n",
- "(1, 'For a long time it seemed like all the good Canadian actors had headed south of the border and (I guessed) all the second rank ones filled the top slots and that left the dregs for the sex comedies.
This film was a real surprise: despite the outlandish plots that are typical of farces, the actors seemed to be trying to put something into their characters and what we, the viewer, got back was almost true suspension of belief. When the extras from the music video attacked the evicting police, you almost believed it was possible.
If you are a fan of some of the better sex farces (Canadian or not) you should definitely seek this one out. And the big surprise, this sex farce is also loaded with some very good nudity.')\n",
- "(1, 'Thank God this wasn\\'t based on a true story, because what a story it is. Populated by despicable characters whose depravity knows no bounds, Before The Devil is a mesmerizing, jaw-dropping excursion into perversion which would be laughable (and sometimes is, even with - or perhaps because of - the sickeningly tragic undercurrent of human dysfunction throughout) if it weren\\'t carried out with such magnificent, overwhelming conviction by its stars. The excellent script by Kelly Masterson and superb direction by none other than Sidney Lumet doesn\\'t hurt either.
The main dysfunction here is of a family nature, with the two majorly screwed up brothers (brilliant portrayals from Philip Seymour Hoffman and Ethan Hawke) deciding to rob their own parents\\' jewelry store, an attempt that goes pathetically awry.
The story is told with time-shifts (which are noted on screen, such as: \"Charlie: Two Days Before The Robbery\", so no one should be confused); some people have said they didn\\'t like this device but I thought it worked perfectly, adding to the skeweredness of the whole affair, considering that the two brothers in question are hardly playing with full decks - between them you couldn\\'t make a decent poker hand to save your life. Throw in these cheesy extra tidbits: one of the brothers is a drug addict, married to Gina (Marisa Tomei, also excellent), who is having an affair with the other brother, toss in some monumental sibling rivalry, along with the fact that said drug addict brother hates his father (a wrenching performance from Albert Finney), who has apparently caused him serious past pain, and you\\'ve got a Shakespearean/Greek tragedy on your hands. Proceed with caution.')\n"
- ]
- }
- ],
- "source": [
- "root_dir = tempdir.name + '/' + 'imdb_dataset'\n",
- "train_iter = IMDBDataset(root_dir=root_dir, train=True) # For training data\n",
- "test_iter = IMDBDataset(root_dir=root_dir, train=False) # For test data\n",
- "\n",
- "start=train_iter.pos_inx\n",
- "for i in range(-10,10):\n",
- " print(train_iter[start+i])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1a6c647b-b8ab-49df-8434-becaa0dea775",
- "metadata": {},
- "source": [
- "The following code defines the mapping of numeric labels to positive and negative reviews.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "3fca543a-ffc0-4079-bc30-7e3e05576623",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "'positive review'"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "imdb_label = {0: \" negative review\", 1: \"positive review\"}\n",
- "imdb_label[1]"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ac4da5eb-a679-45d2-90bd-cfde475e0f8e",
- "metadata": {},
- "source": [
- "The following code checks to ensure that there are exactly two classes in the train data set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "e78c80a0-0dee-4236-a382-dfe9f75a8fea",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "num_class = len(set([label for (label, text) in train_iter]))\n",
- "num_class"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9c35ca39-77a1-40d9-9f16-fddb3259fd64",
- "metadata": {},
- "source": [
- "The following code loads a basic English tokenizer and defines a function called ```yield_tokens``` that uses the tokenizer to break down text data yielded by an iterator into tokens.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "id": "6a41ea50-7e8b-423b-9de8-36a88e97e96b",
- "metadata": {},
- "outputs": [],
- "source": [
- "tokenizer = get_tokenizer(\"basic_english\")\n",
- "\n",
- "def yield_tokens(data_iter):\n",
- " \"\"\"Yield tokens for each data sample.\"\"\"\n",
- " for _, text in data_iter:\n",
- " yield tokenizer(text)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e1853ae6-c596-4fac-a2f4-185c0a354510",
- "metadata": {},
- "source": [
- " The following code loads a pretrained word embedding model called GloVe into a variable called `glove_embedding`.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "0cbe5e7e-13d0-4d64-8c0c-86b74954c9b2",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Note that GloVe embeddings are typically downloaded using:\n",
- "#glove_embedding = GloVe(name=\"6B\", dim=100)\n",
- "# However, the GloVe server is frequently down. The code below offers a workaround\n",
- "\n",
- "\n",
- "class GloVe_override(Vectors):\n",
- " url = {\n",
- " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
- " }\n",
- "\n",
- " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
- " url = self.url[name]\n",
- " name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
- " #name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
- " super(GloVe_override, self).__init__(name, url=url, **kwargs)\n",
- "\n",
- "class GloVe_override2(Vectors):\n",
- " url = {\n",
- " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
- " }\n",
- "\n",
- " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
- " url = self.url[name]\n",
- " #name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
- " name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
- " super(GloVe_override2, self).__init__(name, url=url, **kwargs)\n",
- "\n",
- "try:\n",
- " glove_embedding = GloVe_override(name=\"6B\", dim=100)\n",
- "except:\n",
- " try:\n",
- " glove_embedding = GloVe_override2(name=\"6B\", dim=100)\n",
- " except:\n",
- " glove_embedding = GloVe(name=\"6B\", dim=100)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e81eda58-67d1-4414-a91a-c238a1434729",
- "metadata": {},
- "source": [
- "The following code builds a vocabulary object from a pretrained GloVe word embedding model and sets the default index to the token.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "id": "5a3dbfda-7d7f-4256-937c-af441df1ee1b",
- "metadata": {},
- "outputs": [],
- "source": [
- "from torchtext.vocab import GloVe,vocab\n",
- "# Build vocab from glove_vectors\n",
- "vocab = vocab(glove_embedding .stoi, 0,specials=('', ''))\n",
- "vocab.set_default_index(vocab[\"\"])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e1fc78f6-0d04-4b35-afdd-a6193c66166e",
- "metadata": {},
- "source": [
- "Let's count the number of words in the vocab:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "id": "bc7de385-2867-4836-a6dc-f87a9f0c38f5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "400002"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vocab_size=len(vocab)\n",
- "vocab_size"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "aa4eca48-cfb4-4fb4-8ca3-180319852e0d",
- "metadata": {},
- "source": [
- "Let's test the ```vocab``` function:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "id": "59689af6-a6ed-49eb-a12e-51303c1eb9da",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[20]"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "vocab(['he'])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6ca4130b-f548-4b92-a68f-b2d83b6b19a5",
- "metadata": {},
- "source": [
- "### Data set splits\n",
- "\n",
- "The following converts the data set into map-style data sets and then performs a random split to create separate training and validation data sets. The training data set will contain 95% of the samples in the original training set, while the validation data set will contain the remaining 5%. These data sets can be used for training and evaluating a machine learning model for text classification on the IMDB data set. The final performance of the model will be evaluated on the hold-out test set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "id": "be0403dd-b319-406e-96ea-d215c0a42f6c",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Convert the training and testing iterators to map-style datasets.\n",
- "train_dataset = to_map_style_dataset(train_iter)\n",
- "test_dataset = to_map_style_dataset(test_iter)\n",
- "\n",
- "# Determine the number of samples to be used for training and validation (5% for validation).\n",
- "num_train = int(len(train_dataset) * 0.95)\n",
- "\n",
- "# Randomly split the training dataset into training and validation datasets using `random_split`.\n",
- "# The training dataset will contain 95% of the samples, and the validation dataset will contain the remaining 5%.\n",
- "split_train_, split_valid_ = random_split(train_dataset, [num_train, len(train_dataset) - num_train])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "82b6143c-d493-49b1-a255-b5aae8f9280a",
- "metadata": {},
- "source": [
- "Be aware that the Skills Network currently does not offer GPU access to learners. As a result, training on the full data set could be time-consuming. To address this, you further reduce the size of the training set. This approach helps you mimic the training process as if a GPU were available. However, if you want to train using the full IMDB data set, you must either comment out or remove the two lines in the following code block.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "id": "0b86c021-06f7-463d-95d7-c83f45de8605",
- "metadata": {},
- "outputs": [],
- "source": [
- "num_train = int(len(train_dataset) * 0.05)\n",
- "split_train_, _ = random_split(split_train_, [num_train, len(split_train_) - num_train])"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e2e0359b-b92d-4aae-9916-aaadbd206ddb",
- "metadata": {},
- "source": [
- "The following code checks to see if a CUDA-compatible GPU is available in the system using PyTorch, a popular deep learning framework. If a GPU is available, it assigns the device variable to \"cuda\" (which stands for CUDA, the parallel computing platform and application programming interface model developed by NVIDIA). If a GPU is not available, it assigns the device variable to \"cpu\" (which means the code will run on the CPU instead).\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 21,
- "id": "3e37cbbd-1c52-4b02-b26c-c7f4b694e944",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "device(type='cuda')"
- ]
- },
- "execution_count": 21,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
- "device"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9c0631e5-5eb9-4e91-a84f-315381189cb9",
- "metadata": {},
- "source": [
- "### Data loader\n",
- "\n",
- "The following code prepares the text processing pipeline with the tokenizer and vocabulary. The text pipeline is used to process the raw data strings from the data set iterators.\n",
- "\n",
- "The function **```text_pipeline```** first tokenizes the input text, then **```vocab```** is applied to get the token indices.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "id": "6b1807bd-4548-435d-b763-cc1641c95c45",
- "metadata": {},
- "outputs": [],
- "source": [
- "def text_pipeline(x):\n",
- " return vocab(tokenizer(x))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "58976c04-a071-4f9f-8e55-b0207f39a7d1",
- "metadata": {},
- "source": [
- "In PyTorch, the **`collate_fn`** function is used in conjunction with data loaders to customize the way batches are created from individual samples. The provided code defines a `collate_batch` function in PyTorch, which is used with data loaders to customize batch creation from individual samples. It processes a batch of data, including labels and text sequences. It applies the `text_pipeline` function to preprocess the text. The processed data is then converted into PyTorch tensors and returned as a tuple containing the label tensor, text tensor, and offsets tensor representing the starting positions of each text sequence in the combined tensor. The function also ensures that the returned tensors are moved to the specified device (for example, GPU) for efficient computation.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "id": "442be80e-ae39-4001-98f7-0a0c5266bb65",
- "metadata": {},
- "outputs": [],
- "source": [
- "from torch.nn.utils.rnn import pad_sequence\n",
- "\n",
- "def collate_batch(batch):\n",
- " label_list, text_list = [], []\n",
- " for _label, _text in batch:\n",
- "\n",
- " label_list.append(_label)\n",
- " text_list.append(torch.tensor(text_pipeline(_text), dtype=torch.int64))\n",
- "\n",
- " label_list = torch.tensor(label_list, dtype=torch.int64)\n",
- " text_list = pad_sequence(text_list, batch_first=True)\n",
- "\n",
- " return label_list.to(device), text_list.to(device)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fb6f5466-b4b7-4772-9f09-9836249d4279",
- "metadata": {},
- "source": [
- "You can convert the data set objects to data loaders by applying the `collate` function.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "id": "95d54253-4781-4607-9f60-f4727117a520",
- "metadata": {},
- "outputs": [],
- "source": [
- "BATCH_SIZE = 32\n",
- "\n",
- "train_dataloader = DataLoader(\n",
- " split_train_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
- ")\n",
- "valid_dataloader = DataLoader(\n",
- " split_valid_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
- ")\n",
- "test_dataloader = DataLoader(\n",
- " test_dataset, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3cc82919-3aa8-4f02-9be6-696a71335672",
- "metadata": {},
- "source": [
- "Let's check to see what these data loaders generate.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "id": "0e6a5049-2b5e-4661-ab9a-30b6072da1bb",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(tensor([0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0,\n",
- " 1, 0, 1, 1, 0, 1, 0, 0], device='cuda:0'),\n",
- " tensor([[ 0, 3542, 0, ..., 0, 0, 0],\n",
- " [ 40, 663, 838, ..., 0, 0, 0],\n",
- " [ 39, 16, 2, ..., 0, 0, 0],\n",
- " ...,\n",
- " [16307, 0, 59, ..., 0, 0, 0],\n",
- " [ 9, 12389, 1608, ..., 0, 0, 0],\n",
- " [ 193, 44724, 144, ..., 0, 0, 0]], device='cuda:0'))"
- ]
- },
- "execution_count": 22,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "label,seqence=next(iter(valid_dataloader))\n",
- "label,seqence"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1f0d739f-47a7-44e6-b61d-6ce1eecda895",
- "metadata": {},
- "source": [
- "### Neural network\n",
- "\n",
- "This code defines a class called Net that represents a text classifier based on a PyTorch TransformerEncoder.\n",
- "The constructor takes the following arguments:\n",
- "\n",
- "- `num_class`: The number of classes to classify\n",
- "- `vocab_size`: The size of the vocabulary\n",
- "- `freeze`: Whether to freeze the embedding layer\n",
- "- `nhead`: The number of heads in the transformer encoder\n",
- "- `dim_feedforward`: The dimension of the feedforward layer in the transformer encoder\n",
- "- `num_layers`: The number of transformer encoder layers\n",
- "- `dropout`: The dropout rate\n",
- "- `activation`: The activation function to use in the transformer encoder\n",
- "- `classifier_dropout`: The dropout rate for the classifier\n",
- "\n",
- "**Attributes:**\n",
- "\n",
- "- `emb`: An embedding layer that maps each word in the vocabulary to a dense vector representation\n",
- "- `pos_encoder`: A positional encoding layer that adds positional information to the word vectors\n",
- "- `transformer_encoder`: A transformer encoder layer that processes the sequence of word vectors and extracts high-level features\n",
- "- `classifier`: A linear layer that maps the output of the transformer encoder to the desired number of classes\n",
- "\n",
- "---\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "id": "7f290742-5806-47d8-8533-f3d92709eba9",
- "metadata": {},
- "outputs": [],
- "source": [
- "class Net(nn.Module):\n",
- " \"\"\"\n",
- " Text classifier based on a pytorch TransformerEncoder.\n",
- " \"\"\"\n",
- " def __init__(\n",
- "\n",
- " self,\n",
- " num_class,vocab_size,\n",
- " freeze=True,\n",
- " nhead=2,\n",
- " dim_feedforward=128,\n",
- " num_layers=2,\n",
- " dropout=0.1,\n",
- " activation=\"relu\",\n",
- " classifier_dropout=0.1):\n",
- "\n",
- " super().__init__()\n",
- "\n",
- " #self.emb = embedding=nn.Embedding.from_pretrained(glove_embedding.vectors,freeze=freeze)\n",
- " self.emb = nn.Embedding.from_pretrained(glove_embedding.vectors,freeze=freeze)\n",
- " embedding_dim = self.emb.embedding_dim\n",
- "\n",
- "\n",
- " self.pos_encoder = PositionalEncoding(\n",
- " d_model=embedding_dim,\n",
- " dropout=dropout,\n",
- " vocab_size=vocab_size,\n",
- " )\n",
- "\n",
- " encoder_layer = nn.TransformerEncoderLayer(\n",
- " d_model=embedding_dim,\n",
- " nhead=nhead,\n",
- " dim_feedforward=dim_feedforward,\n",
- " dropout=dropout,\n",
- " )\n",
- " self.transformer_encoder = nn.TransformerEncoder(\n",
- " encoder_layer,\n",
- " num_layers=num_layers,\n",
- " )\n",
- " self.classifier = nn.Linear(embedding_dim, num_class)\n",
- " self.d_model = embedding_dim\n",
- "\n",
- " def forward(self, x):\n",
- " x = self.emb(x) * math.sqrt(self.d_model)\n",
- " x = self.pos_encoder(x)\n",
- " x = self.transformer_encoder(x)\n",
- " x = x.mean(dim=1)\n",
- " x = self.classifier(x)\n",
- "\n",
- " return x"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "68664b81-817c-4633-bc71-9b32f95ee7f3",
- "metadata": {},
- "source": [
- "The model can then be trained on labeled data from the IMDB data set with two classes.\n",
- "Let's create the model.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "id": "545ebebe-2206-47ce-81ab-9f168a80e4bd",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Net(\n",
- " (emb): Embedding(400000, 100)\n",
- " (pos_encoder): PositionalEncoding(\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " (transformer_encoder): TransformerEncoder(\n",
- " (layers): ModuleList(\n",
- " (0-1): 2 x TransformerEncoderLayer(\n",
- " (self_attn): MultiheadAttention(\n",
- " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
- " )\n",
- " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
- " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (dropout1): Dropout(p=0.1, inplace=False)\n",
- " (dropout2): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
- ")"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
- "model = Net(num_class=2,vocab_size=vocab_size).to(device)\n",
- "model"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "18ece646-3872-41e1-bedb-be1c7d8a37cc",
- "metadata": {},
- "source": [
- "The following **`predict`** function takes in a text, a text pipeline, and a model as inputs. It uses a pretrained model passed as a parameter to predict the label of the text for text classification on the IMDB data set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "id": "4cde3566-d2df-40b8-8fd1-944018d4b0ab",
- "metadata": {},
- "outputs": [],
- "source": [
- "def predict(text, text_pipeline, model):\n",
- " with torch.no_grad():\n",
- " text = torch.unsqueeze(torch.tensor(text_pipeline(text)),0).to(device)\n",
- " model.to(device)\n",
- " output = model(text)\n",
- " return imdb_label[output.argmax(1).item()]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "id": "c7388103-5814-402d-a7de-ede861dc0927",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "' negative review'"
- ]
- },
- "execution_count": 26,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "predict(\"I like sports and stuff\", text_pipeline, model)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "40449174-d493-4521-8417-7950dafb0072",
- "metadata": {},
- "source": [
- "You can create a function to evaluate the model's accuracy on a data set. Here, you define two nearly identical evaluation functions, one that provides a `tqdm` progress bar, and one that does not.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "id": "1171efb1-cf5c-4a25-a0e0-91feb88e8ab7",
- "metadata": {},
- "outputs": [],
- "source": [
- "def evaluate(dataloader, model_eval):\n",
- " model_eval.eval()\n",
- " total_acc, total_count= 0, 0\n",
- "\n",
- " with torch.no_grad():\n",
- " for label, text in tqdm(dataloader):\n",
- " label, text = label.to(device), text.to(device)\n",
- " output = model_eval(text)\n",
- " predicted = torch.max(output.data, 1)[1]\n",
- " total_acc += (predicted == label).sum().item()\n",
- " total_count += label.size(0)\n",
- " return total_acc / total_count"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "id": "571400ae-320b-4d1a-a103-91592812d1c1",
- "metadata": {},
- "outputs": [],
- "source": [
- "def evaluate_no_tqdm(dataloader, model_eval):\n",
- " model_eval.eval()\n",
- " total_acc, total_count= 0, 0\n",
- "\n",
- " with torch.no_grad():\n",
- " for label, text in dataloader:\n",
- " label, text = label.to(device), text.to(device)\n",
- " output = model_eval(text)\n",
- " predicted = torch.max(output.data, 1)[1]\n",
- " total_acc += (predicted == label).sum().item()\n",
- " total_count += label.size(0)\n",
- " return total_acc / total_count"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0092f33b-ac39-41d2-8525-443d2759b55e",
- "metadata": {},
- "source": [
- "The following code evaluates the performance of your model. Note that this can take approximately 4 minutes on a CPU. **For efficiency, let's not run this cell now, but trust us that the performance of the untrained model is no better than average. If you wish to confirm yourself of this fact, you are free to uncomment this cell**:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "id": "6b48b713-72a9-4267-b32e-dfab588c659c",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:09<00:00, 82.88it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.5"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b855a1d8-5e52-4fa2-a507-d7383b2ea73d",
- "metadata": {},
- "source": [
- "Note that the current performance of the model is no better than average. This outcome is expected, considering that the model has not undergone any training yet.\n",
- "\n",
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8a28c3ce-3828-4b70-8442-ae9b7757805c",
- "metadata": {},
- "source": [
- "# Training\n",
- "\n",
- "The following coe defines the training function used to train your model.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "id": "376d4c30-7f50-4c97-9fa2-667f3c1a47eb",
- "metadata": {},
- "outputs": [],
- "source": [
- "def train_model(model, optimizer, criterion, train_dataloader, valid_dataloader, epochs=1000, save_dir=\"\", file_name=None):\n",
- " cum_loss_list = []\n",
- " acc_epoch = []\n",
- " acc_old = 0\n",
- " model_path = os.path.join(save_dir, file_name)\n",
- " acc_dir = os.path.join(save_dir, os.path.splitext(file_name)[0] + \"_acc\")\n",
- " loss_dir = os.path.join(save_dir, os.path.splitext(file_name)[0] + \"_loss\")\n",
- " time_start = time.time()\n",
- "\n",
- " for epoch in tqdm(range(1, epochs + 1)):\n",
- " model.train()\n",
- " #print(model)\n",
- " #for parm in model.parameters():\n",
- " # print(parm.requires_grad)\n",
- " \n",
- " cum_loss = 0\n",
- " for idx, (label, text) in enumerate(train_dataloader):\n",
- " optimizer.zero_grad()\n",
- " label, text = label.to(device), text.to(device)\n",
- "\n",
- " predicted_label = model(text)\n",
- " loss = criterion(predicted_label, label)\n",
- " loss.backward()\n",
- " #print(loss)\n",
- " torch.nn.utils.clip_grad_norm_(model.parameters(), 0.1)\n",
- " optimizer.step()\n",
- " cum_loss += loss.item()\n",
- " print(f\"Epoch {epoch}/{epochs} - Loss: {cum_loss}\")\n",
- "\n",
- " cum_loss_list.append(cum_loss)\n",
- " accu_val = evaluate_no_tqdm(valid_dataloader,model)\n",
- " acc_epoch.append(accu_val)\n",
- "\n",
- " if model_path and accu_val > acc_old:\n",
- " print(accu_val)\n",
- " acc_old = accu_val\n",
- " if save_dir is not None:\n",
- " #pass\n",
- " print(\"save model epoch\",epoch)\n",
- " torch.save(model.state_dict(), model_path)\n",
- " save_list_to_file(lst=acc_epoch, filename=acc_dir)\n",
- " save_list_to_file(lst=cum_loss_list, filename=loss_dir)\n",
- "\n",
- " time_end = time.time()\n",
- " print(f\"Training time: {time_end - time_start}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "353d2098-4d5d-4a06-aa6a-c8866a6ecb0f",
- "metadata": {},
- "source": [
- "### Train IMDB\n",
- "\n",
- "The following code sets the learning rate (LR) to 1, which determines the step size at which the optimizer updates the model's parameters during training. The CrossEntropyLoss criterion is used to calculate the loss between the model's predicted outputs and the ground truth labels. This loss function is commonly employed for multiclass classification tasks.\n",
- "\n",
- "The chosen optimizer is Stochastic Gradient Descent (SGD), which optimizes the model's parameters based on the computed gradients with respect to the loss function. The SGD optimizer uses the specified learning rate to control the size of the weight updates.\n",
- "\n",
- "Additionally, a learning rate scheduler is defined using StepLR. This scheduler adjusts the learning rate during training, reducing it by a factor (gamma) of 0.1 after every epoch (step) to improve convergence and fine-tune the model's performance. These components together form the essential setup for training a neural network using the specified learning rate, loss criterion, optimizer, and learning rate scheduler.\n",
- "\n",
- "For the sake of time efficiency, **the following lines are commented out and the model is not actually trained**. If you would like to get a glimpse of what training would look like, uncomment the following code block to train the model for 2 epochs. If you were to train this model in a real-world scenario, you would likely increase the number of epochs to a larger figure, such as 100 or more. Given the reduced training set defined earlier, it takes approximately 2 minutes to complete 2 epochs of training.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "id": "03ab8dc6-6dda-44fa-b86c-1ad67e651463",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 0%| | 0/2 [00:00, ?it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 1/2 - Loss: 30.924453794956207\n",
- "0.4856\n",
- "save model epoch 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.21s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 2/2 - Loss: 30.632691085338593\n",
- "0.5288\n",
- "save model epoch 2\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.27s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training time: 4.546654462814331\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "LR=1\n",
- "criterion = torch.nn.CrossEntropyLoss()\n",
- "optimizer = torch.optim.SGD(model.parameters(), lr=LR)\n",
- "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
- "save_dir = \"output\"\n",
- "file_name = \"model_IMDB dataset small2.pth\"\n",
- "train_model(model=model, \n",
- " optimizer=optimizer, \n",
- " criterion=criterion, \n",
- " train_dataloader=train_dataloader, \n",
- " valid_dataloader=valid_dataloader, \n",
- " epochs=2, \n",
- " save_dir=save_dir, \n",
- " file_name=file_name\n",
- " )"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "id": "f32f238d-1e64-4963-b038-6b43076d8070",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:08<00:00, 87.84it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.50128"
- ]
- },
- "execution_count": 41,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3c3f8cd5-5d15-47a6-838d-186b87e82d10",
- "metadata": {},
- "source": [
- "Let's load a model that has been pretrained using the same method but on the full data set and with 100 epochs.\n",
- "\n",
- "The following code plots the cost and validation data accuracy for each epoch of the pretrained model up to and including the epoch that yielded the highest accuracy. As you can see, the pretrained model achieved an accuracy of over 85% on the validation set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "id": "014cc287-4868-448a-9c56-9c5fed972dbe",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/sybqacL5p1qeEO8d4xRZNg/model-IMDB%20dataset%20small2-acc')\n",
- "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/eOt6woGoaOB565T0RLH5WA/model-IMDB%20dataset%20small2-loss')\n",
- "acc_epoch = pickle.load(acc_urlopened)\n",
- "cum_loss_list = pickle.load(loss_urlopened)\n",
- "plot(cum_loss_list,acc_epoch)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "37fe982b-b1a7-4d31-a5fc-21481d97fa4e",
- "metadata": {},
- "source": [
- "The following code loads your pretrained model and evaluates its performance on the test set. **For efficiency, let's not run the evaluation because it can take approximately 4 minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, you are free to uncomment the last line in the following code block.**\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "id": "ca827b34-bd27-413f-ba76-8fde3d73c570",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 39,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/q66IH6a7lglkZ4haM6hB1w/model-IMDB%20dataset%20small2.pth')\n",
- "model_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
- "model_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "id": "f7421582-5341-4554-bb43-93eaeec31de6",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 71.81it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.83208"
- ]
- },
- "execution_count": 40,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a91438ab-0a67-47b4-908c-2114cedb29e2",
- "metadata": {},
- "source": [
- "As you can see, the pretrained model achieved an accuracy of approximately 83% on the test data.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d8f01fc5-871b-4978-a2dd-724efa504014",
- "metadata": {},
- "source": [
- "### Fine-tune a model pretrained on the AG News data set\n",
- "\n",
- "Rather than training a model on the IMDB data set as you did earlier, you can fine-tune a model that has been pretrained on the AG News data set, which is a collection of news articles. The goal of the AG News data set is to categorize news articles into one of four categories: Sports, Business, Sci/tech, or World. You’ll start training a model from scratch on the AG News data set. To save time, you can do this in just one cell. Also, for efficiency, ** comment out the training bit**. If you want to train the model for 2 epochs on a smaller data set to demonstrate what the training process would look like, uncomment the part that says `### Uncomment to Train ###` before running the cell. Training for 2 epochs on the reduced data set can take approximately 3 minutes.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "id": "4db8b115-13e1-4d42-99e0-fd09dc0527c6",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Net(\n",
- " (emb): Embedding(400000, 100)\n",
- " (pos_encoder): PositionalEncoding(\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " (transformer_encoder): TransformerEncoder(\n",
- " (layers): ModuleList(\n",
- " (0-1): 2 x TransformerEncoderLayer(\n",
- " (self_attn): MultiheadAttention(\n",
- " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
- " )\n",
- " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
- " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (dropout1): Dropout(p=0.1, inplace=False)\n",
- " (dropout2): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (classifier): Linear(in_features=100, out_features=4, bias=True)\n",
- ")"
- ]
- },
- "execution_count": 36,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "train_iter_ag_news = AG_NEWS(split=\"train\")\n",
- "\n",
- "num_class_ag_news = len(set([label for (label, text) in train_iter_ag_news ]))\n",
- "num_class_ag_news\n",
- "\n",
- "# Split the dataset into training and testing iterators.\n",
- "train_iter_ag_news, test_iter_ag_news = AG_NEWS()\n",
- "\n",
- "# Convert the training and testing iterators to map-style datasets.\n",
- "train_dataset_ag_news = to_map_style_dataset(train_iter_ag_news)\n",
- "test_dataset_ag_news = to_map_style_dataset(test_iter_ag_news)\n",
- "\n",
- "# Determine the number of samples to be used for training and validation (5% for validation).\n",
- "num_train_ag_news = int(len(train_dataset_ag_news) * 0.95)\n",
- "\n",
- "# Randomly split the training dataset into training and validation datasets using `random_split`.\n",
- "# The training dataset will contain 95% of the samples, and the validation dataset will contain the remaining 5%.\n",
- "split_train_ag_news_, split_valid_ag_news_ = random_split(train_dataset_ag_news, [num_train_ag_news, len(train_dataset_ag_news) - num_train_ag_news])\n",
- "\n",
- "# Make the training set smaller to allow it to run fast as an example.\n",
- "# IF YOU WANT TO TRAIN ON THE AG_NEWS DATASET, COMMENT OUT THE 2 LINEs BELOW.\n",
- "# HOWEVER, NOTE THAT TRAINING WILL TAKE A LONG TIME\n",
- "num_train_ag_news = int(len(train_dataset_ag_news) * 0.05)\n",
- "split_train_ag_news_, _ = random_split(split_train_ag_news_, [num_train_ag_news, len(split_train_ag_news_) - num_train_ag_news])\n",
- "\n",
- "\n",
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
- "device\n",
- "\n",
- "def label_pipeline(x):\n",
- " return int(x) - 1\n",
- "\n",
- "from torch.nn.utils.rnn import pad_sequence\n",
- "\n",
- "def collate_batch_ag_news(batch):\n",
- " label_list, text_list = [], []\n",
- " for _label, _text in batch:\n",
- " label_list.append(label_pipeline(_label))\n",
- " text_list.append(torch.tensor(text_pipeline(_text), dtype=torch.int64))\n",
- "\n",
- "\n",
- " label_list = torch.tensor(label_list, dtype=torch.int64)\n",
- " text_list = pad_sequence(text_list, batch_first=True)\n",
- "\n",
- "\n",
- " return label_list.to(device), text_list.to(device)\n",
- "\n",
- "BATCH_SIZE = 32\n",
- "\n",
- "train_dataloader_ag_news = DataLoader(\n",
- " split_train_ag_news_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
- ")\n",
- "valid_dataloader_ag_news = DataLoader(\n",
- " split_valid_ag_news_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
- ")\n",
- "test_dataloader_ag_news = DataLoader(\n",
- " test_dataset_ag_news, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
- ")\n",
- "\n",
- "\n",
- "model_ag_news = Net(num_class=4,vocab_size=vocab_size).to(device)\n",
- "model_ag_news.to(device)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "id": "1ee6601d-69a0-4274-a237-38f981a6153b",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 0%| | 0/2 [00:00, ?it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 1/2 - Loss: 268.16309916973114\n",
- "0.24416666666666667\n",
- "save model epoch 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.32s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 2/2 - Loss: 261.3479962348938\n",
- "0.24766666666666667\n",
- "save model epoch 2\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████████| 2/2 [00:03<00:00, 1.99s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training time: 3.97745680809021\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "### Uncomment to Train ###\n",
- "LR=1\n",
- "criterion = torch.nn.CrossEntropyLoss()\n",
- "optimizer = torch.optim.SGD(model_ag_news.parameters(), lr=LR)\n",
- "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
- "save_dir = \"\"\n",
- "file_name = \"model_AG News small1.pth\"\n",
- "train_model(model=model_ag_news,\n",
- " optimizer=optimizer,\n",
- " criterion=criterion,\n",
- " train_dataloader=train_dataloader_ag_news,\n",
- " valid_dataloader=valid_dataloader_ag_news,\n",
- " epochs=2,\n",
- " save_dir=save_dir,\n",
- " file_name=file_name)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "id": "cff62a9a-8839-4bc4-b29c-a1aa85c473e9",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|████████████████████████████████████████| 238/238 [00:01<00:00, 178.30it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.2531578947368421"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader_ag_news, model_ag_news)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3b0c2ac8-3c61-4005-bafd-59169e704349",
- "metadata": {},
- "source": [
- "Let's load a model that has been pretrained using the same method but on the full AG News data set for 100 epochs.\n",
- "\n",
- "The following code plots the cost and validation data accuracy for each epoch of the pretrained model up to and including the epoch that yielded the highest accuracy. As you can see, the pretrained model achieved a very high accuracy of over 90% on the AG News validation set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "id": "79659cc9-a6db-415b-a03c-2b8a13f26653",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/bQk8mJu3Uct3I4JEsEtRnw/model-AG%20News%20small1-acc')\n",
- "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/KNQkqJWWwY_XfbFBRFhZNA/model-AG%20News%20small1-loss')\n",
- "acc_epoch = pickle.load(acc_urlopened)\n",
- "cum_loss_list = pickle.load(loss_urlopened)\n",
- "plot(cum_loss_list,acc_epoch)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a17edde1-7268-468d-ad53-d1880848efc6",
- "metadata": {},
- "source": [
- "The following code loads the pretrained model and evaluates its performance on the AG News test set. **For efficiency, let's not run the evaluation because it can take a few minutes. Instead, claim that the pretrained model works well on the AG News dataset. If you would like to confirm the result for yourself, feel free to uncomment the last line in the following code block.**\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "id": "e98831cf-bdb6-4e9c-9932-8ee7e6897450",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 43,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
- "model_ag_news_ = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
- "model_ag_news_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "id": "346d1f7a-2331-4010-a979-ae71efb00fcc",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|████████████████████████████████████████| 238/238 [00:00<00:00, 323.29it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.9046052631578947"
- ]
- },
- "execution_count": 44,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader_ag_news, model_ag_news_)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "49ecfc70-585f-4fd5-a2d3-3eb558705103",
- "metadata": {},
- "source": [
- "As you can see, the pretrained model worked extremely well on the AG News data set. However, can this model be fine-tuned to perform well on the IMDB data set as well? Let's find out! You can begin by loading the pretrained AG News model.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "id": "92336349-f915-4471-a3d2-64c90ea31171",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 46,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
- "model_fine1 = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
- "model_fine1.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "80e739c4-0b6b-44fa-8d5d-456c52576dd6",
- "metadata": {},
- "source": [
- "The IMDB dataset is a binary classification task with only two classes (positive and negative reviews). Therefore, the output layer of the AG NEWS model should be adjusted to have just two output neurons to reflect the binary nature of the IMDB dataset. This adjustment is essential for the model to accurately learn and predict the sentiment of movie reviews in the IMDB dataset.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "id": "1190f1bf-a030-43b1-b146-5f27715ce6a4",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Original final layer: Linear(in_features=100, out_features=4, bias=True)\n",
- "Input dimention final layer: 100\n"
- ]
- }
- ],
- "source": [
- "model_fine1.classifier\n",
- "in_features = model_fine1.classifier.in_features\n",
- "print(\"Original final layer:\", model_fine1.classifier)\n",
- "print(\"Input dimention final layer:\", in_features)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "682f6a52-d8d8-4ed7-9162-1bf74dee5542",
- "metadata": {},
- "source": [
- "You can change the final layer into a two-class problem.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "id": "46da3876-5b30-4174-bcf1-2702836f3d6d",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Net(\n",
- " (emb): Embedding(400000, 100)\n",
- " (pos_encoder): PositionalEncoding(\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " (transformer_encoder): TransformerEncoder(\n",
- " (layers): ModuleList(\n",
- " (0-1): 2 x TransformerEncoderLayer(\n",
- " (self_attn): MultiheadAttention(\n",
- " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
- " )\n",
- " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
- " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (dropout1): Dropout(p=0.1, inplace=False)\n",
- " (dropout2): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
- ")"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "model_fine1.classifier = nn.Linear(in_features, 2)\n",
- "model_fine1.to(device)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "672f77ee-1134-4656-9e85-c158cb4a64ea",
- "metadata": {},
- "source": [
- "The following code shows the layers that are frozen (`requires_grad == False`) and unfrozen (`requires_grad == True`) in the model. The unfrozen layers will have their weights updated during fine-tuning.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "id": "9afe1e34-b1e3-42a8-b67d-5e99e761dbab",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "emb.weight requires_grad: False\n",
- "transformer_encoder.layers.0.self_attn.in_proj_weight requires_grad: True\n",
- "transformer_encoder.layers.0.self_attn.in_proj_bias requires_grad: True\n",
- "transformer_encoder.layers.0.self_attn.out_proj.weight requires_grad: True\n",
- "transformer_encoder.layers.0.self_attn.out_proj.bias requires_grad: True\n",
- "transformer_encoder.layers.0.linear1.weight requires_grad: True\n",
- "transformer_encoder.layers.0.linear1.bias requires_grad: True\n",
- "transformer_encoder.layers.0.linear2.weight requires_grad: True\n",
- "transformer_encoder.layers.0.linear2.bias requires_grad: True\n",
- "transformer_encoder.layers.0.norm1.weight requires_grad: True\n",
- "transformer_encoder.layers.0.norm1.bias requires_grad: True\n",
- "transformer_encoder.layers.0.norm2.weight requires_grad: True\n",
- "transformer_encoder.layers.0.norm2.bias requires_grad: True\n",
- "transformer_encoder.layers.1.self_attn.in_proj_weight requires_grad: True\n",
- "transformer_encoder.layers.1.self_attn.in_proj_bias requires_grad: True\n",
- "transformer_encoder.layers.1.self_attn.out_proj.weight requires_grad: True\n",
- "transformer_encoder.layers.1.self_attn.out_proj.bias requires_grad: True\n",
- "transformer_encoder.layers.1.linear1.weight requires_grad: True\n",
- "transformer_encoder.layers.1.linear1.bias requires_grad: True\n",
- "transformer_encoder.layers.1.linear2.weight requires_grad: True\n",
- "transformer_encoder.layers.1.linear2.bias requires_grad: True\n",
- "transformer_encoder.layers.1.norm1.weight requires_grad: True\n",
- "transformer_encoder.layers.1.norm1.bias requires_grad: True\n",
- "transformer_encoder.layers.1.norm2.weight requires_grad: True\n",
- "transformer_encoder.layers.1.norm2.bias requires_grad: True\n",
- "classifier.weight requires_grad: True\n",
- "classifier.bias requires_grad: True\n"
- ]
- }
- ],
- "source": [
- "for name, param in model_fine1.named_parameters():\n",
- " print(f\"{name} requires_grad: {param.requires_grad}\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2f1597ed-a727-42d5-bee1-7aaabd6c7681",
- "metadata": {},
- "source": [
- "The following code block simulates fine-tuning on the shortened training set for just 2 epochs. **For the sake of time efficiency, this code block has been commented out**. If you want to see what training looks like, uncomment the following code block, but remember that this code could take approximately 2 minutes to run.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "id": "3d5c5154-4b9d-4360-83d5-fc21a6ba930b",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 0%| | 0/2 [00:00, ?it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 1/2 - Loss: 28.026488423347473\n",
- "0.468\n",
- "save model epoch 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.21s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 2/2 - Loss: 27.68860560655594\n",
- "0.5504\n",
- "save model epoch 2\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.26s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training time: 4.527782678604126\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "LR=1\n",
- "criterion = torch.nn.CrossEntropyLoss()\n",
- "optimizer = torch.optim.SGD(model_fine1.parameters(), lr=LR)\n",
- "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
- "save_dir = \"\"\n",
- "file_name = \"model_fine1.pth\"\n",
- "train_model(model=model_fine1, optimizer=optimizer,\n",
- " criterion=criterion,\n",
- " train_dataloader=train_dataloader,\n",
- " valid_dataloader=valid_dataloader,\n",
- " epochs=2,\n",
- " save_dir=save_dir, \n",
- " file_name=file_name )"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "id": "5bb6f965-f5ea-42db-a273-1201fb7465e2",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:11<00:00, 70.06it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.53036"
- ]
- },
- "execution_count": 52,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_fine1)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "0e75889f-0f39-4b19-aa86-1aeb77b4569e",
- "metadata": {},
- "source": [
- "The following code shows the progress of full fine-tuning of the entire IMDB training set for 100 epochs.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "id": "711e99ea-1b79-4121-bb4d-05455c1d4ea6",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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rZ0+fZrdu3cTHByMVtt0V6crKipo164dv/zyC56enk223+bAkWsDx67PkWsDx67PkWsDx67PkWuDK1+f2WymsLCQzp07o9fLGNXZJNhZUXl5Od7e3pSVleHl5WXr7jQpR64NHLs+R64NHLs+R64NHLs+R64NHL8+eyKTJ4QQQgghHIQEOyGEEEIIByHBzoqcnZ1JTU3F2dnZ1l1pco5cGzh2fY5cGzh2fY5cGzh2fY5cGzh+ffZE7rETQgghhHAQMmInhBBCCOEgJNgJIYQQQjgICXZCCCGEEA5Cgp0QQgghhIOQYGdFb7zxBtHR0bi4uNC9e3d27Nhh6y5dtq+//ppBgwYRFhaGRqNh7dq1DbYrpZg5cyahoaG4urrSt29fDh48aJvOXqa0tDSuvfZaPD09CQoKYsiQIWRkZDRoU1NTQ1JSEv7+/nh4eDB06FDLI+iau/nz59OxY0e8vLzw8vIiPj6eDRs2WLbbc23nevbZZ9FoNEycONHynj3XN2vWLDQaTYNXbGysZbs91wZw9OhR7r//fvz9/XF1deXqq69m586dlu32/L0SHR193rnTaDQkJSUB9n3uTCYTTz75JDExMbi6utKqVSuefvppzp6Dac/nzmEoYRUrV65UBoNBLV68WO3bt0+NGjVK+fj4qMLCQlt37bKsX79ezZgxQ3344YcKUGvWrGmw/dlnn1Xe3t5q7dq16scff1S33367iomJUdXV1bbp8GXo16+fWrJkidq7d6/as2ePGjBggIqMjFSnTp2ytBk9erSKiIhQmzZtUjt37lQ9evRQPXv2tGGvL926devUp59+qg4cOKAyMjLU9OnTlZOTk9q7d69Syr5rO9uOHTtUdHS06tixo0pOTra8b8/1paamqvbt26v8/HzL6/jx45bt9lxbSUmJioqKUiNGjFDff/+9yszMVJ9//rk6dOiQpY09f68UFRU1OG8bN25UgPrqq6+UUvZ97ubMmaP8/f3VJ598orKystT777+vPDw81CuvvGJpY8/nzlFIsLOSbt26qaSkJMu/TSaTCgsLU2lpaTbs1V9zbrAzm80qJCREPf/885b3SktLlbOzs3rvvfds0MO/pqioSAFq69atSqn6WpycnNT7779vafPrr78qQG3bts1W3fxLfH191TvvvOMwtVVUVKirrrpKbdy4Ud14442WYGfv9aWmpqpO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",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/3LEJw8BRgJJFGqlLxaETxA/model-fine1-acc')\n",
- "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/-CT1h97vjv0TolY82Nw29g/model-fine1-loss')\n",
- "acc_epoch = pickle.load(acc_urlopened)\n",
- "cum_loss_list = pickle.load(loss_urlopened)\n",
- "plot(cum_loss_list,acc_epoch)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "85866d1f-1a0d-487c-a426-9da326a06c1f",
- "metadata": {},
- "source": [
- "The following line loads a prefine-tuned model that was trained for 100 epochs on the full IMDB training set and evaluates its performance on the IMDB test set. **For the sake of efficiency, let's not run the evaluation because it can take a few minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, feel free to uncomment the last line in the code block.**\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "id": "cda6a606-1a87-4846-9926-54edc577879a",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/e0WOHKh5dnrbC2lGhpsMMw/model-fine1.pth')\n",
- "model_fine1_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
- "model_fine1_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "id": "e75cfe66-a265-4e7a-8d5f-a7c68f17c6e3",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 77.06it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.8604"
- ]
- },
- "execution_count": 55,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_fine1_)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c9b127d6-b41d-4195-ac5a-3da2d8d70b33",
- "metadata": {},
- "source": [
- "This model demonstrated notable improvement, exhibiting a remarkable achievement with an accuracy of 86% on the test data. This is higher than the 83% achieved by the model trained from scratch on the IMDB dataset. Although the training process was time-intensive (The fine-tuning was as time-intensive as training the model from scratch), the enhanced performance underscores the fine-tuned model's effectiveness and superiority over the model trained from scratch. Much of the computational effort was devoted to updating the transformer layers. To expedite the training process, one viable strategy is to focus on training the final layer only, which can significantly reduce the computational load but might compromise the model's accuracy.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "55331d63-1150-465b-b0bc-d13bbd24fb7c",
- "metadata": {},
- "source": [
- "### Fine-tune the final layer only\n",
- "\n",
- "Fine-tuning the final output layer of a neural network is similar to fine-tuning the whole model. You can begin by loading the pretrained model that you would like to fine-tune. In this case, it is the same model pretrained on the AG News data set.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "id": "c2ffcf34-695f-4b9d-b6c2-5529a74d568a",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 59,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
- "model_fine2 = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
- "model_fine2.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5fa5ba41-8d73-4649-b459-cbc321ca26e2",
- "metadata": {},
- "source": [
- "Now, the key difference. You iterate through all of the parameters in the `model_fine2` model and set the `requires_grad` attribute of each parameter to `False`. This effectively freezes all of the layers in the model, meaning that their weights are to be updated during training.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "id": "000978e5-6244-4be2-8fd5-3e0c7ed1c619",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Freeze all layers in the model\n",
- "for param in model_fine2.parameters():\n",
- " param.requires_grad = False"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "54b17c25-96f4-43b9-b0a8-963085cf5638",
- "metadata": {},
- "source": [
- "Replace the final layer to reflect the fact that you are solving a two-class problem. Note that the new layer will be unfrozen.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "id": "f0c29db4-3051-4247-8459-b7adab12fa45",
- "metadata": {},
- "outputs": [],
- "source": [
- "dim=model_fine2.classifier.in_features"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "id": "b79d7ed1-7a83-4140-ad93-b5e28cdab784",
- "metadata": {},
- "outputs": [],
- "source": [
- "model_fine2.classifier = nn.Linear(dim, 2)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "id": "9387fde1-0a71-45b5-89cf-a2c90ff663d1",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Net(\n",
- " (emb): Embedding(400000, 100)\n",
- " (pos_encoder): PositionalEncoding(\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " (transformer_encoder): TransformerEncoder(\n",
- " (layers): ModuleList(\n",
- " (0-1): 2 x TransformerEncoderLayer(\n",
- " (self_attn): MultiheadAttention(\n",
- " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
- " )\n",
- " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
- " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (dropout1): Dropout(p=0.1, inplace=False)\n",
- " (dropout2): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
- ")"
- ]
- },
- "execution_count": 63,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "model_fine2.to(device)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "42123afb-6a78-4f98-87dd-e87c2cfa7c4f",
- "metadata": {},
- "source": [
- "The following block simulates fine-tuning on the shortened training set for just 2 epochs. **For the sake of time efficiency, this code block has been commented out**. The following code should take a shorter amount of time to train than the full fine-tuning conducted previously because only the final layer is unfrozen.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "id": "3114fa2b-90ee-4955-8459-e01c1db83f2d",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 0%| | 0/2 [00:00, ?it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 1/2 - Loss: 27.616634011268616\n",
- "0.5616\n",
- "save model epoch 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 50%|██████████████████████▌ | 1/2 [00:01<00:01, 1.41s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 2/2 - Loss: 27.362923175096512\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████████| 2/2 [00:02<00:00, 1.25s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training time: 2.5001277923583984\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "LR=1\n",
- "criterion = torch.nn.CrossEntropyLoss()\n",
- "optimizer = torch.optim.SGD(model_fine2.parameters(), lr=LR)\n",
- "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
- "save_dir = \"\"\n",
- "file_name = \"model_fine2.pth\"\n",
- "train_model(model=model_fine2, optimizer=optimizer, criterion=criterion, train_dataloader=train_dataloader, valid_dataloader=valid_dataloader, epochs=2, save_dir=save_dir ,file_name=file_name )\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "id": "78fd006e-74d6-4e3c-b82d-54c31bbee129",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 76.08it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.51816"
- ]
- },
- "execution_count": 65,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_fine2)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b93c85f7-ab98-4bbd-8df3-b1f96808e9b9",
- "metadata": {},
- "source": [
- "Once again, you will not use the model that you just fine-tuned, but instead inspect the final layer fine-tuning process of a model fine-tuned on the full IMDB training set for 100 epochs.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "id": "01dcda12-2d33-45fa-94c1-6caad9ec7363",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/UdR3ApQnxSeV2mrA0CbiLg/model-fine2-acc')\n",
- "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/rWGDIF-uL2dEngWcIo9teQ/model-fine2-loss')\n",
- "acc_epoch = pickle.load(acc_urlopened)\n",
- "cum_loss_list = pickle.load(loss_urlopened)\n",
- "plot(cum_loss_list,acc_epoch)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "3043392c-ee76-4103-a758-83e90f594604",
- "metadata": {},
- "source": [
- "The following line loads the pretrained model and evaluates its performance on the test set. **For efficiency, let's not run the evaluation because it can take a few minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, feel free to uncomment the last line in the following code block.**\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "id": "14e51cf2-4e3f-4adf-8c58-f65da0e74f65",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 68,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/B-1H6lpDg-A0zRwpB6Ek2g/model-fine2.pth')\n",
- "model_fine2_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
- "model_fine2_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "id": "d7cf2dfa-3705-4f3e-a114-b4c56368cc77",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:09<00:00, 85.13it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.64144"
- ]
- },
- "execution_count": 69,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_fine2_)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "dbd9b301-88ba-42d4-b8ca-6e00379fb3b4",
- "metadata": {},
- "source": [
- "The previous code indicates that although fine-tuning the final layer takes a significantly smaller amount of time than fine-tuning the whole model, the performance of the model with just the last layer unfrozen is significantly worse (64% accuracy) than the fine-tuned model with all layers unfrozen (86% accuracy).\n",
- "\n",
- "---"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d23b9fe8-1655-4c4c-8ee2-f78db934d5f2",
- "metadata": {},
- "source": [
- "# Adapters\n",
- "FeatureAdapter is a neural network module that introduces a low-dimensional bottleneck in a transformer architecture to allow fine-tuning with fewer parameters. It compresses the original high-dimensional embeddings into a lower dimension, applies a non-linear transformation, and then expands it back to the original dimension. This process is followed by a residual\n",
- "connection that adds the transformed output back to the original input to preserve information and\n",
- "promote gradient flow.\n",
- "\n",
- "## Benefits of using adapters in neural networks\n",
- "\n",
- "- **Efficient fine-tuning**: Adapters allow for targeted updates to specific parts of the model, reducing the need to retrain large sections of the network.\n",
- "\n",
- "- **Parameter efficiency**: By adding only a few parameters, adapters make it feasible to modify large models without substantial computational overhead.\n",
- "\n",
- "- **Preservation of pretrained features**: Adapters enable the modification of a model while retaining the valuable features learned during extensive pretraining.\n",
- "\n",
- "- **Modularity and flexibility**: They enhance the modularity of models, allowing easy adaptation to various tasks without altering core architecture.\n",
- "\n",
- "- **Task-specific adaptation**: Adapters can be tailored to improve performance on particular tasks, optimizing the model’s effectiveness.\n",
- "\n",
- "- **Transfer learning and domain adaptation**: They facilitate the adaptation of models to new domains, bridging gaps between different data distributions.\n",
- "\n",
- "- **Continual learning**: Adapters support the model's ability to learn new information continuously without forgetting previous knowledge.\n",
- "\n",
- "- **Reduced risk of overfitting**: With fewer trainable parameters, adapters help prevent overfitting, especially on smaller data sets.\n",
- "\n",
- "The following code shows an adapter model.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "id": "c46c86b1-eb04-4976-9fa7-c3fc06339bae",
- "metadata": {},
- "outputs": [],
- "source": [
- "class FeatureAdapter(nn.Module):\n",
- " \"\"\"\n",
- " Attributes:\n",
- " size (int): The bottleneck dimension to which the embeddings are temporarily reduced.\n",
- " model_dim (int): The original dimension of the embeddings or features in the transformer model.\n",
- " \"\"\"\n",
- " def __init__(self, bottleneck_size=50, model_dim=100):\n",
- " super().__init__()\n",
- " self.bottleneck_transform = nn.Sequential(\n",
- " nn.Linear(model_dim, bottleneck_size), # Down-project to a smaller dimension\n",
- " nn.ReLU(), # Apply non-linearity\n",
- " nn.Linear(bottleneck_size, model_dim) # Up-project back to the original dimension\n",
- " )\n",
- "\n",
- " def forward(self, x):\n",
- " \"\"\"\n",
- " Forward pass of the FeatureAdapter. Applies the bottleneck transformation to the input\n",
- " tensor and adds a skip connection.\n",
- "\n",
- " Args:\n",
- " x (Tensor): Input tensor with shape (batch_size, seq_length, model_dim).\n",
- "\n",
- " Returns:\n",
- " Tensor: Output tensor after applying the adapter transformation and skip connection,\n",
- " maintaining the original input shape.\n",
- " \"\"\"\n",
- " transformed_features = self.bottleneck_transform(x) # Transform features through the bottleneck\n",
- " output_with_residual = transformed_features + x # Add the residual connection\n",
- " return output_with_residual"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a5c12e9a-5bf1-4a4f-b792-25a264253d28",
- "metadata": {},
- "source": [
- "The adapted class wraps this adapter functionality around any specified linear layer, enhancing its output with the non-linearity of a ReLU activation function. This setup is particularly useful for experimenting with subtle architectural modifications in deep learning models, facilitating fine-tuning and potentially improving model performance on complex tasks.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "id": "97d59ae0-610e-49bb-a9c4-1020c2dc468d",
- "metadata": {},
- "outputs": [],
- "source": [
- "class Adapted(nn.Module):\n",
- " def __init__(self, linear,bottleneck_size=None):\n",
- " super(Adapted, self).__init__()\n",
- " self.linear = linear\n",
- " model_dim = linear.out_features\n",
- " if bottleneck_size is None:\n",
- " bottleneck_size = model_dim//2 # Define default bottleneck size as half the model_dim\n",
- "\n",
- " # Initialize FeatureAdapter with calculated bottleneck_size and model_dim\n",
- " self.adaptor = FeatureAdapter(bottleneck_size=bottleneck_size, model_dim=model_dim)\n",
- "\n",
- " def forward(self, x):\n",
- " # First, the input x is passed through the linear layer\n",
- " x=self.linear(x)\n",
- " # Then it's adapted using FeatureAdapter\n",
- " x= self.adaptor(x)\n",
- " return x"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d8cfb80d-eb8c-4342-8066-33134c5b456d",
- "metadata": {},
- "source": [
- "You load the pretrained transformer model that was trained on the AG News dataset.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "id": "01070ca9-5037-470e-b8f7-ceddfc2f279b",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 74,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
- "model_adapters = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
- "model_adapters.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "e1df412e-51c5-4e8c-9dbe-c6d38f11a0cf",
- "metadata": {},
- "source": [
- "\n",
- "First, freeze the parameters of a model named model_adapters to prevent them from being updated during training. Then, retrieve the number of input features for the classifier, and replace the classifier with a new linear layer that outputs to two classes.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "id": "1820db89-b3b0-4cb2-b42f-1826ba1ec6d0",
- "metadata": {},
- "outputs": [],
- "source": [
- "for param in model_adapters.parameters():\n",
- " param.requires_grad = False\n",
- "\n",
- "dim= model_adapters.classifier.in_features\n",
- "\n",
- "model_adapters.classifier = nn.Linear(dim, 2)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "905ad98d-2f62-475a-a7e0-a2f7119b5081",
- "metadata": {},
- "source": [
- "Let's explore how to apply the adapted object to a linear layer to obtain the first output. You can obtain the unadapted linear layer for the first output by:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "id": "cbdcd100-7fda-45ee-a823-9233b7e68ca6",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Linear(in_features=100, out_features=128, bias=True)\n"
- ]
- }
- ],
- "source": [
- "my_example_layer=model_adapters.transformer_encoder.layers[0].linear1\n",
- "print(my_example_layer)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1cf2017f-bb26-4b9c-86ea-f32cc5ce4450",
- "metadata": {},
- "source": [
- "In the following code, you copy the linear layer and add an adapter layer to it.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "id": "83fd78c1-111d-45f6-9adf-3ab5c7264a8b",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Adapted(\n",
- " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=128, out_features=64, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=64, out_features=128, bias=True)\n",
- " )\n",
- " )\n",
- ")\n"
- ]
- }
- ],
- "source": [
- "my_adapeted_layer=Adapted(my_example_layer)\n",
- "print(my_adapeted_layer)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "50e35b98-bcbd-4aec-b039-464e87ddd6fb",
- "metadata": {},
- "source": [
- "You can print the adapted layer and show that the new layers have their requires_grad attribute set to True, indicating that these layers will be updated during training.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "id": "d23c9515-4303-437d-8f02-99a3723e8b89",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "False\n",
- "False\n",
- "True\n",
- "True\n",
- "True\n",
- "True\n"
- ]
- }
- ],
- "source": [
- "for parm in my_adapeted_layer.parameters():\n",
- " print(parm.requires_grad)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1a6bc1b1-f1bb-4c01-99ee-c2e16e5090c2",
- "metadata": {},
- "source": [
- "You can set a layer in the model to the adapter layer, as shown in the following code in the commented-out line. However, because there are many layers, a more systematic approach would be to traverse the model and replace specific layers with the adapter layer. Note that you should set the bottleneck size to 24, ensuring that there are fewer parameters to train than during a full fine-tuning.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "id": "f49d7836-5487-4cb4-a177-797f4eb75cee",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Adapt a specific layer\n",
- "#model_adapters.transformer_encoder.layers[0].linear1=Adapted(my_example_layer)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 82,
- "id": "bc5a4706-ef6f-4d1d-9b44-4e6e3cfba925",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2"
- ]
- },
- "execution_count": 82,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Find number of layers\n",
- "N_layers=len(model_adapters.transformer_encoder.layers)\n",
- "N_layers"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "id": "6af0d8e7-f38c-47a6-9ba4-7a74994e7f33",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " before linear1\n",
- "Linear(in_features=100, out_features=128, bias=True)\n",
- " after linear1\n",
- "Adapted(\n",
- " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=128, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=128, bias=True)\n",
- " )\n",
- " )\n",
- ")\n",
- " before linear2\n",
- "Linear(in_features=128, out_features=100, bias=True)\n",
- " after linear2\n",
- "Adapted(\n",
- " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=100, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=100, bias=True)\n",
- " )\n",
- " )\n",
- ")\n",
- " before linear1\n",
- "Linear(in_features=100, out_features=128, bias=True)\n",
- " after linear1\n",
- "Adapted(\n",
- " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=128, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=128, bias=True)\n",
- " )\n",
- " )\n",
- ")\n",
- " before linear2\n",
- "Linear(in_features=128, out_features=100, bias=True)\n",
- " after linear2\n",
- "Adapted(\n",
- " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=100, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=100, bias=True)\n",
- " )\n",
- " )\n",
- ")\n"
- ]
- }
- ],
- "source": [
- "# Traverse model and adapt\n",
- "for n in range(N_layers):\n",
- " encoder=model_adapters.transformer_encoder.layers[n]\n",
- " if encoder.linear1:\n",
- " print(\" before linear1\")\n",
- " print(encoder.linear1)\n",
- " model_adapters.transformer_encoder.layers[n].linear1=Adapted(encoder.linear1, bottleneck_size=24)\n",
- " print(\" after linear1\")\n",
- " print(model_adapters.transformer_encoder.layers[n].linear1)\n",
- "\n",
- " if encoder.linear2:\n",
- " print(\" before linear2\")\n",
- " print(model_adapters.transformer_encoder.layers[n].linear2)\n",
- " model_adapters.transformer_encoder.layers[n].linear2=Adapted(encoder.linear2, bottleneck_size=24)\n",
- " print(\" after linear2\")\n",
- " print(model_adapters.transformer_encoder.layers[n].linear2)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "1ea3e84d-649a-462d-8c21-ce1d4a915ce2",
- "metadata": {},
- "source": [
- "The following code sends the model to the device.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "id": "67b7450d-b1f4-42c6-9995-b13da7a8a7d7",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Net(\n",
- " (emb): Embedding(400000, 100)\n",
- " (pos_encoder): PositionalEncoding(\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " (transformer_encoder): TransformerEncoder(\n",
- " (layers): ModuleList(\n",
- " (0-1): 2 x TransformerEncoderLayer(\n",
- " (self_attn): MultiheadAttention(\n",
- " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
- " )\n",
- " (linear1): Adapted(\n",
- " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=128, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=128, bias=True)\n",
- " )\n",
- " )\n",
- " )\n",
- " (dropout): Dropout(p=0.1, inplace=False)\n",
- " (linear2): Adapted(\n",
- " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
- " (adaptor): FeatureAdapter(\n",
- " (bottleneck_transform): Sequential(\n",
- " (0): Linear(in_features=100, out_features=24, bias=True)\n",
- " (1): ReLU()\n",
- " (2): Linear(in_features=24, out_features=100, bias=True)\n",
- " )\n",
- " )\n",
- " )\n",
- " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
- " (dropout1): Dropout(p=0.1, inplace=False)\n",
- " (dropout2): Dropout(p=0.1, inplace=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
- ")"
- ]
- },
- "execution_count": 84,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Send model to device\n",
- "model_adapters.to(device)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d233586b-c7ef-49e6-b684-b8d24997db80",
- "metadata": {},
- "source": [
- "Finally, the following code simulates training of the adapted model by training on a shortend IMDB train set for 2 epochs.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "id": "f275d5f0-ee19-469b-a957-98bf72d3f3c3",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 0%| | 0/2 [00:00, ?it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 1/2 - Loss: 28.25411468744278\n",
- "0.5256\n",
- "save model epoch 1\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.36s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Epoch 2/2 - Loss: 27.504657685756683\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.19s/it]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Training time: 4.385776519775391\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "LR=1\n",
- "criterion = torch.nn.CrossEntropyLoss()\n",
- "optimizer = torch.optim.SGD(model_adapters.parameters(), lr=LR)\n",
- "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
- "save_dir = \"\"\n",
- "file_name = \"model_adapters.pth\"\n",
- "train_model(model=model_adapters,\n",
- " optimizer=optimizer,\n",
- " criterion=criterion,\n",
- " train_dataloader=train_dataloader,\n",
- " valid_dataloader=valid_dataloader,\n",
- " epochs=2,\n",
- " save_dir=save_dir, \n",
- " file_name=file_name )"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "id": "dbee37a9-750f-4907-8875-4c39c0fc0429",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|█████████████████████████████████████████| 782/782 [00:12<00:00, 63.17it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "0.50024"
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "evaluate(test_dataloader, model_adapters)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "880ad357-dd0a-4b17-8636-6d72825f0500",
- "metadata": {},
- "source": [
- "Naturally, you will not use the model you just trained. Instead, you will track the training of an adapted model fine-tuned on the full IMDB dataset for 100 epochs.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "id": "7576770c-efdc-452a-8cab-236471b57a2e",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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",
- "text/plain": [
- "
\n",
+ "\n",
+ "# **Adapters in PyTorch**\n",
+ "\n",
+ "Estimated time needed: **45** minutes\n",
+ "\n",
+ "**_Note to advanced users_: If you are already familiar with classical fine-tuning and you only want to see the section that relates to adapters, skip forward to Adapters and run all of the cells above that section by going to _Run --> Run All Above Selected Cell_**\n",
+ "\n",
+ "You can fine-tune a neural network in several ways. Common strategies include adjusting only the final layer or fine-tuning all layers. However, these methods have their drawbacks: fine-tuning just the final layer often leads to less than optimal results, while fine-tuning all layers can be very time-consuming.\n",
+ "\n",
+ "To address these issues, researchers have developed various parameter efficient fine-tuning (PEFT) techniques. One such technique involves the use of adapters. Adapters enable modular training, where small, task-specific modules are trained within the model without changing the pre-existing pretrained parameters. This approach efficiently tailors the model to new tasks with a reduced risk of overfitting. However, adapters are not a cure-all solution. While they are less likely to overfit and are computationally efficient, they might not always reach the same level of accuracy as full model fine-tuning, particularly if the task necessitates substantial changes from the pretrained model's original capabilities.\n",
+ "\n",
+ "In this hands-on lab, you learn how to apply an adapter to a transformer-based neural network that has been trained on the AG News data set, with the aim of using this model on the IMDB data set. You also evaluate and compare the performance of this method with that of a fully fine-tuned model and a model where only the last layer is fine-tuned.\n",
+ "\n",
+ "---\n",
+ "\n",
+ "# __Table of contents__\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9e4d071d-35d8-4d69-9168-a40d25df2205",
+ "metadata": {},
+ "source": [
+ "# Objectives\n",
+ "\n",
+ "After completing this lab, you are able to:\n",
+ "\n",
+ "- Define and pretrain a transformer-based neural network using PyTorch for a classification task [Optional]\n",
+ "- Fully fine-tune the pretrained model for a different classification task [Optional]\n",
+ "- Compare results by fine-tuning only the last layer of the pretrained model [Optional]\n",
+ "- Understand how adapters work\n",
+ "- Apply adapters to linear layers in a neural network\n",
+ "- Train a neural network in a parameter efficient way by training just the adapted layers\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "35a85867-b5fa-4780-b512-35bdf829b33c",
+ "metadata": {},
+ "source": [
+ "# Setup\n",
+ "\n",
+ "### Install required libraries\n",
+ "\n",
+ "For this lab, you use the following libraries, which are __not__ preinstalled in the Skills Network Labs environment. __You must run the code in the following cell__ to install them.\n",
+ "\n",
+ "```bash\n",
+ "!pip install --upgrade portalocker==2.8.2 torchtext==0.17.0 torchdata==0.7.1 pandas==2.2.2 matplotlib==3.9.0 scikit-learn==1.5.0 torch==2.2.0 numpy==1.26.4\n",
+ "```\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a2d7c12f-2141-4af9-91a8-b0c1c8088d66",
+ "metadata": {},
+ "source": [
+ "### Import required libraries\n",
+ "\n",
+ "The following code imports the required libraries.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "81927908-a8c5-42d6-b24c-97b8b13a42e6",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "True\n",
+ "Tesla P40\n",
+ "Import Successfully!\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Environment setup\n",
+ "import os\n",
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
+ "\n",
+ "# Suppress warnings\n",
+ "import warnings\n",
+ "warnings.filterwarnings('ignore')\n",
+ "def warn(*args, **kwargs):\n",
+ " pass\n",
+ "warnings.warn = warn\n",
+ "\n",
+ "# PyTorch and related libraries\n",
+ "import torch\n",
+ "from torch import nn\n",
+ "from torch.utils.data import DataLoader, Dataset\n",
+ "from torch.utils.data.dataset import random_split\n",
+ "from torch.nn.utils.rnn import pad_sequence\n",
+ "\n",
+ "# TorchText for NLP tasks\n",
+ "from torchtext.datasets import AG_NEWS, IMDB\n",
+ "from torchtext.data.utils import get_tokenizer\n",
+ "from torchtext.vocab import build_vocab_from_iterator, GloVe, Vectors\n",
+ "from torchtext.data.functional import to_map_style_dataset\n",
+ "\n",
+ "# Utility libraries\n",
+ "import time\n",
+ "from itertools import accumulate\n",
+ "import math\n",
+ "import pickle\n",
+ "import io\n",
+ "from urllib.request import urlopen\n",
+ "import tarfile\n",
+ "import tempfile\n",
+ "\n",
+ "# Data manipulation and visualization\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "from tqdm import tqdm\n",
+ "\n",
+ "# Jupyter Notebook utilities\n",
+ "from IPython.display import Markdown as md\n",
+ "\n",
+ "# PyTorch-specific configurations\n",
+ "torch.set_num_threads(1)\n",
+ "\n",
+ "# CUDA-related checks\n",
+ "print(torch.cuda.is_available())\n",
+ "print(torch.cuda.get_device_name())\n",
+ "\n",
+ "print(\"Import Successfully!\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5e710480-51b4-46c7-a3b4-5c80021007b2",
+ "metadata": {},
+ "source": [
+ "### Define helper functions\n",
+ "\n",
+ "The following code shows some helper functions to help with plotting, saving, and loading files. These functions are not the main focus of this lab, so you do not have to dwell on these too long. However, do run the cells in this section to define these helper functions.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "57d49c2a-d309-4608-8e45-b9fa8ec63cbd",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot(COST,ACC):\n",
+ "\n",
+ " fig, ax1 = plt.subplots()\n",
+ " color = 'tab:red'\n",
+ " ax1.plot(COST, color=color)\n",
+ " ax1.set_xlabel('epoch', color=color)\n",
+ " ax1.set_ylabel('total loss', color=color)\n",
+ " ax1.tick_params(axis='y', color=color)\n",
+ "\n",
+ " ax2 = ax1.twinx()\n",
+ " color = 'tab:blue'\n",
+ " ax2.set_ylabel('accuracy', color=color) # you already handled the x-label with ax1\n",
+ " ax2.plot(ACC, color=color)\n",
+ " ax2.tick_params(axis='y', color=color)\n",
+ " fig.tight_layout() # otherwise the right y-label is slightly clipped\n",
+ "\n",
+ " plt.show()\n",
+ "\n",
+ "\n",
+ "def save_list_to_file(lst, filename):\n",
+ " \"\"\"\n",
+ " Save a list to a file using pickle serialization.\n",
+ "\n",
+ " Parameters:\n",
+ " lst (list): The list to be saved.\n",
+ " filename (str): The name of the file to save the list to.\n",
+ "\n",
+ " Returns:\n",
+ " None\n",
+ " \"\"\"\n",
+ " with open(filename, 'wb') as file:\n",
+ " pickle.dump(lst, file)\n",
+ "\n",
+ "\n",
+ "def load_list_from_file(filename):\n",
+ " \"\"\"\n",
+ " Load a list from a file using pickle deserialization.\n",
+ "\n",
+ " Parameters:\n",
+ " filename (str): The name of the file to load the list from.\n",
+ "\n",
+ " Returns:\n",
+ " list: The loaded list.\n",
+ " \"\"\"\n",
+ " with open(filename, 'rb') as file:\n",
+ " loaded_list = pickle.load(file)\n",
+ " return loaded_list"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fb4827b6-33c9-4370-bfbf-983d89623c98",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0d6f6a86-020b-4ed5-8c52-5fa69dceca97",
+ "metadata": {},
+ "source": [
+ "# Positional encodings\n",
+ "\n",
+ "Positional encodings play a pivotal role in transformers and various sequence-to-sequence models, aiding in conveying critical information regarding the positions or sequencing of elements within a given sequence. To illustrate, let's examine the sentences: \"He painted the car red\" and \"He painted the red car.\" Despite their distinct meanings, it's worth noting that the embeddings for these sentences remain identical in the absence of positional encodings. The following class defines positional encodings by inheriting from PyTorch's `Module` class.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "88c9cebf-7dbe-46d0-81d2-5a116120c374",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class PositionalEncoding(nn.Module):\n",
+ " \"\"\"\n",
+ " https://pytorch.org/tutorials/beginner/transformer_tutorial.html\n",
+ " \"\"\"\n",
+ "\n",
+ " def __init__(self, d_model, vocab_size=5000, dropout=0.1):\n",
+ " super().__init__()\n",
+ " self.dropout = nn.Dropout(p=dropout)\n",
+ "\n",
+ " pe = torch.zeros(vocab_size, d_model)\n",
+ " position = torch.arange(0, vocab_size, dtype=torch.float).unsqueeze(1)\n",
+ " div_term = torch.exp(\n",
+ " torch.arange(0, d_model, 2).float()\n",
+ " * (-math.log(10000.0) / d_model)\n",
+ " )\n",
+ " pe[:, 0::2] = torch.sin(position * div_term)\n",
+ " pe[:, 1::2] = torch.cos(position * div_term)\n",
+ " pe = pe.unsqueeze(0)\n",
+ " self.register_buffer(\"pe\", pe)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " x = x + self.pe[:, : x.size(1), :]\n",
+ " return self.dropout(x)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "aadc814f-d060-47be-963f-c28cfd0618e4",
+ "metadata": {},
+ "source": [
+ "# Import IMDB data set\n",
+ "\n",
+ "The following code loads the IMDB data set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "c479b278-01b9-4863-9821-528b1607a74b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/35t-FeC-2uN1ozOwPs7wFg.gz')\n",
+ "tar = tarfile.open(fileobj=io.BytesIO(urlopened.read()))\n",
+ "tempdir = tempfile.TemporaryDirectory()\n",
+ "tar.extractall(tempdir.name)\n",
+ "tar.close()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ec7531bd-8b33-45d9-8061-9de43bd188b8",
+ "metadata": {},
+ "source": [
+ "## IMDB data set overview\n",
+ "\n",
+ "The **IMDB data set** contains movie reviews from the Internet Movie Database (IMDB) and is commonly used for binary sentiment classification tasks. It's a popular data set for training and testing models in natural language processing (NLP), particularly in the context of sentiment analysis.\n",
+ "\n",
+ "### Data set composition\n",
+ "\n",
+ "- **Reviews**: The data set consists of 50,000 movie reviews, divided evenly into 25,000 training and 25,000 testing samples.\n",
+ "- **Sentiment labels**: Each review is labeled as either positive or negative, indicating the sentiment expressed in the review. The data set is balanced, with an equal number of positive and negative reviews in both the training and testing sets.\n",
+ "- **Text content**: Reviews are presented as plain text and have been preprocessed to some extent. For example, HTML tags are removed, but the text retains its original punctuation and capitalization.\n",
+ "- **Usage**: The data set is commonly used to train models for binary sentiment classification, where the goal is to predict whether a given review is positive or negative based on its text content.\n",
+ "\n",
+ "### Applications\n",
+ "\n",
+ "- **Sentiment analysis**: The primary application of the IMDB data set is in sentiment analysis, where it serves as a benchmark for various text classification algorithms.\n",
+ "- **Natural language processing**: The data set is widely used in NLP research and applications, providing a basis for testing the effectiveness of different models and approaches in understanding human language.\n",
+ "\n",
+ "### Challenges\n",
+ "\n",
+ "The data set is small, so it's hard to train a model from scratch.\n",
+ "\n",
+ "The following class is defined to traverse the IMDB data set. The need to define this class arises from the fact that the IMDB data set is split across a large number of files.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "51bc66a7-506d-4ac4-aa0b-1813c6a0e4c5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class IMDBDataset(Dataset):\n",
+ " def __init__(self, root_dir, train=True):\n",
+ " \"\"\"\n",
+ " root_dir: The base directory of the IMDB dataset.\n",
+ " train: A boolean flag indicating whether to use training or test data.\n",
+ " \"\"\"\n",
+ " self.root_dir = os.path.join(root_dir, \"train\" if train else \"test\")\n",
+ " self.neg_files = [os.path.join(self.root_dir, \"neg\", f) for f in os.listdir(os.path.join(self.root_dir, \"neg\")) if f.endswith('.txt')]\n",
+ " self.pos_files = [os.path.join(self.root_dir, \"pos\", f) for f in os.listdir(os.path.join(self.root_dir, \"pos\")) if f.endswith('.txt')]\n",
+ " self.files = self.neg_files + self.pos_files\n",
+ " self.labels = [0] * len(self.neg_files) + [1] * len(self.pos_files)\n",
+ " self.pos_inx=len(self.pos_files)\n",
+ "\n",
+ " def __len__(self):\n",
+ " return len(self.files)\n",
+ "\n",
+ " def __getitem__(self, idx):\n",
+ " file_path = self.files[idx]\n",
+ " label = self.labels[idx]\n",
+ " with open(file_path, 'r', encoding='utf-8') as file:\n",
+ " content = file.read()\n",
+ " return label, content"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6bb31d42-b20e-413d-96f6-7d680eb83bb2",
+ "metadata": {},
+ "source": [
+ "The following code uses the `IMDBDataset` class previously defined to create iterators for the train and test data sets. In the latter part of the cell, you can return 20 examples from the train set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "01513044-f657-4203-b933-bad10ebeb4c8",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(0, 'It is important not to be insulted by lack of logic or common sense and those who have any \"gray matters\" will agree that this movie just doesn\\'t work.
The problems lay in the direction, cast selections and lack of depth in the character building. The word comedy was very hard thing to say when i expect to laugh when these words are used. Let\\'s look at the problems in direction/script.
Brother and sister both in their mid 30\\'s seem to be well adjusted. They meet a complete stranger at a park and Heather Graham character walks up to her and asks the most intimate questions that even half sane person would be running the other way or at least scream for a police officer. He then awkwardly walks over and makes some stupid statements and she falls for him. Then after ONE date were they all go out together he falls in love with her and decides to get married in Vegas in a week\\'s time???? Hello does anyone feel stupid yet? He goes out with thousands of women and he meets this one person who says about 10 words that WE see on the screen and he wants to marry her. Not only was there no chemistry it just doesn\\'t make sense. Sure it\\'s a romantic comedy and I want to believe it could, but the direction made it completely flat.
Now Heather falls head over heels with her too and when Heather Graham and Bridget Moynahan (very shallow character) kiss or more to the point it was sloppiest kiss ever that chemistry MIGHT be there. I found it unromantic and unfunny and while many say Heather cannot act i think the reality is Heather was clearly the wrong person for this role.
This was Sue Kramer debut as a director and to me it was just too much for her to chew. It would take a lot of craft to make this movie work and IMHO it could be done with better writers and casting and direction.')\n",
+ "(0, \"THE SCREAMING SKULL (1 outta 5 stars) This movie boasts some pretty cool opening credits (an offscreen narrator warning that movie patrons will be offered a free burial if they die of fright watching this movie, a scary shot of a skull emerging from a placid pool and the ubiquitous scary music) but, sadly, the movie is all downhill from there. A widowed man takes his new bride to his secluded mansion... admonishing his servants and friends that the new Mrs. has a very fragile disposition due to a tragedy in her past. Well, in no time at all she begins to see and hear mysterious things that no one else can. Her husband assures her that it's all merely in her mind and... well, you can probably see where this all is going. You will have figured out what's going on long before our hapless heroine... because you have probably seen the exact same plot in hundreds of other movies and TV shows (and done better, too). To add to the movie's myriad transgressions, most cuts of this movie (on numerous cheap DVD compilations) seem to be missing a few key scenes. You see the heroine slowly walking towards the window... she goes to open it... you know she is going to see something scary... and then... suddenly the scene cuts to her sobbing in her husband's arms. So what did she see??? I guess we'll never know.\")\n",
+ "(0, \"
Whether any indictment was intended must be taken into consideration. If in the year 2000 there were still rifts of feeling between Caucasian and Afro-Americans in Georgia, such as shown in this film, obviously there remains a somewhat backward mentality among a lot of people out there. It is rather hypocritical, to say the least, if everyone adores Halle Berry, Whoopie Goldberg, Beyoncé, Noemi Campbell, Denzel Washington, Will Smith, et. al., whilst out in the backs there persist manifest racial divides.
White grandmother suddenly gets black grand-daughter thrust upon her, only to meet up with black grandfather in a very white social backwater. The story is sweet, not lacking tragic overtones, and eminently predictable as in most of these kinds of TV films, though the final scene has you guessing............ will he? won't he.......?
Gena Rowlands in her typical style offers a sincere rendering, and Louis Gossett is a good match for her; the little Penny Bae fortunately does not steal the show.
A `nice' way of relaxing after Sunday lunch without having to force your mind too much, though you might just find yourself having a little siesta in the middle of it.\")\n",
+ "(0, 'First, it takes a full half hour to get Hackman out of jail and to start doing the job. What a waste of time, we all know Hackman is getting out to do some job for his masters, why waste almost a third of the movie on these sequences. Then Hackman stays in a hotel and the story arc again goes nowhere, simply proving to us that Hackman is under close watch and anything he says or does is know by the masters. Again, another 20 minutes. Then more wasted time showing the reunion with his wife. All of this should have taken 10-15 minutes at most simply as a set-up for the real action, intrigue and plot twists. By the time the real action gets going, I was so bored that I just wanted the movie to end. Hackman is great as usual, and the other actors as well, but this is a dud of the first magnitude.')\n",
+ "(0, \"Banned as a 'Video Nasty' in the UK, Unhinged has naturally gained quite a bit of notoriety. However, the most shocking thing I found about the film was its amateurishness in all departments. The bloodletting I could handle: the terrible acting, shoddy editing, awful direction, lousy script and abysmal soundtrack were much harder to take.
Three girls on their way to a music festival crash into a ravine during a storm. They are rescued by a friendly stranger who takes them to a nearby house. The owner of the house, a batty old lady, and her spinster daughter, welcome the girls in, allowing them to stay for a few days in order to recuperate. However, someone doesn't want the girls to leave\\x97ever! One by one they fall victim to an unseen assailant.
Taking a long time to get going and featuring some of the worst performances ever in a horror film (and that takes some doing), Unhinged is a truly awful film. The music is a total mess (it sounds like a three year old has been let loose on a synthesiser) and as such, it complements the movie perfectly. Only a couple of bloody scenes towards the end and a bit of gratuitous nudity save Unhinged from getting the lowest possible score.
If you are a horror completist (and unfortunately, I am), you will want to see this in order to tick it off the Video Nasty watch-list. But be warned\\x97it is really, really bad.\")\n",
+ "(0, \"When great director/actor combinations are talked about the team of J. Lee Thompson and Charles Bronson is not usually mentioned. Probably because the output of nine joint ventures between the two of them runs the gamut from the really good action entertainment to the mediocre. Unfortunately Kinjite: Forbidden Subjects falls in the latter.
That's sad because Kinjite could have been a whole lot better. But for the life of me I don't understand why it was necessary to make the father of the missing Japanese girl, a guy used to getting some cheap jollies because the romance in his marriage has run out. That might have been good for another film altogether, but it served no purpose here.
A straightforward cop drama with Charles Bronson as a vice cop who's seen a bit too much in his line of work and has a strong prejudice against orientals. That part could also have used a little explaining as well. But he's going to have to overcome it if he and patient partner Perry Lopez are going to locate a captured Japanese school girl.
Bronson's time in the vice squad have told him exactly where to look for the kidnapper. A stylish, murderous pimp played by Jaime Fernandez is the guy and he and Bronson have some history. In fact in the film's best scene, Bronson made him eat an expensive rolex watch and set his car on fire.
At one point Fernandez happens to spot Bronson and Lopez in an all night delicatessen and this being after his rolex snack, he sprays the place with an Uzi killing everyone, but Bronson and Lopez. I really think that little incident would have had more than a couple vice cops from the LAPD after Fernandez. But that's another terribly big hole in the plot.
Still there is a very rough justice in the end for Fernandez. I wish the whole film had been better though. This was the last film of the Bronson-Thompson team and J. Lee Thompson's last as a director. He should have gone out with something better.\")\n",
+ "(0, 'First off, let me say that I am a great believer in Fanpro stuff. I see it as a way to continue a good show long after it has been cancelled. Star Trek Voyages and Star Wars Revelations are examples of decent efforts. So I have a soft-spot for fanpro stuff that means I\\'ll overlook things that I would ordinarily slate badly.
So on to ST: HF. Well, first off the good things. Enthusiasm is a major part of making any show believable and, for the most part, the crew of the various ships all seem to be having a good time with their roles. Next, the effects aren\\'t bad for a home-brew effort, with nothing to make you really wince. The stories aren\\'t too bad either. Nothing particularly innovative, but solid enough stuff and at least there are ongoing story-arcs.
But it has a lot of faults.
First off, although they quite obviously HAVE to rip-off Star Trek footage, set backdrops, music and effects, I see no reason why they proceeded to rip off virtually every other sci-fi musical score ever made. Everything from Aliens to Starship Troopers rears it orchestral head at one point or another. Likewise, much of the footage is from other movies, dutifully CGI\\'d over to make it look different. The Grey warships, for instance, though disguised, are quite obviously Star Destroyers from Star Wars. And the station is also rather obviously Fleet Battle Station Ticonderoga from Starship Troopers. Likewise, sound effects from various Star Wars movies appear in space battles between fighters, as does animated over footage. In one scene in either first or second season, I think, you even see two TIE fighters fly past during a battle, which hardly does your suspension of disbelief any favours.
Acting varies from the reasonable to the hideously painful to watch. Everyone does improve as the seasons progress, though, but expect to grimace at the screen a lot, especially in the early seasons. They\\'ve also made some interesting acting choices. Let\\'s just say that the food replicators on this show seem permanently set to \"cake\" and leave it at that.
Make-up effects are generally quite effective on the whole. But they really ought to mercilessly club to death the person who decided to use cheap Ferengi and Cardassian masks for anything other than background use or \"passing\" shots. They are just beyond unrealistic. Every time I saw one of these (apart from trying not to laugh too much) I kept expecting the unfortunate soul wearing it to pull out a gun and announce that \"This is a stick-up!\" In one scene a \"Cardassian\" actually talks whilst wearing one of these. Not only do the lips not move, but the mask doesn\\'t even have an opening where the mouth should be. Someone needs to be slapped hard for that. Couldn\\'t they have taken a craft knife to it, for goodness\\' sake! There are also some well-done, but unintentionally funny make-up jobs, such as the Herman Munster look alike.
The writing, though coherent, is nothing new. Instead the script runs like a continuation of DS9, with the ships heading out from DS12 on various missions. The new enemy, \"The Grey\" aren\\'t very menacing and the plot line involving them is effectively a reworking of the Borg threads. i.e. Starfleet meet the Grey, the Grey are hugely powerful, Starfleet barely escape with their lives, then through technology they begin to find ways to combat the enemy etc etc. All done before with the Borg.
Another bone of contention is the dialogue. Star Trek writers have long had the ability to write \"insert technobabble here\" into a script. It usually means an exposition of the latest plan to combat the enemy using \"quantum phase discriminators\" or \"isolytic charges\" etc. In other words, nonsense that tells you that they are on the case and a resolution is at hand.
The words are just gibberish really. I\\'ve no problem with this, but where ST:HF makes a mess of it is where they include real-world comments into this concept.
Tactical advice such as \"We need to regroup\" sounds good, but not when uttered by trio of characters already standing in a group. Likewise when asked what the situation is, a tactical officer is heard to reply \"We count three battleships\". He actually needed to count them? C\\'mon! I expected the questioner to ask him \"Are you sure?\" or \"Can you double check\". But my all-time favourite comment is this:
Captain: \"Can we establish two-way communication?\"
Comms officer: \"No, we can only send and receive..\"
Well, duh!.....
Having said all the above, the show does improve as it goes along. Seasons 1 and 2 are pretty bad, 3 shows an improvement but 4 & 5 are where it starts to get noticeably better. Season 6 so far looks quite reasonable.
I do have a problem with their choice of media for the shows though. Quicktime sucks, quite frankly and the sooner they move to divx/avi format the better. Some of us like to actually take our downloaded shows and watch them on decent size screen and not peer at a tiny QT window on a computer monitor. Not only does Quicktime make this difficult, but the 320x180 resolution the shows are in does not scale at all well. In fact, it makes the shows pretty unwatchable, like they were a tenth-generation VHS tape copy. The least they could do was to include a hi-res downloadable option.
Anyway, the show has promise, and I\\'m even beginning to like some of the characters. But that\\'s 40 episodes on, so I\\'m not sure this says that much about character development at all.
But what can you say, it\\'s free....
PS: Out of 28 votes, 19 people rated this show as a 9 or 10. Hmmmm... were we watching the same show? Or are you 19 all three year olds?')\n",
+ "(0, 'I read in the papers that W.Snipes was broke so no wonder he would take parts in low budget projects like The Contractor.He is just the next action star to join a growing club:the penniless action stars of the 90s (Van Damme,Segal,Lundgren,Snipes). Here he stars the lead in a cheap action flick which was shot in Bulgaria( we are supposed to believe that the location is London, like only a complete moron would buy that)The story is the one of 1000 other movies: retired special forces good guy gets hired by the government again to do a wet job- after that government wants to get rid of him- good guy gets away after killing bad guys (was that a spoiler? guess not!) The star of the movie: the little girl (Eliza Bennett) outperforms everybody else of the cast!!!One star is for her plus one star for eye candy Lena Headey, makes 2 stars. Only for die hard Snipes fans!Everybody else:avoid!')\n",
+ "(0, \"Did HeidiJean really see this movie? A great Christmas movie? Not even close. Dull, bland and completely lacking in imagination and heart. I kept watching this movie wondering who the hell thought that Carly Pope could play the lead in this movie! The woman has no detectable personality and gives a completely lackluster performance. Baransky was great as usual and provided the only modicum of interesting the whole thing. Probably her involvement was the only reason this project was green lighted to begin with. Maybe I'm expecting too much for a Lifetime movie played 15 days from Christmas but I sat through this thing thinking that with a different director and a recasting JJ with an actress that at least could elicit sympathy this could have been quite a cute little movie.\")\n",
+ "(0, 'Band Camp was awful, The Naked Mile was a little better, and this third straight to DVD in the American Pie franchise seems the same quality as the predecessor. Basically Erik Stifler (John White) split from his girlfriend after losing his virginity, and now him and Mike \\'Cooze\\' Coozeman (Jake Siegel) are joining Erik\\'s cousin Dwight (Steve Talley) at college. With the promise of many parties, plenty of booze, and enough hot chicks at the Beta House, they only have fifty listed tasks to carry out to become official privileged members. But a threat comes into sight with the rivals, GEK (\"Geek\") House, led by power-hungry nerd (and sheep shagger) Edgar (Tyrone Savage) offering bigger and better than what Beta have. To settle it once and for all, Beta and Gek go into battle with the banned, for forty years, Greek Games to beat each other in, with the loser moving out. The last champion of the games, Noah Levenstein aka Jim\\'s Dad (the only regular Eugene Levy) runs the show, which sees the people unhooking bras, a gladiator duel floating on water, catching a greased pig, Russian Roulette in the mouth with cartridges of aged horse spunk, wife carrying and drinking a full keg of alcohol (with puking not disqualifying). It all comes to the sudden death, with a guy getting stripper lap dancing, and they have to resist cumming, Beta House win when Edgar cums with a girl dressed as a sheep on his lap. Also starring Flubber\\'s Christopher McDonald as Mr. Stifler, Meghan Heffern as Ashley, Dan Petronijevic as Bull, Nic Nac as Bobby, Christine Barger as Margie, Italia Ricci as Laura Johnson, Moshana Halbert as Sara Coleman, Sarah Power as Denise, Andreja Punkris as Stacy and Jordan Prentice as Rock. The nudity amount is very slightly increased, as is the grossness of the jokes, and I could guess it being rated one star out of five, but I like it. Adequate!')\n",
+ "(1, \"I saw this recently on a cable channel. The movie is great; it's one of the few musicals I have seen that doesn't shy away from the light and dark. It portrays some of the splendour of the age along with a lot of the squalor. Some of the set piece dance sequences so much is going on, I didn't know where to look next. One day I shall go and see this on the big screen, just so that I see what's happening. But what really lifts this to another level is Oliver Reed's performance as Bill Sykes. Not only is a thoroughly mean and menacing man but there is something else, some inner demons. He gave me the impression that if you pushed him into a corner, he was capable of anything. It was almost as if the Sykes character was on the edge of madness, just awaiting the trigger. I have seen the Robert Newton's Bill Sykes from the 1948 movie, and I thought he was 'just' a bad egg, but Oliver Reed's performance intimidated me in my own living room.\")\n",
+ "(1, '\"The Gingerbread Man is the first thriller I\\'ve ever done!\" \\x96 Robert Altman
In 1955 Charles Laughton directed \"The Night of the Hunter\", a spooky slice of Southern Gothic in which Robert Mitchum plays a scary serial killer. One of the film\\'s more famous sequences consists of two kids escaping from Mitchum on a rowboat, the kids frantically paddling whilst Mitchum wades after them like a monster.
Seven years later Mitchum played an equally spooky killer in \"Cape Fear\", another film set in the American South. That film featured a local attorney trying to protect his family and likewise ended with Mitchum terrorising folks on a boat. In 1991 Martin Scorsese, trying to branch out and tackle something more mainstream, remade \"Cape Fear\", boat scene and all.
Now we have Robert Altman\\'s \"The Gingerbread Man\", another slice of small town Southern Gothic. Altman says he consulted \"The Night of the Hunter\" for inspiration and tackled such a mainstream film purely because he wanted to \"spread his wings and try a popcorn picture\", but what he\\'s secretly attempting to do here is deconstruct the canonical films of the Southern Gothic genre.
So instead of a showdown on small boat, we get a showdown on a giant ship. Instead of two kids being kidnapped, we get two kids being safely returned to the police. Instead of money being hidden, we have money being readily given via a last will and testament. Instead of the righteous attorney of the 1961 film and the deplorable attorney of the 1991 remake, we get a rather three-dimensional lawyer in Kenneth Branagh. Instead of the monster chasing the family we get the hero chasing the bad guys. Instead of the monster breaking into the family\\'s house boat, we have the hero hunting the monster on board the monster\\'s \"house ship\". Similarly, instead of a murderous serial killer we get an innocent weirdo played by Robert Duvall. . .etc etc etc.
Altman goes on and on, reversing everything just a little slightly, pulling at the edges and doing his own thing. His touch is most apparent during the film\\'s first half-hour, the film existing in an uneasy space between conventional plot-driven movie storytelling and Altman\\'s fondness for overlapping dialogue, casual narratives, prowling camera movement and the way that characters aren\\'t so much introduced as they are simply part of what\\'s going on.
Still, despite Altman\\'s best intentions, the film never rises above mediocrity. Altman\\'s too bound to the conventions of the \"thriller format\" to do much damage, his style is too lethargic to generate tension and the film is simply not radical enough to counterpoint other canonical films in the genre. \"Gingerbread Man\" is thus too mainstream to work as a more pure Altman film and too Altman to work as a mainstream thriller.
The film\\'s not a complete waste, though. Robert Downey Junior, Kenneth Branagh and the usually intolerable Daryl Hannah, all turn in juicy performances. The film also has a nice atmosphere, set against a approaching hurricane, and the final act contains some interesting twists and turns. While it\\'s not the complete disaster that Scorsese\\'s \"Cape Fear\" was, the film still never amounts to anything special.
7/10 \\x96 In the late 90s Altman made 3 successive films set in the American South: \"Kansas City\", \"Gingerbread Man\" and \"Cookie\\'s Fortune\". Unlike \"Gingerbread Man\", both \"Kansas City\" and \"Cookie\\'s Fortune\" tackle the genre on the broader, more looser canvases that Altman was most comfortable with.
\"Kansas City\" is the more important of these two films, its hierarchies of class, politics and crime, and its desire to break radically away from typical gangster genre frameworks, would prove influential on all serious 21st century film crime writers (see, for example, \"The Wire\"). That said, \"Cookie\\'s Fortune\", while a much slighter tale, is perhaps the better picture.
Note: Altman claims that this is his first thriller, but he directed \"Images\", an art house thriller, in 1972.
Worth one viewing.')\n",
+ "(1, '\"Read My Lips (Sur mes lèvres)\" (which probably has different idiomatic resonance in its French title) is a nifty, twisty contemporary tale of office politics that unexpectedly becomes a crime caper as the unusually matched characters slide up and down an ethical and sensual slippery slope.
The two leads are magnetic, Emmanuelle Devos (who I\\'ve never seen before despite her lengthy resume in French movies) and an even more disheveled than usual Vincent Cassel (who has brought a sexy and/or threatening look and voice to some US movies).
The first half of the movie is on her turf in a competitive real estate office and he\\'s the neophyte. The second half is on his turf as an ex-con and her wrenching adaptation to that milieu.
Writer/director Jacques Audiard very cleverly uses the woman\\'s isolating hearing disability as an entrée for us into her perceptions, turning the sound up and down for us to hear as she does (so it\\'s even more annoying than usual when audience members talk), using visuals as sensory reactors as well.
None of the characters act as anticipated (she is not like that pliable victim from \"In the Company of Men,\" not in individual interactions, not in scenes, and not in the overall arc of the unpredictable story line (well, until the last shot, but heck the audience was waiting for that fulfillment) as we move from a hectic modern office, to a hectic disco to romantic and criminal stake-outs.
There is a side story that\\'s thematically redundant and unnecessary, but that just gives us a few minutes to catch our breaths.
This is one of my favorites of the year!
(originally written 7/28/2002)')\n",
+ "(1, \"This was a pretty decent movie. This movie is good to just sit down and watch and be entertained. Just a typical Hollywood film. This movie will never win an Oscar or anything and definitely doesn't deserve one, but I thought it was pretty good. It's kind of like the show 24 but set into movie format. If you like the whole we've got to stop the terrorist from killing the president kind of movie then you will enjoy this flick. I personally think that storyline has been done WAY too much, but The Sentinel does add a little twist with the mole in the Secret Service. All in all, this movie won't leave your jaw to the floor or change your life, but who says every single movie has to be like that to be good?\")\n",
+ "(1, 'Actually they could not have chosen a better diversified actor to portray Little Richard than Leon. He captures Little Richard to a most believable essence. The outfits where wonderful and any person watching this movie will definitely keep a smile on their face through the entire movie. Although the movie is a little long, it keeps your attention with the personality and outfits of Little Richard in mind. The ending should have taken a direction of moving Little Richard more into the present where you could see him as he has aged into this new millennium. He will always be the King of Rock-N-Roll as far as I am concerned regardless of what the other media says.')\n",
+ "(1, \"If you are a fan of Altman's large ensemble casts, as evidenced in major films like M.A.S.H., Nashville, Gosford Park, and lesser seen films like A Wedding, then you will no doubt be entertained by HealtH. Centered around a Health Convention where two women are running for President, HealtH contains many of Altman's latter 70s regulars like Paul Dooley (who helped write the film), Carol Burnett, and Henry Gibson, while also including top star Altman newcomers like Lauren Bacall, James Garner, and Glenda Jackson. Like a lot of Altman ensemble films there are numerous subplots in this film, but it is not nearly as overwhelming as films like Nashville or A Wedding, rather it has a more centered feel, perhaps like M.A.S.H. or Gosford Park. The whole thing is an obvious satire on the Health movement, filled with over-top, outlandish, contradictive characters, with guest stars like Dick Cavett providing a wry commentary on the whole thing. Underlining the whole election process is Altman's characteristic pessimism about politics and public appeal but what is most appealing about this film is the sheer fun most people seem to be having. This would be one of Altman's last films like this for a while!\")\n",
+ "(1, 'I saw the movie with two grown children. Although it was not as clever as Shrek, I thought it was rather good. In a movie theatre surrounded by children who were on spring break, there was not a sound so I know the children all liked it. There parents also seemed engaged. The death and apparent death of characters brought about the appropriate gasps and comments. Hopefully people realize this movie was made for kids. As such, it was successful although I liked it too. Personally I liked the Scrat!!')\n",
+ "(1, \"This show has been my escape from reality for the past ten years. I will sadly miss it. Although Atlantis has filled the hole a small bit.
The last ever episode of SG1(on television anyway)was beautifully done. Robert wrote something that felt close to reality. As though he was trying to explain what it was like on the set of the show. (Everyone working closely together for such a long time there are bound to up's and downs. But over the years they've turned into a family). I thought this was a wonderful way to end despite anyone else's criticisms.
SG1 was something special and time and time again it took me across thresholds of disbelief and amazement. The wonderful characters, stories, directors, writers. From episode one I was hooked. The blend of action, science, drama and especially comedy worked so well that made me keep wanting more.
There are no real words in which to completely express what this show meant to me. I can only thank those who kept the show so fresh and entertaining for so many years. It has inspired me to do many things that I thought was impossible.
I look forward to the movies next year and I really hope there will be a number of them. I never want the show to die.
Stargate SG1 - 1997 - 2007?\")\n",
+ "(1, 'For a long time it seemed like all the good Canadian actors had headed south of the border and (I guessed) all the second rank ones filled the top slots and that left the dregs for the sex comedies.
This film was a real surprise: despite the outlandish plots that are typical of farces, the actors seemed to be trying to put something into their characters and what we, the viewer, got back was almost true suspension of belief. When the extras from the music video attacked the evicting police, you almost believed it was possible.
If you are a fan of some of the better sex farces (Canadian or not) you should definitely seek this one out. And the big surprise, this sex farce is also loaded with some very good nudity.')\n",
+ "(1, 'Thank God this wasn\\'t based on a true story, because what a story it is. Populated by despicable characters whose depravity knows no bounds, Before The Devil is a mesmerizing, jaw-dropping excursion into perversion which would be laughable (and sometimes is, even with - or perhaps because of - the sickeningly tragic undercurrent of human dysfunction throughout) if it weren\\'t carried out with such magnificent, overwhelming conviction by its stars. The excellent script by Kelly Masterson and superb direction by none other than Sidney Lumet doesn\\'t hurt either.
The main dysfunction here is of a family nature, with the two majorly screwed up brothers (brilliant portrayals from Philip Seymour Hoffman and Ethan Hawke) deciding to rob their own parents\\' jewelry store, an attempt that goes pathetically awry.
The story is told with time-shifts (which are noted on screen, such as: \"Charlie: Two Days Before The Robbery\", so no one should be confused); some people have said they didn\\'t like this device but I thought it worked perfectly, adding to the skeweredness of the whole affair, considering that the two brothers in question are hardly playing with full decks - between them you couldn\\'t make a decent poker hand to save your life. Throw in these cheesy extra tidbits: one of the brothers is a drug addict, married to Gina (Marisa Tomei, also excellent), who is having an affair with the other brother, toss in some monumental sibling rivalry, along with the fact that said drug addict brother hates his father (a wrenching performance from Albert Finney), who has apparently caused him serious past pain, and you\\'ve got a Shakespearean/Greek tragedy on your hands. Proceed with caution.')\n"
+ ]
+ }
+ ],
+ "source": [
+ "root_dir = tempdir.name + '/' + 'imdb_dataset'\n",
+ "train_iter = IMDBDataset(root_dir=root_dir, train=True) # For training data\n",
+ "test_iter = IMDBDataset(root_dir=root_dir, train=False) # For test data\n",
+ "\n",
+ "start=train_iter.pos_inx\n",
+ "for i in range(-10,10):\n",
+ " print(train_iter[start+i])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1a6c647b-b8ab-49df-8434-becaa0dea775",
+ "metadata": {},
+ "source": [
+ "The following code defines the mapping of numeric labels to positive and negative reviews.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "3fca543a-ffc0-4079-bc30-7e3e05576623",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'positive review'"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "imdb_label = {0: \" negative review\", 1: \"positive review\"}\n",
+ "imdb_label[1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ac4da5eb-a679-45d2-90bd-cfde475e0f8e",
+ "metadata": {},
+ "source": [
+ "The following code checks to ensure that there are exactly two classes in the train data set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "e78c80a0-0dee-4236-a382-dfe9f75a8fea",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "num_class = len(set([label for (label, text) in train_iter]))\n",
+ "num_class"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9c35ca39-77a1-40d9-9f16-fddb3259fd64",
+ "metadata": {},
+ "source": [
+ "The following code loads a basic English tokenizer and defines a function called ```yield_tokens``` that uses the tokenizer to break down text data yielded by an iterator into tokens.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "6a41ea50-7e8b-423b-9de8-36a88e97e96b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tokenizer = get_tokenizer(\"basic_english\")\n",
+ "\n",
+ "def yield_tokens(data_iter):\n",
+ " \"\"\"Yield tokens for each data sample.\"\"\"\n",
+ " for _, text in data_iter:\n",
+ " yield tokenizer(text)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1853ae6-c596-4fac-a2f4-185c0a354510",
+ "metadata": {},
+ "source": [
+ " The following code loads a pretrained word embedding model called GloVe into a variable called `glove_embedding`.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "0cbe5e7e-13d0-4d64-8c0c-86b74954c9b2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Note that GloVe embeddings are typically downloaded using:\n",
+ "#glove_embedding = GloVe(name=\"6B\", dim=100)\n",
+ "# However, the GloVe server is frequently down. The code below offers a workaround\n",
+ "\n",
+ "\n",
+ "class GloVe_override(Vectors):\n",
+ " url = {\n",
+ " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
+ " }\n",
+ "\n",
+ " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
+ " url = self.url[name]\n",
+ " name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
+ " #name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
+ " super(GloVe_override, self).__init__(name, url=url, **kwargs)\n",
+ "\n",
+ "class GloVe_override2(Vectors):\n",
+ " url = {\n",
+ " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
+ " }\n",
+ "\n",
+ " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
+ " url = self.url[name]\n",
+ " #name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
+ " name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
+ " super(GloVe_override2, self).__init__(name, url=url, **kwargs)\n",
+ "\n",
+ "try:\n",
+ " glove_embedding = GloVe_override(name=\"6B\", dim=100)\n",
+ "except:\n",
+ " try:\n",
+ " glove_embedding = GloVe_override2(name=\"6B\", dim=100)\n",
+ " except:\n",
+ " glove_embedding = GloVe(name=\"6B\", dim=100)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e81eda58-67d1-4414-a91a-c238a1434729",
+ "metadata": {},
+ "source": [
+ "The following code builds a vocabulary object from a pretrained GloVe word embedding model and sets the default index to the token.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "5a3dbfda-7d7f-4256-937c-af441df1ee1b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torchtext.vocab import GloVe,vocab\n",
+ "# Build vocab from glove_vectors\n",
+ "vocab = vocab(glove_embedding .stoi, 0,specials=('', ''))\n",
+ "vocab.set_default_index(vocab[\"\"])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1fc78f6-0d04-4b35-afdd-a6193c66166e",
+ "metadata": {},
+ "source": [
+ "Let's count the number of words in the vocab:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "bc7de385-2867-4836-a6dc-f87a9f0c38f5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "400002"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "vocab_size=len(vocab)\n",
+ "vocab_size"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "aa4eca48-cfb4-4fb4-8ca3-180319852e0d",
+ "metadata": {},
+ "source": [
+ "Let's test the ```vocab``` function:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "59689af6-a6ed-49eb-a12e-51303c1eb9da",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[20]"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "vocab(['he'])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6ca4130b-f548-4b92-a68f-b2d83b6b19a5",
+ "metadata": {},
+ "source": [
+ "### Data set splits\n",
+ "\n",
+ "The following converts the data set into map-style data sets and then performs a random split to create separate training and validation data sets. The training data set will contain 95% of the samples in the original training set, while the validation data set will contain the remaining 5%. These data sets can be used for training and evaluating a machine learning model for text classification on the IMDB data set. The final performance of the model will be evaluated on the hold-out test set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "be0403dd-b319-406e-96ea-d215c0a42f6c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Convert the training and testing iterators to map-style datasets.\n",
+ "train_dataset = to_map_style_dataset(train_iter)\n",
+ "test_dataset = to_map_style_dataset(test_iter)\n",
+ "\n",
+ "# Determine the number of samples to be used for training and validation (5% for validation).\n",
+ "num_train = int(len(train_dataset) * 0.95)\n",
+ "\n",
+ "# Randomly split the training dataset into training and validation datasets using `random_split`.\n",
+ "# The training dataset will contain 95% of the samples, and the validation dataset will contain the remaining 5%.\n",
+ "split_train_, split_valid_ = random_split(train_dataset, [num_train, len(train_dataset) - num_train])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "82b6143c-d493-49b1-a255-b5aae8f9280a",
+ "metadata": {},
+ "source": [
+ "Be aware that the Skills Network currently does not offer GPU access to learners. As a result, training on the full data set could be time-consuming. To address this, you further reduce the size of the training set. This approach helps you mimic the training process as if a GPU were available. However, if you want to train using the full IMDB data set, you must either comment out or remove the two lines in the following code block.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "0b86c021-06f7-463d-95d7-c83f45de8605",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "num_train = int(len(train_dataset) * 0.05)\n",
+ "split_train_, _ = random_split(split_train_, [num_train, len(split_train_) - num_train])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e2e0359b-b92d-4aae-9916-aaadbd206ddb",
+ "metadata": {},
+ "source": [
+ "The following code checks to see if a CUDA-compatible GPU is available in the system using PyTorch, a popular deep learning framework. If a GPU is available, it assigns the device variable to \"cuda\" (which stands for CUDA, the parallel computing platform and application programming interface model developed by NVIDIA). If a GPU is not available, it assigns the device variable to \"cpu\" (which means the code will run on the CPU instead).\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "3e37cbbd-1c52-4b02-b26c-c7f4b694e944",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "device(type='cuda')"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "device"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9c0631e5-5eb9-4e91-a84f-315381189cb9",
+ "metadata": {},
+ "source": [
+ "### Data loader\n",
+ "\n",
+ "The following code prepares the text processing pipeline with the tokenizer and vocabulary. The text pipeline is used to process the raw data strings from the data set iterators.\n",
+ "\n",
+ "The function **```text_pipeline```** first tokenizes the input text, then **```vocab```** is applied to get the token indices.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "6b1807bd-4548-435d-b763-cc1641c95c45",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def text_pipeline(x):\n",
+ " return vocab(tokenizer(x))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "58976c04-a071-4f9f-8e55-b0207f39a7d1",
+ "metadata": {},
+ "source": [
+ "In PyTorch, the **`collate_fn`** function is used in conjunction with data loaders to customize the way batches are created from individual samples. The provided code defines a `collate_batch` function in PyTorch, which is used with data loaders to customize batch creation from individual samples. It processes a batch of data, including labels and text sequences. It applies the `text_pipeline` function to preprocess the text. The processed data is then converted into PyTorch tensors and returned as a tuple containing the label tensor, text tensor, and offsets tensor representing the starting positions of each text sequence in the combined tensor. The function also ensures that the returned tensors are moved to the specified device (for example, GPU) for efficient computation.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "442be80e-ae39-4001-98f7-0a0c5266bb65",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torch.nn.utils.rnn import pad_sequence\n",
+ "\n",
+ "def collate_batch(batch):\n",
+ " label_list, text_list = [], []\n",
+ " for _label, _text in batch:\n",
+ "\n",
+ " label_list.append(_label)\n",
+ " text_list.append(torch.tensor(text_pipeline(_text), dtype=torch.int64))\n",
+ "\n",
+ " label_list = torch.tensor(label_list, dtype=torch.int64)\n",
+ " text_list = pad_sequence(text_list, batch_first=True)\n",
+ "\n",
+ " return label_list.to(device), text_list.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fb6f5466-b4b7-4772-9f09-9836249d4279",
+ "metadata": {},
+ "source": [
+ "You can convert the data set objects to data loaders by applying the `collate` function.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "95d54253-4781-4607-9f60-f4727117a520",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "BATCH_SIZE = 32\n",
+ "\n",
+ "train_dataloader = DataLoader(\n",
+ " split_train_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")\n",
+ "valid_dataloader = DataLoader(\n",
+ " split_valid_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")\n",
+ "test_dataloader = DataLoader(\n",
+ " test_dataset, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3cc82919-3aa8-4f02-9be6-696a71335672",
+ "metadata": {},
+ "source": [
+ "Let's check to see what these data loaders generate.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "0e6a5049-2b5e-4661-ab9a-30b6072da1bb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(tensor([0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0,\n",
+ " 1, 0, 1, 1, 0, 1, 0, 0], device='cuda:0'),\n",
+ " tensor([[ 0, 3542, 0, ..., 0, 0, 0],\n",
+ " [ 40, 663, 838, ..., 0, 0, 0],\n",
+ " [ 39, 16, 2, ..., 0, 0, 0],\n",
+ " ...,\n",
+ " [16307, 0, 59, ..., 0, 0, 0],\n",
+ " [ 9, 12389, 1608, ..., 0, 0, 0],\n",
+ " [ 193, 44724, 144, ..., 0, 0, 0]], device='cuda:0'))"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "label,seqence=next(iter(valid_dataloader))\n",
+ "label,seqence"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1f0d739f-47a7-44e6-b61d-6ce1eecda895",
+ "metadata": {},
+ "source": [
+ "### Neural network\n",
+ "\n",
+ "This code defines a class called Net that represents a text classifier based on a PyTorch TransformerEncoder.\n",
+ "The constructor takes the following arguments:\n",
+ "\n",
+ "- `num_class`: The number of classes to classify\n",
+ "- `vocab_size`: The size of the vocabulary\n",
+ "- `freeze`: Whether to freeze the embedding layer\n",
+ "- `nhead`: The number of heads in the transformer encoder\n",
+ "- `dim_feedforward`: The dimension of the feedforward layer in the transformer encoder\n",
+ "- `num_layers`: The number of transformer encoder layers\n",
+ "- `dropout`: The dropout rate\n",
+ "- `activation`: The activation function to use in the transformer encoder\n",
+ "- `classifier_dropout`: The dropout rate for the classifier\n",
+ "\n",
+ "**Attributes:**\n",
+ "\n",
+ "- `emb`: An embedding layer that maps each word in the vocabulary to a dense vector representation\n",
+ "- `pos_encoder`: A positional encoding layer that adds positional information to the word vectors\n",
+ "- `transformer_encoder`: A transformer encoder layer that processes the sequence of word vectors and extracts high-level features\n",
+ "- `classifier`: A linear layer that maps the output of the transformer encoder to the desired number of classes\n",
+ "\n",
+ "---\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "7f290742-5806-47d8-8533-f3d92709eba9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class Net(nn.Module):\n",
+ " \"\"\"\n",
+ " Text classifier based on a pytorch TransformerEncoder.\n",
+ " \"\"\"\n",
+ " def __init__(\n",
+ "\n",
+ " self,\n",
+ " num_class,vocab_size,\n",
+ " freeze=True,\n",
+ " nhead=2,\n",
+ " dim_feedforward=128,\n",
+ " num_layers=2,\n",
+ " dropout=0.1,\n",
+ " activation=\"relu\",\n",
+ " classifier_dropout=0.1):\n",
+ "\n",
+ " super().__init__()\n",
+ "\n",
+ " #self.emb = embedding=nn.Embedding.from_pretrained(glove_embedding.vectors,freeze=freeze)\n",
+ " self.emb = nn.Embedding.from_pretrained(glove_embedding.vectors,freeze=freeze)\n",
+ " embedding_dim = self.emb.embedding_dim\n",
+ "\n",
+ "\n",
+ " self.pos_encoder = PositionalEncoding(\n",
+ " d_model=embedding_dim,\n",
+ " dropout=dropout,\n",
+ " vocab_size=vocab_size,\n",
+ " )\n",
+ "\n",
+ " encoder_layer = nn.TransformerEncoderLayer(\n",
+ " d_model=embedding_dim,\n",
+ " nhead=nhead,\n",
+ " dim_feedforward=dim_feedforward,\n",
+ " dropout=dropout,\n",
+ " )\n",
+ " self.transformer_encoder = nn.TransformerEncoder(\n",
+ " encoder_layer,\n",
+ " num_layers=num_layers,\n",
+ " )\n",
+ " self.classifier = nn.Linear(embedding_dim, num_class)\n",
+ " self.d_model = embedding_dim\n",
+ "\n",
+ " def forward(self, x):\n",
+ " x = self.emb(x) * math.sqrt(self.d_model)\n",
+ " x = self.pos_encoder(x)\n",
+ " x = self.transformer_encoder(x)\n",
+ " x = x.mean(dim=1)\n",
+ " x = self.classifier(x)\n",
+ "\n",
+ " return x"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "68664b81-817c-4633-bc71-9b32f95ee7f3",
+ "metadata": {},
+ "source": [
+ "The model can then be trained on labeled data from the IMDB data set with two classes.\n",
+ "Let's create the model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "545ebebe-2206-47ce-81ab-9f168a80e4bd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Net(\n",
+ " (emb): Embedding(400000, 100)\n",
+ " (pos_encoder): PositionalEncoding(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer_encoder): TransformerEncoder(\n",
+ " (layers): ModuleList(\n",
+ " (0-1): 2 x TransformerEncoderLayer(\n",
+ " (self_attn): MultiheadAttention(\n",
+ " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
+ " )\n",
+ " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (dropout1): Dropout(p=0.1, inplace=False)\n",
+ " (dropout2): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "model = Net(num_class=2,vocab_size=vocab_size).to(device)\n",
+ "model"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "18ece646-3872-41e1-bedb-be1c7d8a37cc",
+ "metadata": {},
+ "source": [
+ "The following **`predict`** function takes in a text, a text pipeline, and a model as inputs. It uses a pretrained model passed as a parameter to predict the label of the text for text classification on the IMDB data set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "4cde3566-d2df-40b8-8fd1-944018d4b0ab",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def predict(text, text_pipeline, model):\n",
+ " with torch.no_grad():\n",
+ " text = torch.unsqueeze(torch.tensor(text_pipeline(text)),0).to(device)\n",
+ " model.to(device)\n",
+ " output = model(text)\n",
+ " return imdb_label[output.argmax(1).item()]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "c7388103-5814-402d-a7de-ede861dc0927",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "' negative review'"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "predict(\"I like sports and stuff\", text_pipeline, model)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "40449174-d493-4521-8417-7950dafb0072",
+ "metadata": {},
+ "source": [
+ "You can create a function to evaluate the model's accuracy on a data set. Here, you define two nearly identical evaluation functions, one that provides a `tqdm` progress bar, and one that does not.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "1171efb1-cf5c-4a25-a0e0-91feb88e8ab7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def evaluate(dataloader, model_eval):\n",
+ " model_eval.eval()\n",
+ " total_acc, total_count= 0, 0\n",
+ "\n",
+ " with torch.no_grad():\n",
+ " for label, text in tqdm(dataloader):\n",
+ " label, text = label.to(device), text.to(device)\n",
+ " output = model_eval(text)\n",
+ " predicted = torch.max(output.data, 1)[1]\n",
+ " total_acc += (predicted == label).sum().item()\n",
+ " total_count += label.size(0)\n",
+ " return total_acc / total_count"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "571400ae-320b-4d1a-a103-91592812d1c1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def evaluate_no_tqdm(dataloader, model_eval):\n",
+ " model_eval.eval()\n",
+ " total_acc, total_count= 0, 0\n",
+ "\n",
+ " with torch.no_grad():\n",
+ " for label, text in dataloader:\n",
+ " label, text = label.to(device), text.to(device)\n",
+ " output = model_eval(text)\n",
+ " predicted = torch.max(output.data, 1)[1]\n",
+ " total_acc += (predicted == label).sum().item()\n",
+ " total_count += label.size(0)\n",
+ " return total_acc / total_count"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0092f33b-ac39-41d2-8525-443d2759b55e",
+ "metadata": {},
+ "source": [
+ "The following code evaluates the performance of your model. Note that this can take approximately 4 minutes on a CPU. **For efficiency, let's not run this cell now, but trust us that the performance of the untrained model is no better than average. If you wish to confirm yourself of this fact, you are free to uncomment this cell**:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "6b48b713-72a9-4267-b32e-dfab588c659c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:09<00:00, 82.88it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.5"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b855a1d8-5e52-4fa2-a507-d7383b2ea73d",
+ "metadata": {},
+ "source": [
+ "Note that the current performance of the model is no better than average. This outcome is expected, considering that the model has not undergone any training yet.\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8a28c3ce-3828-4b70-8442-ae9b7757805c",
+ "metadata": {},
+ "source": [
+ "# Training\n",
+ "\n",
+ "The following coe defines the training function used to train your model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "376d4c30-7f50-4c97-9fa2-667f3c1a47eb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def train_model(model, optimizer, criterion, train_dataloader, valid_dataloader, epochs=1000, save_dir=\"\", file_name=None):\n",
+ " cum_loss_list = []\n",
+ " acc_epoch = []\n",
+ " acc_old = 0\n",
+ " model_path = os.path.join(save_dir, file_name)\n",
+ " acc_dir = os.path.join(save_dir, os.path.splitext(file_name)[0] + \"_acc\")\n",
+ " loss_dir = os.path.join(save_dir, os.path.splitext(file_name)[0] + \"_loss\")\n",
+ " time_start = time.time()\n",
+ "\n",
+ " for epoch in tqdm(range(1, epochs + 1)):\n",
+ " model.train()\n",
+ " #print(model)\n",
+ " #for parm in model.parameters():\n",
+ " # print(parm.requires_grad)\n",
+ " \n",
+ " cum_loss = 0\n",
+ " for idx, (label, text) in enumerate(train_dataloader):\n",
+ " optimizer.zero_grad()\n",
+ " label, text = label.to(device), text.to(device)\n",
+ "\n",
+ " predicted_label = model(text)\n",
+ " loss = criterion(predicted_label, label)\n",
+ " loss.backward()\n",
+ " #print(loss)\n",
+ " torch.nn.utils.clip_grad_norm_(model.parameters(), 0.1)\n",
+ " optimizer.step()\n",
+ " cum_loss += loss.item()\n",
+ " print(f\"Epoch {epoch}/{epochs} - Loss: {cum_loss}\")\n",
+ "\n",
+ " cum_loss_list.append(cum_loss)\n",
+ " accu_val = evaluate_no_tqdm(valid_dataloader,model)\n",
+ " acc_epoch.append(accu_val)\n",
+ "\n",
+ " if model_path and accu_val > acc_old:\n",
+ " print(accu_val)\n",
+ " acc_old = accu_val\n",
+ " if save_dir is not None:\n",
+ " #pass\n",
+ " print(\"save model epoch\",epoch)\n",
+ " torch.save(model.state_dict(), model_path)\n",
+ " save_list_to_file(lst=acc_epoch, filename=acc_dir)\n",
+ " save_list_to_file(lst=cum_loss_list, filename=loss_dir)\n",
+ "\n",
+ " time_end = time.time()\n",
+ " print(f\"Training time: {time_end - time_start}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "353d2098-4d5d-4a06-aa6a-c8866a6ecb0f",
+ "metadata": {},
+ "source": [
+ "### Train IMDB\n",
+ "\n",
+ "The following code sets the learning rate (LR) to 1, which determines the step size at which the optimizer updates the model's parameters during training. The CrossEntropyLoss criterion is used to calculate the loss between the model's predicted outputs and the ground truth labels. This loss function is commonly employed for multiclass classification tasks.\n",
+ "\n",
+ "The chosen optimizer is Stochastic Gradient Descent (SGD), which optimizes the model's parameters based on the computed gradients with respect to the loss function. The SGD optimizer uses the specified learning rate to control the size of the weight updates.\n",
+ "\n",
+ "Additionally, a learning rate scheduler is defined using StepLR. This scheduler adjusts the learning rate during training, reducing it by a factor (gamma) of 0.1 after every epoch (step) to improve convergence and fine-tune the model's performance. These components together form the essential setup for training a neural network using the specified learning rate, loss criterion, optimizer, and learning rate scheduler.\n",
+ "\n",
+ "For the sake of time efficiency, **the following lines are commented out and the model is not actually trained**. If you would like to get a glimpse of what training would look like, uncomment the following code block to train the model for 2 epochs. If you were to train this model in a real-world scenario, you would likely increase the number of epochs to a larger figure, such as 100 or more. Given the reduced training set defined earlier, it takes approximately 2 minutes to complete 2 epochs of training.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "03ab8dc6-6dda-44fa-b86c-1ad67e651463",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/2 - Loss: 30.924453794956207\n",
+ "0.4856\n",
+ "save model epoch 1\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.21s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 2/2 - Loss: 30.632691085338593\n",
+ "0.5288\n",
+ "save model epoch 2\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.27s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training time: 4.546654462814331\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "LR=1\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
+ "save_dir = \"output\"\n",
+ "file_name = \"model_IMDB dataset small2.pth\"\n",
+ "train_model(model=model, \n",
+ " optimizer=optimizer, \n",
+ " criterion=criterion, \n",
+ " train_dataloader=train_dataloader, \n",
+ " valid_dataloader=valid_dataloader, \n",
+ " epochs=2, \n",
+ " save_dir=save_dir, \n",
+ " file_name=file_name\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "f32f238d-1e64-4963-b038-6b43076d8070",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:08<00:00, 87.84it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.50128"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3c3f8cd5-5d15-47a6-838d-186b87e82d10",
+ "metadata": {},
+ "source": [
+ "Let's load a model that has been pretrained using the same method but on the full data set and with 100 epochs.\n",
+ "\n",
+ "The following code plots the cost and validation data accuracy for each epoch of the pretrained model up to and including the epoch that yielded the highest accuracy. As you can see, the pretrained model achieved an accuracy of over 85% on the validation set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "id": "014cc287-4868-448a-9c56-9c5fed972dbe",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHVCAYAAAB8NLYkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADKaklEQVR4nOydd5hTdfbG35tepvfCMAMIQwdFGUfFShERG+sqIihrRXBR1EUURWFF192fZRVFXVSs4O6ii4hUBUVAEKT3Mkxhep9k0u/vj+R7UyZ9Uqacz/Pk0SQ3NyczQ/LmlPdwPM/zIAiCIAiCIDo9omgHQBAEQRAEQYQGEnYEQRAEQRBdBBJ2BEEQBEEQXQQSdgRBEARBEF0EEnYEQRAEQRBdBBJ2BEEQBEEQXQQSdgRBEARBEF0EEnYEQRAEQRBdBBJ2BEEQBEEQXQRJtAPoCJhMJvz+++9IT0+HSERalyAIgiA6MhaLBZWVlbjwwgshkZCUcYKPIgsWLOABOF3y8/OF+6+66qo29z/00ENO5zh37hx/ww038Eqlkk9NTeWffPJJ3mg0BhTHrl272jwPXehCF7rQhS506diXXbt2hUSPdCWiLnMHDRqETZs2CdddlfcDDzyAhQsXCtdVKpXw/2azGRMmTEBGRga2b9+O8vJyTJs2DVKpFIsXL/Y7hvT0dADArl27kJmZGexLIQiCIAgiApSXl2PkyJHC5zdhJ+rCTiKRICMjw+P9KpXK4/0bNmzAkSNHsGnTJqSnp2P48OFYtGgR5s6dixdeeAEymcyvGFj5NTMzEz169Aj8RRAEQRAEEXGofaotUf+JnDx5EllZWejduzemTJmC4uJip/s///xzpKSkYPDgwZg3bx60Wq1w344dOzBkyBAnxT5u3Dg0NTXh8OHDHp/TYjDA3NJiv2g0oX9hBEEQBEEQESaqGbuCggJ8/PHHyM/PR3l5OV588UWMGjUKhw4dQmxsLO666y7k5uYiKysLBw4cwNy5c3H8+HGsWrUKAFBRUdEmDcuuV1RUeHze2vfeR82SJcL1CqMhDK+OIAiCIAgiskRV2I0fP174/6FDh6KgoAC5ubn46quvcN999+HBBx8U7h8yZAgyMzNx3XXX4fTp0+jTp0/Qz5v80INImn6vcF1VVgb07x/0+QiCIAiCIDoCUS/FOpKQkIB+/frh1KlTbu8vKCgAAOH+jIwMVFZWOh3Drnvr2xPJZBDHxNgvanUowicIgiAIgogqHUrYtbS04PTp0x4nU/ft2wcAwv2FhYU4ePAgqqqqhGM2btyIuLg4DBw4MOzxEgRBEARBdCSiKuyefPJJbN26FUVFRdi+fTtuvfVWiMViTJ48GadPn8aiRYuwZ88eFBUVYfXq1Zg2bRquvPJKDB06FAAwduxYDBw4EFOnTsX+/fuxfv16zJ8/HzNnzoRcLo/mSyMIgiAIgog4Ue2xKy0txeTJk1FbW4vU1FRcccUV2LlzJ1JTU6HT6bBp0ya88cYb0Gg0yMnJwaRJkzB//nzh8WKxGGvWrMGMGTNQWFgItVqNe+65x8n3jiAIgiAIorvA8TzPRzuIaFNaWoqcnByUlJSQjx1BEARBdHDoc9szHarHjiAIgiAIgggeEnYEQRAEQRBdBBJ2BEEQBEEQXQQSdgRBEARBEF0EEnYEQRAEQRBdBBJ2BEEQBEEQXQQSdmHCWFmFkhmP4Mwtt4IcZQiCIIjuxue/nsPNb2/Dx7+cjXYo3QoSdmFCHB+Hlp9/hv7YMZjKy6MdDkEQBEFElMPnm7C/tBE1LYZoh9KtIGEXJkQKBRT9+gEAWg8ciHI0BEEQBBFZimo0AIC8FHWUI+lekLALI4ph1p22rftJ2BEEQRDdCybsepGwiygk7MKIcugwAJSxIwiCILoXrQYzzjfqAJCwizQk7MKI0pax0x0+DN5ojHI0BEEQBBEZztVZs3VxCgkSVdIoR9O9IGEXRmR5eRDFxoLX6aA/eTLa4RAEQRBERDhbbSvDpsaA47goR9O9IGEXRjiRCMohQwBQOZYgCILoPpyttQm7ZFWUI3FmyZIlyMvLg0KhQEFBAXbt2uX1+DfeeAP5+flQKpXIycnB448/Dp1OJ9z/wgsvgOM4p0v//v3D/TK8QsIuzNAABUEQBNHdsA9OxEQ5EjsrV67EnDlzsGDBAuzduxfDhg3DuHHjUFVV5fb4L774Ak8//TQWLFiAo0ePYtmyZVi5ciWeeeYZp+MGDRqE8vJy4bJt27ZIvByPkLALM8qhNmFHGTuCIAiim3BWsDrpOBm71157DQ888ACmT5+OgQMHYunSpVCpVPjwww/dHr99+3ZcfvnluOuuu5CXl4exY8di8uTJbbJ8EokEGRkZwiUlJSUSL8cjJOzCjHKYdTLWcOYMzM3NUY6GIAiCIMLP2RotgPBPxGoMJjTrjMJFbzK7Pc5gMGDPnj0YPXq0cJtIJMLo0aOxY8cOt4+57LLLsGfPHkHInTlzBmvXrsUNN9zgdNzJkyeRlZWF3r17Y8qUKSguLg7RqwsOSVSfvRsgSUqCtEcPGEtLoTt4EOrLLot2SARBEAQRNpp1RtS06AGE35x4zFu7IZIfFq7Pvq4vHh/Tr81xNTU1MJvNSE9Pd7o9PT0dx44dc3vuu+66CzU1NbjiiivA8zxMJhMefvhhp1JsQUEBPv74Y+Tn56O8vBwvvvgiRo0ahUOHDiE2NjZErzIwSNhFAOXQITCWlqL1wAESdgRBEESXpsiWrUuJkSFOEV6rk42PXoKsrGzhukwSukLkli1bsHjxYrzzzjsoKCjAqVOnMHv2bCxatAjPPfccAGD8+PHC8UOHDkVBQQFyc3Px1Vdf4b777gtZLIFAwi4CKIYORdPa72mAgiAIgujyCBOxETAmVsskiPVDPKakpEAsFqOystLp9srKSmRkZLh9zHPPPYepU6fi/vvvBwAMGTIEGo0GDz74IJ599lmIRG1FZEJCAvr164dTp04F8WpCA/XYRQDHDRQ8z0c5GoIgCIIIH8zDLi+542yckMlkGDFiBDZv3izcZrFYsHnzZhQWFrp9jFarbSPexGIxAHj8LG9pacHp06eRmZkZosgDh4RdBFAMHABIJDDX1sJYdj7a4RAEQRBE2CiqZROxHUfYAcCcOXPwwQcfYPny5Th69ChmzJgBjUaD6dOnAwCmTZuGefPmCcdPnDgR7777LlasWIGzZ89i48aNeO655zBx4kRB4D355JPYunUrioqKsH37dtx6660Qi8WYPHlyVF4jQKXYiCBSKKDIz4fu8GHoDuyHrEe27wcRBEEQRCeEWZ307mDC7o477kB1dTWef/55VFRUYPjw4Vi3bp0wUFFcXOyUoZs/fz44jsP8+fNRVlaG1NRUTJw4ES+99JJwTGlpKSZPnoza2lqkpqbiiiuuwM6dO5Gamhrx18fgeKoNorS0FDk5OSgpKUGPHj3C8hwVCxei/osvkXTPPUif93RYnoMgCIIgos2wFzegsdWI72ePwoDMuLA8RyQ+tzsrVIqNEAoyKiYIgiC6OPUaAxpbjQA6Vo9dd4KEXYRgAxS6I0fAG41RjoYgCIIgQg+biM2MV0ApE0c5mu4JCbsIIcvLhSguDrxeD93xE9EOhyAIgiBCTkeciO1ukLCLEJxIBOWQIQCA1gP7oxwNQRAEQYQeNhHbK5WEXbQgYRdBlMOsfXY6MiomCIIguiBnbBOxvShjFzVI2EUQGqAgCIIgujJFNR3Tw647QcIugihtws5w9izMjY1RjoYgCIIgQgfP84Kwi8Q6McI9ZFAcQSRJSZDm5MBYUoKSmTOh6NcP0h45kPbIhqxnT8jz88FxXLTDJAiCiCg8z+OLXcW4MCcRA7PC43sWDMcrmnH4fCNuvTCb3pv9oLpZD43BDBEH9ExSRTucbgsJuwgTM+oK1H/xJVp/24PW3/Y43Rd300Rkv/pqlCIjCIKIDruL6vHs14dwYc8EfP3I5dEOR2Dufw9gX0kDktQyXJ2fFu1wOjxs40SPRBVkEioIRgsSdhEmfd48xI4dB0NJMYylZTCWlMBQVgrdocNoWv0tYseMQdyYMdEOkyAIImKUNWgBAFVN+ihHYofneZyobAYAbD9dS8LOD85Sf12HgIRdhOGkUqgvLYD60gKn26veeAO1S99D5aK/Qn3ppRDHxkYpQoIgiMhS22IAADTpgjNvr2rW4YY3t0EuEeG+K3rhjktyoJa37+OtTmOA1mAGAPx6tq5d53LlyPkm9ElTQy7pWga+zJy4VzKVYaMJ5Uo7CCkPPwxpbk+YqqpQ/fob0Q6HIAgiYtRprMKuRW+CxRL4+vJ1hypQ06JHWUMrFq45gste+QF/X38MVc26oGMqrtMK/3+orBEavSnoczny8S9nccM/f8ZjK/aF5HwdCRqc6BiQsOsgiBQKZL7wAgCg/ssv0bpvX1TjIQiCiBQsY8fzQHMQAmrL8WoAwDX5qchLVqGx1YglP57GFa/8iD9/+TuWbj2NDYcrcKqqBUazxa9zOgo7s4XHnnP1AcflyrlaDV5ZdwwA8P2hCvx4vKrd5wwXZguP7w+W4+Xvj6JR618mlUqxHQMqxXYg1IWFiL/5ZjT+738of34Bev33P+Ck0miHRRBEFDCYLHj264PolarGI1dfEO1wwkqtLWMHAE2tRsQr/X/f0xnN2H66BgDw1Lj+yM+IxcYjFXjvpzP4vbgBq/efx+r954XjxSIOvVPUePm2Ibg4L8njeUvrW52u7zpbhyv7pfodlysWC4+//OcAdEYLVDIxtAYzXlx9GJc9ntyhSrKtBjP+s7cUy34+g6Jaq7hVSSWYPbqv18dZLDzO2Y7vnRIT9jgJz1DGroOR9vRciBMSoD9xArUffxztcAiCiBJf/VaCf+8pxVubT0U7lLBTp7EPTQTaZ7frbB10RgvS4+QYkBkLsYjD9YMz8fUjl+O/Mwox+7q+mDgsC4Oy4qCSiWG28DhZ1YIvdhV7PW+xTaRkJyiF52kPn+8qxq9n66CUivHfGZchLVaOolotPvjpTLvOGyrqNQa8sekELv/bD3jum0OCqAPsa8K8Ud6kg95kgVTMIStBEc5QCR+QsOtgSBITkTZ3LgCgZsk7MJSURDkigiAijd5kxpIfrYKu1WiGOYi+s86Ec8YusFIsK2de3S+tjdfciNwkPD6mH96afCG++/MoHH5xHF79g9Uo/ky1d7HCSrGTRvQAAOwraYDOaA4oNkZpvRavrD0KAJh7fT4GZMbh2QkDAABv/3gKpfVabw+PCH98bwfe2HQSdRoDeiQq8cLEgfi77WflWJb2xFnbzzMnSQWJmKRFNKGffgck/pabobr0UvA6HSpeeBE837Xf1AmCcGbl7hKUN9ob/1uDFBSdhboWu7BrDjBjt9XWX3d1vu8yKcdxGJIdDwA4U93i9b21xCa2ruybgtRYOQxmC/aVNAQUG2C1TZm36iA0BjMuzk3EtMI8AMBNw7JQ0CsJOqMFf11zNODzhpJ6jQEnq1oAAP+cfCG2PHk17r28F/IzrO4Mfgk7W1avN/XXRR0Sdh0QjuOQ+cICcDIZNL/8As22bdEOiSCICKEz2rN1DG2IJjI7InqT2Wlgoknn/2strtXiTI0GEhGHy/um+PWYXilqcJz1eRwzhY4YzRacb7D22PVMUqGgl7UXL5hy7L9/K8XPJ2sgl4jw6h+GQiSyZhU5jsPCmwdDLOKw7nAFfjpRHfC5Q8Wpaquoy05Q4qZhWULGjW2PqG7Wo9Xg/csFy9jlJZOwizYk7Doosrw8JE6ZAgCofuNNytoRRIAU1Whw41s/418/d4weJn/5clcxKpv0yIpXQCm1NtVrfXyodmbqNc4ZuqZW/zN2W05Yy7AX5SYiTuHfwIVCKkZWvLVvzlM59nxDKyw8IJeIkBorD1rYVTTqsOi7IwCAOWP6oXeq81BBfkYs7rFl8F5YfRh6U3R+z6ds2bo+ac7xxSuliFVYZyx9lYtZH16vVBJ20YaEXQcm+YH7IVKpoDt8GM2bNkU7HILoNFgsPJ76z34cKmvCqr1l0Q7Hb3RGM97ZchoAMPPaC4QP1a4s7GpanLdNBDI8sSWAMqwjvW3i44wtU+VKSZ01W5eTpALHcRjZKxkAsOdcvd92KQDw6rpjaNaZMCwnAfeP6u32mMfG9EVKjBxnajRYtu1sIC8jZDBhd4GL8OQ4DjmJ1qydr3Ks4GFHGbuoQ8KuAyNJSkLiPdMAADX//Cd4c9d9cyeIUPLpznPYXWT1HfOn4b2mRY/Pdp4LuL8r1Hy28xyqm/XITlDi9hE5UMlYxq7rlmLrXMqh/g5PONqcXBPguq8+NgFzpsZ9xo6JGFaK7JsWg0SVFK1GMw6WNfr1HDzPY4utvPrM+P4Qizi3x8UppHjmhv4AgDc3ncSvZ2r9fyEhQhB2aW1tStjPoMSLsDOaLcLPjDJ20YeEXQcnefp0iOLioD95Ck1rv492OATR4Smp0+JvNhNYwL9s1/s/ncH8bw5h5e7oTaFrDSYs3WrN1j167QWQSURQyrp+xq6NsPNTXDObk4w4BfpnBLaCsY+PjJ2rsBOJOFySF1g5tqhWizqNATKJCBf2TPR67K0XZmP0gHToTRbct/w3HCht8Os5QoVXYZfMMnatbe5jnKvVwmThoZaJkRFHVifRhoRdB0ccF4fkP/0JAFD99lvgjdHNKBBER4bnecz97wFoDWbhQ9mfbFd1s7Uc6KmZPhJ8tvMcaloMyElSChYb6nZm7CwWvsP357YpxfrZY8dsTq7ql9rG5sQXrNfNU48dm4jtkagUbivobS3H+ptRY5sqhvWIh0zi/aOW4zi8fdeFuLR3Elr0Jtzz4S6crGz263nai9ZgQpltUMSdsMux/Qy8lWJPV9t79AL9XRChh4RdJyBp6t0QJyXBeK4YDd98E+1wCKLDsmJ3CbafroVCKsIrk4YA8M8qhAknX5N/4UKjN+G9rdYhj0ev7QupbSpRKQt+eOJEZTOu+b8tuH3pjg4t7ljGLlktA+B/xi4QmxNXWI9dcZ3Wbc9ciUvGDoAwQPFbUb1fvoJM2F2U6z1bx1BIxfjXPZdgWI941GuNuHvZr17Ln6GCidsktQxJtt+BIzm2n4G34Qlh+CKVNk50BEjYdQJEajWSH3wAAFDzzruwGKKXVSCIjsr5hla89J3VD+zJsfkYmBkHADCaeZ8N70w4BWtA217+/VsJajUG5CarcNuF2cLtqiCF3Z5zdbh96Q6cq9Xit3P1bcqdHQkWG9sv2uyH3UkwNieOZMQpoJKJYXJYg+V0fibsku3CbkBmHGLlEjTrTTha3uTzOfbahN0IH2VYR2LkEnw8fST6pcegskmPKf/6FZVNOt8PbAeeBicYTNgV12k9fkEQMnbUX9chIGHXSUicPBmS9HSYysvRsPKraIdDEB0KnufxzNcH0aI34cKeCZh+eS8h2wX4ztqxTF20jIDXHqoAANxTmOfk2q8Weuz8L8X+eKwKU/71KxodSprnIpD5CRZW/u5lE3b+ZOyYzcmIAGxOHOE4Tng+1z67Jp0RDbal92wiFLDumL04zyrSfvXRZ9fYasSJKmsp1d+MHSNRLcNn9xWgZ5IKxXVa3P2vX1HrUq4OJZ6sThjZCUpwnPXLhadWhdO2rB9l7DoGJOw6CSK5HCkzHgYA1Lz3HiytnhtZCaK78fXvZdhyvBoysQh//8NQiEUcZGIR2CCirxJrNDN2tS16/FZkFQrjBmc43RdoKXbV3lLc/8lv0BktuDo/FcN6WLcsRKKkFyxMtAjCzo+pWLvNSWDTsI709jAZy35WyWoZ1HKJ033M9mTXWe99dvtKGsDzQF6yCikx8oBjS4tT4PP7C5AeJ8fJqhbcvnRH2H6H3gYnAGuJmA1EuIuB53mc8SEOichCwq4TkXDbbZD26AFzTQ3qP/882uEQRMBsO1mD8W/+jCn/2hmyvi+twYRXvrdOwc4e3RcXpFknJDmOg8qW8fIl7FimrtXov0dZqNh8rAoWHhicHScsnGcwYeFP79+/fj6DOV/th9nC49YLs/HBtIvRL922EspNuTEYdEYznvvmEAoWb8Lh8/7ZfvhCKMUms1KsERYvPWyONifB9NcxPE3GMvHSw6G/jjHSwajY299voP117shJUuHLBy5FdoISZ2o0+MPS7TheEfqBCrZ1wpOwA+DVy666WY9mvQkiDshNbvszIyIPCbtOBCeTIWXmTABA7b+WwdziflSfIDoalU06zPpiL+5e9iuOljfhl1O1AS9798Syn8+iqlmPHolK3D+ql9N9/ma8WKlTF4XhiQ2HKwEAYwdmtLmPbZ7Q+CjF/nSiGn+19Rfed0Uv/N/twyAVi4Tm/1CUYotqNLjtne34dOc5VDbp8eOxqnafE7CXYvNSrLFaeO+vtz02J454moxl5sQ93Qi7IdnxUErFqNcahUyXO4T+unYIOxbjf2dcJvTc3b50u5DdDQVGs0UwFvYq7Lx42TFh2DNJBblE3OZ+IvKQsOtkxE+8EbK8PJgbGlD3ySfRDocgvGIyW7Bs21lc939bseZAOUQcwNwQAtkw4ImaFr3g/fbUuPw2Hyxs+KDV6F0YsYyYLsIrnbQGE34+aS0rjh2U3uZ+f4cnDtmyZ2MGpmP+hAHCPlK7B1n7hN26Q+WY+NY2HHEYGnA3dBAoepNZGJbIildCZusv9LYvdvtpaxn0yn4p7bLWYMvqXUuxdg87ZZvHyCQiXJSbAADY6aHPzmzh8XtxaIQdAGTEK/DVQ4UYkZuIJp0Jdy/7FT8cq2z3eQG7/5xKJkZWvGf/ObtJcdsWIOqv63hEVdi98MIL4DjO6dK/f3/hfp1Oh5kzZyI5ORkxMTGYNGkSKiud/6CLi4sxYcIEqFQqpKWl4amnnoLJ1HVd2jmJBCmPzgIA1H30McyNoSmHEESoqdcYcNPbv2DRmiNo0ZswPCcBq2ddgWS1tefIn+lHX/xz80loDGYM7RGPiUOz2tzv765VoRQb4YzdTyeqoTdZ0DNJhfz0ttknla0Uq9V7j0ujZ+JI4SR2/Nka4A2DyYKF3x7Bw5/tRbPehItzEzFvvPU9OhRZQLYnViziEK+UIk5pfb3evOwqGj17rgUCszyp0xjQoLUPBTBh5zg44UiBrc9u0xH34up4RTM0BjNi5RL0TQs+o+hIgso6UHFt/zTojBY88MkebPTw/IHgaFPiTSTnJHn2sjtN/XUdjqhn7AYNGoTy8nLhsm3bNuG+xx9/HN9++y3+/e9/Y+vWrTh//jxuu+024X6z2YwJEybAYDBg+/btWL58OT7++GM8//zz0XgpESNu/HjI+/aFpbkZtR99FO1wCMItn+08hyPlTYhXSvHybUOwasZlGJwdjzjb/tP2ru86U92CL34tBgA8Pb6/kKVyhJVivQk2o9kCo9naLxXpqVh7GTbd7QeriglTH3FpbMLPtdmfCbuKJl3AgyFGswVTl/2KD3+x7i996Mre+PLBS4U+s1D07dVqrIMTiSoZRCJOmHD1JvpZ6TZJHfhQgiMqmQSZtizVaYdyLDMndleKBYCJw6xfIH46We1WMO+xZeuG90zwuEYsGJQyMd6bOgITh2XBbOHx0S/t3yt72o/+OsD+s3Ar7MjqpMMRdWEnkUiQkZEhXFJSrJ5EjY2NWLZsGV577TVce+21GDFiBD766CNs374dO3fuBABs2LABR44cwWeffYbhw4dj/PjxWLRoEZYsWQJDF/Z640QipPz5UQBA3SefwlQXup4LgggVO22Tg0+O7YfJI3sKwitWEHbty9i9uu44TBYe1/ZPw2V93HuZ2UuxnkWNYzYvklOxRrMFm219amMHte2vAxzi99Fj12LL2LkKuyS1DGqZGDwPlNYHNkn/3tbT+PVsHWLkEnww7WLMu2EApGIRcm1DDsGIRVfY4ERKjNUYN1ZpFXbeMnauhsbtobfLAIXFwqPUVm7M8SDseqWoMapvCnge+Nz2xcKRPbYeuFCUYV2RikW44+IcAEBtS/s/43xNxDKYsCtvbG3jCXmGSrEdjqgLu5MnTyIrKwu9e/fGlClTUFxs/YeyZ88eGI1GjB49Wji2f//+6NmzJ3bs2AEA2LFjB4YMGYL0dHtvyrhx49DU1ITDhw97fE6LwQBzS4v9onG/VqYjEzt6NBQDB4LXalH7r2XRDocgnNCbzPityJq5KOyT7HRfnO3Du1kffMZuz7k6rDtcARFnzdZ5wp9SbKuTsIvcVOzus3VobDUiSS3zKAJYKVbjZyk2xkXYcRyHnjYhFkg59kRlM/65+RQA4K+3DMaYgfb32ESVFLG25/F1zr3F9cLqL3cwccI2HrBsrrf+yzqN82PaQ+8UqxhhGbvKZh0MZgvEIk7I5rljSkEuAOCr30qgd+nL3BPC/jp3JKqt/37qtKETdr5EWWqsHHKJCBbeagTOcFxHRsKu4xBVYVdQUICPP/4Y69atw7vvvouzZ89i1KhRaG5uRkVFBWQyGRISEpwek56ejooKq5lnRUWFk6hj97P7PFH73vs4cfElwuXMDTeE9oVFAI7jkDr7zwCA+s8/h7EqNBNqBBEK9hU3QG+yICVG3uYNn2XsfE3F6k1mvPL9Mby75TROVTUL9hI8z2PxWqu9yR8vzhEsPdyh9MPuxNH8t9Vojtj6rQ22HqnRA9I8luz8yTgCnjN2gH0I4Fytf19gzRYeT/3nAAxmC67rn4abhzv3LlrFom3a1ks51mzhce+Hu3Dfx7tR1ex+e0Kti0iL85Gx43m+zWPag6vlCRsOyE5QOhlFuzJ6QBoy4hSo0xiw7pD9s6aqSYeSulZwHDA8J6Hd8bmDve4GraFdf6sWC+93KZbjOKcNFAyWrUtWy5AYgt8HERravgtEkPHjxwv/P3ToUBQUFCA3NxdfffUVlMq2E0mhIvmhB5E0/V7huqqsDOjv+Vt/R0V95ZVQDh+O1n37UPv+B8iY/2y0QyIIAMDOM9Zy1KW9k9r0jsXKWR+V94zdxiOVwsTr39YdQ16yCqMHpCNRLcOec/VQSEV4fEw/r+dgPWr+lmLNFh5GMw+ZJLyLzHmex4bDVkHgzuaEYc84ehfB7DXEyNvaTdj7o/wrxX647Sz2lzQgVi7BS7cOcdv7l5uswuHzTV4HKErqtMJ06+kqDdJi22bA6mw9dslCxs4m7DyU6TUGMwwma1Y1OSYUpVhnk2JhcMLNRKwjErEIk0f2xOubTuCznedw83DrGri9tmxdfnosYoPYiOEPiSrr6zaaebToTUE/T3mTDlqDGRIR55f/XM8kFU5VtThNxtr76yhb15GIeinWkYSEBPTr1w+nTp1CRkYGDAYDGhoanI6prKxERob1jTAjI6PNlCy7zo5xh0gmgzgmxn5Rd86mT47jkPrYbABAw8qVMJ4/H+WICMLKjjNWA1nXMizgf48dK9PFKSSQiUUoqtXiX9vO4u/rjwMAHhjVG+lxnstlgKOPnefnchV9kRigOHy+CecbdVBKxbjCy65TdYBTsW4zdsn2hfe+OFujwT82WH++828cgAwP5cieSbZzeskCnnTwefOULWS/42TbdgahFOshY1dnO14pFQvm0+2B9didq9XAZLY4WJ34Fjp3jsyBWMRhd1E9jlVYbWD2hMi/zhsKqVgQ/GyqOBhYGTYvRQ2pl+wkIyex7WSsYHWS1jk/Q7sqHUrYtbS04PTp08jMzMSIESMglUqxefNm4f7jx4+juLgYhYWFAIDCwkIcPHgQVQ5lyI0bNyIuLg4DBw6MePzRQH3ppVCNHAneaETNu0ujHQ5BQGc0Y29xAwCgsLc7Yec9K8Ngu05vGJKJ358fg6V3X4RJF/VAokqKPqlqPHhlb5+x+GNQ7HqfPgLCjmXrruqXCoXUs6mr4GPno0TsvRTLMnbeS7EWC4+5/zkAvcmCUX1T8Edbk747WIbHW8buZJV9S0KRh5Ktx1Ksh2wum6INRRkWsHrnKaQiGM08SutbUSpk7HwLu/Q4Bcbaeg8/32nrDY+AsAPsr789fXbC4ISf2TZ3JsWUseuYRFXYPfnkk9i6dSuKioqwfft23HrrrRCLxZg8eTLi4+Nx3333Yc6cOfjxxx+xZ88eTJ8+HYWFhbj00ksBAGPHjsXAgQMxdepU7N+/H+vXr8f8+fMxc+ZMyOXtG4XvTAhZu1WrYDh3LsrREN2d34sbYDBZkBYrF/Z/OhLrp90Jy9rEK6VQyyW4fnAm/u+Pw7D3uTHY/MTVfpWgWCnW2/Sm68RpJDJ26202J+MGtzUldoQJU7OFh97kebDD0/AE4GxV4U0cfrrzHHYV1UEtE+Pl29yXYBm57JxeeuxOVfrO2LlOuMb56L8Ujg9BGRYARCJOWGV2pqbFp4edK3dfah2iWLW3FHUaAw6VWTN34RZ2bICiXhMCYeen/5zgiVjvIOz8HL4gIktUhV1paSkmT56M/Px8/PGPf0RycjJ27tyJ1FTr/r/XX38dN954IyZNmoQrr7wSGRkZWLVqlfB4sViMNWvWQCwWo7CwEHfffTemTZuGhQsXRuslRQXVRRdBPWoUYDaj+u0l0Q6H6ObsOGO1OSnsk+xWHPhbimUZO5bFYQSybSCYjF24hV1RjQbHK5shFnG4Nt+7sFM5ZPO8DYCwqVmW4XMkO0EJEWed+K1u0bt9fFlDK/62zjqQ8vT4/ujhQ9iw4YmSei3MHva6Opdi3QtAu1CzlWJ9TEyHcnCC0cdhtVggpVgAuKxPMnqnqKExmPHXNUdgMFuQEiPz+/HBwvrs6tuRsTsdoLBzHZ4wW3icrSGrk45IVIXdihUrcP78eej1epSWlmLFihXo06ePcL9CocCSJUtQV1cHjUaDVatWtemdy83Nxdq1a6HValFdXY1//OMfkEiiOhMSFVJnW7N2TWvWQHfiRJSjIbozO20rn9yVYQHf5TYGu99V2AVCMMIu3JYnbGPApb2TEK/y/tokYhFkEuvbtCeTYoPJAoPNW8xdxk4mESEz3tYf5UFgrdl/HlqDGRf2TBCsPLyRGa+EVMzBaOZR3th2KMNi4Z12qZ6r1bjNFta0OJdWheEJHxm7UAo71md3pLwJVc3WePwpxQLWLxlTWNbu9zIAwEU9E9u16swfmLCra0/Gzs+JWAb7mTRojWjSGXG+oRV6kwUyiQjZieEbdgw1S5YsQV5eHhQKBQoKCrBr1y6vx7/xxhvIz8+HUqlETk4OHn/8ceh0zlPegZ4z3HSoHjsieJSDByF2zBiA51Hz1tvRDofoprQazNhX0gAAuNSDsAs4Y6cI/osay2B5L8WavV4PBbUtevxnTyke/nQPXtto/eLlbRrWETUTp3oPk6IOt7vrsQO8bw4A7L1h4wdnuN3g4YpYxAnlSndisayhFa1GM6RiDiLOOs1a42KoazBZhL8BoRTLVop5EP2hNCdmsGzTTyesAz8xcgkSfQhuR/5wUQ8opPaP0nCXYQG7sA02Y1enMQg/y95+boyIkUuE5y2p0wrCsHeKOqQbNsLJypUrMWfOHCxYsAB79+7FsGHDMG7cOKc+fUe++OILPP3001iwYAGOHj2KZcuWYeXKlXjmmWeCPmckIGHXhUj986MAx6F540a0HvJs0EwQ4WJvcT0MZgsy4xUeLRTsa6N89dhZP/Tj25Oxk9qmSr0ZFBtdM3ahEXY8z+PzX8/h9qXbcclLm/Dkv/dj3eEKtBrNyEtW4cahmX6dh01/enoNbHBCJhF5nG5kvwt3wo7necGmIxBR4m2AwtH4lmULXfvsmChhe2IBx4ydh1KsYGgcuh5qJmxY9jAnSRVQxi1eJXXaUxwJYWfP2AU3Fct+P9kJyoCmix0HKDpjf91rr72GBx54ANOnT8fAgQOxdOlSqFQqfPjhh26P3759Oy6//HLcddddyMvLw9ixYzF58mSnjFyg54wEJOy6EPK+fRE38UYAQPWbb0Y5GqI7ssOhDOvpw7G9PXaBoIpij93JqhY8+/Uh7C6qh4UHBmXFYfZ1fbHm0Svw45NXC31lvvBVTtYYPA9OMHK8DDsU12lR02KATCzCoKx4v2ICIKwWK3IzGMEmYi9Ii0Feisp2nPNzMyHF9sQCjmV6k9vSravvXShwHfDJCaKsOLXQWo5VSEUYnO3/zzBYkto5PBHo4ATDMfMrWJ1EeUesxmBCs84oXFw3gTAMBgP27NnjtM1KJBJh9OjRwjYrVy677DLs2bNHEHJnzpzB2rVrcYNtqUEw54wE3a8ZrYuTOmsWmtZ+D83PP0O7Zw9UI0ZEOySiG7HTNjjhqQwL2O1OtAYzTGaLR4d/Vo5rV8bOj12rrveFKmNXVGP/4Pv0vgJkJQTXh6T24cVn97DzbJvirRTLyrCDs+O8Wq94PKcbsXjCNhHbNy0Wlc06/HKqtk3Gzl1ZlYl+s4WH1mBuU1oOR49drEKKtFi50F8XzODD0B4JePuuCxGvlAb0MwyWxHaWYpmw6xugsGOit6Su1Z6xC/AcoWbMW7shktsrVLOv6+vWuLympgZms9nttqpjx465Pfddd92FmpoaXHHFFeB5HiaTCQ8//LBQig3mnJGAhF0XQ9azJxJuuw0NX32F6tffQM9PPwl7Iy9BAFbhsb+0AYB7Y2JGrEPPXIvehARV2w9ps4UXMnpx7XDwVwa4ecLXsYHAdmj2S48NWtQBvjN2LbaJWLWXkpq3Umyw3mu5XtaKsYnYvukxUMpEbo9zJ9KUUjEkIg4mC48mnbGNsBOmYkNkd8Lonaq2Czs/tjC440aHcmy4ae9UbKCDEwznjF3HKMVufPQSZGVlC9fZsFEo2LJlCxYvXox33nkHBQUFOHXqFGbPno1FixbhueeeC9nzhBoqxXZBUh6ZAU4mg/a336D5ZXu0wyG6Cb8V1cNo5pGdoPQ6VSgVi4Rmc0/l2BaH21lDfTD4VYp13TwRouEJtiy9PaIOsPfYeYrLm4cdg30gVzXr25ynvcLO1R+P53mcqrSWYvumxQglW9eMnX3rhF2kcRznsC+27d+G8JgQ7yXt7SBO/PWwiybt7bEL1OqEwf6ODp9vFES2O6/KSKKWSRCrkAoXucR9xjQlJQVisdjttipPm6qee+45TJ06Fffffz+GDBmCW2+9FYsXL8bLL78Mi8US1DkjAQm7Log0IwOJk+8EAFS/8UbElpoT3ZsdfpRhGSwL1+ihSZ7drpCKPL5R+4O9FOt7KpYN9oWqFHu+wWqJ0H5hZ30NGg+lWG9bJxjxSqmQKXU0mG3WGXHcJsIu6hmYsOuRqALHWZ/f0XajvFEHjbCDVC0IQNceu1oP/XJxHgysWw1mIZsaylIs4Jx18tfqJJo4TsUG+v6u0ZuEbHKgwo79bNiEc1a8wuvfXUdCJpNhxIgRTtusLBYLNm/eLGyzckWr1UIkcpZJYrH13yPP80GdMxKQsOuiJD/4IDiVCrpDh9C8cWO0wyFChM5oxhNf7cfnv3a8DSM7HYyJfeFrgCIU/XUAoLJNxZosPIxm9/50rHeNZUFC5WPHPjyzE7zvs/WFr6yjPxk7jrMvenfsidtX0gCety69T/Oxd9cVhVSMDNtjHCdjTzrsIJVJREKWp7HViAaH0qG9FOs8ROLJ55AJQZlY5PW1BoOj5UePTuDJlmCzYzFbeJ+r+Vw5YRPyKTEyt20Q3siMVzhZm0S7vy5Q5syZgw8++ADLly/H0aNHMWPGDGg0GkyfPh0AMG3aNMybN084fuLEiXj33XexYsUKnD17Fhs3bsRzzz2HiRMnCgLP1zmjQeeQ2kTASJKTkXzvPah5511Uv/EmYq+9Flw3NG7uLOiMZhjMFp/9ZBuPVOK/e0vxw7FKv4xkI0WL3oQDpY0A/BV23i1P7B527RN2SodNDFqDGfHKtt9lWcYuSS1DrcYQsh67UJdi2zM8AVjLaIfKmpxEmFCGDTBb53jO8kYdimu1QsbvpEMZlsWfHidHZZMeRbVaDLeJCcG6JMY1Y+e+FOvYkxfqvuHBWfGQSUTokxoTkeGH9qKQiqGWiaExmNGgNfj9BajVYMZz/zsEABiekxDw80rEImQnKIVezWj31wXKHXfcgerqajz//POoqKjA8OHDsW7dOmH4obi42ClDN3/+fHAch/nz56OsrAypqamYOHEiXnrpJb/PGQ3ok74LkzR9Ouq/+BKGM2fQ+M03SPjDH6IdEuGBez/ahWMVzVj/2JVI95I5+eGY1fSy3ub+3l7hEwxHzjfhfEMreqWq0TNJBalYhN1FdTBbePRMUiHbDyHjM2PXGpqMnUwiEprxWw1mt+fTGpzLe6EQdnqTWWjGD1Up1ufwhI8slrsl7u1dWp+brMKvZ+ucBiPcTVzmJqtR2aTHuVqNIChYj1aKaynWg0lxONaJMVJj5dg856qo/HsKlgSVDBpDK+o0BqGP0Rs8z+Op/+zHobImJKllWDBxUFDPm5PkKOyi218XDLNmzcKsWbPc3rdlyxan6xKJBAsWLMCCBQuCPmc0IGHXhRHHxiL5oYdQ9be/ofrtJYi78UaIFO0rCxGhp0lnxM4zdQCANQfKcd8VvdweZ7bw+PG43c28uFYbEc8sRxq0Btz27i9CuVIi4tAzSQXW5XNp7yS/zuPLpDgUHnYMpVSMZr3JY8aLCSbWxB+KHrvKRlvZUCJqd6O/ykefoNYPHzsAyE2yfgg77vrcV9wAALgoaGFnG4yosw9GsFLsBemxDs+twi4XAejJusSTSXGdm2GLUNIZeuscSVLLUNbQ6vdk7JIfT2HNgXJIRBzenXJR0K+3Z5IKv8DadtHZSrHdBeqx6+Ik3jUZksxMmCoqUP/5F9EOh3DDsfJm4f/XHiz3eNze4no0aO0fdiUe1kOFkxOVLdAZLZCKOahkYpgsPM7UaIRl4Ff0TfXrPJHqsQMcBig8CDZ2u73Hrv3Czt5fp2x32ZCVYjU+Nk/4ytixXjc2nXqyqhnNehPUMjHyHURYILh62fE836YUC1j77QBnM+Nam0Gxq1BjfxuuvWPh8LDrzDAvO38mYzccrsA/NlhX2S28eTAK/Bhw8oSjILygk5ViuwuUseviiORypM6ahfJnn0XN++8j4fY/QBwXF+2wCAeOnG8U/n/PuXpUNOqQEd82s7r5qPPuQU97P8PJGZt3VWGfFCyffgkqmnQ4U63BmeoW8AAmDPFvTZb9w9tXj13736L8zXixzFoo7E7s/XXtz5CrfJgsawIUdiX1rbBYeKEMO7xngkeTaF+4rhWrbtajSWeCiHMeSHD1vDOYLIJwS3YdnvCQsQtnKbYzkmQboGjwkbE7VtGEx1fuAwDcU5iLuwp6tut5mR1MrFyC1NjQrXYjQgdl7LoB8TffBFmfPrA0NqJ2WfT21xHuOVLe5HR93SH3WbvNR61eScw3yt2OznDDMnO9U9TgOA6Z8UpcfkEKphbmYVphnt/LwO2lWE89du3fE8tgzfDuetQsFl4oK4eyx04QdvHtn7D0uVLM1mMX42N4IivBOtFoMFlQ1axv9+AEYC/vVjfroTWY7BOxyWonm5o8Fy87d3tiGZ6mYsOxTqwzkyB42XkWdnUaA+5f/hs0BjMu65OM+TcObPfzXpSbCLlEhCv6ppD5fQeFhF03gJNIkPb4YwCAuk8+gbGqyvsDiIjChN3IPGt/2tpDFW2OKa7V4mRVC8QiDlNs37ijUYo9w4RdO5umfZViQ9ljp/JSinW8Lcm2uzUUdifnG0MzEQvYN0r4LMX6WObOJhoBq8DaaxN2wfbXAUC8SioIs+I6rVCGdfVHY9scaloMaNGbhInYRJVU2BPLYMMTrn8bnuxRuitJfqwVe3PTCZTWt6JnkgpL7roI0iAzs45kJyjx2/zRWHLXRe0+FxEeSNh1E2Kuuw7KYcPAt7aidunSaIdD2DCaLThRYc1yzBlr3W+4u6gOVc06p+M2H7Nm6y7JS8QQ28BENEqxLGPXXrd5ZnfiqRTLbg+NsPO8ucFR2CXYnis0PXbW358/E8K+8LcU64+3GyvH/l7SIBgGX9iOjB3gXGZ1XCXmSJxCKgiRc7Uahz2xbUUalWL9w95j51nYHa2wCu3Hx/QVjg8FsYq2gpzoOJCw6yZwHIfUJ+YAAOq/+jcM5zqewW135HR1CwxmC2LlEhT0SsKwnATwPLD+sPOKGmZzcl3/dCH7UVbfCpMH091wYDJbhFJa+4Wdnxm7ENhPeCvFMrGnlIoFH7iQlmJDIOxYKZaVXF3xt8cOsGfOvvm9DADQLz2m3eVuxwEKQdiltR3GcBSAzGzYnUizl2LdZ+zCNRXb2Uhi+2K9DE+wv8POsCaNCB0k7LoR6pEjoR41CjCZUPPOu9EOh4DVEw4ABmTFgeM4TBhi3S+49oC9z65ZZxS2Olw3IA3psQrIJCKYLDzKG3VtTxomyhpaYTTzkEtE7e4d82VQHCofO8DRB66tiGRiTykTCz1h7c3Y8Twf0uEJJtg8Cc4WPw2KAbsIO2bL5ATrX+eIfWWYxmMpFrD32RXVajyaEwO+7U4oY2clUW39OXkqxZotPCps7w/ZnWCbBhE6SNh1M1IftZooNq5ZA0NJSZSjIQ7bhN3ATOuk8vjB1qnSX8/WosZmB7HtZA2MZh69UtTonRoDkYhDju2NOpLl2DMOZdj2lmE8WVow2O2s36o9MGHnTrAxsaeUiv3aK+sPja1GQTCGJGMn9SxMeZ4Xeu/8yti5eJcFuh/WHWyAYm9xA+q1RnCc+40EQsauRutQinWXsbNPTLM9qHqTGc16k8fHdEeYPY8nYVfZpIPJwkMi4pAWS/6l3QkSdt0M5dChUF9+OWA2o/b9D6IdTreHZewGZlmFXU6SCkOy42HhgQ22cuxmoQybJjzO7kkWOWF3tjo0ZVjAnonzZVAcSh87b6VYlUwsCKj2Dk8wD7tktSwk66nswtQCs8V54bveZL8tGGEXiowdK+8etQ0B5SSqnFa5MZwydl567Fg212i2TyyzcqNYxHWq7RDhxD48YYTF5e8CsJdhM1z2uxJdHxJ23ZCUR2YAABq++QbGcs+GuER44XlemIhlGTsAGG8rx35/qNy6bcIm7K4d0FbYRTJjF6rBCcCesdMZLTC69AnqjGYYTNbbQrV5AnAv7LRuhJ3B3FZABcL5htCWvxwFm2s5lpVhAd9TsYBdhAHWidRQ/C7zXNZZ9fWwjYA9d3GdVjAndleKVcvEYDqEDdGwnrxElYya9m0k2HzszBbeba9qWQj7PInOBQm7bohqxAioRo4EjEbU/mtZtMPptpxv1KGx1QiJiHOaImTl2O2na7H1RBVqNQbEKiS4JM++rqun7cM0kpYnZ2qsjfGhEAOOE5yuH0qst0rEATF+iBVfeC3FGu09do7Ztfb02YXSww4A5BIRmF2YazmWDU4opWK/sjJxCqkgCEbkJobEhywtVg65xP5RckG6e2HHBGB5o06wg3FXVuU4zj5AYftb8Fa67a7IJWLh31Gdm3IsE3Y9SNh1O0jYdVNSZjwMAGj4979hqq6OcjTdE1aGvSAtxsnMtVeKGgMy42C28Fiw+jAA4Kp+qU4eVEIp1mFHZ7hhpdj2etgBVk81Jrhcy7EsSxMqSwWlTRy6L8VahZFKJnESJ+2ZjA3lRCxgFTosG6fVu8/Y+VOGZbC/nfb41zkisu0LZribiAWsGUKWqWVr9DwJNWGAwib6aZ2Ye5hId9dnV1ZvW2tHgxPdDhJ23RTVpZdCOXw4eIMBtR9+FO1wOg08z2PFrmKhLNkemLAblBXf5r4bBlvLsSV11jfn0QPSne533dEZbloNZpy3Tdj1TgnNfkhPlieh7K8D/CvFKmViiEQcFFLrW2J7BijKQjgRy/DUJ+jv1glH7inMw4U9E3DbhT1CFl9usqOwc//3wXGckLUz2UrdnqxLHAcoAHidou3OCH12brzsqBTbfSFh103hOE7otatfsQKm+vooR9Q5+PlkDZ5edRAPffqbMLEXLEfKrTti2eCEI+Mddq6KOGvGzhEm7Jp0JjRqfS8Bby9seXuCShoyo1NPJsVsnVgoJmIBx80Tnu1OVDbxZx+gaH/GLhTmxAxPryEQDzvGpBE98PUjl7vdRxwsPZPsWVx3VicMRwEIeN4i4Wp5QqVY9yR6WSsWjr9DonNAwq4box41CopBg8C3tqLu4+XRDqdTwL4Fn6hswaGyJh9He8fd4ATjgrQY5KdbS1oX5ya1EVNKmVhYwB2JAYozIZyIZQiWJ61hzth5sTFxnIoF7GbG7ZmMZcMTocyUsO0ZribFwZRiwwETbNkJSq+xOAo7EWff9uGKaynW2xRtd8bTWjGe54VSLGXsuh8k7LoxHMcJvXb1n30Gc2NjlCPq+Dh+M171e2nQ52lsNQplVnfCDgDuvtS6E/aPl+S4vT+SfXZnQzg4wYjzYFIsrBMLka2Fyovdib0UaxUjLGMXbI+d0WxBZXM4hJ3718CGKfxZJxZOLs5LBMcBl1+Q7PW4XIcJ2iS15wlXoRQrZOw8T9F2Z+wZu7ZZb+ZvSBm77gcJu25OzLXXQt63LywaDeo++yza4XR4Ghy+Ga/ed76NVYe/HLNl67ITlIhXuRcwd1+aiz3zR+MPI9z3QuVG0PKEmRO7M54NFo89dtrw9Ni5E2ustOmasQtW2FU06sDzgEwiCmnZ0NP2jBa9/+bE4WRQVjx+e3Y0XrltqNfj8lyEnSdcy/RUinVPou29o8ElY1faYH1PSFbL3HoKEl0bEnbdHE4ksmftPvkUltbWKEfUsal36Ger1Rjw88ngJoqFMqyb/joGx3FIjvFcesqxCbtIWJ6E0sOOYV8r5mJ3wjJ2USnFWt8Sg+2xs1udKELqt+YpY8d67AIZnggXyTFyn685z6EU603Y2XvsnEuxNBXrDGvRcO2xC0c7ANF5IGFHIHbcOEizs2FubETjt99GO5wODftmzGwG/ru3LKjzHDnvub/OX4LdPhHM0Ec4hF2ckLFzLiOFuseO9ae5E3aOU7GO/w1a2DWGp6/J02sQhidC4PcXCVJj5UIG1duXFtepWMrYucdTj11ZvfU9gcqw3RMSdgQ4sRiJU+8GANR/+mm7pz27MixjN6XA2v+28UilIEQC4fB53xk7X+QmB16K1RnNGP3aVsz6Yq/fj6nTGNBge92uWwbag6dSrDAVqwiNWBHsTozmNn/brOSqdJmKDdbuJFyZEiY4NW1KsR1jeMJfOI4T/m69ibQ4h2yuyWwR/v4oY+eMp6lYsjrp3pCwIwAACZMmQaRSQX/yFLQ7dkQ7nA4L+2Z8xQWp6JsWA4PJgu8PBraWzWCy4GSV1aA1FBm78w2tfvf6naxswelqDb47WO63eGGDE1nxipD263iyO2FCOdSlWLOFh8Hl56T1MBUbbI9duD5Q1R7KyfZSbOcQdoD9C4nXUqzD5gn2ZYrjgAQVCTtHEtXMoNj531Co19oRnQsSdgQAQBwbi/jbbgMA1C3/JMrRdFxY5iBRLcWtF2UDAFb9Hlg59lRVC4xmHrEKCXq04403NVYOhVQEC293mfdFjW1HJ89b4/CHM8LGidANTgBeMnYh7rFTOYhRncG9sGNTse21OxHc/kNoTgx43p7RUYYnAmHyyJ4YnpMgrM5zB8vWNumMQjYqUSWjZfYuJNmEboPWAIvDfuNS8rDr1pCwIwSS7p4CcBxatm6F/uzZaIfT4bBYeKHHLlElwy3Ds8FxwK6zdQENMDj617VnVyfH2Vc5+VuOZcIOAI5XNvv1mHD01wGe7U5C3WMnFYsgFVt/zloXg1/7SjGXUmx7hydC3mPnvhRrNyiO/vCEv1ydn4ZvZl6O/Az3q8cAx4ydCbXM6oTKsG1gGUwL75z5JnPi7g0JO0JAlpeHmKuvBgDUf0rWJ64060xgX4oTVFJkJShR2Nvq2/VNAFm7IyHor2MELuzsvTgn/BR24TAnBrz12IXWxw6wZ+La+sC59Ni1Y3iC5/mwCTuPpdgO4mMXagRh55CxI2HXFplEhFjb7579nHRGM6qbrWKYSrHdExJ2hBNJ90wDADR8/TUZFrtQZ8vWqWViyCXWD9rbLrJ6zH39e5nfQyfCKrF29NcxcgIUdrUOGbtjFQFm7FJDLeyctwsA1qxosy0LFaqMHeCwkstFGHnaPBHM8ISjKWxWfKiHJ2ybJ9qUYjvX8IS/sFKswWRBua1fjCZi3ZPoMhlbbtvprJCKBJ87ontBwo5wQlVQAHm/fuBbW9Hwn/9GO5wORb1gdWL/gLl+cAYUUhHO1Giwr6TB5zl4ng9pxk4wKfbT8sSxFHvCD2FnsfA4a9sT2ztsGTt7CalZbwLTx6HaFQs42IU4ZOJ4nofWaHa6vz0+dmxwIikMprD2jJ2HUmwnsTvxF7VMAtalwPYUU8bOPUy8se0TjmXY9rR6EJ0XEnaEExzHCVm7us8/A29quzi9uyL016nt34Jj5BJcPygDgDVr54uyhlY06UyQijn0TfPcY+QvPQO0PKl1sEWoaNIJWx48cb6xFQaTBVIxhx6JKq/HBgortepNFuhNViHFyrAKqUjIioYCd6VYg9kCs622rgxBj529DBvawQnAHl9bg2I2PNF5euz8QSTihBIjE3aUsXOPa8ZOGOAJ8b9XovNAwo5oQ9yNN0KcmAjT+XI0b9oc7XA6DPW2b8SJLpYLt9rKsav3n4fB5H2a8mSldRK1d0oMZJL2//Nz7LHzpxTMem8YJ6q8Z+1Yf11usjrkE4kxDj51rM+uMQz9dYBjKdb+RcWx3Oo6PBFMxk4wJw5xGRawZxQdhR3P8122xw6w99kV1Vi/tFDGzj1sMrbe9qWtrCE8k9lE54GEHdEGkVyOxMl3AgDqPiHrE4a7UiwAXHFBCmLlEjRojUJ2wRPsTTcnKTQf/iyL1qI3tfGycgfL2KXHWV3/ffXZhWsiFgDEIk4oMTJh1xTiiViGIOwcBBsTSVIxB6nY+lbYHruTcJrCutsVqzWYhbJ1V+uxA+ziXihxe9lU0Z0R1oppXYUdDU50V0jYEW5JuPNOQCpF6969aD10ONrhdAgEDzuXhmSxiEMPW+aMval6ItRTkwqpGBlx1m/mvsqxFgsvTM5d3icFgO8+OybsQt1fx2BZGdZnF2oPO4bSTSnWdSIWaJ9BsWAKG1ZhZ4+L9ddxnLNXX1fBtceSSrHuEdaK2f5th2sym+g8kLAj3CJNS0PcuHEAgIaVK6McTcfAU8YOsJc9fBkFh+NN174z1nu2sKHVKPSUXdrHatPiy8vuDBN2IZ6IZbhanoTaw46hdDMVq3MZnPB0nL+E8wPVsRTLSu4tDoMTXbFJ3rUcT6VY97C91SxjTxk7goQd4ZHEO/4IAGj87juYW/zbUtCV8ZSxA+xvor4zdqHfJcoGKHyZJDOrkwSVFINsE7knKpu99uaxdWK9UkK7dYIR62JSHOo9sQx3dieu68SAdvbYhXF4QiVvuxaNxd/VBicYrllbyti5x7HHzmLhBXsY8rDrvpCwIzyivPhiyPr0Aa/Vounbb6MdTtRhGTt3mQMm1M77EHbhaGz216S42ibsktUy9EmNgVjEoUFrRJXLQAVDZzSj1JaBDEePHWDP2DWFO2MntWW8nHrsrM+pcCrFBmd3YjRbUNkUxlKsQ4xa2yRsV/WwY7hm7BJJ2LnFsceupkUPg9kCEQekx9HwRHeFhB3hEY7jkHjHHQCA+i9X+G3A21Vh/WluS7G2b8feSrFmC48K4cM/dFYE9lKsr4ydNf6UGDkUUjHybJm+4x767KyTtkCsXIKUmPB8qAomxa1h7rGTWd/qHDN2rubEQPB2J5VNOlh46yBGShia/CViEWS2AQ8mTlmPXVeciAXsoh+wZnDZgAvhjGOPHdsRmxGnoJ9XN4Z+84RX4m++CZxcDv2JE2jdty/a4UQVb6VYfzJ2Vc06mC08JCIOqbGh+/D3txTLzImZ8GC7Oj2tFhNWiaWqw9bDFakeO3uPmvNUKQAnM+FghydYiT0zXglRmBbVs3Iss2xp6aLmxAxHcZ9ME7EeYT12Da1G4T2ABie6NyTsCK+I4+MRd8MNAICGFd17iIKVYl197ACgh+2NtKJJB6PZvVUGE30Z8YqQesKxjF15k04w+nUHy9gl27Jv/dKtws5Txu5AaQMAoE9qePrrAHu5zdXuJNQ+dvZMnP13Y9860VbY6YyWgDLUkVi6zsqxzJTYbk7cRYWdQ8aOBic8w96PeB44Wm79t0z9dd0bEnaETxLvtJZjm77/HuaGhqjGcq5Wgwn//BnfHywP6vFHzjfhhjd/xpe7igN6XKvBDL3NfDjBTcYuJUYOmVgECw9U2HY1ulIWhsEJwNozp5KJwfMQeuLc0SZjx4Sdm4wdz/NYc8D6M76mf1pI43XEda2YYFAcwnVigCeDYpPtvrZTsQCE37c/hNPDjqGSO5sU20uxXX94goSdZ6RikfDv6FCZdQ81TcR2b0jYET5RDB0K+YAB4A0GNP7vf1GNZfW+8zh8vgmvbzoR8GM1ehNmfrEXR8qb8Oamk7BY/M/IsGydRMS57WkSiThk2gYiPJVjw5XV4ThOyNp5K8fWuGTsHEuxrj+LA6WNKK7TQikVY/SA8Am7OJdSLBuiCH2PnRcfO8eMncM2kEAsT9jgREZ8+EqGdpNll1Jsl83YOZRiSdh5hQnfQ+etwo5Ksd0bEnaET6xDFFbrk/oVK6M6RMEmP09Utgjmuf7y/P8OC4+paNLh95IGvx/r6GHnqd/Ml+VJOO0w/LFbqdU4Z+xyk9WQSUTQGS0oqXcWhKv3nwcAjB6Y7pTRCjWC3YneJWMXtlKsm+EJh4lTxyGFQPrs2Kq21DD2ginblGK79vCEY9aWMnbeYeVY1gdMpdjuDQk7wi/ibpwIkUoFw9mz0O7aHbU4HAXIxiMVfj/um9/L8N+9pRBxwMBMq4dbIOVcb4MTDF8DFOE0sPVnKtdeirV+CIhFHPqmWfvnHPvszBYeaw5Yhd1Nw7JCHqsjgt1Ja7hXilmfx5ePHQDIg7A8EYRdbPgsJlhmjr0Gtie2O2TsSNh5x/V9iUqxnlmyZAny8vKgUChQUFCAXbt2eTz26quvBsdxbS4TJkwQjrn33nvb3H/99ddH4qV4hIQd4RfiGDXiJk4EADSsXBG1OErq7MJlw+FKvx5TVKPBs18fBAD8+bq++PN1fQEA3x+q8Dv7KAxOePmA8ZU1C1ePnT/PDTjbnTDy3QxQ7C6qQ2WTHnEKCa7slxLyWB1xNCjWGe19jOGyO3FfinUWRsFYnjDRHMppZ1eULvtiW7r68ITTVCwJO2+4vi+RsHPPypUrMWfOHCxYsAB79+7FsGHDMG7cOFRVVbk9ftWqVSgvLxcuhw4dglgsxu233+503PXXX+903JdffhmJl+MREnaE37BybNPGTTDV1kb8+Q0mC8ob7cJlT3G9kCnx9pg/r/gdGoMZI3sl4dFr++Lq/FSoZGKUNbTiQGmjX89d70fGjmXNPA0whHNy0lfGTmswCULG0TqC9dk5DlCwMuz1gzMgl4S3Md/R7oR52HGc1TsvlAgGxY4+dkY2POH8GpmACi5jF8YeO1aK7SbDE44l5iQ12Z14I8lhUj9BJe2yYt8dGoMJzTqjcPHmDPDaa6/hgQcewPTp0zFw4EAsXboUKpUKH374odvjk5KSkJGRIVw2btwIlUrVRtjJ5XKn4xITE0P6GgOFhB3hN4qBA6EYOhQwGlH/ReS/kZxvaIWFB+QSEYb2iAfPA5uPes/a/X39MRwobUSCSoo37xwOsYiDQioWJj3XHvKvHMsWbLuzOmFkeynFtuhNQv9YZnzoy3U9Eq3DE54ydixbJ5eIoHYQMv1cvOyMZotQop4Y5jIsYM/KNOtMQjk2Vi4JuRecyo1Yczc8AThk7Az+TcVqDSZBbIXLyBloW4rt6sMTYhEnCH8anvCOY8YuK757ZevGvLUbQ17YIFze+fG02+MMBgP27NmD0aNHC7eJRCKMHj0aO3bs8Ou5li1bhjvvvBNqtfMmni1btiAtLQ35+fmYMWMGaqOQ+HCkwwi7V155BRzH4bHHHhNuc1fffvjhh50eV1xcjAkTJkClUiEtLQ1PPfUUTCYTiPCQfO89AIDaZctgKC2L6HOzwYmeSSqMG5QBAFh/2HOf3ZbjVfjg57MAgFcnDUWmwxvehCGZAIDvD/pXjnUcnvCEYznU9ZzlNsEVp5AI5cdQku3go2dwY9NR7WB14jj8wUqxZ6o1MJgs2HaqBvVaI1JiZCjsnRzyOF1hH9wGs0XIesV7yYoGi8qhjMl+N5577ALL2NU0W/82FFJRWAcZmABlvXWaLi7sAOD+K3pjzMB09Ld9ASHc4/iFs7sNTmx89BIcfGGscHnkmj5uj6upqYHZbEZ6errT7enp6aio8N2vvWvXLhw6dAj333+/0+3XX389PvnkE2zevBl/+9vfsHXrVowfPx5mc+D7pkNFhxB2u3fvxnvvvYehQ4e2ue+BBx5wql2/+uqrwn1msxkTJkyAwWDA9u3bsXz5cnz88cd4/vnnIxl+tyJ2/HioRo4Er9OhcvHigB9/rlaDhz79Db8X1wf8WDY4kZOkwtiB1n+cv5yqFTIXjuhNZsz/5hAAYFphLsbahCDj6vxUKKQiFNdpcfh8k8/n9md4IsOWidMZLULplhFun7OUGBnkEhF4Dz569v46Z2GaGa9ArEICk4XHmZoWfLvPWoadMCQTkgisJIqRScB0Zqnt9xvqiVgAUNhEkYW3+9Pp3BgUA4BSGthUbHWL9eedGisP24YOwF6KbXUpxXbVzRMAMHt0X3ww7eKI/C12ZpLU9n8z3a2/Ti2zfllml3C1jyxbtgxDhgzByJEjnW6/8847cdNNN2HIkCG45ZZbsGbNGuzevRtbtmwJSxz+EPV/LS0tLZgyZQo++OADt3VplUrlVLuOi4sT7tuwYQOOHDmCzz77DMOHD8f48eOxaNEiLFmyBAaDIZIvo9vAcRwynn8OkEjQ8sMPaP7hx4Aev3rfeaw/XIlPd5wL+LkdM3YXpMWgV4oaBrMFW49Xtzn20x3nUFrfivQ4OZ4e37/N/SqZBNfk28qxfkzHets6wVBIxUKPlWuvG1s5Fa43XY7jhHOXNrT1snM1J3Z8HMvaHShpxIYj1tJ2JMqwgNX/L8YmTFhvYqgnYgFnSxMm6FjGTiH1UIr1V9g1u//ZhhpXg2L78ETX7LEj/McpY9fNhJ2/pKSkQCwWo7LSuX2nsrISGRkZHh5lRaPRYMWKFbjvvvt8Pk/v3r2RkpKCU6dOtSve9hB1YTdz5kxMmDDBqe7tyOeff46UlBQMHjwY8+bNg1Zr/9DasWMHhgwZ4pRaHTduHJqamnD48GGPz2kxGGBuabFfNIH5oXV35BdcgOTp9wIAKl96CZZWz5OYrrAG+XIP2xm8wcx3c5JU4DhOyNptcLE9adQa8dYP1n9Uc8b08+jDNt5Wjl17sNxnOZZl4NxtnXAkSyjHOourcFqdMLwNUNTahJ276ULWZ/fBz2fQojchO0GJi3pGrvmXlWOZsAtHxs7Rn44JI8HHzuXvgwk9vd8ZO6voD6eHHeBcTga6vo8d4T+OdjDdrRTrLzKZDCNGjMDmzZuF2ywWCzZv3ozCwkKvj/33v/8NvV6Pu+++2+fzlJaWora2FpmZme2OOVii+o6wYsUK7N27F7t3u/dFu+uuu5Cbm4usrCwcOHAAc+fOxfHjx7Fq1SoAQEVFhdt6ObvPE7XvvY+aJUuE6xVGyu4FSsqMGWhc8x2MZWWoef99pM2e7dfjWNm0oikYYWf94M+xvXGNHZSO9346gx+OVcFgskBm2xrwztZTaGw1ol96DCZd1MPj+a7tnwaZRISiWi2OVTRjQGacx2Mb/LA7Aaw7Y/eXNAjWJoyICDsvlic1bqxOGCxjd7KqBQBw49DMsC2yd0esQgo06gQxHI6MHWDtgTOYLYKw0xo8TMUGmbEL50Qs4CjszDBbeCG+rtxjR/iH0/AEZew8MmfOHNxzzz24+OKLMXLkSLzxxhvQaDSYPn06AGDatGnIzs7Gyy+/7PS4ZcuW4ZZbbkFysnPfcUtLC1588UVMmjQJGRkZOH36NP7yl7/gggsuwLhx4yL2ulyJ2jtCSUkJZs+ejY0bN0KhcD8l+OCDDwr/P2TIEGRmZuK6667D6dOn0aeP+wZJf0h+6EEk2TJOAKAqKwP6ty3XEZ4RqVRIf2Yeyh79M+r+tQzxN90Eea9ePh/HVkdVNOrA83xAPUlCKTbZOgE6PCcRKTFy1LTo8evZWozqm4rSei0++qUIAPD0+P5ee3Ni5BJc1S8VG49U4vuD5V6FnX0q1rvo8JQ1Kwvj1glGDy8ZuxohY9dWfPRLd25Mj1QZltEmYxfiPbEMlUyCJp1JyNQJU7EupViFLLCp2IiVYmX2UqzWYectZeyIBKUUcokIRrNFWC9ItOWOO+5AdXU1nn/+eVRUVGD48OFYt26dkBAqLi6GSOT8mXH8+HFs27YNGzZsaHM+sViMAwcOYPny5WhoaEBWVhbGjh2LRYsWQS6PnkVP1N4R9uzZg6qqKlx00UXCbWazGT/99BPefvtt6PV6iMXOb7gFBQUAgFOnTqFPnz7IyMho4xrN6ufeauYimQyQ2b/hiF1Glwn/iB09GuorR0Hz08+oXLQIOcuW+RRqLGPXajSjSWfyOzvT2GoU7EJybNYeYhGHMQPT8OWuEmw4XIlRfVPx2oYTMJgsuLR3ktBD540bhmRg45FKrD1UgTlj890eYzJbhB2m3nrsACAr3v2+2PON4fOwY3jz0fM0PAHYvewAoHeKGoOyPAvccMAsT1h5PlwZO/uuVWvGiw1RtDdjFwlzYsC5FMvWiolFHOSSqHfUEFFGIhZhyV0XQWs005YOH8yaNQuzZs1ye5+7gYf8/HyPrTpKpRLr168PZXghIWrvCNdddx0OHjyIffv2CZeLL74YU6ZMwb59+9qIOgDYt28fAAi168LCQhw8eNDJNXrjxo2Ii4vDwIEDI/I6ujMcxyFj/nxwMhk023eged06n49p0dkzDZUBlGNZf12yWuZUemLTrhuPVOJQWSO+3me1YHnmhgF+ZQOvG5AOmViEU1UtOOlg0usIE5SAb9GR7cZPzmzhhUnV8JZiPXvZeRqeAKz9OUyUTByWFdbJTnewjJ3ZYn3zDPXWCYbj5gZH0da2xy6wlWLRKMUKHnYyccR/X0THZPTA9LCvACQ6B1ETdrGxsRg8eLDTRa1WIzk5GYMHD8bp06exaNEi7NmzB0VFRVi9ejWmTZuGK6+8UrBFGTt2LAYOHIipU6di//79WL9+PebPn4+ZM2dGNQ3anZD17IlkW8m86rXXfQ4hOFqTuLPl8ITj4IQjl/VJhlomRkWTDjO/2Auet+43Hdojwa/zximkGNXXujZr7UH3fZlsIjZOIfFpu8BKrY4Zu5oWPYxmHmIRh7QwfvizjF15YyssFuffQ62tlOxpNdPkS3LQO0WNO0fmhC0+TzBhxwhXxk7pYBfCSpkcZxdyrsd1PGFnL8XS4ARBEJ7osDl8mUyGTZs2YezYsejfvz+eeOIJTJo0Cd9++61wjFgsxpo1ayAWi1FYWIi7774b06ZNw8KFC6MYefcj+b4/gZPLYSwpgeG0e9dvRrNDxi6QAQpHqxNH5BIxrrZtkThXq4VUzOGpce5Lqp5wnI51h7BOzI8SRw9b1qxWYxB6uVgGLSNOEVY/rvRYOcQiDkYzjyqHVWsms0UQp576wOaMzccPT17tZOIcKVwNm8MxFQvYM3atRrPwu1FK22a8FAGUYnmeF8yfIzkV2x3MiQmCCI4O9a7gWN/OycnB1q1bfT4mNzcXa9euDWNUhC9ESiVUl1wCzbZtaPnpZ8gvuMDjsY4Zu8pAMnaCOXFb4TF2YDq+O2AVZdMK89pk9XwxZkA6RJx1X2pVsw5psc4DDmxwwtvWCUacUoIYuQQtehPKGlpxQVqMw0Rs+AYnAGufTUacAmUNrShr0AqGyXVaA3geEHG+ewSjgWvGLlylWMdSpqetE4CDADT4FnbNepOw6SP8wxMsk2jv+SRhRxCEKx02Y0d0LmKuHAUA0Gz72eMxPM87CbvygDJ2VnHkbuLrmv5pSFRJkRIjw6xrPItKT8SrpMhNtg7QnKhoaXO/P1snGBzHtSnHsv9GwjjU3QAFG5xIUssgjqCNib+4ZuziwzQV61yKdb8nFgAUNud6nZvVbK6wMmysXOL2XKHEsReQ9UxSKZYgCFdI2BEhQX2FVdhpd/8Gi7bt5gPAmmkwO/R+BZSx89BjB1hLd+sfuxLrHrvSr3KpO/qmxQAATrgZoPBn64Qjrn5ybOtEJPylBMsTlx4/AEhWd8y+07gIZeyUDj1qgjmxtK0wYgJN50fGTrA6CXN/HWDtBWRVY/a8tHWCIAhXSNgRIUHWKw/S7GzwRiM0v/7q9phmvfP+VH977MwWXvBmY1YnrqTFKdpVCmOWHyer3Ak7/7ZOMJiAY5m6cO+JdaRHgueMXUpsxyvDAm176sLVY+dod8KGJ9xl2QKxO6mJUH8dYM0Gs9VoVYKwo4wdQRDOkLAjQgLHcVCzcuzP29we42h1Avhvd1LZpIPBbIFExCEzPjx9an1tJr0nKt2VYm2lTH8zdi5Gwey/kSzFOpoUd/SMnWOPnVwiarO7NVQIws7B7sRdj508ALuTSE3EMljWkT0vlWIJgnCFhB0RMmJGWYVdy88/u7U9Yf11zF6ipsUgNJ57g5VhsxOVYZsq7ZduL8W6xs5KsQl+lnmZgCtlpdjGyGXs3HnZsXVinqxOoo1jj124yrCAfdrVqRTbzoydfetEZH62LN7qZuuXIsrYEQThCgk7ImSoCwoAqRTGkhIYz51rcz/L2OUkqoSF7FXNvrN2zOrEUxk2FPRKUUMs4tCsM6GySe90X30AwxOAXdidb2iFRm8Shi/CPRULOGfsmED1Zk7cEXDM2IXLww5wLcVaRZu77KDQYxdIKTZCGTu7sKOMHUEQ7iFhR4QMkVoN1YgRAICWn9pOxzbbMnaxCgnS460fhP6UY70NToQKuUSMPNsOWtcBCvue2MBKsRWNOqHXLVYhaTP9GQ5YqbrVaBYEaW1LZLNKgeIo7FwHKUKJysHGxFsp1nF61heRLsUKws72O1WHeRKXIIjOBwk7IqQI5Vg3ticsYxejkCIjzipAyv2YjC2p92x1Ekr6CX12LsIuwOGJtFgFJCIOJguPfSX1ACLTXwdYM1BsuwXrs6tp8W5OHG3UMokw7RnOjJ1jKZYNT7iuE3M8Tmey+NykUh3hjB0rvRrNvNN1giAIBgk7IqSoR10BANDu2g2Lzlm0sR67WLkE6TZh589aMaEU68acOJT0dSPseJ4Xhif8zdiJRZxgDrzrrFXYRaK/jiGUYxusPzeWsUvuoMJOJOIQaxMo4eyxE1ZyGX342NmEndnCCwLKEzXNkRXNSpfSMZViCYJwhYQdEVLkfftCkp4OXqeDdvdvTve1OOy3ZBk7f0qxntaJhRr7AIV9MrZFb4LJ5r0XyNYGJuR2F9XZroe/v46R7WB5wvM8ajRMfHTMUixgH6CIRI+dzsnHznMpFvA+QGGx8FHrsROuk7AjCMIFEnZESOE4zuMWimahFCsRMloVLoMKrrQazEIfU7iFXb4tY3eqqkUowbHBB7lEFNBmAeYnx0RpNDJ2pfWtTiuvOqrdCWDvswuXhx1gz85pjSavGTupmBM2dHgboGhoNQqiP1I/W1chF0MGxQRBuEDCjgg5bAuF6wBFi82gOMahFOtr+0SpbUdsrFwS1mwOAOSlqCEVc2jRm3DeFhezOkkKcKMFE1fC9QgKux4Omy+YObFaJg77yqv2EBeBjJ27lWLueuw4joNC4tvLjn3hSFBJIZNE5q3UNcNIPXYEQbhCwo4IOerLCgGxGIazZ2EoLRVuZ8MTsU4ZO+/CrthhIpbjwrvnVCoWoVeKbWesrc/OPjgRmLBzzdBFpceuvtVudRKhUmGwsL+HzDCWrJ2nYk1Ot7midLBG8UQkt04wXONVuxGmBEF0b0jYESFHHBsL5YXDAQCan+1ZO3c9dhVNOq+ThyUR6q9jsAGKkzZhZx+cCCyT5Jqhi6Sw65FoNykWBieC3KEbKebd0B//d/swjB2YEbbnsJdivQ9PAPYBCm+WJ5G2OgHclWJJ2BEE4QwJOyIsxIy6EgDQ4rBezLHHjpViDSaL0MfmjuI6247YME/EMvqlWYXd8QrrAEVdgB52DEchJ+KA9Ah++DNR2dhqRFGtVRh3VKsTRma8EpNG9AhrSZOVYnne3jvpKWMnWJ4YPW9GiYqwc83YkbAjCMIFEnZEWIix2Z5odu6ExWAVR44ZO5lEJGSRvHnZRWoilsEmY09WuZZig8/YZcQpwrYKzR1quUSId39JA4COa3USSRz76VgZ1WMpVhB2vkuxkRTNjhO7MrEoYr19BEF0HuhdgQgL8v79IU5JAa/VomXLFgAOPna2Cch0PyxP2PBEOLdOOGIvxbbAYgncw46hlImFgYtIlmEZTFgeKG0EAKR2YKuTSCEWcYIQYtljpdR9xsuffbHRyNg5ZujUNBFLEIQbSNgRYYETiZAwaRIAoObdpeB53r55Qm7NJvkaoOB53ml4IhLkJVv32LYazShraA06YwfYxVU0hV1Zg7WUTRk7K2184DyVYmV+9NhFYXjCsSeQyrAEQbiDhB0RNpLuvQcilQr6o0fRsnmzsCs2xiVj52n7RK3GAK3BDI6LnF2IRCxC71T7ZGywGTsgysLOxW4lmTJ2ANpubvA4PMHsTky+M3aRnDh2nIKlwQmCINxBwo4IG5LERCROnQoAKFvyrmCUyz6QfG2fYBOxGXEKoZk9Eth3xrYE7WMHADcMzURarByjB6SFND5/YJOxjI4+PBEpXIWcJ2Gn9CNjF227E8rYEQThDhJ2RFhJnn4vRGo1Gk4XCbcJwi7e+oHoqRQrlGETI1OGZQgDFJXNqNcEX4q9aVgWdj07GhfnJYU0Pn9wzXB25HVikaRNKdbDFwZfwxMmswW1tonpSPbYUSmWIAhfkLAjwoo4IQGJ06ZCK7Fm51QysbCuKSPeKj48lWJL65nVSWSFHRugON7OUmw06ZHoKuwoYwe0nSr1NK2s8DE8Uac1gOetVjbBZHODxbkUS8MTBEG0hYQdEXaS77kHujhr1koN+welo0mxO4prI2t1wmCl2JNVLdDYSnGdTdg5ZuwkIi6sO1g7E0oHYeRtxZovHzvWX5eklgtfVCKBU8aOtk4QBOEGEnZESNhdVCcIMVfECQkQT5gIAFA0N4C3WD8smbBr0BrdlrzO1moARM6cmNEzSQW5RCT0BIo4u0VLZyFBJRXKjskxMogiKD46Mo6lV08TsYBvu5NoWJ0A1GNHEIRvSNgR7aasoRV/fG8H7lu+2+MxomvGAACU2iY0b9gIAIhTSqCQWv8EXQcoWvQm7CtuAAAM7ZEQ+qC9IBZx6JMaI1xPUHU+YcRxnJC1S1ZTGZbhKIy8ZeyUMttUrIfhiZqWyPfXAdZ9xjJb+ZimYgmCcAcJO6LdFNVowPNAUa3G495XrcRaylQZdahZsgS8xQKO4+zlWJc+u20nq2EwW5CXrEIfm/1IJGEDFEBwgxMdAdZnF0k7jo6OQuZfxk4oxXqwOxGsTqIwlMIEKWXsCIJwBwk7ot0w2wejmUeTzYTYFeb0r4YZ+pMn0bxhAwAHLzuXjN3mo1UAgGv7p4PjIp8t65cRK/x/Z+uvYzAvu5QINvd3dJxKsR62TgAOwxMeMnbRKsUCdkFKwxMEQbiDhB3RbtiHHADU2SwgXGHrxBJye1iP++wzAPbtE46lWIuFx4/HrcIuGh5wANAvrfMLu8LeKeA44JJekbdb6aj4XYr11WMXBQ87hooydgRBeIHeGYh2w/qNAKC2RY9eKW1Lp2ydWFJ+H0AkQutve6A/e9a+VqzRLg73lzagpsWAWLkkKh5wgH0yFgASO2kpdsLQTFyVP456sRzwtxRrF3bup2Jropixi7FNOMfSpDNBEG6gjB3RblgpFoBg2uoKy9jFJ8ZBPeoKAEDj1984WJ60Csf+cMyarbuyX6qwtD3S9EhUCh/uiZ24lEmizhnHUqw/dif6Dpixe+TqPrhleBYuvyA54s9NEETHh4Qd0W4chZ2nUizrsYtRSJBw2yQAQOM33yA9xpp1cBye2GTrr7suSmVYABCJOFyQZh2g6KzDE0RbVA7eb14zdrap2I5mdwIA4wZl4I07L3R6LQRBEIx2CztzSwuaN22C/vTpUMRDdEKcMnYO/+9Ii966mitGLkHsNVdDnJgIU1UV4s+eAABUNlkfd76hFUfLmyDigKvzoyfsAOAyW0ZkUFZ8VOMgQodjlk7pZf+wt+EJvcmMxlbr3zNt9CAIoqMRsLArfexx1H32OQDAotOhaNIfUPr4HJy5+RY0rd8Q8gCJjk9Ns0OPnY9SbKxCAk4mQ/xNNsPiH9cBsA5PWCw8NtvKsBf1TIzoqiZ3zB3XHzvmXYur+qVGNQ4idCidSrG+p2LdGWfX2npKpWIO8UrK5hIEETzbT9eE/JwBCzvtb79BdfEIAEDzxk3gwSN/16/IePYZ1CxdGvIAiY4Nz/Oo1fgxFctKsbaer3hbOVb24wZwAEwWHrUaA344WgkAuDaKZViGSMQhMz6yWy+I8KIKcHjC3Uoxu4edvNMZVxME0bG498PduPLVH/HW5pM439Dq+wF+ELCwszQ3QxxvLU1ptv2MuLFjIVIqEXPVVTCcOxeSoIjOQ2OrEUaz3ZS4tsVDj53eWdgp8vtBMXgwJAY9ksTWrEhRrQa/nK4FAIwekB7OsIluijJAYWcwW2AyO4s71noQjf46giC6FjufuQ7TCnOx9lAFrnz1R0xd9ivWHDgvrLQMhoCFnTQjA6379sGi1aLl521QX345AMDc1ASRrPNODxLBUePSU+exFOswPMFI+IM1a5fSYhVz/91TCoPJgh6JSvRNi2l7EoJoJ/722Dkep3N5g3XM2BEE0blYsmQJ8vLyoFAoUFBQgF27dnk89uqrrwbHcW0uEyZMEI7heR7PP/88MjMzoVQqMXr0aJw8edLveJLUMtw/qje+nz0K38y8HL1T1Hjum0MoWLwJL6w+jCPnmwJ+jQELu8R7pqHsqb/g5NXXQJKWBtXIkQAA7e7fIO/XL+AAiM5NdbOzkKvTeBqesPXYye09SXE33ABOLkdSg7Wv7n/7zgMAruufFpVtE0TXx3HbhLepUrmDzY5rn50wEUvCjiA6FStXrsScOXOwYMEC7N27F8OGDcO4ceNQVVXl9vhVq1ahvLxcuBw6dAhisRi33367cMyrr76Kf/7zn1i6dCl+/fVXqNVqjBs3Djqdzu05vTE4Ox6PXHMBphXmQWMw46vfSjDx7W24fel2nKhs9vs8Ac/LJ911F5RDhsJYUY6Yyy4DJ7K+AUpzeiD1sdmBno7o5LCMXU6SEiV1rajTGMDzvJMwM1t4aG3ThY4ZO3FcHGLHjkXyuUYAdmuJ66gMS4QJf0uxHMdBIRVBZ7S0mYylUixBdE5ee+01PPDAA5g+fToAYOnSpfjuu+/w4Ycf4umnn25zfFKSs0H+ihUroFKpBGHH8zzeeOMNzJ8/HzfffDMA4JNPPkF6ejq++eYb3HnnnX7FZTRbsPFIJb76rQTbTtZgSI94LLxpEG4anoXaFgP+b8NxPPL5Xmyac5Vf5wvK7kQ5ZDDixoyBSK0GbzZDd/QoVBdeCNVFFwVzOqITwz7k8m2bGtzti2XZOgBQu+y3TJh0G5J1jfb7ZWIU9KYVWER48HelGOA4QOGSsWthpVhqPSGIaKMxmNCsMwoXvcm996TBYMCePXswevRo4TaRSITRo0djx44dfj3XsmXLcOedd0Kttm5XOnv2LCoqKpzOGR8fj4KCAr/PueB/hzDypU145uuD6JWixnd/HoWvH7kcd47sCZVMgpwkFZ6ZMACnq1v8Oh8QRMauYvFiKPr1Q8If/gDebMa5qdPQ+vvv4JRK5Lz7LtQFIwM9JdGJYcIuO0EJtUwMjcGMOo3ByQaCCTuZRAS5xPnDVDVyJNIVXwjXR/VNbXMMQYQKhdS/jB1gFXb1MLYxKbabEytCHyBBEAEx5q3dEMkPC9dnX9cXj49p2xZWU1MDs9mM9HTnilB6ejqOHTvm83l27dqFQ4cOYdmyZcJtFRUVwjlcz8nu88XJqha8cNMgXD84w+NnX5JKhi8fuNSv8wFBCLvm9RsQP/EmAEDLjz/CWFqK3mu/Q+Pq1ah+4w2ov/zCxxmIrgTzsEuJkSM5Rg5NnRZ1Gud9sWxwItbNeitOJELPgmFAtfV6R7A5IbouYhEHuUQEvcniU9gpPFieMDNtKsUSRPTZ+OglyMrKFq6Haw3lsmXLMGTIEIwcGdrk1Rd+CDaJWIRLe/u/QjDgn4C5vh6S1BQAQMvWnxB7/TjIe/VCwqRJ0J84EejpiE4Oy9ilxMoFQ+EaF8sTYeuEwv33iL7XXwMA4HgLLlcG3nBKEIFw8/AsDMtJQG6y2utxwvYJh4zdmeoWFNdpIXZYOUcQRPRQyySIVUiFi6esV0pKCsRiMSorK51ur6ysREZGhtfn0Gg0WLFiBe677z6n29njgjknY8mPp/DV7pI2t3+1uwTvbgluo1fAwk6ckgz9qdPgzWa0bNsG9WWXAQD41lZATCW07oYg7GLkSLYJO1eT4mYXc2JX+g3shTt1p3Hf4e8gWf3fMEZLEMCrfxiG/828HFKx97c/1oPnODzx7f5yAMAVF6REfTMKQRD+I5PJMGLECGzevFm4zWKxYPPmzSgsLPT62H//+9/Q6/W4++67nW7v1asXMjIynM7Z1NSEX3/91ec5GV/8Wow+aW2/ZPZNj8HnvwbnDRxwKTbh1ttQ9vjjkKSmAhwEYdd64ADkvXoFFQTReWHZuZQYGZJj3Au7Fr13YcdxHObfOgwlD72Lhup9SH1sNkRK2vhARBeF1Cr8WDM2z/NYvb8MADBxWFbU4iIIIjjmzJmDe+65BxdffDFGjhyJN954AxqNRpiSnTZtGrKzs/Hyyy87PW7ZsmW45ZZbkJzsXA7lOA6PPfYY/vrXv6Jv377o1asXnnvuOWRlZeGWW27xK6bqFj3S3PTrJqvlqGp2bx/mi4CFXeqjsyDv2xfGinLEXX+93ZRYJEbygw8EFQTROeF53mFCUI4ktbXnyNW0WOix81CKBQD1FVdAmp0NY1kZmtZ+j4RJt4UpaoLwDzYVyzJ2R8ubcbpaA5lEhLGDyJKHIDobd9xxB6qrq/H888+joqICw4cPx7p164Thh+LiYohEzpn848ePY9u2bdiwYYPbc/7lL3+BRqPBgw8+iIaGBlxxxRVYt24dFAr/hquy4hX47VwdcpJUTrf/dq4O6XHB9fEGLOwAIO76cW1uS7j1lqACIDovTTqTsPYkNdZzKdZXxg4AOLEYCXfcgerXXkP9ihUk7Iio49pjt3q/1UD7mvxUxCmkHh9HEETHZdasWZg1a5bb+7Zs2dLmtvz8fPA83/ZgGxzHYeHChVi4cGFQ8dw5sicWfnsERjOPy/pYM4LbT9Xi5e+P4v5RvYM6Z1DCTrNrF+o+/Aj6M2cAAPI+fZB835+guvjioIIgOicsMxcjl0AhFQs9Rx577Lxk7ACrp13NW29Bd/AgWg8egnLI4DBETRD+oXQQdjzP41ubsLtpWLa3hxEEQfjNQ1f2Rr3WgOe+OQSjbS+1XCLGw1f1wcxrLgjqnAELu8bVq3H+mWcRO2Y0kmyNhNrf9+Lc9D8ha/FixE+8MahAiM5HTbOz7QPrsWs7Fcsydt6zHJLkZMSOG4emNWtQv+JLKIe8FOqQCcJvHO1O9hY3oKyhFWqZGNf2J0segiBCA8dxmDd+AP58bV+cqmqBQipGXoqqXX6uAQu7mqXvIe3JJ5B8773CbUnTpqL2o49R8+67JOy6EY6DE4C12RNouy/Wnx47RuJdk9G0Zg2avluL9L/8BeL4+FCGTBB+w6ZidUazkK0bMzDd58YKgiCIQFHLJRiWkxCScwUs7IwlJYi95po2t8deew2qX389JEERnQNHqxMASHKYinXcF+tPjx1DeeGFkPfrB/2JE2j83/+QNG1aOEInCJ+wjF2L3oSNR6w+VTQNSxBEqDlQ2oDvDpSjrKFVKMcy3psaeItbwD52ksxMaHbsbHO7ZscOSDL9M+Qjugauwo4NT7jui20OQNhxHIfEydbFyfVfrvDatEoQ4YT12G09Xo3qZj3ilVKM6psa5agIguhKrN5/HpPe3Y5TVS3YcLgSJjOPk5Ut2H66FrFBDmkFnLFLnn4vKl96CbpjR6G68EIAgHbv72j8+mukP/NMUEEQnRNXYaeQit3ui23Red884UrcxJtQ9fd/wHD2LLS//gr1pf7vyCOIUMF87MoaWgEANwzJCNu6IoIguifv/HgKz904ENMK8zDo+XVYMHEQcpKUeObrg0Hvow74XSpx8mRkvfZ/0J84icrFL6Ny8cvQnzyJ7NdfQ+KddwQVBNE5qWZ7YmPtDvz2cqy9z46VYt3tinWHOEaNuJut+4jrv/gyJLESRKCwjB1j4lAqwxIEEVrO1WpxTb51IEsqEUFrNIHjONx3RS98uas4qHMG52M3ZgzixowJ6gmJroNrxg6wDlCU1LWi1mEytsVPuxNHEu+cjIYvV6B582YYSkogy8kJUdQE4R+OQxKpsXIUBLCEmyAIwh/ilVJoDNbPyIw4BY5XNKN/RhwaW03QOawzDIQOU1d45ZVXhPUcDJ1Oh5kzZyI5ORkxMTGYNGlSm2W7xcXFmDBhAlQqFdLS0vDUU0/BZDKBCD/uhZ01Y1fr4GUXSI8dQ5HfD6qRIwGzGcX33w9jZVUoQiYIv3G0G5gwJBNiERfFaAiC6IqM7JWEbSdrAAA3DMnEwm+P4On/HsCfv/wdl10Q3JdJvz5pj48sADj/3tTyf207WOGL3bt347333sPQoUOdbn/88cfx3Xff4d///jfi4+Mxa9Ys3Hbbbfjll18AAGazGRMmTEBGRga2b9+O8vJyTJs2DVKpFIsXLw44DsJ/eJ4XhF2qg7BzNSnmed4+FRtAxg4Asv72Cs5NnQbjuWIUT5+O3E8/gSSZsiZEZHDM2N00nMqwBEGEnoU3D4LetsFp1jUXQCLmsPdcPcYPzsCj1/YN6px+fdKmz5sX1Mn9oaWlBVOmTMEHH3yAv/71r8LtjY2NWLZsGb744gtce+21AICPPvoIAwYMwM6dO3HppZdiw4YNOHLkCDZt2oT09HQMHz4cixYtwty5c/HCCy9AJpN5elqinWgMZuiM1j9Gdz12rBSrMZjBBlsDXcMkzcxEz48/xrmpU2E4cwbF0/+Enss/hiQxMQSvgCC8kxVvbVzulaLGhSHylyIIgmCYzBZsPlqFK/tZp+1FIg6PXB3ctglH/BJ24dwDO3PmTEyYMAGjR492EnZ79uyB0WjE6NGjhdv69++Pnj17YseOHbj00kuxY8cODBkyRFjgCwDjxo3DjBkzcPjwYVxom9p1xWIwgDfYS4VmjSYMr6xrw7ZOqGRiqGT2P6MUm0lxrW14gvXXSUQc5EFMFMp6ZCP3449w7u6p0J84geL77kPuxx9DHBfX3pdAEF7pmx6LT/40Er1S1IInI0EQRKiQiEV49puD2DTnqtCeN6RnC5AVK1Zg79692L17d5v7KioqIJPJkJCQ4HR7eno6KioqhGMcRR27n93nidr33kfNkiX25zIaPB5LuMddfx3QthTbordbnQT74SjLzUXP5R/j3NRp0B85iuL7H0DPD5dBHBMTbPgE4RfsmzRBEEQ4GNYjAUfON6FHoipk54yasCspKcHs2bOxceNGKBTBebUES/JDDyJp+r3CdVVZGdC/f0Rj6OzYhZ1zudu1FNusC3xwwh3y3r3R88MPUXzPPdAdOIDyZ+ejx5tvtOucBEEQBBFNphbm4q/fHUV5ow6Ds+OhcllZOCAz8OpU1ITdnj17UFVVhYsuuki4zWw246effsLbb7+N9evXw2AwoKGhwSlrV1lZiYwM64aLjIwM7Nq1y+m8bGqWHeMOkUwGOPTfidXqULykbkW1sCfWOWPXphQbxESsJxT5/ZDzwfsounMymtevR8tPPyHmyivbfV6CIAiCiAaPfvk7AOCFbw8Lt3EAeNt/z7w8IeBzRk3YXXfddTh48KDTbdOnT0f//v0xd+5c5OTkQCqVYvPmzZg0aRIA4Pjx4yguLkZhYSEAoLCwEC+99BKqqqqQlmY1+Nu4cSPi4uIwcODAyL6gbgbrsUuJdSnFuuyLZT12sQFOxHpCOWQIkqZNQ91HH6Fi0V/R+9vVEEU440sQBEEQoeDnv1wT8nNGTdjFxsZi8ODBTrep1WokJycLt993332YM2cOkpKSEBcXh0cffRSFhYW41LZiauzYsRg4cCCmTp2KV199FRUVFZg/fz5mzpwJuVze5jmJ0OGpx85xX2yz3hSUh50vUmfNRNP338NYUoLa999H6p//HLJzEwRBEESkCGVvHcOvT9vSRx/1+4Q93nor6GBcef311yESiTBp0iTo9XqMGzcO77zzjnC/WCzGmjVrMGPGDBQWFkKtVuOee+7BwoULQxYD4R67h51zj53jvtjaFoPD1onglhm7Q6RWI/2ZeSj782zUfvAvxE2cCHmvXiE7P0EQBEFEgv/uKfV6/6QRPQI+p1/CThQTG/CJg2HLli1O1xUKBZYsWYIlDhOsruTm5mLt2rVhjqzrcLq6BR/9chaPXH0BshKUQZ+nxkOPHWAtx2rqWlGn0Ye0x86R2DFjoL5yFDQ//YyKhQvR88MPyZKCIAiC6FS86NBbBwAmC49WoxlSsQhKqTh8wi7rZdri0FX44KczWLG7BDFyKZ4eH/wksJCxi3Uj7Bz2xTJhF6oeOwbHcch47jmcuXEitDt2oum7tYi/MfAmU4IgCIKIFgdeGNfmtrM1Gsz/5iAevLJPUOfsMLtiichwptpqxny8oqld5xGGJ9xk7JIdvOxCZXfiDllODlIefggAUPm3V2Bubg75cxAEQRBEJOmVosbc6/u3yeb5S1Cftk3r1qNp3ToYy8+DNxqd7uu9alVQgRCRoajWKuxOVLYEfQ6twQSNwQyg7VQsYBd2tRpD2EqxjKT77kPj/1bDUFSE6jf/iYz5z4bleQiCIAgiUohFHKqa9EE9NuCMXd0nn6L8mWcgSU6G/shRKIcMhSQhAcaSUsSMIk+xjoxGb0KVLdNW1tAqiK5AqWm29tcppCKoXcwUAWeT4hadffNEOBDJZMhY8DwAoP6LL6A/ezYsz0MQBEEQoWbjkUqny4bDFfhs5zk8vnIfRuQGtxc94E/b+i+/RMbChYi/cQIav/4ayfffB1lODqr/+U+YGxqDCoKIDOdqtU7XT1Y248Kegf/hVDtYnbgbWLCXYu3DE7FhytgBgLqwEDFXX42WLVtQ8+67yH711bA9F0EQBEGEigc//c3pOgdrn/plfZIxf8KAoM4Z8KetsbwcqguHWwNQKGDRWEt78TfdhKI77kTG888FFQgRflgZlnGysiUoYefJw46RLGyfcOixC1PGjpHy6Cy0bNmCpjXfIeWhhyDvE1zTKUEQBEFEirNBbJbwRcClWElKCsyN1sycNDMTrfv2AwAMpWXgQxsbEWLO1jgLuxOVwQ0b+BJ2TqXYMPfYMZSDBiFm9HWAxYKaJe/4fgBBEARBdEECFnaqSwvQ/MOPAID4225F5SuvoPhPf0LZnDmIHX1dyAMkQsc5W8YuM966gutEVXADFKzHLjVW5vZ+x6nYcNmduCN11iwAQNP330N34kTYn48gCIIg2sPDn+7Bu1tOt7l96dbTeOTzPUGdM2Bhl7lwoWAxkTRlCjJf+itkvfsg9dFHkblgQVBBEJGhqMbaYzd2YDoAa49dMPgsxcawUqzevnlCHrrNE55Q9O+P2HHjAJ6nrB1BEATR4dlVVIdr+qe2uf3q/FTsOlsX1DkDFnamigpAbJ+EjJ8wARnzn0Xi3VNgqqkJKggiMrAeu9E2YVfeqEOTzujtIW7x3WNn3xdrslgL9OHusWOkzHwE4Dg0r18P3bFjEXlOgiAIgggGjd4EqbitFJOIREKPeqAELOxOjR4Dc11bFWluaMCp0WOCCoIIP45WJ0OzE5ARZy3HngzCz86XsFNIxVA52KBwHKCStrVFCQeKfv0QN/56AED1229H5DkJgiAIIhj6Z8Rizf7yNrd/u/88+qbHBHXOwNMoPG/9pHa9WasFJ3f/QU9EH5atS1RJEa+Som96DCqadDhR2RywV459T6z7HjsASFLLoDW0AgBiZBKIRJHb45oycyaavl+Hlk2b0XroMJSDB0XsuQmCIAjCXx69ti8e/mwPztVpcFmfFADA9lM1WL3/PJZMuSioc/ot7CpffsX6PxyH6jf/CZFCIdzHWyxoPbAfiv7B7x4lwgvzsMtNVgMA+qXH4ueTNUFNxgrrxNxsnWAkx8hRWm8TdhEqwzLkffog7sYb0fTtt6h5+23kLH03os9PEARBEP4wemA63p82Akt+PI3vDx6CQipC/4w4fHZ/AS7tnRzUOf3+xNUdPWr9H56H/sQJcFJ7MzwnlUKR3x/Jf5oeVBBE+GFWJ71SmLCzpngDLcXqjGY02yZdPZViAXufHRB+qxN3pDwyA03ffYeWLVvQeuAAlEOHRjwGgiAIgvDFtf3TcW3/9JCdz+9P3NxPlgMAzs97BunPPgNxTHC1XyI6MKuTPFvGrm96LIDAvexYf51MLEKcl0xckqOwi3DGDgDkvXohfuJENP7vf6hesgQ933sv4jEQBEEQhDf2lzTAwvNtlgX8XlwPsYjD0B4JAZ8z4OGJrJcXC6LOWFEBY0VFwE9KRB5mdZKXogIA9E2z/g6rmvVo1Po/GevYX+dunRgjOSa6GTvAmrWDWAzN1p/QevBgVGIgCIIgCE88/79DKG/Utbm9skmH5/53OKhzBizseIsF1UuW4PjFl+DUtdfh1LXX4fglI1H9zjvgLZaggiDCT5FLxi5WIUV2ghIAcKLK/6ydP/11gHMpNhLmxO6Q5eYi/sYbAQA1by+JSgwEQRAE4YmTVS0YnBXf5vZBWfE4FaTXbMDCrvr1N1D/+RdIe2IOen29Cr2+XoXUxx9D/Wefo/rNfwYVBBFeHK1OmLADIIxSB1KO9WV1wkhS2++PVsYOAFJmPAyIRGjZupWydgRBEESHQiYRodr2uepIVbMO4iDdJAIWdo3ffIPMvy5C4uTJUOTnQ5Gfj6S77kLmooVo/PrroIIgwour1Qmjn63PLpABCibsUn0IO+dSbPi3TnhClpeH+IkTAYC2URAEQRAdilF9U/HqumNOywIaW414dd1xjOrbdiOFPwScSjE3NkLWq1eb22W9esPc2BhUEER4YVYneSlqp9tZn93xCv8zdmUNVguT9HiF1+OSozw84UjKjIfR+O231gnZg4egHDI4qvEQBEEQBAA8e8MA/PG9Hbj8lR8wKCsOAHDkfBNSYuV4/Y7hQZ0z4IydvH9/1H/+RZvb6z//HPL++UEFQYQXZnXiWIYFHDJ2AfTYnam2nqtPqtrrcY5TsbFRLMUCLGtn67VbQr12BEEQRMcgI16BdY+NwrzxA9A3LRZDsuOxYOIgrH/sSmTZ+uADJWBhl/bkE2hYtQqnJ9yI888+i/PPPovTE25E49dfI/2pp4IKgggvrlYnjAtsGbuaFgPqNAa/zuXqh+eJZMceuyhn7AAg+WFbr92WLWg9FNykEUEQBNG5WbJkCfLy8qBQKFBQUIBdu3Z5Pb6hoQEzZ85EZmYm5HI5+vXrh7Vr1wr3v/DCC+A4zunSP8BlDSqZBJfkJeK6AWkY2SsZcUopthyvxsYjlUG9xoA/cdUjR6LP99+j/osvYDhzBgAQO2Y0EiffBWl6WlBBEOHF1eqEoZZL0CNRidL6VpyobPbpct2sM9qHMHwIO6XMui9WazBHdXiCIe/VC3E3TkDT6m9Rs2QJct6lfjuCIIjuxMqVKzFnzhwsXboUBQUFeOONNzBu3DgcP34caWlt9YvBYMCYMWOQlpaG//znP8jOzsa5c+eQkJDgdNygQYOwadMm4bpE4v9nXnGtFg9++huOVzaDA8ADcByZOPPyhMBeJIIQdsbz5yHJzETa44+5vU+alRVwEER4OeshYwdYy7Gl9a046YewYwIxJUaOOIXvgQi2L7YjZOwAIOXhGWha8x1afvyRdsgSBEF0M1577TU88MADmD7duiVr6dKl+O677/Dhhx/i6aefbnP8hx9+iLq6Omzfvh1S27atvLy8NsdJJBJkZGQEFdOL3x5GTpIKXzxwKUb97Qd8M/NyNLQa8dfvjuLZGwYEdc6AS7GnRo+Bua6uze2m+nqcGj0mqCCI8KHRm1DtxuqE0U/YQOF7MvZMjfWY3j6ydYzxgzOQGa/A0Oy2Hj3RQN7bmrUDgHNTpqDsiSfR8vPP4E2mKEdGEARBBIPGYEKzzihc9Caz2+MMBgP27NmD0aNHC7eJRCKMHj0aO3bscPuY1atXo7CwEDNnzkR6ejoGDx6MxYsXw2x2fo6TJ08iKysLvXv3xpQpU1BcXOx3/HuL6zFnTD8kqWUQcRxEIg6X5CVh7rh8vLA6uLahwFMpPA+42TjAa7Xg5N4tMIjI48nqhNEvAC871l/X28fgBOPZCQPxzA0DvG6oiDRpjz8O/fET0B8/jqbvvkPTd99BnJqC+BsnIvGOP0Lm5tsYQRAE0TEZ89ZuiOR2ATT7ur54fEy/NsfV1NTAbDYjPd15J2t6ejqOHTvm9txnzpzBDz/8gClTpmDt2rU4deoUHnnkERiNRixYsAAAUFBQgI8//hj5+fkoLy/Hiy++iFGjRuHQoUOIjY31Gb/ZwgvtSolqGSqbdOiTGoPsRKWQTAkUv4Vd5cuvWP+H41D95j8hUtjtLniLBa0H9kMRYMMgEX48WZ0w+jnsjOV53qsIYxOxvgYnHOlIog4ApJmZ6PXN19AdOoTGb/6Hpu++g7m6BnUffYSGlSvR65uvIevZM9phEgRBEH6w8dFLkJWVLVyXSQIuRHrEYrEgLS0N77//PsRiMUaMGIGysjL8/e9/F4Td+PHjheOHDh2KgoIC5Obm4quvvsJ9993n8znyM2JxpLwJOUkqDM9JwHtbz0AmFuGLXcXomaTy+Xh3+C3sdEePWv+H56E/cQKc1J794aRSKPL7I/lP04MKgggfnqxOGH1SY8BxQL3WiJoWA1K9rArzdyK2o8NxHJRDhkA5ZAjS5/4FLdu2ofrtt6E/chQVL7yAnGXLOpwgJQiCINqilkkQ60fPd0pKCsRiMSornSdNKysrPfbHZWZmQiqVQiwWC7cNGDAAFRUVMBgMkMlkbR6TkJCAfv364dSpU37FP+vavmg1WNuB5ozphz8t343b39uBRJUMb0++0K9zuOK3sMv9ZDkA4Py8Z5D+7DMQx8QE9YREZCnyIeyUMjF6JqlwrlaLk5XNHoUdz/MBl2I7A5xMhthrr4W8Tx+cuelmaLbvQOP//oeEW26JdmgEQRBEiJDJZBgxYgQ2b96MW2zv7xaLBZs3b8asWbPcPubyyy/HF198AYvFApHImgk8ceIEMjMz3Yo6AGhpacHp06cxdepUv+K6qp99u0Reiho/PHE1GrQGxCulQScYAs5ZZr28mERdJ8JeivWc0u2bZi/HeqK6WY8WvQkiDuiZ1HWEHUOWm4uUmTMBAFWv/A0mNwNCBEEQROdlzpw5+OCDD7B8+XIcPXoUM2bMgEajEaZkp02bhnnz5gnHz5gxA3V1dZg9ezZOnDiB7777DosXL8ZM22cFADz55JPYunUrioqKsH37dtx6660Qi8WYPHly0HEmqGTtqhp1DB8KImx4szph9EuPwaajlThR5blR84wtW5eTpAppD0NHInn6vWhauxb6Y8dQ+fIryP77q9EOiSAIgggRd9xxB6qrq/H888+joqICw4cPx7p164SBiuLiYiEzBwA5OTlYv349Hn/8cQwdOhTZ2dmYPXs25s6dKxxTWlqKyZMno7a2Fqmpqbjiiiuwc+dOpKYGt+c1FJCw68L4sjphCKvFvGTsukp/nTc4qRSZixai6I470fTtt4i/6SbEjLoi2mERBEEQIWLWrFkeS69btmxpc1thYSF27tzp8XwrVqwIVWgho2umXggAvq1OGAMyrYuHD59vgtFscXtMdxB2AKAcMgRJU+8GAFS88AIsWm2UIyIIgiAI/yFh14XxZXXC6JsWgziFBFqDGUfLm9wec6baZk6c2vX7K1P//GdIsjJhLCtD9VtvRzscgiAIgvAbEnZdGF9WJwyRiMPFeUkAgN1F9W6PYT12/m6d6MyI1Gpk2jyK6pYvR80HH8Dc7NvAmSAIgiCiDQm7LowvqxNHLs5LBAD8VuRmXZzZgmJb9q+rl2IZMVddhfibbwIsFlT/32s4dfU1qHz17zBWVEQ7NIIgCILwCAm7Low/VieMSxwydjzPO91XWt8Kk4WHQipCRpzC3cO7JJkvvYTMV16GvO8FsGg0qPvwQ5waMxbnn54HY3l5tMMjCIIgiDaQsOuimC08Ttn64vzJ2A3JjodMLEJNi14QhAy2ry4vWQ2RqPtsZOAkEiTccgt6rV6NnPeWQnXJJYDRiMZvvkHJgw+BN7tfNk0QBEEQ0YKEXRdl26ka1GkMiFNIkJ/hexGxQirG0B7xAIDdLuVYtiO2TzcYnHAHx3GIueoq5H76CfJWroAoPh76kyfR+O230Q6NIAiCIJwgYddF+eq3EgDALRdmQyEV+zjaChug+M1lgKK7WJ34g3LYMKQ8cD8AoOafb8FiMEQ5IoIgCIKwQ8KuC1KvMWDjYeui4z9enOP340b2sg5Q7D7nnLEjYedM4pQpkKSlwXj+PBpWrIx2OARBEAQhQMKuC/L172UwmC0YlBWHwdnxfj9uRE9rxu5MtQa1LXrhdlaK7ZVKwg4AREqlsFe2ZulSmFs0UY6IIAiCIKyQsOti8DwvlGHvuMT/bB0AxKukyLetF/vtnLUcq9GbUNGkA9A9POz8JeG2WyHLzYW5rg51nyyPdjgEQRAEAYCEXZfjQGkjjlU0QyYR4eZh2QE/3tXPjq0lS1LLkKCShS7QTg4nlSL1sdkAgLplH8JU797YmSAIgiAiCQm7LsZKW7Zu/OAMr/thPcH87HbZBiiov84zsePGQTFwICwaDWrfez/a4RAEQRAECbuuRKvBjG/3nQcA3BHA0IQjLGN3uKwRWoPJ3l9Hwq4NnEiE1DlzAAD1X3wB43nrz97S2oqWbb+g6h//QNmcJ6DZvj2aYRIEQRDdCEm0AyBCx9qD5WjWm5CTpMSlvZODOkd2ghKZ8QqUN+qwr6RByNj1psEJt6gvvwyqkSOh3bULZU8+BU4iQevvv4M3GoVjmtauRdyNNyL96bmQpKREMVqCIAiiq0MZuy4EK8PePiIn6A0RHMc5+dmdYcKOMnZu4TgOaXMeBwC07t0L7a5d4I1GSDIyEH/rrUi4/XaA49C0Zg1Oj78B9StWgLdYohw1QRAE0VWhjF0X4WyNBrvO1oHjgD+M6NGuc12Sl4hv95/H7qI6nLWtJeuV0j23TviDcvhwpD35BFoPH4bqkkugLiyELC8PHGcV1wl//CMqFiyA7sgRVLzwIhq//gaZf10Eed++UY6cIAiC6GqQsOsiMIuTK/umIitB2a5zXZxrzdj9eqYOBrMFHAfkJqvaHWNXJvn++z3epxwyGHn//gr1n3+B6jffROv+/Tg37R7krfgSstzcCEZJEARBdHWoFNsFMJkt+O+eUgCBe9e5Iz8jFrFyCQxma8kwK17p91oywj2cWIykaVPRe+13UAwaBHN9PUoefIhsUgiCIIiQQsKuC7DnXD2qmvVIVEkxekB6u88nFnEYYZuOBWhwIpRI09ORs/RdSLOyYDh3DqWzHoVFr/f9QIIgCILwAxJ2XYA6jXUR/QVpMZBJQvMrZX52AA1OhBpJaipy3n8PothYtO7Zg/J5z9BABUEQBBESSNh1ATQGMwBAKQtdy+TFufaMHXnYhR75BRegx1v/BKRSNK1di+o33ox2SARBEEQXIKrC7t1338XQoUMRFxeHuLg4FBYW4vvvvxfuv/rqq8FxnNPl4YcfdjpHcXExJkyYAJVKhbS0NDz11FMwmUyRfilRpdVgfb1qWej64IblJEAqtk519kqlidhwoL70UmQuWggAqH3/fdR/9VWUIyIIgiA6O1Gdiu3RowdeeeUV9O3bFzzPY/ny5bj55pvx+++/Y9CgQQCABx54AAsXLhQeo1LZpzPNZjMmTJiAjIwMbN++HeXl5Zg2bRqkUikWL14c8dcTLVjGThXCjJ1CKsafruiFvefqcYlDvx0RWhJuuQXG0jLUvP02Kl5cCHmvXlBdckm0wyIIgiA6KVEVdhMnTnS6/tJLL+Hdd9/Fzp07BWGnUqmQkZHh9vEbNmzAkSNHsGnTJqSnp2P48OFYtGgR5s6dixdeeAEyWfdYWq/VWzN2qhBm7ABg3vgBIT0f4Z6UmY/AUFSEpjVrUDpnDnqvWgVJamq0wyIIgiA6IR2mx85sNmPFihXQaDQoLCwUbv/888+RkpKCwYMHY968edBqtcJ9O3bswJAhQ5Cebp8EHTduHJqamnD48GGPz2UxGGBuabFfNJrwvKgIoWUZOzlZknRGOI5D5sIXIe97AczVNSib8wT4btZOQBAEQYSGqBsUHzx4EIWFhdDpdIiJicHXX3+NgQMHAgDuuusu5ObmIisrCwcOHMDcuXNx/PhxrFq1CgBQUVHhJOoACNcrKio8Pmfte++jZskS4XqF0RDqlxVRWClWHcJSLBFZRCoVst/8J4puvx3a3btR/eabSHviiWiHRRAEQXQyoq4E8vPzsW/fPjQ2NuI///kP7rnnHmzduhUDBw7Egw8+KBw3ZMgQZGZm4rrrrsPp06fRp0+foJ8z+aEHkTT9XuG6qqwM6N+/PS8jqmgN4SnFEpFF3rsXMl/6K8oeexy1H/wLygsvROy110Y7LIIgCKITEfVSrEwmwwUXXIARI0bg5ZdfxrBhw/Dmm+6tHwoKCgAAp06dAgBkZGSgsrLS6Rh23VNfHgCIZDKIY2LsF3XntvPQhmF4gogOcddfj8RpUwEA5+c+DUNxcZQjIgiCIDoTURd2rlgsFug9OPHv27cPAJCZmQkAKCwsxMGDB1FVVSUcs3HjRsTFxQnl3O4Ay9ipqceuS5D+5JNQDh8OS3MzSmc/BotOF+2QCIIgiE5CVIXdvHnz8NNPP6GoqAgHDx7EvHnzsGXLFkyZMgWnT5/GokWLsGfPHhQVFWH16tWYNm0arrzySgwdOhQAMHbsWAwcOBBTp07F/v37sX79esyfPx8zZ86EXC6P5kuLKBq9zaCY9rl2CTiZDNlvvA5xYiL0R4+icvHL0Q6JIAiC6CREVdhVVVVh2rRpyM/Px3XXXYfdu3dj/fr1GDNmDGQyGTZt2oSxY8eif//+eOKJJzBp0iR8++23wuPFYjHWrFkDsViMwsJC3H333Zg2bZqT7113wJ6xo1JsV0GakYGsf/wd4Dg0fPUVmtatj3ZIBEEQRCcgqkpg2bJlHu/LycnB1q1bfZ4jNzcXa9euDWVYnQ57jx1l7LoSMZdfjuT770ftBx+g/PnnoRwyGNLs7GiHRRAEQXRgOlyPHRE4NDzRdUn986NQDhsGS1MTyp58ivztCIIgCK+QsOsCaMK0eYKIPpxUiqz/+wdEMTFo/f13VL/9drRDIgiCIDowJOw6OWYLD73JAoB67Loqsh49kLnI2jda+9770OzcGeWICIIgiI4KCbtODhucAChj15WJGz8eCbf/AeB5nH/qLzDV1sLS2gpTXR2MZWXQnz4No4PtD0EQBNE9oRRPJ4f114k4QC4hnd6VSX/mGWj3/g7D6dM4efkVbe7npFL0XL4cqosujEJ0BEEQREeAlEAnR+uwJ5bjuChHQ4QTkVKJ7Nf+DyKXTSmcTAZOqQRvNOL8U0/B3NwcpQgJgiCIaEMZu06OMDhBWye6BYr8fPT9aSssOh1ECgU4hQKcWAxzczPO3nobjKWlqHhxIbL/8fdoh0oQBEFEAcrYdXLI6qT7IVKrIUlOhkitBie2CnpxbCyy/v4qIBajac0aNK5eHeUoCYIgOh5LlixBXl4eFAoFCgoKsGvXLq/HNzQ0YObMmcjMzIRcLke/fv3aeOcGes5wQ8Kuk8OGJ2hwglBdeCFSZj4CAKh4cSEMJSVRjoggCKLjsHLlSsyZMwcLFizA3r17MWzYMIwbN85p37wjBoMBY8aMQVFREf7zn//g+PHj+OCDD5DtYBQf6DkjAQm7To5jjx1BpDz0EJQjRsCi0aDsySfBG43RDokgCKJD8Nprr+GBBx7A9OnTMXDgQCxduhQqlQoffvih2+M//PBD1NXV4ZtvvsHll1+OvLw8XHXVVRg2bFjQ54wEJOw6OazHTkkZOwIAJxYj+9W/QRQbC93+A6h+551oh0QQBBE2NAYTmnVG4aI3md0eZzAYsGfPHowePVq4TSQSYfTo0dixY4fbx6xevRqFhYWYOXMm0tPTMXjwYCxevBhmsznoc0YCSvN0clqNtowdDU8QNqTZ2chc+CLKHp+D2vfeh7mmBrK8XpDl5ULWsyekPXtCJJdHO0yCIIh2M+at3RDJDwvXZ1/XF4+P6dfmuJqaGpjNZqSnpzvdnp6ejmPHjrk995kzZ/DDDz9gypQpWLt2LU6dOoVHHnkERqMRCxYsCOqckYCEXSdHo6fhCaItcePHo+XnbWhctQoN//6P850ch7gbb0TWKy8LwxcEQRCdkY2PXoKsLHvPmyyEfq4WiwVpaWl4//33IRaLMWLECJSVleHvf/87FixYELLnCTWkBjo5NDxBeCJz0ULEjLoCuhMnYDx3DoaiczCcOweLRoOmb7+FrGdPpD46K9phEgRBBI1aJkGsQurzuJSUFIjFYlRWVjrdXllZiYyMDLePyczMhFQqhdjhC/CAAQNQUVEBg8EQ1DkjAfXYdXIoY0d4ghOLETd+PNJmz0b2a6+h16r/ot9vu5H5yssAgJp33oFm+/YoR0kQBBF+ZDIZRowYgc2bNwu3WSwWbN68GYWFhW4fc/nll+PUqVOwWCzCbSdOnEBmZiZkMllQ54wEJOw6Oa1Ga8ZOTRk7wg84jkPCLbcIe2fLnvoL7ZglCKJbMGfOHHzwwQdYvnw5jh49ihkzZkCj0WD69OkAgGnTpmHevHnC8TNmzEBdXR1mz56NEydO4LvvvsPixYsxc+ZMv88ZDSjN08lhGTuaiiUCIf3ZZ9F64CD0x4/j/BNPoudHH4KT0NsBQRBdlzvuuAPV1dV4/vnnUVFRgeHDh2PdunXC8ENxcTFEInu+KycnB+vXr8fjjz+OoUOHIjs7G7Nnz8bcuXP9Pmc04Hie56P27B2E0tJS5OTkoKSkBD169Ih2OAFx//Ld2HS0Ci/fNgSTR/aMdjhEJ0J/5iyK/vAHWLRaJM94GGmzZ0c7JIIgCL/ozJ/b4YZKsZ0c+0oxytgRgSHv3QsZCxcCAGqXvoeWbb9EOSKCIAiivZCw6+RoaFcs0Q7ib5yAhDvuAHge5596Csby8miHRBAEQbQDEnadHK2ehieI9pH+zDzIBwyAub4eJTMegUWj8Xgsz/No3rQJmigvuSYIgiDcQ8KukyOUYuWUsSOCQySXI+fttyBOTob+2DGUzZ0L3mG8n8HzPKr+8Q+UznoUxffci6a1a6MQLUEQBOENEnadHDIoJkKBNDsbPd56C5xUipZNm1H9xptO9/MWCypefBF1y2yLrXkeZX+Zi5atW6MQLUEQBOEJEnadHA0NTxAhQnXRhch86a8AgNr330fj//4HAOCNRpyf+zQaVqwEOA4ZL7yAuBtvBEwmlP55NrS7d0czbIIgCMIBEnadGJPZAoPJWjJT0/AEEQLib7oJyQ89BAAon/8cNDt3ovSxx9H07beARIKsf/wdiXfegayXFyPm6qvB6/UoeXgGWg8d9nFmgiAIIhKQsOvEaI1m4f9VcsrYEaEhdfafETtmNHijEcX3TkfL5s3gZDL0ePstxE+YAADgpFJkv/E6VJdcAotGg5L774f+1KkoR04QBEGQsOvEaG1bJ8QiDjIx/SqJ0MCJRMj6298gHzAAACBSqZDz/vuIvfpqp+NECgV6vPsOFIMHw9zQgOI/3QdDUVHkAyYIgiAESA10YhwHJziOi3I0RFdCpFKh5/vvIfmhh5D7+WdQX1rg9jhxTAxyPngfsgv6wFRVhaK7p0J37FiEoyUIgiAYJOw6MczqhPrriHAgSU1F2uOPQWHL3Hk8LjERuR9/DHn//jDX1ODctHug3ft7hKIkCIIgHCFh14nR6MnqhOgYSFJSkPvJcigvugiWpiYU/+lPaPl5W7TDIgiC6HaQsOvE2M2JSdgR0UccF4eey/4F9ahR4HU6lDzyCJrWrYt2WARBEN0KquF1YrS0J5boYIiUSuQseRvnn34aTWu/R9mcJ9Dw9deQ9cyFLKcHpD1yIMvpAVleHjipNNrhEgRBdDlIEXRiNLR1guiAcDIZsv7+d4hi49CwciU0W3+C6/ZZWW4uen6yHNL09KjESBAE0VUhYdeJ0dp67Gh4guhocGIxMl5YgPibb4L+xEkYS0tgKCmFsaQE+qIiGM6dQ8mD1olbcUxMtMMlCILoMpAi6MQwg2LK2BEdEY7joLroIqguusjpdkNpGYom3wn98eMoffRR9HzvPXAymdtz8CYTOAm9TREEQfgLDU90YphBMQk7ojMh65GNnKVLwalU0O7YifPz54PneadjzA0NqFi8GMcvvMjt/QRBEIR7SNh1YoQeOzllNIjOhXLQIPR48w1ALEbT6m9R/fobAADeaETdp5/h9LjrUf/Jp+CNRjT+579oWLEiqvESBEF0FkgRdGJaBYNiytgRnY+YUaOQuXAhyp99FrXvvw+LrhWabb/AcOYMAEDety+UIy5Cw4qVqFz8MhRDhkI5eFCUoyYIgujYkLDrxGhswk5JwxNEJyVh0m0wVpSj5q23Uf/JpwAAcWIiUmfPRsIfJgFiMUzVNWjZvBlljz2GXqv+C3FcXJSjJgiC6LhQKbYTY5+KpYwd0XlJeeQRJE6bCk6lQtJ9f0KfDeuReOcd4CQScByHrMUvQdqjB4ylpTj/zDPUb0cQBOEFEnadGPvmCcrYEZ0XjuOQ8cwzyN/zG9Kfegri2Fin+8Xx8ch+/XVwUilaNm1G3fLlwn28wYDmH35E2ZwncGbiTdD+TjtqCYLo3pAi6MRo2fCElDJ2ROeH4ziP9ymHDEba03NRueivqPrH/0GkVkN36DCa162DubFROK7sz7PRa9V/IUlNjUTIBEEQHQ7K2HViNLQrluhGJN51F2LHXw+YTKh47nk0rFwJc2MjxKkpSLpnGuR9L4CpuhplTzwJ3mSKdrgEQRBRgTJ2nRj7VCz9GomuD8dxyFy0CIaiczCWlCB27FjET7wRqpEjwYnF0J85i6I//AHaXbtQ/eabSHviiWiHTBAEEXFIEXRimI+dmjJ2RDdBHBODXv/9DwCAEzkXHOS9eyFz8Uso+//27js8qip94Ph3enrvpBCKQIAAUgMWFDYR2Z8goKAgAQUXDC5FiigggoqCAopIWymrIgiuIggIRsF1RUqQHkILBEgmjTRSJsnM/f0RMhIJYEkySXg/zzPPZu49c+c9nn3Im1PHjSdzxb+wb9cO5wcftEWYQghhMzIUW4eVnzwh252IO4lKrb4hqSvn8tBDuA99CoDkKS9SnJR0QxlFUVAslmqNUQghbEUygjqqxGyh2Fz2y0m2OxHiV74TJ1J05CiFhw5xaew4GrzzDqZTCRQdO0bh0WMUHT+O2smJ4H+twNCkia3DFUKIKiWJXR1VvtUJgIP02AlhpdLrabBwAYmP9sMUH8+5hx++oYzl6lUuDBtOyJrVGBo3tkGUQghRPWQoto4q3+pEq1ah10ozCnE9nZ8fDea/g0qvB50Ou1atcBs0EP/XZhPy6VoMLVpgzsjgQvQwTNeOMBNCiPpAunrqqPxr8+scZBhWiEo5RkTQ9H8/ojIYUOv1Fe4Fr/yQpOFPYzp5kgvR0YSsWYOhUSMbRSqEEFVHunrqKOtWJ3LqhBA3pXF2viGpA9C6uxO8aiWGZs0wp2dwIToa07lEG0QohBBVS7KCOqp8qxN76bET4k/RursTvHoVScOGY0pIICk6GudeD6Hz8UHr44PW2xutjw/60NCbrsIVQojaRhK7Oqp8jp1sTizEn2dN7qKHYTp1iqx/f3RDGbuWLQlaukSOKRNC1AmSFdRR5atiZY6dEH+N1t2dkE8+JnfLFkqSkylNS6MkLY3S9HRKLl6i6Phxzg96gqAVKzA0CrV1uEIIcUs2HV9YsmQJ4eHhuLi44OLiQkREBNu2bbPeLyoqIiYmBk9PT5ycnOjfvz+pqakVnpGUlETv3r1xcHDAx8eHSZMmUXoHnBNZIIsnhKgyGmdn3J94Ap8XXiDgrbcIWbWKxlu20GjzV+hCgim5fJkLTz5JwS+/2DpUIYS4JZsmdoGBgbz55pvExcVx4MABHnzwQfr06cPx48cBGD9+PJs3b2bDhg3s3r2b5ORk+vXrZ/282Wymd+/eFBcX89NPP7FmzRpWr17NjBkzbFWlGlM+x85BFk8IUW30wcE0XLsWu9atMWdnkzRsOHnffWfrsIQQ4qZUiqIotg7ieh4eHsybN48BAwbg7e3N2rVrGTBgAAAnT56kRYsW7Nmzhy5durBt2zb+/ve/k5ycjK+vLwBLly5lypQppKeno69kNVxlLl26RFBQEBcvXiQwMLDa6laVFn9/hnnfJPB4h0DmDmhj63CEqNcsBQVcGj+e/N0/gFqN5zPPgEZNaUoKJckplBiNWPLzcevfD6+YGNR2drYOWYh6rS7+3q4ptWapl9lsZt26deTn5xMREUFcXBwlJSX07NnTWqZ58+YEBwezZ88eAPbs2UPr1q2tSR1AVFQUubm51l6/yliKizFfvfrrKz+/+ipWTcoXT8ipE0JUP7WDA0GLF+Pavx9YLGSuWEHm0mXkbPqKgv37Kbl4EfOVK2Su+BeJffqSv2+frUMWQtyhbJ7YHT16FCcnJwwGA6NGjeKLL74gLCwMo9GIXq/Hzc2tQnlfX1+MRiMARqOxQlJXfr/83s1kLlvOqQ4dra/Kjhyq7WSDYiFqlkqrxf+11/CdNg2nnj1wf/IJvF+YQMC8eYR88jENFi5A6+ND8YULJA2NJuWVmZjz8mwdthDiOosXL6Zhw4bY2dnRuXNn9t3ij7DVq1ejUqkqvOx+0xs/bNiwG8o89NBD1V2NW7J5d0+zZs04dOgQOTk5bNy4kejoaHbv3l2t3+n5j2fxGD7M+t7h8mVo3rxav7OqyQbFQtQ8lUqFx5DBeAwZXOl9x27dSJv3NtmffUb2+vVc/f57fF+ainNkpOyFJ4SNrV+/ngkTJrB06VI6d+7MwoULiYqKIiEhAR8fn0o/4+LiQkJCgvW9SqW6ocxDDz3EqlWrrO8NBkPVB/8H2PxfGr1eT5MmTWjfvj1z5syhTZs2vPvuu/j5+VFcXEx2dnaF8qmpqfj5+QHg5+d3wyrZ8vflZSqj1uvRODn9+nJ0rNpK1QDrBsU66bETorbQODvjP+tVgv+9Bn1ICKVpaVweN57Efv3J3bmTWjalWYg7yvz58xk5ciTDhw8nLCyMpUuX4uDgwMqVK2/6GZVKhZ+fn/X121FCKEvkri/j7u5endW4LZsndr9lsVgwmUy0b98enU5HbGys9V5CQgJJSUlEREQAEBERwdGjR0lLS7OW2blzJy4uLoSFhdV47DWpwNpjJ4mdELWNY6dOhG76smwhhaMjppMnufz8P0ns15+82FhJ8ISoIvnFpeQVlVhfplJzpeWKi4uJi4urMG9frVbTs2dP67z9yly9epWQkBCCgoIq7NpxvV27duHj40OzZs0YPXo0mZmZf71if4FNx/GmTp1Kr169CA4OJi8vj7Vr17Jr1y6++eYbXF1deeaZZ5gwYQIeHh64uLjw/PPPExERQZcuXQCIjIwkLCyMp556irlz52I0Gpk2bRoxMTE27wqtbvkmWTwhRG2mtrPD+/kxeDw1hMzVq8n690eY4uO5FDMGu/Bwgj5YjNbLy9ZhClGn/W3RftSGX5OtsT2aMv5vd91QLiMjA7PZXOm8/JMnT1b67GbNmrFy5UrCw8PJycnh7bffpmvXrhw/fty6Evehhx6iX79+hIaGcvbsWV566SV69erFnj170Ghs0/Fi06wgLS2NoUOHkpKSgqurK+Hh4XzzzTf87W9/A2DBggWo1Wr69++PyWQiKiqKDz74wPp5jUbDli1bGD16NBERETg6OhIdHc2sWbNsVaUaU1giPXZC1AUaNzd8xo3DIzqaK6tWc+Xjjyk6coRLY8cRsmolqltsy1R46BBoNNi1alXp3B4h7nQ7n+9IQEAD63u9tuoGIiMiIqwjhABdu3alRYsWLFu2jNmzZwMwaNAg6/3WrVsTHh5O48aN2bVrFz169KiyWP4ImyZ2H3744S3v29nZsXjxYhYvXnzTMiEhIWzdurWqQ6v1ynvs7HXSYydEXaB1d8dnwnhc+/bh/OMDKYyLw/j6G/i/OrPS8lc++pjU118HQN+kMW4DBuDapw/a38zfKUlLozAuDtPp07g+8gj6hg2ruSZC1B6Oei3OdrrblvPy8kKj0VQ6L/9Wc/Kvp9PpaNeuHWfOnLlpmUaNGuHl5cWZM2dsltjVujl24veROXZC1E2GRo0IeHseqFRkr19P1qef3lAmY/kKa1KHTkfxmbOkvfkWp++7n0vjxnNl7VqSX3qZM1FRnLnvfi6Pn0DGB0u4NH4CisVSwzUSovbT6/W0b9++wrx9i8VCbGxshV65WzGbzRw9ehR/f/+blrl06RKZmZm3LFPdJLGro8oTO5ljJ0Td49y9O97jxwNgfP0N64bGiqKQ9u67pM+fD4DXc89x10//w2/mK9i1bAklJeRt307qrNnk/Oc/lFxIApUKQ4sWqB0cMMXHk7tli83qJURtNmHCBFasWMGaNWuIj49n9OjR5OfnM3z4cACGDh3K1KlTreVnzZrFjh07OHfuHAcPHmTIkCFcuHCBESNGAGULKyZNmsTPP//M+fPniY2NpU+fPjRp0oSoqCib1BFqwT524s/59eQJ6bEToi7yHDkC08mT5G7dyuWx42i4YQNZH33ElTVrAPB+YQJeI0cC4D5oEO6DBlEUH0/2xs8pTjyHXctWOHRoj327dmhcXMhYtpz0BQtIX/guzlFRqOv5AjIh/qiBAweSnp7OjBkzMBqNtG3blu3bt1sXVCQlJaG+br/JrKwsRo4cidFoxN3dnfbt2/PTTz9Zd93QaDQcOXKENWvWkJ2dTUBAAJGRkcyePdumCzhr3VmxtlDXzpwrLrVw17RtAByeEYmrw+3nFwghah9LYSEXBg+h6MQJ1E5OWK5eBcB32rSbboJ8q2edfagXpamp+EyejOfTw6sjZCFqhbr2e7smyVBsHVR+6gSAvfTYCVFnqe3tCXx/ERpPz7KkTqXC//XX/nBSV/4s738+D0DGsmWYc3KqOlwhRB0giV0dVH7qhE6jqtKl3UKImqcLCCBoyQc4dutGg4ULcevf/08/y7VvXwxNm2DJySFj+fIqjFIIUVdIVlAH/Tq/TqZIClEf2IeHE/zhv3CJivxLz1FpNHi/8AIAWR99TElyclWEJ4SoQySxq4OsW53IMKwQ4jec7r8fh06dUIqLSX/3PVuHI4SoYZLY1UH5prLETubXCSF+S6VS4TNpIgA5X31F0U2OSxJC1E8yllcHlQ/FOhqk+YQQN7Jv3RqXh3uRu3UbF0eNRufnh2I2o5hLodSM2skJj+honCP/JkeVCVHPSGZQB/26ObH02AkhKuc9bhx538ZSajRSajTecP/ywYM4dOiAz4svYt+qpQ0iFEJUB0ns6iBZPCGEuB19cDANN26gOPE8Kq0GNBpUGi0qrYb8ffu4snIVBQcOcP6xx3Dt0wfv8ePR+frYOmwhxF8kmUEdVD7HTnrshBC3YnfXXdjdddcN1x0jInB/7DHSFiwkd/Nmcr78ktxvvsHp3nuxa9EcQ/Pm2LVogdbXV4ZqhahjJLGrg6xz7KTHTgjxJ+kCAmgwby4eQwaT+uZbFP7yC3k7dpC3Y4e1jMbdHbvw1jhGRODUrRv6Jk0k0ROilpPMoA4qn2Mnq2KFEH+VfZs2hKz9hMIDByg8eoyik/GY4k9iOncOc1YW+bt/IH/3D6QBWh8fHCMisG/XDqW0FMvVPMx5eVjyrqKYTLj2eQTHrl1tXSUh7miS2NVB1n3sDJLYCSH+OpVKhUPHjjh07Gi9ZjGZMJ06TcGBA+T/738U7N9PaVoaOZs2kbNpU6XPyfn6awIXLsC5Z8+bfpfp3Dlyt3yN/d1349ipIyq9vsrrI8SdTBK7OijfJIsnhBDVS20wYN+6FfatW+E5fBgWk4nCgwfJ/9//KDp1CrW9A2pnJzSOTqidnSmKj+dqbCyXxk8gcNF7OHfvfsMz8777nuSJE7EUFJR9h5MTTvfdh3PPHjjedx8aJ6carqUQ9Y9kBnVQQYmcPCGEqFlqgwHHiAgcIyIqva+UlnJ54iTytm/n8j/HEvjBBzjd063snqKQuXwF6QsXgqJgaNaM0iuZmNMzyN26ldytW0Gnw2v0KLyfe64GayVE/SMnT9RBBdJjJ4SoZVRaLQ3mzcWpZw+U4mIuxcSQ//NeLIWFJL8wkfQFC0BRcH/yCUI3bqDp7t00XL8Oz5Ej0TdqBCUlZLy3iIL9+21dFSHqNEnsarE52+KZsvEIZotS4Xp++QbFMsdOCFGLqHQ6AufPx+n++1FMJi6OHs35QU+U9chptfjNfAW/GTNQ6XSo1Grs27TB54UJNN76NW6PDQAgZcYrWEwmG9dEiLpLErta6lz6VZbtPsf6Axc5dDGrwr3C8sUT0mMnhKhlVHo9Dd57F8du3VAKCzElJKBxcyN45Ye4Dxp008/5TJyIxsuL4sREMpctq8GIhahfJLGrpbYd+/UIoF0J6RXu5V/bx062OxFC1EZqg4HA9xfh8vDDOHTpQsONG3Ds1OmWn9G4uuI37WUAMlb8C9Pp0zURqhD1jiR2tdS2YynWn79PSKtwr8AkPXZCiNpNbW9Pg/nvELJ6FfrAwN/1GeeoKJweeABKSkiZPgPFYqm0nKIolV4XQkhiVyslZRZw7HIu6msbvB+7nEtaXpH1vvWsWJljJ4SoR1QqFX4zpqN2cKDw0CGyPv20wv3CQ4e4+FwMJ1uHc7bXwyS/OJWsdesoio9HKS21UdRC1C7S5VMLlffWRTT2JLewlKOXc/jhVAYD2geiKIp1g2I5K1YIUd/o/P3xfmECqbNfI33+Apx79KA4MZGMZcsp+Plna7nixESKExPJ+fJLAFT29rgPGoTPpImo1NJnIe5cktjVQluPliV2vVr5k5pbxNHLOexKSGNA+0CKzRZKr62Sle1OhBD1kfsTT5C7eQuFhw5x7v8ewZKXV3ZDq8X1kUdwf/JJzJkZFB4+TOGhwxQeOYLl6lWurFoFioLPlMlypq24Y0lmUMtcyirg8KUcVCqIaulH0pV8Fn13hv+ezqDUbLGuiAXpsRNC1E8qtRr/2bM4168/lrw8VAYDbo89hufTw9EFBFjLOd1/PwCKxUL2559jnD6DK6tXo/HwwOvZkbYKXwibksSultl+bTVsp4YeeDsb8HDU42qvI6ewhMOXsvFztQdAr1Gj08hwgxCifjI0bUrQ+4swnT6N66OPovX0vGlZlVqN+2OPYbmaT9pbb5E+fz4aV1fcBz5+Q1lLURGmU6cwNG2K2t7+ljGYc3PLVueqVGXDu2o1qDWo9DoMjRuj0sgf16L2kcSulikfhn24tT8AGrWKe5t6seVICrsS0nmkTdlfq7JwQghR3zndf7+1V+738Bw+DHNWFpnLl2OcORONqysuD0UBUJyURNa69eR8/jnmnBw0bm64PTEIj8GD0Xp5VXiOKTGRrI8+JvvLL1GunWv7W26DBuI/c+afrpsQ1UUSu1okJaeQg0nZADzUys96vXszH2ti16OFLyBbnQghRGW8x4/DnJ1N9mefcXnSJEqSk8nfs4f8//7XWkal12POziZzyVKufLgSl0f+D89hwyjNyODK6jVc3b0brm2povXzQ2XQg0UBsxlFUSg1Gsletx6n++7H+cEHbFVVISol2UEtUj4M2yHEHV8XO+v1++/yBuDo5RySrpT99SibEwshxI1UKhV+r8zAnJND3jffkDZ3rvWe47334v7kEzh160be97u4snIlhYcPk7Pxc3I2fl7hOU7du+MxLBqHzp1vWIiROnceV1auJGX6dOzbbLrlMLEQNU0Su2pWarag/Z1z4bYdLUvsel0bhi3n7WygdQNXjl7OYdu1oVpHSeyEEKJSKo2GgHlzuVxaSuGhQ2UraZ8YhD442FrGJSoSl6hICg7+wpVVq8j79ltUdna4Pfoo7k8NwRAaetPne48bS/6PP2I6dYqU6TMIXPz+DcmfpagI46zZFMbFEfj+IgxNm1ZbfYW4niR21eRSVgEvfXGMS1kFxE64/7ZL79Nyi9h/4QoAva4bhi3XvZk3Ry/nWE+hkK1OhBDi5tR6PUGL379tOYe72+FwdzvM2dmodDrUjo6/69kB8+ZyfsBjXP3uO3I+/xy3AQOs90vS0rg05nmKjhwBIOXVVwn56CPZgkXUCFlWWU08HQ3sS8zkXHo+8Sl5ty2//bgRRYF2wW4EuN24Uqt7s7Lh2KKSsiN2ZKsTIYSoOho3t9+V1JWza9YM73HjADC+MYfipCQAiuLjOf/4QIqOHEHj6orKzo7CA3Hkfr21OsIW4gaS2FUTe72Ge5uWJWM7ThhvW966GraVf6X32wa542qvs753MEiPnRBC2JLHsGgcOnZEKSggefIUcnfs4PzgIZQajegbNaLhZ+vxGvUPANLmzsWSn2/jiMWdQBK7ahQZVraCdcfx1FuWS88zsS+xbBj2oUqGYeHXbU/KyRw7IYSwLZVGQ8Cbc1A7OVF46BCX/zkWpaAAx65dabjuU/QhIXgMH44uKIjStDQyli61dcjiDiCJXTXq0cIXtQpOpORy8UrleyEBfH0kGYsCrRu4EuThcNNy3Zv5WH+WVbFCCGF7ugYN8Js+zfre/cknCFq+DI2LCwBqgwHfqVMByFy9BlNiok3iFHcOSeyqkYejno4NPQDYeaLyXjtFUVh/4BIA/e9ucMvnlW97ArKPnRBC1BYujzyC/5w5NHj3XfxmzEClrfjvs9MD3XG8714oKSH1jTko1/bIE6I6SGJXzSJblg2t3mye3bHLucSn5KLXqunb7taJnbezgVYNyv4KlB47IYSoHVQqFW6P9sUlKvKm932nTgWdjvz//per339fwxGKO4kkdtWsfJ7dvsQrZOUX33B//YGylVRRLf1wc9Df9nkj7mlEsIcD9zX1vm1ZIYQQtYMhNBTPYdEApL4xB4vJdNvPFF+4QM6WrylJSanu8EQ9IoldNQvycKCFvwsWBWJPplW4V1RiZtOhZAAGdgj6Xc/r264BP0x+gNaBrlUeqxBCiOrjNWoUWh8fSi5d4vK48RTFx1darvTKFYyzX+Ns77+TPHEiZx54kPMDB5G5ajUlycm/+/uyNmwgceBAcr76SoZ/7yCS2NWAX1fHVhyO3XYshbyiUgLd7enaWI6kEUKI+kzt6IjvtJdBpeLq99+T+Gg/kp4ZQf5PP6EoCpaiIjKWr+BsZBRZn3wCpaXoQ0NBpaLw8GHS3nqLMw/2IPHxgeTu3HnL78pYthzj9BkUHT5C8uQpXHzmGYovXKihmgpbksSuBkS2LEvsfjidTmGx2Xp9/f6LADzWPgi1WnYkF0KI+s4lMpKGGzfg8vDDoFaT/7//kfT0MyT278/ZXg+TPn8+lqtXMYS1IHj1Khpv20qTXbvwnT4Nh44dQaWi6MgRLj//T1Kmz8BSUHHHBUVRSHvnHdIXLADAqUcPVAYD+T/t4dwjfchYugyl+MZpQaL+kMSuBoT5uxDobk9RiYX/nk4H4EJmPj+fu4JKBQM6BNo4QiGEEDXFvmVLGsx/h8Y7vsF9yBBU9vaYTsRTmpKC1t+fgLlvEbpxI45dugCg8/XBY/BgQj76N01/2I3niGdApSJ7wwYS+w+g6MQJABSLBeOsWWSu+BcAPpMnE7T4fRp9tQnHrhEoJhPpCxeS2L8/hUeP2az+onpJYlcDVCoVkWHlq2PLtj3ZcG2Lk3ubetOgkiPEhBBC1G/6wED8pr1Mk+9i8Zn4Ar4vTaXxtq24PvIIKnXlv5613t74TJxI8KpVaH19KU5MJHHgIDJXriL5xRfJ/nQdqFT4zXoVz6eHl31PSAhBH35IwLy5aDw8MJ0+Q9Lw4daE8E6yePFiGjZsiJ2dHZ07d2bfvn03Lbt69WpUKlWFl52dXYUyiqIwY8YM/P39sbe3p2fPnpw+fbq6q3FLktjVkPLh2Nj4VEylZjbGlSV2v3fRhBBCiPpJ6+6O54gReAwdivo3icPNOHbpTOiXX+DUsweUlJA2dy65X20GrZaAt+fh/vjjFcqrVCpc/+//aLz1axw6dMBy9SpJI0becsPknK+/5kL0MDKWLqXk8uW/VMfaYP369UyYMIFXXnmFgwcP0qZNG6KiokhLS7vpZ1xcXEhJSbG+LvxmnuLcuXN57733WLp0KXv37sXR0ZGoqCiKioqquzo3JYldDekQ4o67g46sghLm7zyFMbcIdwcdPcN8bv9hIYQQ4je07u4ELlqE36uvorKzQ6XXE7joPVx7977pZzRubgQu+QBDWAvMV65w8ZkRlBgrLuyzmEykzJxJ8gsTKdi7l/SF73KmR08uDI0m+/PPMV+9Wt1Vqxbz589n5MiRDB8+nLCwMJYuXYqDgwMrV6686WdUKhV+fn7Wl6+vr/WeoigsXLiQadOm0adPH8LDw/n3v/9NcnIyX375ZQ3UqHKS2NUQrUZNjxZl/4dY/sM5AB5tF4hBKxsNCyGE+HNUKhXuAx+nybc7abxzB84PPHDbz2icnQlesQJ9SAglyckkjRhBaVYWAMUXL3LhiSfJXrceVCrcBg3EoUsXUKko2LePlJencbrbPVwcNZrMD1dSePQYSmlpdVfzpvKLS8krKrG+TKXmSssVFxcTFxdHz549rdfUajU9e/Zkz549N33+1atXCQkJISgoiD59+nD8+HHrvcTERIxGY4Vnurq60rlz51s+s7rJuVQ1KDLMl41xlyjfTmhgRxmGFUII8ddpvbz+WHlPT4JXfsj5JwdTfOYsF/8xCo/ooRhnvoolLw+NmxsB8+bidO+9AJQkJ5OzeQs5mzZRfO4cV3ft4uquXUDZNi727e/GLiwMjbMzagcH1A4OqK79rz4oCH1wcFVXGYC/LdqP2vBrsjW2R1PG/+2uG8plZGRgNpsr9LgB+Pr6cvLkyUqf3axZM1auXEl4eDg5OTm8/fbbdO3alePHjxMYGIjxWk9nZc80Gis/baomSGJXg+5t6o2dTk1RiYU2QW4083O2dUhCCCHuULoGDQj+8F9cGDyEoiNHSH5hIgD2bdvSYMF8dP7+v5YNCMDrH8/i+exITPHx5P+8l4L9+yk4cABLXh75P/yX/B/+W+n3eAwbhu+LU6qlDjuf70hAwK/Hceq1VTcQGRERQUREhPV9165dadGiBcuWLWP27NlV9j1VTRK7GmSv1xDV0o9Nh5J5qkuIrcMRQghxhzM0aULQiuVcGDYcpaAAj+hofF6YgEpf+RGXKpUKu7Aw7MLC8Hx6OIrZjCkhgYL9+zGdP49SUIiloKDCSxfgX+mzqoKjXouzne625by8vNBoNKSmpla4npqaip+f3+/6Lp1OR7t27Thz5gyA9XOpqan4X5cEp6am0rZt299Zg6oniV0Ne61vK57oFEznUA9bhyKEEEJgHx5Oo682Yc7Owb5Vyz/0WZVGY030ajO9Xk/79u2JjY2lb9++AFgsFmJjYxkzZszveobZbObo0aM8/PDDAISGhuLn50dsbKw1kcvNzWXv3r2MHj26Oqrxu0hiV8Oc7XR0aSTHhwkhhKg99IGBEFi/N8ufMGEC0dHRdOjQgU6dOrFw4ULy8/MZPrxsv7+hQ4fSoEED5syZA8CsWbPo0qULTZo0ITs7m3nz5nHhwgVGjBgBlPVejhs3jtdee42mTZsSGhrK9OnTCQgIsCaPtiCJnRBCCCHqvYEDB5Kens6MGTMwGo20bduW7du3Wxc/JCUlob5uY+isrCxGjhyJ0WjE3d2d9u3b89NPPxF2Xe/k5MmTyc/P59lnnyU7O5t77rmH7du337CRcU1SKUr5Gs0716VLlwgKCuLixYsE1vO/WIQQQoi6Tn5v35xN97GbM2cOHTt2xNnZGR8fH/r27UtCQkKFMt27d7/hSI9Ro0ZVKJOUlETv3r1xcHDAx8eHSZMmUWrDfXWEEEIIIWzBpkOxu3fvJiYmho4dO1JaWspLL71EZGQkJ06cwNHR0Vpu5MiRzJo1y/rewcHB+rPZbKZ37974+fnx008/kZKSwtChQ9HpdLzxxhs1Wh8hhBBCCFuyaWK3ffv2Cu9Xr16Nj48PcXFx3HfffdbrDg4ON12OvGPHDk6cOMG3336Lr68vbdu2Zfbs2UyZMoWZM2eir2TJtqW4GKW42PrenJ9fRTUSQgghhLCdWnWkWE5ODgAeHhW3Avnkk0/w8vKiVatWTJ06lYKCAuu9PXv20Lp16wo7P0dFRZGbm1vh6I/rZS5bzqkOHa2vc9eWLgshhBBC1GW1ZlWsxWJh3LhxdOvWjVatWlmvP/nkk4SEhBAQEMCRI0eYMmUKCQkJ/Oc//wHAaDRWepxH+b3KeP7jWTyGD7O+d7h8GZo3r+IaCSGEEELUrFqT2MXExHDs2DF+/PHHCtefffZZ68+tW7fG39+fHj16cPbsWRo3bvynvkut18N1Q7Sa6+bzCSGEEELUVbViKHbMmDFs2bKF77///rbLljt37gxQ4UiPyo4IKb8nhBBCCHGnsGlipygKY8aM4YsvvuC7774jNDT0tp85dOgQgPVctoiICI4ePUpaWpq1zM6dO3FxcamwiaAQQgghRH1n06HYmJgY1q5dy6ZNm3B2drbOiXN1dcXe3p6zZ8+ydu1aHn74YTw9PTly5Ajjx4/nvvvuIzw8HIDIyEjCwsJ46qmnmDt3LkajkWnTphETE4PBYLBl9YQQQgghapRNe+yWLFlCTk4O3bt3x9/f3/pav349UHZo77fffktkZCTNmzfnhRdeoH///mzevNn6DI1Gw5YtW9BoNERERDBkyBCGDh1aYd87IYQQQog7gU177G53mllQUBC7d+++7XNCQkLYunVrVYUlhBBCCFEn1YrFE0IIIYQQ4q+TxE4IIYQQop6oNfvY2ZLFYgEgJSXFxpEIIYQQ4nbKf1+X//4Wv5LEjl/3vevUqZONIxFCCCHE75WamkpwcLCtw6hVVMrtVjDcAUpLS/nll1/w9fVFra660em8vDzCwsI4ceIEzs7OVfZcUfWkreoOaau6Q9qq7qhrbWWxWEhNTaVdu3ZotdJHdT1J7KpRbm4urq6u5OTk4OLiYutwxC1IW9Ud0lZ1h7RV3SFtVX/I4gkhhBBCiHpCEjshhBBCiHpCErtqZDAYeOWVV+RoszpA2qrukLaqO6St6g5pq/pD5tgJIYQQQtQT0mMnhBBCCFFPSGInhBBCCFFPSGInhBBCCFFPSGInhBBCCFFPSGJXjRYvXkzDhg2xs7Ojc+fO7Nu3z9Yh3dHmzJlDx44dcXZ2xsfHh759+5KQkFChTFFRETExMXh6euLk5ET//v2tR84J23nzzTdRqVSMGzfOek3aqva4fPkyQ4YMwdPTE3t7e1q3bs2BAwes9xVFYcaMGfj7+2Nvb0/Pnj05ffq0DSO+M5nNZqZPn05oaCj29vY0btyY2bNnc/0aSmmruk8Su2qyfv16JkyYwCuvvMLBgwdp06YNUVFRpKWl2Tq0O9bu3buJiYnh559/ZufOnZSUlBAZGUl+fr61zPjx49m8eTMbNmxg9+7dJCcn069fPxtGLfbv38+yZcsIDw+vcF3aqnbIysqiW7du6HQ6tm3bxokTJ3jnnXdwd3e3lpk7dy7vvfceS5cuZe/evTg6OhIVFUVRUZENI7/zvPXWWyxZsoT333+f+Ph43nrrLebOncuiRYusZaSt6gFFVItOnTopMTEx1vdms1kJCAhQ5syZY8OoxPXS0tIUQNm9e7eiKIqSnZ2t6HQ6ZcOGDdYy8fHxCqDs2bPHVmHe0fLy8pSmTZsqO3fuVO6//35l7NixiqJIW9UmU6ZMUe65556b3rdYLIqfn58yb94867Xs7GzFYDAon376aU2EKK7p3bu38vTTT1e41q9fP2Xw4MGKokhb1RfSY1cNiouLiYuLo2fPntZrarWanj17smfPHhtGJq6Xk5MDgIeHBwBxcXGUlJRUaLfmzZsTHBws7WYjMTEx9O7du0KbgLRVbfLVV1/RoUMHHnvsMXx8fGjXrh0rVqyw3k9MTMRoNFZoK1dXVzp37ixtVcO6du1KbGwsp06dAuDw4cP8+OOP9OrVC5C2qi+0tg6gPsrIyMBsNuPr61vhuq+vLydPnrRRVOJ6FouFcePG0a1bN1q1agWA0WhEr9fj5uZWoayvry9Go9EGUd7Z1q1bx8GDB9m/f/8N96Stao9z586xZMkSJkyYwEsvvcT+/fv55z//iV6vJzo62toelf17KG1Vs1588UVyc3Np3rw5Go0Gs9nM66+/zuDBgwGkreoJSezEHSkmJoZjx47x448/2joUUYmLFy8yduxYdu7ciZ2dna3DEbdgsVjo0KEDb7zxBgDt2rXj2LFjLF26lOjoaBtHJ6732Wef8cknn7B27VpatmzJoUOHGDduHAEBAdJW9YgMxVYDLy8vNBrNDSv0UlNT8fPzs1FUotyYMWPYsmUL33//PYGBgdbrfn5+FBcXk52dXaG8tFvNi4uLIy0tjbvvvhutVotWq2X37t289957aLVafH19pa1qCX9/f8LCwipca9GiBUlJSQDW9pB/D21v0qRJvPjiiwwaNIjWrVvz1FNPMX78eObMmQNIW9UXkthVA71eT/v27YmNjbVes1gsxMbGEhERYcPI7myKojBmzBi++OILvvvuO0JDQyvcb9++PTqdrkK7JSQkkJSUJO1Ww3r06MHRo0c5dOiQ9dWhQwcGDx5s/Vnaqnbo1q3bDdsGnTp1ipCQEABCQ0Px8/Or0Fa5ubns3btX2qqGFRQUoFZX/LWv0WiwWCyAtFW9YevVG/XVunXrFIPBoKxevVo5ceKE8uyzzypubm6K0Wi0dWh3rNGjRyuurq7Krl27lJSUFOuroKDAWmbUqFFKcHCw8t133ykHDhxQIiIilIiICBtGLcpdvypWUaStaot9+/YpWq1Wef3115XTp08rn3zyieLg4KB8/PHH1jJvvvmm4ubmpmzatEk5cuSI0qdPHyU0NFQpLCy0YeR3nujoaKVBgwbKli1blMTEROU///mP4uXlpUyePNlaRtqq7pPErhotWrRICQ4OVvR6vdKpUyfl559/tnVIdzSg0teqVausZQoLC5XnnntOcXd3VxwcHJRHH31USUlJsV3Qwuq3iZ20Ve2xefNmpVWrVorBYFCaN2+uLF++vMJ9i8WiTJ8+XfH19VUMBoPSo0cPJSEhwUbR3rlyc3OVsWPHKsHBwYqdnZ3SqFEj5eWXX1ZMJpO1jLRV3adSlOu2nBZCCCGEEHWWzLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQgghhKgnJLETQojr5O/dR3zzFphzc20dihBC/GGS2AkhhBBC1BOS2AkhhBBC1BOS2AkhahXFYiFj2XLO9OjJyTZtOdenL7nbvwF+HSbN27WLc4/04WR4GxIHDqTo1KkKz8j9Zgdn//53TrYO58yDPchcuarCfUtxMWlvv83p7g+UlYmMInvjxgplio4fJ7H/AE62bcf5QU9gOpdYvRUXQogqoLV1AEIIcb3M5cvJ+WozfjNnom8YQsH+AyRPnozGw91aJm3e2/i+NBWtlzfpCxZwafRzNN6+DZVOR+Gx41wePx6vMTG49OpF4S+HMM6ahcbNDbd+jwKQPGUKhYcO4/vyS9g1b07JpUuYs7IqxJG2cCE+Uyaj9fAgZeZMUl5+mYafrq3R/xZCCPFHSWInhKg1LMXFZCxbTvDKD3Fo1w4AfVAQBQfjyF7/GW6PPw6Ad8xzOHXrBkDAm3M43f0B8r79FpdevbiyejWOXbrg/dxzABhCQzGdPUPmyg9x6/copsRE8rZtJ3jlhzh27Wr9jt/yGTcOx06dAPAaOZKL/xiFxWRCbTBU+38HIYT4sySxE0LUGiUXLqAUFpL0zIgK15WSEuxatLC+t2/b1vqzxs0NfWgoprPnADCdO4vzgz0qfN7h7ru58u+PUMxmTCdPgkaDQ8eOt4zF0KyZ9WettzcA5sxM1AEBf6puQghREySxE0LUGpaCAgCCli5B5+tb4Z5Kr6c46eJf/g6Vwe73ldNe98+jSgWAYlH+8vcLIUR1ksUTQohaQ9+4CSq9ntKUFPQhIRVeOn9/a7nCw4etP5tzcig+fx5D40YAGBo1pvDgwQrPLTh4EEPDEFQaDYa77gKLhYL9+2umUkIIUYOkx04IUWtonBzxeHo4qXPeRLEoOLS/G3NeHoUHf0Ht5ITu2jBoxgcfoHFzQ+PpSfrCd9G4u+Hco2z41WP4MM4/9jjpH3xQtnji0GGyPlmL34wZAOgDG+Daty/JL0/D7+WXMDRvTsnlZMxXMnHp1ctmdRdCiKogiZ0QolbxHjsWrYcHmcuXk3LpEhpnZ+zCwvD6x7PWoVDvCRNIfeMNis9fwNCiBUFLlqDS6wGwb9mSBgsWkL7oPTKWLEXr7YX3889bV8QC+M18hfT5CzC+OgtzdjbaAH+8nv2HTeorhBBVSaUoikwaEULUCfl795EUHc1d+/aicXGxdThCCFHryBw7IYQQQoh6QhI7IYQQQoh6QoZihRBCCCHqCemxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJySxE0IIIYSoJ/4f8sPoRjMSO64AAAAASUVORK5CYII=",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/sybqacL5p1qeEO8d4xRZNg/model-IMDB%20dataset%20small2-acc')\n",
+ "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/eOt6woGoaOB565T0RLH5WA/model-IMDB%20dataset%20small2-loss')\n",
+ "acc_epoch = pickle.load(acc_urlopened)\n",
+ "cum_loss_list = pickle.load(loss_urlopened)\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "37fe982b-b1a7-4d31-a5fc-21481d97fa4e",
+ "metadata": {},
+ "source": [
+ "The following code loads your pretrained model and evaluates its performance on the test set. **For efficiency, let's not run the evaluation because it can take approximately 4 minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, you are free to uncomment the last line in the following code block.**\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "ca827b34-bd27-413f-ba76-8fde3d73c570",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/q66IH6a7lglkZ4haM6hB1w/model-IMDB%20dataset%20small2.pth')\n",
+ "model_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
+ "model_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "f7421582-5341-4554-bb43-93eaeec31de6",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 71.81it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.83208"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a91438ab-0a67-47b4-908c-2114cedb29e2",
+ "metadata": {},
+ "source": [
+ "As you can see, the pretrained model achieved an accuracy of approximately 83% on the test data.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d8f01fc5-871b-4978-a2dd-724efa504014",
+ "metadata": {},
+ "source": [
+ "### Fine-tune a model pretrained on the AG News data set\n",
+ "\n",
+ "Rather than training a model on the IMDB data set as you did earlier, you can fine-tune a model that has been pretrained on the AG News data set, which is a collection of news articles. The goal of the AG News data set is to categorize news articles into one of four categories: Sports, Business, Sci/tech, or World. You’ll start training a model from scratch on the AG News data set. To save time, you can do this in just one cell. Also, for efficiency, ** comment out the training bit**. If you want to train the model for 2 epochs on a smaller data set to demonstrate what the training process would look like, uncomment the part that says `### Uncomment to Train ###` before running the cell. Training for 2 epochs on the reduced data set can take approximately 3 minutes.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "id": "4db8b115-13e1-4d42-99e0-fd09dc0527c6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Net(\n",
+ " (emb): Embedding(400000, 100)\n",
+ " (pos_encoder): PositionalEncoding(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer_encoder): TransformerEncoder(\n",
+ " (layers): ModuleList(\n",
+ " (0-1): 2 x TransformerEncoderLayer(\n",
+ " (self_attn): MultiheadAttention(\n",
+ " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
+ " )\n",
+ " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (dropout1): Dropout(p=0.1, inplace=False)\n",
+ " (dropout2): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (classifier): Linear(in_features=100, out_features=4, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "train_iter_ag_news = AG_NEWS(split=\"train\")\n",
+ "\n",
+ "num_class_ag_news = len(set([label for (label, text) in train_iter_ag_news ]))\n",
+ "num_class_ag_news\n",
+ "\n",
+ "# Split the dataset into training and testing iterators.\n",
+ "train_iter_ag_news, test_iter_ag_news = AG_NEWS()\n",
+ "\n",
+ "# Convert the training and testing iterators to map-style datasets.\n",
+ "train_dataset_ag_news = to_map_style_dataset(train_iter_ag_news)\n",
+ "test_dataset_ag_news = to_map_style_dataset(test_iter_ag_news)\n",
+ "\n",
+ "# Determine the number of samples to be used for training and validation (5% for validation).\n",
+ "num_train_ag_news = int(len(train_dataset_ag_news) * 0.95)\n",
+ "\n",
+ "# Randomly split the training dataset into training and validation datasets using `random_split`.\n",
+ "# The training dataset will contain 95% of the samples, and the validation dataset will contain the remaining 5%.\n",
+ "split_train_ag_news_, split_valid_ag_news_ = random_split(train_dataset_ag_news, [num_train_ag_news, len(train_dataset_ag_news) - num_train_ag_news])\n",
+ "\n",
+ "# Make the training set smaller to allow it to run fast as an example.\n",
+ "# IF YOU WANT TO TRAIN ON THE AG_NEWS DATASET, COMMENT OUT THE 2 LINEs BELOW.\n",
+ "# HOWEVER, NOTE THAT TRAINING WILL TAKE A LONG TIME\n",
+ "num_train_ag_news = int(len(train_dataset_ag_news) * 0.05)\n",
+ "split_train_ag_news_, _ = random_split(split_train_ag_news_, [num_train_ag_news, len(split_train_ag_news_) - num_train_ag_news])\n",
+ "\n",
+ "\n",
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "device\n",
+ "\n",
+ "def label_pipeline(x):\n",
+ " return int(x) - 1\n",
+ "\n",
+ "from torch.nn.utils.rnn import pad_sequence\n",
+ "\n",
+ "def collate_batch_ag_news(batch):\n",
+ " label_list, text_list = [], []\n",
+ " for _label, _text in batch:\n",
+ " label_list.append(label_pipeline(_label))\n",
+ " text_list.append(torch.tensor(text_pipeline(_text), dtype=torch.int64))\n",
+ "\n",
+ "\n",
+ " label_list = torch.tensor(label_list, dtype=torch.int64)\n",
+ " text_list = pad_sequence(text_list, batch_first=True)\n",
+ "\n",
+ "\n",
+ " return label_list.to(device), text_list.to(device)\n",
+ "\n",
+ "BATCH_SIZE = 32\n",
+ "\n",
+ "train_dataloader_ag_news = DataLoader(\n",
+ " split_train_ag_news_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
+ ")\n",
+ "valid_dataloader_ag_news = DataLoader(\n",
+ " split_valid_ag_news_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
+ ")\n",
+ "test_dataloader_ag_news = DataLoader(\n",
+ " test_dataset_ag_news, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch_ag_news\n",
+ ")\n",
+ "\n",
+ "\n",
+ "model_ag_news = Net(num_class=4,vocab_size=vocab_size).to(device)\n",
+ "model_ag_news.to(device)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "id": "1ee6601d-69a0-4274-a237-38f981a6153b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/2 - Loss: 268.16309916973114\n",
+ "0.24416666666666667\n",
+ "save model epoch 1\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.32s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 2/2 - Loss: 261.3479962348938\n",
+ "0.24766666666666667\n",
+ "save model epoch 2\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████████| 2/2 [00:03<00:00, 1.99s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training time: 3.97745680809021\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "### Uncomment to Train ###\n",
+ "LR=1\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model_ag_news.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
+ "save_dir = \"\"\n",
+ "file_name = \"model_AG News small1.pth\"\n",
+ "train_model(model=model_ag_news,\n",
+ " optimizer=optimizer,\n",
+ " criterion=criterion,\n",
+ " train_dataloader=train_dataloader_ag_news,\n",
+ " valid_dataloader=valid_dataloader_ag_news,\n",
+ " epochs=2,\n",
+ " save_dir=save_dir,\n",
+ " file_name=file_name)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "cff62a9a-8839-4bc4-b29c-a1aa85c473e9",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|████████████████████████████████████████| 238/238 [00:01<00:00, 178.30it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.2531578947368421"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader_ag_news, model_ag_news)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3b0c2ac8-3c61-4005-bafd-59169e704349",
+ "metadata": {},
+ "source": [
+ "Let's load a model that has been pretrained using the same method but on the full AG News data set for 100 epochs.\n",
+ "\n",
+ "The following code plots the cost and validation data accuracy for each epoch of the pretrained model up to and including the epoch that yielded the highest accuracy. As you can see, the pretrained model achieved a very high accuracy of over 90% on the AG News validation set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "79659cc9-a6db-415b-a03c-2b8a13f26653",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/bQk8mJu3Uct3I4JEsEtRnw/model-AG%20News%20small1-acc')\n",
+ "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/KNQkqJWWwY_XfbFBRFhZNA/model-AG%20News%20small1-loss')\n",
+ "acc_epoch = pickle.load(acc_urlopened)\n",
+ "cum_loss_list = pickle.load(loss_urlopened)\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a17edde1-7268-468d-ad53-d1880848efc6",
+ "metadata": {},
+ "source": [
+ "The following code loads the pretrained model and evaluates its performance on the AG News test set. **For efficiency, let's not run the evaluation because it can take a few minutes. Instead, claim that the pretrained model works well on the AG News dataset. If you would like to confirm the result for yourself, feel free to uncomment the last line in the following code block.**\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "e98831cf-bdb6-4e9c-9932-8ee7e6897450",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
+ "model_ag_news_ = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
+ "model_ag_news_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "346d1f7a-2331-4010-a979-ae71efb00fcc",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|████████████████████████████████████████| 238/238 [00:00<00:00, 323.29it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.9046052631578947"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader_ag_news, model_ag_news_)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "49ecfc70-585f-4fd5-a2d3-3eb558705103",
+ "metadata": {},
+ "source": [
+ "As you can see, the pretrained model worked extremely well on the AG News data set. However, can this model be fine-tuned to perform well on the IMDB data set as well? Let's find out! You can begin by loading the pretrained AG News model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "92336349-f915-4471-a3d2-64c90ea31171",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
+ "model_fine1 = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
+ "model_fine1.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80e739c4-0b6b-44fa-8d5d-456c52576dd6",
+ "metadata": {},
+ "source": [
+ "The IMDB dataset is a binary classification task with only two classes (positive and negative reviews). Therefore, the output layer of the AG NEWS model should be adjusted to have just two output neurons to reflect the binary nature of the IMDB dataset. This adjustment is essential for the model to accurately learn and predict the sentiment of movie reviews in the IMDB dataset.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "1190f1bf-a030-43b1-b146-5f27715ce6a4",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Original final layer: Linear(in_features=100, out_features=4, bias=True)\n",
+ "Input dimention final layer: 100\n"
+ ]
+ }
+ ],
+ "source": [
+ "model_fine1.classifier\n",
+ "in_features = model_fine1.classifier.in_features\n",
+ "print(\"Original final layer:\", model_fine1.classifier)\n",
+ "print(\"Input dimention final layer:\", in_features)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "682f6a52-d8d8-4ed7-9162-1bf74dee5542",
+ "metadata": {},
+ "source": [
+ "You can change the final layer into a two-class problem.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "46da3876-5b30-4174-bcf1-2702836f3d6d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Net(\n",
+ " (emb): Embedding(400000, 100)\n",
+ " (pos_encoder): PositionalEncoding(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer_encoder): TransformerEncoder(\n",
+ " (layers): ModuleList(\n",
+ " (0-1): 2 x TransformerEncoderLayer(\n",
+ " (self_attn): MultiheadAttention(\n",
+ " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
+ " )\n",
+ " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (dropout1): Dropout(p=0.1, inplace=False)\n",
+ " (dropout2): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model_fine1.classifier = nn.Linear(in_features, 2)\n",
+ "model_fine1.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "672f77ee-1134-4656-9e85-c158cb4a64ea",
+ "metadata": {},
+ "source": [
+ "The following code shows the layers that are frozen (`requires_grad == False`) and unfrozen (`requires_grad == True`) in the model. The unfrozen layers will have their weights updated during fine-tuning.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "9afe1e34-b1e3-42a8-b67d-5e99e761dbab",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "emb.weight requires_grad: False\n",
+ "transformer_encoder.layers.0.self_attn.in_proj_weight requires_grad: True\n",
+ "transformer_encoder.layers.0.self_attn.in_proj_bias requires_grad: True\n",
+ "transformer_encoder.layers.0.self_attn.out_proj.weight requires_grad: True\n",
+ "transformer_encoder.layers.0.self_attn.out_proj.bias requires_grad: True\n",
+ "transformer_encoder.layers.0.linear1.weight requires_grad: True\n",
+ "transformer_encoder.layers.0.linear1.bias requires_grad: True\n",
+ "transformer_encoder.layers.0.linear2.weight requires_grad: True\n",
+ "transformer_encoder.layers.0.linear2.bias requires_grad: True\n",
+ "transformer_encoder.layers.0.norm1.weight requires_grad: True\n",
+ "transformer_encoder.layers.0.norm1.bias requires_grad: True\n",
+ "transformer_encoder.layers.0.norm2.weight requires_grad: True\n",
+ "transformer_encoder.layers.0.norm2.bias requires_grad: True\n",
+ "transformer_encoder.layers.1.self_attn.in_proj_weight requires_grad: True\n",
+ "transformer_encoder.layers.1.self_attn.in_proj_bias requires_grad: True\n",
+ "transformer_encoder.layers.1.self_attn.out_proj.weight requires_grad: True\n",
+ "transformer_encoder.layers.1.self_attn.out_proj.bias requires_grad: True\n",
+ "transformer_encoder.layers.1.linear1.weight requires_grad: True\n",
+ "transformer_encoder.layers.1.linear1.bias requires_grad: True\n",
+ "transformer_encoder.layers.1.linear2.weight requires_grad: True\n",
+ "transformer_encoder.layers.1.linear2.bias requires_grad: True\n",
+ "transformer_encoder.layers.1.norm1.weight requires_grad: True\n",
+ "transformer_encoder.layers.1.norm1.bias requires_grad: True\n",
+ "transformer_encoder.layers.1.norm2.weight requires_grad: True\n",
+ "transformer_encoder.layers.1.norm2.bias requires_grad: True\n",
+ "classifier.weight requires_grad: True\n",
+ "classifier.bias requires_grad: True\n"
+ ]
+ }
+ ],
+ "source": [
+ "for name, param in model_fine1.named_parameters():\n",
+ " print(f\"{name} requires_grad: {param.requires_grad}\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2f1597ed-a727-42d5-bee1-7aaabd6c7681",
+ "metadata": {},
+ "source": [
+ "The following code block simulates fine-tuning on the shortened training set for just 2 epochs. **For the sake of time efficiency, this code block has been commented out**. If you want to see what training looks like, uncomment the following code block, but remember that this code could take approximately 2 minutes to run.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "3d5c5154-4b9d-4360-83d5-fc21a6ba930b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/2 - Loss: 28.026488423347473\n",
+ "0.468\n",
+ "save model epoch 1\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.21s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 2/2 - Loss: 27.68860560655594\n",
+ "0.5504\n",
+ "save model epoch 2\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.26s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training time: 4.527782678604126\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "LR=1\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model_fine1.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
+ "save_dir = \"\"\n",
+ "file_name = \"model_fine1.pth\"\n",
+ "train_model(model=model_fine1, optimizer=optimizer,\n",
+ " criterion=criterion,\n",
+ " train_dataloader=train_dataloader,\n",
+ " valid_dataloader=valid_dataloader,\n",
+ " epochs=2,\n",
+ " save_dir=save_dir, \n",
+ " file_name=file_name )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "5bb6f965-f5ea-42db-a273-1201fb7465e2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:11<00:00, 70.06it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.53036"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_fine1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0e75889f-0f39-4b19-aa86-1aeb77b4569e",
+ "metadata": {},
+ "source": [
+ "The following code shows the progress of full fine-tuning of the entire IMDB training set for 100 epochs.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "711e99ea-1b79-4121-bb4d-05455c1d4ea6",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHVCAYAAAB8NLYkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADD/klEQVR4nOydd3wUdfrHP7O9pPeEhN6kFwUCdpqKngU9FRTlsHFgQz1FURRUPL2zYzkPy+8soGc5C1IVLIAovXdI73032+f3x+53tmR7dnc2yfN+vfIiuzs7+x2SzHzmKZ+H43meB0EQBEEQBNHhkYi9AIIgCIIgCCIykLAjCIIgCILoJJCwIwiCIAiC6CSQsCMIgiAIgugkkLAjCIIgCILoJJCwIwiCIAiC6CSQsCMIgiAIgugkyMReQDxgsViwa9cuZGdnQyIhrUsQBEEQ8YzNZkNlZSVGjhwJmYykjCv0vwFg165dGDNmjNjLIAiCIAgiBLZv345zzjlH7GXEFSTsAGRnZwOw/4Lk5uaKvBqCIAiCIPxRXl6OMWPGCNdvwomowu7JJ5/EU0895fbcgAEDcPjwYQCAwWDAAw88gJUrV8JoNGLq1Kl444033H6QRUVFmDt3Ln788UckJCTglltuwbJly0IKzbL0a25uLvLz8yNwZARBEARBRBsqn2qL6BG7wYMHY8OGDcJjV0F2//3347vvvsNnn32G5ORkzJ8/H9dccw1+/fVXAIDVasW0adOQk5ODLVu2oLy8HLNmzYJcLsezzz4b82MhCIIgCIIQE9GFnUwmQ05OTpvnGxsbsWLFCnz88ce4+OKLAQDvvfcezjrrLGzbtg3jxo3DunXrcPDgQWzYsAHZ2dkYMWIEli5diocffhhPPvkkFApFrA+HIAiCIAhCNESPYR47dgx5eXno3bs3Zs6ciaKiIgDAjh07YDabMWnSJGHbgQMHonv37ti6dSsAYOvWrRg6dKhbanbq1KloamrCgQMHfH6mzWSCtaXF+aXTRenoCIIgCIIgYoeoEbuxY8fi/fffx4ABA1BeXo6nnnoK5513Hvbv34+KigooFAqkpKS4vSc7OxsVFRUAgIqKijaFk+wx28YbtW//CzXLlwuPK8ymCB0RQRAEQRCEeIgq7C699FLh+2HDhmHs2LHo0aMHPv30U6jV6qh9bvqddyBt9q3CY01pKTBwYNQ+jyAIgiAIIhaInop1JSUlBf3798fx48eRk5MDk8mEhoYGt20qKyuFmrycnBxUVla2eZ295guJQgFpQoLzS6uN7IEQBEEQBEGIQFwJu5aWFpw4cQK5ubkYPXo05HI5Nm7cKLx+5MgRFBUVobCwEABQWFiIffv2oaqqSthm/fr1SEpKwqBBg2K+foIgCIIgCDERNRX74IMP4oorrkCPHj1QVlaGxYsXQyqV4sYbb0RycjLmzJmDBQsWIC0tDUlJSbj77rtRWFiIcePGAQCmTJmCQYMG4eabb8bzzz+PiooKLFq0CPPmzYNSqRTz0AiCIAiCIGKOqMKupKQEN954I2pra5GZmYlzzz0X27ZtQ2ZmJgDgpZdegkQiwfTp090MihlSqRTffvst5s6di8LCQmi1Wtxyyy1YsmSJWIdEEARBEAQhGhzP87zYixCbkpISFBQUoLi4mCZPEARBEEScQ9dt38RVjR1BEARBEAQRPiTsCIIgCIIgOgkk7AiCIAiCIDoJJOwIgiAIgiA6CSTsooTNaETTmrWoX/Wp2EshCIIgiJizt6QBn+8owcGyJrGX0qUQ1e6kM8MbjSi97z4AQPKVf4JEpRJ3QQRBEAQRQ77bW463fzqJOef2wqA8GhoQKyhiFyUkiYmAXA4AsNbVibwagiAIgogt9XoTACBVIxd5JV0LEnZRguM4yFJSAACW+npxF0MQBEEQMaZebwYApGgUIq+ka0HCLopI09IAANY6EnYEQRBE16JBiNiRsIslJOyiiDQtFQBgradULEEQBNG1YBE7SsXGFhJ2UUSWao/YWajGjiAIIqLYbDyMFqvYy+iStJqC+39nETtKxcYWEnZRhFKxBEEQkYfneVz95hZc/I/NqGoyiL2cLsUbm45jyJNr8cuxGr/b8TyPBhax01LELpaQsIsilIolCIKIPHU6E/YUN6C0oRVPfXtQ7OXEHTzP4+UNR3Hre9tR1RxZ4fvlzlJYbTx2FvkPWLQYLbDYeABUYxdrSNhFEVkaS8VSxI4gCCJSnK7VC99/t7ccGw9Viria+OO1H47j5Q3HsOlINe5ftRtWh8BqL1VNBhyragFgF9f+YNE6lVwClVwakc8ngoOEXRSRprJULEXsCIIgIsXpGp3b48e/2o8Wo0Wk1cQXn/5RjBfXHwUAyKUcfj1eizc3HY/IvrecqBW+rw0g7JiHXYqaonWxhoRdFJGmpgAgYUcQROjYbHzEIi2djdO1dmF39chuKEhTo6zRgH+sPSLyqsTnxyNVWPjFPgDAXy/sg2XXDAMAvLj+KLafav916Nfjzrq6Op3R77ZODzuqr4s1JOyiiJCKJYNigiBCoNVkxXnP/4gb39kGnidx5wlLxQ7MScQzVw0FAHyw9TR2FzeIuCpx2VvSgHkf7YTVxuOakd3w0NQBuHZ0Pq4Z1Q02Hrjnk10B06f+4HneLWJXpzP73Z487MSDhF0UYV2xtqYm8Gb/fwQEQRCMwxVNKG1oxfZTdSiuaxV7OXEHS8X2zNDi/P6ZuHpkN/A88Mjne2G22kReXewpqtXjL+//Dr3JivP6ZeC56cPAcRwAYOmVQ9A7U4uKJgMe/GxP2DcKZ2r1KG1w/i4GjNg5RCR1xMYeEnZRRJqcDDj+uChqRxBEsBTVOZsDtp2s9bNl14PneUHY9crQAgAWTTsLqRo5Dlc0452fT4q5vJjToDfhlve2o6bFhMF5SXjzptFQyJyXdq1ShtdvHAWFTIIfDldhxS+nwvqcX0/Y07D5qWoA9uYJfyKRxomJBwm7KMJJpZA65sVa6xtEXQtBEB2HIpeuz22nIifsmg1m/HysGjvOxO5Gc19Jo1ukp73U6UxodjRKdE/TAADSE5RYNG0QAOCVDcfaNFd0Zt7+6SRO1ejQLUWN9249BwlKWZttBuUl4YnL7f8/z31/OKyU9Zbj9t/Dy4flAQDMVt5vw4ozFUsRu1hDwi7KCCbF5GVHEESQuEbsfjsZ/rmjqFaP/+4owaNf7sMlL/+EYU+tw80rtmP6m1uw5YR/g9lI8NvJWvxp+S+Y8/7vEdsna5zIS1a52WhcM6obzu2bAaPFhrc2n4jY58UzOqMFH207AwBYfMUgZCWpfG47c2x3XDY0BxYbj/kf70Rja/DlQTYbL/y+TDwrC2rH/7u/mj3nODGK2MUaEnZRRpbqMCmmzliCIILkjIuwK21oRbHL42BZva8c57/wIx78bA8+/q0IhyuawfNAosoe0Xnsy/0wmKM3kstm4/HM6kPgeeBUBCNop2rs/xc9HWlYBsdx+PM5BQCAk10kYvf5zhI0GSzoma7BxLOy/W7LcRyWXTMMBWlqlNS3YuEXe4OutztU0YR6vRkahRTD81OQprWLNX+WJ/U0Tkw0SNhFGSmZFBMEESJMyGkU9sjIb2FYVXy7twwA0C8rAXec3xtv3TQa2x+biF8fuRhZiUqcqtHh9R8i42/mjW/2lmFvSSMAwGixRUxEnql1Nk540i3FHrEqi2DqN16x2Xi866iX+8u5vSCVcAHfk6yW47UbR0Em4bB6XwU++q0oqM9iadgxvdKgkEmQnmAXa/V+hJ0wToxSsTGHhF2UEcaKUcSOICKCwWzFH6fr8K+fTuDZ1Yf8Xlw6IgazFRWO+aeXD8sFYE9phoLNxmOrw5riuelD8ehlZ+GSITnISlQhSSXHkisHAwDe2nwChyuaIrh6OwazFc+vcfeVawoh9ecPFv3rma5p81peir2wv6LR0Ok9ADcersLpWj2SVDJMH5Uf9PtGFKTgkUsHAgCWfHsQB8sC//xZ48SEPhkAnOlVitjFJyTsoozTy46EHUGEy5YTNVj67UFc/cavGPrkWlz71lY8u/ow/vXTSXz6R7HYy4soJfWt4HkgQSnDpUMcwi7EiN3BcnvqTKuQYlh+SpvXLxmSiymDsmGx8Xjk830RF0Hv/XoapQ2tyE1WIdFRzB9KTZc/WI1dz/S2EbusRBWkEg4WG4/qZv92HNFkf2mjWwNMqBjMVvx4pAp6k+/mhH87un9njO0BrZeGCX/MObcXJg7Mgsliw/yPd0LnpwnCbLUJ5sbj+6YDANIdqVh/NXYUsRMPEnZRxjlWjFKxROwxmK0d3terpF6PGe/8hhW/nMKuogaYrTwyEpQoSLNHZ8obIzvkXGxYGrYgTYOze6ZCwtmbKcobg08vskL3Mb3SIJd6P80vuXIIEpQy7C5uwIeOAvxIUNtixBs/2lO8D04ZIKTtIiHseJ7HGUeNXS8vqViphEOOo4Egkp24oVDTYsQ1b2zBFa//ElY0uUFvwsx//4bZ7/2Om/79G1pNbVPY+0oa8dupOsgkHG4Z3yPkz+A4Di9cNxw5SSqcrNHh8f/t97ntnuIG6E1WpGkVOCsnCQCEGjtfx2ey2ISOWWqeiD0k7KIMpWIJsWg1WXHBCz/i2je3iL2UdnG4vBkAkJuswsvXj8BPD12E3x+biNnjewGAqJGZaMBqyHqkaZCokmNIt2QAoXXH/uqoiZrQN8PnNjnJKjx8yQAAwPNrDkesLu3VjcfQbLRgcF4Srh7ZDclqe8SGRXDaQ63D6oTj7MLXG90c6Vix6uxO1ehgstrQ2GrGqz8cC+m9ZQ2tuO6trYIdzc6iBtyzclebiOqKX+zRusuH5SI3WR3WOtO0Crx640hIOOCLnaX4744Sr9ux36XC3umQOOr4UgM0TzS02p/nOCBJTRG7WEPCLspQKpYQi6OVzahsMmJPSSNsHbjeiKXeRnVPxVUju6F7ugYcxyEjUQkAqG7pXMKuyDFporujhmxsL/s5JFijYpPFJXXWx7ewA4CZY3tgdI9U6ExWPPG//e0eX3aiukUoyH/ssrMgkXDChT0SETvmT5eXrHazOnElT+QGCtcI8n+2ngm6I/hIRTOueWMLjlW1ICdJheeuGQqFTIL1Byux+Gvnz6ai0YBv95YDAOac27tdax3TKw0LJvcHADz+1X7sKmqbWWL1dSwNCwROxTIRn6yWB9XUQUQWEnZRRvCxo1QsEWOYIAKA1iA6Ev+7owQrfjkVd0XnQrF8hnuEJjPBLuxqOp2wsx8vM98d19t+QQ22zm5PSQNazfbU2cCcRL/bSiQcll0zFHIphw2HqvD9/op2rNxufmux8Zg4MAvjHdHC5AgKO1+/C67kiRyxq3BJmVtsPP7+/eGA79l+qg7XvbUFFU0G9M1KwOd/HY8bxnTHK9ePAMcBH24rwhub7N58H2w9DYuNx5heaRian9zu9c69sC/O65eBVrMVM975DT8eqRJe05ssgtib4HKTkBZA2AnjxCgNKwok7KKMNMWRim1oAG/r2LVORMfCNVKg81OEDQAWqw0Lv9iLpd8exN2f7Iyqv1monHEUoXsWy2cm2i8aNZ0sFcvMiZmwO7tnGjjO/vOsagpcT/jrcXuEpbCPM3Xmj/7ZiZh7QR8AwD/WHQk7urvtZC3WH6yEVMJh4WUDhedTNJETdux3oYeXxglGrkPYlTaIU3tZ0Wj/fbx4YBYkHLDmQAV+P+1blK/ZX4GbVvyGJoMFo7qn4L93FQrp5EuH5mKxY2LEC2uP4D/bzuBjR0T0tnN7RWS9UgmHt24ajfP7Z6LVbMVtH/whpGV/P10Ps5VHtxQ1erh0IbO6SZ/CThgnRmlYMSBhF2VkqSn2b2w2WBsbRV0L0bU449KVpzf6F2o6oxVmq/2CvnpfBW55dzuaDJHpYmwvp2q8+5ZlOCJ2TQZLXAnR9sDzvCDs2IU0WS3HoFx70fq2IKJ2zHNsQoA0rCt3XNAHiUoZTlbrsOloVeA3eOGdn+x1XzeOKUDfLGekMKIRO0cUupcfYSe2l11Fk/1zz++XgevP6Q4AePq7Q17T3B9uO4O/frQDJosNk87Kxke3jWtjD3LrhF648wJ7yvXxr/ajsdUclCFxKGiVMvx71tm4emQ3WG08HvxsD97YdBxbHDcJ4/ukg+OcNwksEuc7FUsROzEhYRdlOIUCkkT7Sc5aT+lYInaEErFjr0s4IFEpw2+n6vDnt7aiMogIUTQxmK0oc6S2PCN2yWo55FL7xcafn1ZHorrZCIPZBgnnTCkCwNhe9nRsoDo7vcmCXcWO1JlLTVQgEpQy3DjWLkLCHRK/r9R+43r1SHdPtUgKu9M+RL4rQio2hC7iSMJq7HKS1bh/cj9oFFLsKW7AN466OMAu4F9cfxSLvtoPGw/ccE4B3rppFNQK73WDD08diKtG5AmPgzUkDgWFTIJ/Xjccd55vF5HPrzmC97ecBtC2CSdda7+pajFaYLS0vamiiJ24kLCLAdQZS4iBa42d3otlgivMLytJLceqOwuRmajEYUcx9/Gqlqiu0x8l9XrB0y0jwf3un+M44QLTWdKxbJRYXorazaZkXG97rW4go+Ltp+qE1Fl3H12jvrhlfE9IJRx+PV4blGmtK3U6E6ocP4MBHnV9kRJ2PM8LUeheQdTYNejNfn3gokWFQ9jlJquQlajCXY4099+/PwyD2QqL1YZHv9yPVzfaO2bvmdgPy64ZCpkPWxrAXgv5/LXDMW1YLsb0TMO1o4M3JA4FiYTDwsvOwqJpZwGwTwwB7BE7V5LUMkFY1uva/lwpYicuJOxigCyVjRUjYUcEz44zdVj2/aGw0owNepObvYQ/A1L76/bP0CpkGJSXhC/mjkfvDC1KG1px7VtbcKBMnDICNhe0h6MT1pPMxM7VQFFU656GZYzpZa+zO1Gt82vvsuUEszlJ9/r/5Y9uKWpcOiQHQOhROza9onuaBgkeZrnJ6sj42NW0mNDisDrJT/Ut7JJUcsEUuSzGdXZWGy8I3Jxke0r4tvN6ITtJidKGVry9+STmfrQTn2wvAscBT181BAsm9w/qZ6WQSbB8xih8elchNIrQDIlD5bbzeuPVG0dCIZXgnJ6pyHJ4AzI4jnOZPtH297FeEHYUsRMDEnYxgDpjiXB4Ye0RvL35JDYeCr3m6bSH632giB0Tfmw2aUGaBp/dVYjhBSlo0Jvxj7VH/L09agRKvbEoXiSFnc3GY/PRajRGwHctVM54NE4wUjQKDMi2R8K2+6mzY40T/vzr/HHbefY03Nd7SoNq1GAcqbB7DXpG6wC4+Ni1L13OItD+rE4YYnXG1rQYYbXxkEo4oQZUo5DhgSl2v8CXNhzF+oOVUMgkeHPmKNw0LnRz4Vjxp+F52PboRHx421ivr/uzPHGmYiliJwYk7GKAkIolLzsiBNgJs7g+9NFEpz28swJG7BzCz3U0UXqCEi9cOwyA3aS0WYRmikDF8uziGUmT4uU/Hsct727HP9bFXswWC8Ku7fE6bU+8p2PrdSYcLLdHzgr7BF9f58qIghSc3SMVZiuP/9sa/DQKZiJ9lh9h19javrQo+532NnHCE7G87Fh9XXai0q0GbvqofJzlaIBJUsnw4ZyxuMQxLi6eSdMqoJR5F9H+LE8oFSsuJOxigDMVSxE7IniaHBfC8jAuTp6mqMHW2GmV7ifxflkJ6J2hhclqw6Yj1SGvo70IUxi8DHwHIJgU17REpnmiqsmANzfb/cKCNZaNJOx4vdXHsTo7Xw0UW0/WguftP7OsRJXXbYJhjsNG46PfzngdZ+WNw5UsYpfU5rVkRzquqdXcLgPk0wF+F1wRK2LHPOxYGpYhlXB4fcZI3Dq+Jz6fOx5jHKbTHRl/wq6e5sSKCgm7GOBMxVLEjggeZjdSFsYs1DO1HhG7QF2xjho7z9odjuMwZbC97mrNgfaZ14bDaT9zQQGXiF2EUrEvbTgqiGB/A86jBZs64U28jHF0xh6tbPG6tvamYRlTBuegIE2Ner0ZX+zyPmbKFZuNx1FHKnZgbtuIXYojYmey2mAwh+/lGeh3wZU8kbzsKoSO2LbCuk9mAp7802D0y/ZvGt1RCCZiR6lYcSBhFwNklIolQsRitQkCI5Th74xTjhq77CS78AnsY+eI2HmxW5g62O6XtelwVUz94tysTnxczIXmiQikYo9UNGPV78XC4/bWhIWKzmgRagW9zUFN0yrQPzsBALDZi9cca5zw7GAMFamEE+bwrvjlVEDD4qI6PVrNVihlkjaWNIC9blPmSEuyGaLhwCJ23j7DE7HmxZY76hJzksKb39qR8CXseJ4XGrdStRSxEwMSdjGARewoFUsES7PBGWErDyPqwOqRBufZRw4F62OnVbbtthuen4KcJBV0Jiu2OOZGxoLiOrvVSaJSJhRqe8KaJyIRsVv2/SHYeGC4Y0xTXYyFHaulTNHIhbo0T87vlwkAeOizvXh5w1GYrfYIWFlDK07V6CDhgLG92yfsAODP5xQEbVjMOmL7Zyd69VbjOK7dlic8z7s00oSQig1wU7TlRE1EG29crU46O76EXbPRAovjZiBFTRE7MSBhFwOkqZSKJULDdepDrc4UUqSsQW8SLqBsYkGgiJ3eS/MEQyLhMMURtVu7vzLodbQXVuPWI8O71QngMi+2nRG7n49VY9ORasgkHJ65eigAwGC2BV1jFgmYR5s//7l7JvXDpUNyYLHxeHnDMVy1/FccrmgSonVD81N8isJQSFDKcMOYAgDAv3/2b31y2E9HLEMQdmF2Gle3GKEzWSHhvEczPWHNE+UNBp8Rx81HqzHjnd/w2Jf7wlqTN8r9pGI7G0zYeZqDs5+xUibxabhMRBcSdjGApWIt9fXtKh4mug5NHh2E5SHU2TFBlJOkEmY6Bq6xc7c78WSqo85u/aFKWKyxmXkcTOrNdayYNwf8YLDaeDzz3SEAwM2FPTA4LwkKh1lsfQyjdsU+rE5cSVLJ8cbMUXj1xpFI0chxoKwJV7z2C5b/eBwAMKGdaVhXmGHxlhO1OOpojvAG64gd6E/YtXNeLKuvy0tR++zSdCU7SQUJZ6/rq/HiswYAWx1ieGdRQ1hr8gab1NIVhB2Lotd7CLt66ogVHRJ2MUCaahd2MJth08W+047oeHjOaQ2lM9a1e1DraIYI1sdO68P4dEyvNCSr5ajTmfDHmdiUFJyuDVws7zZWLMzO2M93luBwRTOSVDLcc3E/cBwnjEKKZQNFURDCDrCnNv80PA/r7jsfk87KgtnKC2K+vY0TruSnanB+P/v+/HkpHnGIPmbn4Q3Byy5cYVcbvNUJAMilEmQnMcsT7zdF+0obANitciJRT8nzvDNil9T5hV2qj1QsjRMTHxJ2MUCiVoNT22s+KB3bNWgymPHMdwexryS8iQ2ennGhdMaecuke1DjsS4L1sdMovUdD5FIJJjmGjq+NUXcsq6nq4SdiJ5G4jBULo1ZKb7Lgnw6/ursv7idcrFiaqSGCJsU8z2P5j8ex+ah325gzPqZO+CIrSYV3Zp2Nf1w3HIkqGbISlRjdIzVi6wWACwdkAQB+8rFmvckiiK5gUrFNYUfsgrc6YfizPOF53u1vMxJj8+r1ZpgcI7iyu4CwEyJ2epNbups87MSHhF2MkKXSvNiuxOq95Xjn51O45b3tQnomFNqkYkOI2DGrk54Z2qAjdszHznMclCusO3bdgcqYlBQ4DWn9X8wzEh0NFGHU2f3751OobDIiP1WNWeOdUwDYRSmSDRQHyprwwtojmPfRTq9Cm6Vig6khY3Ach2tH52PbwonY+MAFAScyhMr5/e3NGn+cqfO65mOVLeB5e0qcpcW90d7miVA6Yhn+hF1RnR5NLg1KxyIg7Fj3ekaCEgpZ57+0spsgG+/+c2WpWeqIFY/O/9sXJ1BnbNeCpSPqdCbc88kuWANYRnjimYoNJWIndA+ma4SauXB97Fw5v38m1HIpShtasb/U+5D4Rn37TGgZdqsT+zEHupgzQRFqxM5m4/Hvn08CAB6+ZKBb7Ra7KHnWD7UH9jNtMVrwzZ4yt9esNl7oivUXofSFVilDoiryF9Ke6RoUpKlhtvJCTZorrCPWX30dEAFhF4KHHYM1UJR6EXZ7PSLp/moIg8VZX+db4HYm5FIJklT284VrAwWNExMfEnYxgsaKdS30LkLqt1N1eHXjsZDez1JWKrn9TzRYLzued9Zb9czQCl2u7fGxY6jkUlw4wB7B8UzH8jyPtzafwMil64RGhPbA6s0SlTIhLeoLp7ALTYSVNxnQZLBALuVwyZAct9dYxC6SzRNGi7Pp5KPfitxeq2gywGzlIZdycVWfxXGcYLHy07G26VjWERussAsntc3zvEvdaPDCzp+X3f5Su7BLdAiTSKRinfV1nd/DjuHN8sSZiqWInViQsIsRzrFiJOy6Ai0OodQvy24o++oPx0LygGNpov4Ol/pgjVbr9WbhvT3StEFH7PRCjZ3viB3g7I51FXY2G48l3x7Ec98fho0HdhU3BFynzmjBDf/ain/9dMLr667i1JfVCYOZFIeaij1Zbb+Yd0/TQC51PxUKwi6CETuTi7DbV9qIvSUNwmOWPs9P1Xj1ghMTlo71VmfHOmL91dcB7YvYVTcboXdYnQRqLHElL5kJu7bRbhaxmzbUPq/1WGX7hV1X8rBjeBN2znFiFLETi7gRds899xw4jsN9990nPHfhhReC4zi3r7vuusvtfUVFRZg2bRo0Gg2ysrLw0EMPwWJp37DpaOAcK0ap2Gizp7gBT359QJSh9QwWAbtqZDdcf3YBeB64b+XuoNOFLG03wCHsgjUpZpGN3GQV1AqpM2JnsvpNkeqEGjv/NVoXDcyCTMLhWFULTlS3wGix4u6Vu/Der6eFbYKJcm07WYttJ+vw4vqjXmu3TrsIu0CEO1bshCNK0zszoc1rqUJheOR+h1wjdgDwsUvULhirE7EY3ycdMgmH07V6FDkaPAB7JI2lYv11xALtE3asO7pbqjqk2jVfNXY2Gy9E7K4e2Q2APWLqWf4QKl3Jw46R5mhcchd2NE5MbOJC2P3+++94++23MWzYsDav3X777SgvLxe+nn/+eeE1q9WKadOmwWQyYcuWLfjggw/w/vvv44knnojl8oNCSMVSxC7qvLThKN7fchpf7ioVbQ1Cl6lCap8PmZWAqmYjFny6J+CIJsDZPMEiIc1GS1BC1bN7kEXsrDa+jbBwRR9EjR1gv0AXOrzSPt9Rgtnv/Y7v9pZDLuXw1wv7AAgu3cYuBAazDRsOtTU9ZhfznkF0QbLpE6GaFJ90/F/1zmwrHtNYjV0EU7EsYsdSVF/vKRPERDDmxGKRqJJjVHf7+WuzSzq2utmIer0ZEg7om9VWHLvSnq5YZ81oaLWHLBXrafB9ulaHZqMFSpkEo3qkCqnv9qZjhRq7OEqlRxv2d1Ln4hUojBOjVKxoiC7sWlpaMHPmTLzzzjtITW3bqq/RaJCTkyN8JSU57wzXrVuHgwcP4sMPP8SIESNw6aWXYunSpVi+fDlMptgP8PaHjDVPUI1d1GH1WeFajUQCoWZNKYNaIcXymaOgkkvw09FqvP3TyYDvZxf83GS1cFEMxqTY2Ulqvwi6CjVfnbEmiw0mh+mwLx87V1g92hubTmDLiVpoFVK8e+s5uGV8TwD2GptA4tVV/H2zp9zncQRzMc8Ms3niZLX9M/p4idixaEMkfeyYgfLZPdPQLysBepMV/3PcfLDf2VDsPGLJBQPapmNZfV2vDG3Ablz2/xmOjx37nFCFXZJaJtSMukbt9jmidYPykiCXStDPMX/3eDvTseVdMhXLInYuXbEUsRMd0YXdvHnzMG3aNEyaNMnr6x999BEyMjIwZMgQLFy4EHq9MxWwdetWDB06FNnZ2cJzU6dORVNTEw4cOODzM20mE6wtLc6vGJgGO8eKUSo2mvA8L5zE95d579yMBSwCxuxD+mcn4skrBgMA/rHuiNdOPVdYZCNJLRMuFMHU2TkjXfaLoFTCCQ0YvrzsXBs9fPnYuTJ5UDZY2VtGggKr7izEef0yBUNSG+8+69YbrpGwn45Wt0nRna4NPhXLauxCbZ5gNXZ9vEXsmBCJYCqWReyUMglmjO0OwN5EwfO8IOxCsTqJJayBYsvxGuE4nB2x/tOwgHsqNpSuaZ7nhYju+BCnanAch1xH1M71pojd8A3tZp8J3C/LHhVvb2dsRRdMxaYLNXYUsYsnRBV2K1euxM6dO7Fs2TKvr8+YMQMffvghfvzxRyxcuBD/+c9/cNNNNwmvV1RUuIk6AMLjigrfJqq1b/8LR88+R/g6edllETga/8goFRsT7GkX+4XnWGVz2GOmvLGzqB5TX/oJP3vpDvSkxcuIruvPKUC/rARYbXzAtA8TRokquVArFFTEzkv3YCAvO5Y2VsgkbZoIvJGVqMKt43tidI9UfD53PIY4LpBKmVQ43kApTNfXTVYb1h90pmMNZqtwrMHYW7Aau8ZWc9A/b73JItip9M7wUmMXhYgdE0QKmQTXjMyHUibB4Ypm7CxqiPuI3eC8JKRrFdCZrNhZZL85DbYjFnAKO6uNF37fguFwRTOK6vRQyiRC1DAU2N+O643U3lIPYeeI2LXHy67ZYBb+5ruSsEv1mBdrstiE/wdqnhCPwHmXKFFcXIx7770X69evh0rl/Q/hjjvuEL4fOnQocnNzMXHiRJw4cQJ9+vQJ+7PT77wDabNvFR5rSkuBgQPD3l8wCD529RSxiyal9c4TuMXG41hliyA82suXO0txpLIZq/eV47x+/i8yOi+GvxzHIStJiWNVLQG7LVkqNkkVfMTO1erEVRBplFLU6nx3xuqDsDrxZLEj+uhJqkYBvakV9XoTesK3KKt3pG5yklSoaDLgmz1luHZ0PgBnvVmiShbUXX+yWg6ZhIPFxqO2xSRczP3B0rCpGrlwcXI7DkftUKvZCoPZGhHjX6MQsZMiWSPHFcPz8N8dJXhr8wkhylGQGp/CTiLhcG6/DPxvdxl+OlqNcb3Tg+6IBey2PQqpBCarDY2tZr9G2K6w7uvz+mUGrP/0RrcU978dm43HAYewG5afAsDZud6eGjtWX5ekkoW1zo5KukdXbEOr/V+OA5LUFLETC9Eidjt27EBVVRVGjRoFmUwGmUyGzZs349VXX4VMJoPV2vaubuzYsQCA48ftA69zcnJQWeleeM0e5+S4+1K5IlEoIE1IcH5pQzcEDRUm7PjWVthag58iQISGp/hh3W+R4IQjddcSwBMOcBr+aj0uYMHUbtlsvHDXm6SWu3T3+Y/Y1elMQqTPNfIjROx8rNvZ6NH+CxJLxwZKYbKIHUtJ/nq8Rvg/cRWngaxOAMdYMdZAEWSdnbNxwnvRf4JSJsygjVQDhWsqFnAeO4tWZiQo2/y+xBOufnYWq00QQoE6YgH7TU2y8LsR/P/nmv12YcemnoSK0/LEfl44WaODzmSFWi4VUvCs8aO0oVX4uwsVZ31d1/GwA5x2J+xGlf3dJ6vlcWfbw1i+fDl69uwJlUqFsWPHYvv27X63f/nllzFgwACo1WoUFBTg/vvvh8HgPBc/+eSTbdw7BkY5UBQI0YTdxIkTsW/fPuzevVv4OvvsszFz5kzs3r0bUmnbO+Tdu3cDAHJz7d5DhYWF2LdvH6qqnAOq169fj6SkJAwaNCgmxxEsEq0WnNyRjuiCUbtmgzmobtD24lm7diCCdXbsQtYSRHeq0/DX/ULtrN3yfXFrNlrAypASXSJ2gUyKWX1dXrLKLcIUyMvO2ejR/qhUsMa+7AIwqnsqBuUmwWLjhYv4mTDGR4U6fcJffR1gFyKRbqBgaWIm7EYWpLilMbunxbcoOK9/BgBgf2kT/jhTD5PVBq1CKnSfBiJUy5OiWj0OVzRDKuGEOcWh4nlTtK+0AYC9cULmKDtI0SiEOs0TYUbtuqLVCeAUdrU6E3ied44Ti9M07KpVq7BgwQIsXrwYO3fuxPDhwzF16lQ3DeHKxx9/jEceeQSLFy/GoUOHsGLFCqxatQqPPvqo23aDBw92c+/45ZdfYnE4PhFN2CUmJmLIkCFuX1qtFunp6RgyZAhOnDiBpUuXYseOHTh9+jS+/vprzJo1C+eff75gizJlyhQMGjQIN998M/bs2YO1a9di0aJFmDdvHpTK+BrrwnFclx0rtvloNYY+uQ4rfjkV9c8qcaRi2cVmf1lkInZNBjOqHHYage7qrTYerWYWsXMXSyzt528GqevUCaVMGnSNndPqxF2sOL3sAgm7yEXsAvm/1Qmdc/aUJAB8u9c+Zss5FzT4tKTQQNEcnAhjqVhfETsg8g0UrjV2gP2cMHOccz5tOKPEYklWokqIzrFRbANyEiEJMjITquUJS8OO7ZXmNV0eDJ5edns9GicYLB0bbp1dVzQnBpzCzmixQW+yuowTi10aVmeyW0GxL391ti+++CJuv/12zJ49G4MGDcJbb70FjUaDd9991+v2W7ZswYQJEzBjxgz07NkTU6ZMwY033tgmyieTydzcOzIyMiJ6jKEielesLxQKBTZs2IApU6Zg4MCBeOCBBzB9+nR88803wjZSqRTffvstpFIpCgsLcdNNN2HWrFlYsmSJiCv3jTS1a44V+9YxF9PbSKJIwyJ2kwfZ7/APlTeFPKfVG6538oFSsa4CylMssZqxep3vixurr2OzP13TSf46Cn11kgoROx/rZk0VwVidBCI1iIgkz/PC62laBS4fZo/AbztZi6pmg9vUiWAJ1aSYpdV7+/kMdnGKXMTOPRULAFeNyBN+PvHaEevKBY4pFBsO2SMcA4LoiGWEGrFjwo5NOwmHbi7NEzzvNCYelu9L2IXXGVvhqLHL7kIedoD93MJ+n+t0JpdxYrGL2E1+7XcMfXKd8PXGj96n2ZhMJuzYscPNgUMikWDSpEnYunWr1/eMHz8eO3bsEITcyZMnsXr1alzm0XB57Ngx5OXloXfv3pg5cyaKioq87S5mxFVBx6ZNm4TvCwoKsHnz5oDv6dGjB1avXh3FVUUOWVoqjOh6nbGsiy6QxUckYHfm5/bNwKd/FENvsuJkdQv6ZQcu8PbHcTdh5//CxASUVMK5XcQBl5oUvxE7R32dY45ltmOouNFiQ73e7HN2KkvF9spwFwhMsLX67Ipt28EbLoJw9XN8OpMVZivv2F4BtUKKEQUp2F3cgO/3VQgD38MSdkGYFLs2mfiN2AXxswoFz4gdYBfvt47viTc2ncB5/cS9yw+G8/tn4K3NzgvnWbnB/12lhDAvtqrZgB2O88aUMOvrAPvfDsfZ/3aqW4zYX2ovzWgj7Bznh3BHi3XViB3HcUjTKlDeaECdziRKxG793ecgL6+b8NjXdJKamhpYrVavThqHDx/2+p4ZM2agpqYG5557Lnieh8ViwV133eWWih07dizef/99DBgwAOXl5Xjqqadw3nnnYf/+/UhMbN91J1ziNmLXGZGmdr1UbKPejBOOtFdpvf+IE2BvHFizv1zoMgsVJh7z09QY5EgbRaLO7ni1i7AL4NHW4tJl6ln8H0zdFpswwbrKlDKpIFz8dcb6SsUyb7rANXaRSMUGHsXF6nCUMgnUDjHJonaf7SgWoh+h1dgF3zxR0WSA3mSFTML5tRcRxor5ia6GgtFhAq3wsJR5aOoA7HtyCs7pmRaRz4kmZ/dIc7sBGBDCDVNSCBG79QcrwfPA8IKUdjUkKGVSwcD656M1aDVboVFI0cvD4qa9EbuuWmMHuM+LFSNip1XIkKiSC19KWftvUBmbNm3Cs88+izfeeAM7d+7EF198ge+++w5Lly4Vtrn00ktx3XXXYdiwYZg6dSpWr16NhoYGfPrppxFbR6iQsIshznmxXSdit6vYKWKNFltAE9kfDlfhrg934vGv9of8WTqjRYgGdEtRY3CeXdhFojP2RJXTxDpQjZ3ei9UJI5i6rSYDi9g573rzUvxbnvA832bqBCOgj50wTiwCETtt4M7Hepc0LOPyYXngOAgRlaQgrU4YTpPiwMKO1dd1T9P49e0LJvoYCkaHv6LSwzqF4zgh7R7vKGQSFPZ2GgUHY07MCCUVu/aAvVM43G5YV1id3RpHandIXnKbjk0WsSupb/VZi+qPCkdjU1frigXchV29IOzi7/c5IyMDUqnUq5OGLxeNxx9/HDfffDNuu+02DB06FFdffTWeffZZLFu2DDab9xGNKSkp6N+/v+DeIQYk7GIIMynuSmPFdhY1uD0uqdd739ABc7MPxwWeReuSVPY7uMGOAulIROxOuETszFbeb4GuYE7sRdgx4VOnN/mMXjqnTrgIu2T/DRS1OhOajRZwXNt5o8zGJNDkiWC9xfwhROz8RLmc6RqnsMtJVuGcHs6IVbBWJwznWLHAIkyor/PREcsItsM3WEw+InYdjfMddXa5ySrBwiQYghV2ja1mbD1RA6B99XUMVmfHxqENzW/ra5mmVSBdqwDPO4V/sBjMzqaBrjQnluEu7Nr+bccLCoUCo0ePxsaNG4XnbDYbNm7ciMLCQq/v0ev1kEjc/16ZY4ev83dLSwtOnDghuHeIQcc+w3QwuuJYsV1F7sdaUu+/zo6Z05Y2tIZsj8KEXTeHySuL2B0oawxpjJEnRotVmAzA8JeO9eVhBzjFgsnRReYNZ/OE8/25LGLnw/KEWYTkJavbmOmyztxAkyci4WMXTPNEg4+7+iuGO0+EoXaIZiQGX2MXTEesfX0RtjtxdEor5R37tHvliDwU9k7Hnef3Dul9rO4qkLD78XAVzFYe/bISvM7xDRUW7WbNK571dYy+YaZjWdmIWi5FkjquytZjgqvliRip2FBYsGAB3nnnHXzwwQc4dOgQ5s6dC51Oh9mzZwMAZs2ahYULFwrbX3HFFXjzzTexcuVKnDp1CuvXr8fjjz+OK664QhB4Dz74IDZv3ozTp09jy5YtuPrqqyGVSnHjjTeKcoxAnDVPdHaknWisWGlDK9756STuuqCPz7oSm43HbkfEbkB2Io5UNgdsoGACymzlUdlsCCm1USpYndjX0y8rEQqpBE0GC0rqW8PuOjxTq4fVxiNBKROsTFqMFqQneLfUYREwb5McNAopFDIJTBYb6vUmr+LP2TzhJWLnw6T4VI3vkVSBInaR9bELbHdS58Pr6pIhuVj89QHY+NAaJwD3sWImi81nATUQXEcsEIXmiU4SsUvRKPDJHeNCfl+wEbtIdMO64jmJxNckmn7ZCfjtVF3IDRTlLo0ToUSZOwvpLibF9XE+J/b6669HdXU1nnjiCVRUVGDEiBFYs2aN0FBRVFTkFqFbtGgROI7DokWLUFpaiszMTFxxxRV45plnhG1KSkpw4403ora2FpmZmTj33HOxbds2ZGaGPgIvUpCwiyEyYaxYxxd27/1yCu9vOY2mVjNevH6E122OVbWg2WiBRiHFRQOzcKSyOWAqttglMlZS3xqasGtw97BTyCTon5OA/aVN2F/aGLawYx2xfbISUN7QKgg7X7T4aUbgOA6pGjkqm4yo15mRn9r2/c7mibYRO18mxaf9WIQEjNgZIzl5wn6S9zeKSzj5a91P/pmJSlw4IAs/HK7CcB9RFZ+f63C6t9p41OqMfn9vWMSuT1aAiF2kmyd81Nh1FYIRdgazFZuO2FOm0RB2CUoZevmIBvfLcnTGhuhlV9GFGycAIE1rv6lyjdiFkqKPNfPnz8f8+fO9vubqzAHY/ekWL16MxYsX+9zfypUrI7m8iNCxbx07GM7miY6fii13pB82HKqE2eq9iJTZnAzPTxHMZkv9pGKNFquwX8Bd5AWDELFLdZ7IB+e2v86Oedj1ydQiwZEe9ZeKZaO7fNWsCSk+H5Eg55xY58kxV/Cy8x6xYwPZvV20hIidr1mxpshF7JJUMqEw3VeDiL90zYt/Ho4P/jIGFw/MCulzJRLO2Rnrx6S41WQVbgACRewi3TzRWSJ24RKMsPvpaDVazVZ0S1FjSLfgGzP84ToZY0i3JJ+Gyv2yHanYEOt7WRd3V6yvA4A0xw1arc4o/M3Hayq2q9A1zzAiwQyKbc3N4M2RiQKIRY2jlqnJYMFvJ71HIHeesQu7UT1SBLHlr8aupL4VrqVwgerxPCkTInbOyBy7OLRnAgWzOumblSCItWAidr66TFmKz1cdmpCKdW2ecETsKpoMbQyXW01W/HLcHuUo7JMOT1hKONCs2EgYFHMc5/Qra/V+fP4KrFM0ClzQPzOslJbTpNi3VQ7zr0tWy336ATJYxE5vskcf24swUqyD19iFC4viNLX6Hi/IumGnDM6OWFrTNWI3LD/F53YsYldUpw/p500RO/vfXXGdHhab05+SEI+ueYYRCWlyMuAouLR08HmxrrYSaw6Ue92GRexGFqQi39HQUOLHy66o1j1CF3LEziHsmAgCgEF57Y/YsVRs38zghB2rWQsYsfNRlO+M2Dnfn5WoElKNng0Cm49Ww2C2uVm8uMK6cwP52GkiELEDXMaK+UhhMh+7NG1k0zXCvFg/EbuTNc6O2EDCIVEpgyxA9DEUBIPiLh6xs/H2ecieWKw2bDzMbE4ik4YF7JFXlUNM+6qvA+xeiCkaOWwhdsaWC1YnXVXYMQ/Jtv6UhDh0zTOMSHASCaQpKQAAa4cXds6L57oDlW3uwBv0JsGYeGT3FOGk1+piDeAJa5xgqbxQInZmq03oTnNNxZ6VmwgJZ++WrArD9Nhm491qsoISdibfXbGAs7bM1/+D50gxwP5/wlI9np2x61yKzb2JFSFi56PGTi8YKkem5DYlQGdsvTAnNrJ39cGMFRN+lkF0W3IcF5ShdLCYvIwU60ooZVJBYHmbF3u6VocGvRkahTSiZs0cx2Fsr3QkKGUY19v3fjmOC8uo2Bmx63oedgDaRL4pWic+XfMMIyKyTtAZa7RYhToZhUyCqmYjdpc0uG2zu9j+uGe6BukJSqjkUmQ5LCl8NVAwqxNmR1AcoNHClYpGA2y8fT0ZWme3qkYhE2wtwonalTXamyXkUg7d0zROYefX7sR/KlbwR/MhFpod+072sE5g4ti1M9ZstWHDIXuU45Ih3qMcQsTOV1dsACEaKoE6Y6NVh5ORGHj6RLAedoy0IAyXg8U5K7brRjP81dkdd5iA981KaGMg3F5W3HI2tj06EVmJ/qNqfR3p2OMhNFB09Rq7FLUcrj+uWI4TI7xDwi7GSFMcJsUdWNjVOqJ1MgmHKYPsbeLMooDBjIlHdXe2feY7Imm+GihYxG5CH/vMzPJGAyw+GjM8Kal3dsR6FkcPcfGzCxV2gu+RroVcKnE2T0QiFetFLPA87zQo9phGkJvCGiic/3+/naxDk8GCdK0Co3t4abGFM2JntNi8/n9GsnkCcB0r5l0MOe1OInsBCMakWPCwywgcsQNcRsBFQNh5mxXb1fAn7Jjo7hsB7zpPZFJJUAbcQsQuSMsTs9WGKkdpRFetsZNIOLebNIrYiU/XPcOIRGfojGURkfQEhRAlWru/wq12jhkTj3QRG91c6uy8UVRnv+iO7pkKhUwCq433OWnBkzIPqxNXBjvq7Ni4qlBg6WR2sQkuFet/9qq/5gmdyQqW1XZtngCAvOS2qVhW3zh5ULbPKIerjYneoyjcaLHCbOXbbNcemGDzdnwGsxWtjjWkBmheCJVMwaTY++8Mz/M4We3scA6GtADR1WCx2nihsLyrpmIBIEXte6TeCRdbIbHon80sT4JLxVY3G8HzgFzKCX5uXRHXv2VPGyMi9nTdM4xICCbFHdjLjgm7jAS775hCJsHpWj2OOu5yXY2JR3VPEd6XL3TGtk2x8jwvROx6pmuRnxK4i9YVb40TjMGOztgD5eFH7JgrvTaoVCxLbXqPgLFURZ2X5gIWrVNIJW0EAOvuY6lYm43HugOBi80VMgnkUrvo8+yMdX3szVA5HJwRu7bHxy7oMgmHxAilfhkZASJ2Vc1G6ExWSDiguxcjZ28IXnbtbJ5g0Tqga0fskvylYgXRLZ6wY5Ynp2v1fscGMtiNZ3aSyqeNSlfAtc4uHseJdTW67hlGJGRpdjsKS02tyCsJH9Z1mJmoRIJShvP62lOnLB3rakw8wHEHDDijad6mT1Q3G2Ew2yDh7NuxBohg6+ycUyfaXrCZl11xXSsaQ7xAO6MI9ghPYgipWF/NCP4idq7jxDwbIYQaO0fEbndJA6qajUhQyjC+b1ubE1d8edmxx0qZBLIIdWv6GyvmbJyQR9yl3ynsvNfYsZ9l9zRN0HVuqYIIb1/EzlUkdOWIna9ULM/zws+nb1ZoU0ciSVaiEokq+4SZ0zWBzz2VXby+juEarYzXqRNdia57hhEJebduAABzSYnIKwmfapeIHeCMFjFh52pM7CoW8v142bFoXW6yGgqZxM0eJRicc2LbpmKTNXIUpNmfDzVq56z7sQvUSKRiXe1OPK1fWOOEZxoWcEbsyhxRAvb/fdHArIBCxZeXnT7CjROA/+aJeh/jxCIBS8U26M1uETLGiZrgZsS6EqmxYmw9Eg4RE9AdEV/CrqLJAJ3JCpmEC3lOcCThOE5Ixx6uCFy6Ud7FPewYbqlYitiJTtc9w4iEoiAfAGDqyMKu2V3YTTwrCxLO3nVaXKd3MyZ2hYm1Ui9edqwjls06ZUKsJEgvO381doDLBIoQ6uzqdSbUOoQI66IMzscukN2J/cRntNiEejOGs3Gi7XtZxK662QijxYq1+5nNSXbAY2G+Up4Ru0BmyuHgr3miPorO9GysGGB3wffkZJAzYt326SetHApGapwA4CxDaPQwr3Y2KWkgF1n4smarfSWBbwIruriHHSOdUrFxRdc+y4iAvKAAAGAuKwNv8S0O4hlnjZ39Dzg9QYkxvexNIWsPVLgZE7vCRFez0SJMV2CwiF13xzzXUCJ2PM+3mRPrCZtAEUpnLIvW5SWrBJEWyO6E53mXiJ13saRVSAWTWk/BIJgTe4nYpWkVQhrv56M1OF2rh0ImwYUDAo/fYuvXewg7FsGLlIcd4Cye9lYg75qKjTQSibOA3ZtJsdARG1LEjpkttzcVS1YngO+InTCPWcT6OsZQx3SKvaWBzxVlLjV2XZk0SsXGFSTsYowsKwucQgFYLDBXVAR+QxzChB1LfQHOdOx/d5S4GRO7olZIBTHoWTsnCDsWsQuhxq6mxQSjxQaO850SYZ2xu4ob2ozk8sVxL116gexOWs1WYSyaL7FkN771LhiEcWKqtidHjuOEdOz7W04DAM7rmxGUjQOLyOk8UrFMhEZq6gTgXmPnaVwdzVQs4L/Ojk2dCLYjFnDxHIxQKrarR+x8CbsTLmP7xIb5aB4obfQ5+oyx3yH+4mHdYkLNE/FF1z7LiAAnkUCeb0/HmouLRV5NeLCuQ+YbBgBTHMKODaNnxsSe+Gqg8BWxq2gyeK2XcoXtKztR5fPCObJ7CjQKKc7U6vHGj8f97o/hLYoQKBXLnuc4/+lNdiL0LMpnqdhEL6lYwJny+eV4DYDgRy8xkdkmYmfy77kXDky02nhnzSBDSMVGyRoig1meeAg7g9kqRH9DidgFMpMOFmFOLAk7AL4jdvEgkPpkJkAtl0JnsuJkje/RYjUtRqGExDM70dWgiF180bXPMiKhcKRjTUUdU9gJNXYuEbtuKWoMdZnD6GpM7IqvFKtQY5dmj6ZkJCigkkvA8+6GvN4o89M4wUjRKLD0yiEAgJc2HMVvJwN3JXuLIrgKO28zb11Tm/66Pn1FgtgMTW+pWMDeXMKQcPb6xmBwTp/wiNg5Hkeyxk4pkwr78zw+1ikbrZN/po+I3elaHXjeLphZ1DgYmADVmaxB2V/4giJ2dpI13tP0J0IY9RZtpBJOmLm8r7TB53a7HJZOfbMShOPqqqRR80Rc0bXPMiIh1NmVdDxhZ7LYhLvtDI+InOtIq5E+piB4mz6hN1mECzGL2HEcF3SdHdtXno/6Osb00fmYPiofNh64d+XugBYWx70JO0ckjee9z14Nthkh1Uftlr/mCcDdp++cnmleo6LecM6L9bA7ifCcWIYv4Vqvj3Iq1jFWjN18MFzr60KxWUlSyYSGDG81g8FCNXZ2vEXsGlvNws9LTHNiV4Y60rF7/TRQsFriUR4lJ10RNqpNIZP4vCklYgcJOxEQOmM7YMSOdRtKJRxSPP6AXbszfZ3sunkxKWZp2GS13O3ON9g6u0CNE64suXIwemdqUdFkwIOf7fFZQ+OaunONIqjlUmEuord0bKBxYoxUH92W/ponAPeIna/ZsN5w+th51tg5InYRrLEDnOlYTzFUF+VUrLexYmUNrXjv11MAgD4hdMQC9huMSHjZUcTODhN2zQaLUOvK0rA5SaqIlgS0B5Z92O+ngWKXIOy6dhoWsNdbL71yMF64dljE5/wSodO1zzIiIS/oDqBj1tixbsOMBEUbp/W+WYm4pbAHrhnVDWflJHl9vxCxc0mvFtW619c5t2URO//CTpgT6ycVy9AqZVg+YxQUMgl+OFyFFb+c8rrdyWp76i5ZLXdL3XEc57fOLlhfOF8RLX/NEwCQ6xKxmxJkfZ19PczHzrMr1r/nXrj4Or5op2KF5olmI3iex6d/FGPqSz/h99P1UMokuGFM95D3GYkGCmfErmufcpNdbliaHTcx8dQ4wWANFPtLm7w2W1msNuwptou+UT6yE12Nmwt74soR3cReBgESdqIgROyKi73WacUzNR7mxJ48deUQvPjnET7H67DJEK7pVc+OWAbzsiuuC67GLj+IiB0AnJWbhCcuHwQA+Puaw9hd3NBmm+MuM0U9U3f+LE+CT8X6aJ4w+G+eGJ6fghSNHJMHZQcVoWQEithFOhWb4sOkmKWeo9U5xzq1i+r0uO2DP/C3/+5Fs9GCkd1T8P295wm2PKHgbKAIPxVrslLzBADIpRKhLIBFc0/EUeMEo1dGArQKKVrNVkF4unK4ohmtZisSVTJhjjRBxAtd+ywjEqwr1tbcDFtj6PNLxcTTnDhUWFStsdUs3LF7dsQygo3Y+Zs64YuZY7tj2tBcWGw85n+8UxjTxfDXpefP8iTYVGyaD683f5Mn7O9TYMeiyXhz5ii/+/dEiNj5qLGLZPME4H2smMVqQ5Pj+KIdsSttaMXGw1VQSCV45NKB+O9d40PqhnWF1UPWtSdiZ3akYrvw1AmGZ52ds/tcvIkTntgbKHzX2bE07IiClC49I5aIT+gsIwIStRqyzEwAgKm4Y02g8BwnFioJSplwUWeCzNkR6xGxcwi7Yj/NEy1Gi3CBCNQ84QrHcVg2fSgK0tQoqW/FeX//EQtW7cbBMvtkCn/pIX+pWF2QqdgUjY+IndA84Vv4SCVcyGOphIhdm5Fi0UrFsoid8/gaHMfGce4puUiSnaQEC7AO7ZaMb+85F3dd0KdddT+CSG1PjZ3VkYqV0yk3yUPYsb+1eGmcYAzN911nt9PREUv1dUQ8Eh+Vql0QeffusFRXw1xcBPXQIWIvJ2iEVGxi+Km0bqlq1OvNKKlrxcCcJBT7jNjZhVp1sxEGsxUqeduoEuuITVbLQy68TlLJ8e4t5+CxL/dj++k6fLGrFF/sKsW5fTOE8VPe7Be0flKxQpdpgGaENC8RLZ7nXZonIvun6bsrNvKzYgHvo7jYsSap5FGbl5qiUeDpq4bAYuUxY2z3iIynEtLm7YjYCc0TFLFzi9gZzFYhYh9PqVjAWWe3t6ShzWtCRyzV1xFxCJ1lREKRz+rsOlbEzps5cajkO+rsShtaYbXxQterZ41disYp1nxZnpQ22N8bSr2ZK/2yE/HpXYX437wJuHxYLqQSDr8crxFGBXm72CQGkYoNVLPGokCuYsFgtsFstddc+ovYhYMvHzshYhfpVKyQanYen3NObHTtEGaO7YFbxveM2MzRtAiYFJPdiROhY7rVjNO1Otgc/oLtOadEA9YZe7C8CRar0yTd1Zh4REGKGEsjCL+QsBMJ5mVnKi4SeSWhUd1sFzyu48RCxdXypKLJALOVh1zKuVl5AMzLrq09iiulDQa3fYbL8IIUvD5jFDY/dCHmnNsLCUoZBuYkCnV+rvhPxQaX2mTCx2C2odWRvmXROqmEi3jNm6+InbPZI0oRO5eGA5Z2jpbVSbTw1QgSCkayOxFgEbumVjNOVNn9BftmheYvGAt6pmuRoJTBYLYJzVSAhzExebYRcQidZURC0d1hUtxBI3bh1tgBcBFrrThTq3M8p/FaB5UfoM6OpWLDjdh5+7zHLx+EPYun4Pt7z/O6pgSl/WTuPWLHUpv+hVmCUga51L5vVofW7NIRG+mLnK+uWKc9S/SbJxqibE4cLZirfvvsTqgrluGaivU2ti9ekEg4DOlmt21ybaAgY2Ii3qGzjEjI8ztmxC6Q3UkwMLFW2tAq1NcVpLWNjNm3DRSxi6ywY0glnE9xleAQQf5r7PxHwDiOa9NA0RjAw649+PKxC3a9oZLqJcrFvk/pYOOXUiLgY0cGxU4EYac3x6WHnSvD8lMAAPtchd0ZMiYm4hs6y4gEi9hZyivAm9o3YDxWmK02wZ6jXanYFNeInfeOWAYTfCU+vOxKHYKvvanYUPBrd2IKrsYOcKndcgiGaDVOAM6Ind5sFaZt8DzvjNhFKRXbarbCYLZ/RrTHiUULIWLXDh87qrFzksyiua0mp61QHEbsAGCIo85ur6Mz1mK1CdE7apwg4hUSdiIhTU8Hp9EAPA9zWZnYywmKWkca1ts4sVBgIqxOZ8KRimYAbTtiGYEidmWsxi7CETt/+EvFtoTQZepZuxWM1Um4sIgdzwMGR1rQaLHB4hB5kR4p5m3GKms+SOtgNXZMgLcYLULkLVQoYueERezq9WacrIlPqxPGMIewO1TeBLPVRsbERIeAzjIiwXGcS2dsxxgtxsyJ07Vtx4mFQrJaLnSWbj9VB6BtRyzDn5edyWJDpaOZIxQPu/ai9ZOK1QdpdwK4RoJYxC56qViVTCr4u7E6QL1LvZ3Gi5VMe+A4p/hnkbqOmopNVMmE+cANYaZjSdg5YcLucHkTDGYbFFKJMBc63uiRrkGiSgaTxYajlc1kTEx0COgsIyLOztiOIewiUV/HYHV2zQ4h5DNil+aM7uk8ImQVjQbwvL0g3XWea7SJhN0J4OwO9dY8EWkkEk4Qb6wzlq1VJZdExVcuxcOkuKM2T0gknFd7GsCezl6zvzzgdBRqnnAidMU6bmR6ZWij5mvYXjiOE2xP9pU0kjEx0SGIz7+mLgKL2JmLOoawE6ZOtKO+jpHvcYfuS9glqeTChcDTy27zsWphX7G0SvCfig2+GUFoMGARO9Y8ESULBU8vu2jV1zGYGGp0ROoEu5MOJuwAp0j1nBTy2Y4S3PXhTjz59UG/76eInRNPi5A+WfEzSswbbALF3tJGMiYmOgR0lhERuaOBwlTSMYQdi9hFwkjUtSYuI0HhVwh5q7OrajLg+TWHAQAzxvZo93pCwZePnWszQjBTMJxRIEeNnSF6NXZAWy87wcMuwvV1DM/pE6zWjnn4dSRY2tx1ti/P83jnp5MAgMomg9/3O5sn6JTrWZ8b77Vqw7qlAAB+PlZNxsREh4DOMiKicKRiO0zErrn948QYrhE7X9E6hlBnV+cUdk9+cwDNBguG5Sfj1vE9272eUEjwMVIs1GYET683oXkiCl2xQFsvO30IHbzh4Dovlud5YVZsR4zYpXqZ7fvTsRocc3R1eho/e2IiYSfgGZGO18YJBhstVuzozO9HxsREnENnGRERauxKSsDzvMirCUwkxokxQhF2robGALD+YCVW76uAVMLhuWuGtWvAezgwu5NWs9Vt1JBrDWBQdidad7EQzeYJoK2XHUvJRnrKBSNV6xSuTQYLrA7R29GaJwDvhsv//vmk8L3B7L9bluxOnEglHBJdItrxaE7sSn6q2k3IjSRjYiLOIWEnIvJu3QCOA6/Xw1pXJ/ZyAlLTHPnmCQDonu6/xoZ52RXX69FsMOPxr/YDAG4/rzcG5SW1ey2h4trx6jrJgaVh1XJpUGIz1SO9F83mCcBPxC7C5sQMVzsXVkeoVUg7pLhJFUS4/Wd0pKIZPx+rEV5vNVu9vo9BNXbuuEbt4l3YcRwnRO0Aapwg4h86y4iIRKGALCcHAGAqiv8JFEKNXYSbJ0KJ2P1j7RFUNBnQPU2Deyf2a/c6wkEpk0Lh6OJzrbNrCcHqBHCmKoWInZCKjW7ErtWjKzbazRMNepPQGZvSAdOwgHtaGQDe/eUUAOeg+FaTf2HHumJJ2Nlhor9bihrqKEWMIwn7OQPUOEHEP3SWERmhzq4k/mfGRtLuJFktF2rVAtbYOV4/VtmC/9t2BgDw7NVDRb0gCNMnXOrsQh3PxaJAbDpDtFOxnhE79m+0midcx4p15MYJwN2aprrZiC93lwIA5l/cF4D9Z+ivnIJq7Nxhqc14HSXmCRN2ZExMdAToLCMy8gKHSXE7I3ZVTQZc+srPeHvziUgsqw1mq03oboyEZxzHcZh7YR9MOisrYIcZ66A1WW3geWD6qHyc2y+j3WtoD87OWGeXpC5E+5BEpQwyR8q2Xm+KevOE0BXrEKD6KEfsXGesdtRxYgxh/JvOhA+3nYHJYsPwghRM6Ov8PTT6mUphslIq1pWOJuwuHJCFSwbn4MEpA8iYmIh7onNGJ4JGUdAdAGAubl/E7us9ZThU3gSrzYY7L+gTiaW54TpOLFIX53kX9Q1qO61ShnStArU6E9K0Cjw27ayIfH570ArCzpmC04WYiuU4DikaBWpajKhoNAjCIOo+dh4Ru2jX2DXozR3aww5wRhormgz40BE1vu3cXlC7TOzQm6xQ+ZjgYTRT84QrY3ulYf3BSlzQP1PspQSFWiHFWzePFnsZBBEUJOxERojYtXP6xK/H7YXcTIBFGpaGTWvnOLFwGdwtGT8drcbiKwbFxazRRC+WJ6GmYgEgTStHTYsRRQ4rF44DEqIUQfP0sXPanUQrFdu2xi61A3bEAs5jqWyy/x10S1Hj0iE5kEo4KGQSmCw2vw0URorYuXHrhF64YUx3n0KYIIjwIWEnMoruLGIXvrAzW23CzNU6vQlWGx9xC5DqCJoTh8NLfx6O4vrWuDEGFWrsXFOxYaQ2WbqSGZ8mKGVRE85CjZ0jysiijZooR+xsvPP4OmrzhOfNxK3jewpjsNRyqV3Y+Wig4Hmeauy8QKKOIKIDnWVERu4YK2apqoLN4N+93hd7ihuEtBrPOzv3IolgdRKBjthwSE9Qxo2oA1xr7FxSsUJqM/gLFqvdOl2rAxC9xgnAxcfO5FljF50LrFImFTzyTtXYjy8eoq3hkKSSg+ltrUKK68cUCK+xYzT4iNiZXLwOKWJHEES0iZuzzHPPPQeO43DfffcJzxkMBsybNw/p6elISEjA9OnTUVlZ6fa+oqIiTJs2DRqNBllZWXjooYdgsfh3gY8npCkpkCTYC4jD7Yz99Xit2+NopGOFObERaJzoDGgjlIpl3ZZFjohWtOrrgLYRO12UfewAZwqTCbuOaE4MABIJJ0Qb/3xOgZsAZ3V2vlKxrk0VFLEjCCLaxMVZ5vfff8fbb7+NYcOGuT1///3345tvvsFnn32GzZs3o6ysDNdcc43wutVqxbRp02AymbBlyxZ88MEHeP/99/HEE0/E+hDChuM458zYMNOxv56ocXtcqzO2e12e1DRHbupEZyAxQqlYVnN2mgm7KJkTA14idmFEGEOFCTn2WR21eQIALuificxEJeac28vteZZS9JWKNbkIO+Z/SBAEES1EP8u0tLRg5syZeOedd5Ca6jR+bGxsxIoVK/Diiy/i4osvxujRo/Hee+9hy5Yt2LZtGwBg3bp1OHjwID788EOMGDECl156KZYuXYrly5fDZPIdtbKZTLC2tDi/dLqoH6c/FPkOL7swhJ3eZMGuonoAQG6yCkB0InaRNCfuDDhTsa4GxaF3mbLUJPv/jUnEzsRq7Cxuz0cDTyHXUVOxAPDS9SOw9ZGL3aamABD8FANF7BRSCTiOrDIIgoguogu7efPmYdq0aZg0aZLb8zt27IDZbHZ7fuDAgejevTu2bt0KANi6dSuGDh2K7OxsYZupU6eiqakJBw4c8PmZtW//C0fPPkf4OnnZZRE+qtBQCBG70FOxv5+uh9nKIy9ZJcwwrG2JQsQugubEnQFvdicsEpYQQgTMs5kgWuPEAGck0eljF5rvXjh4pl47aiqWIfMScVMHGbGjNCxBELFA1K7YlStXYufOnfj999/bvFZRUQGFQoGUlBS357Ozs1FRUSFs4yrq2OvsNV+k33kH0mbfKjzWlJYCAweGeRTtR84idmGYFG9x2JyM75shFHHX6qJQYxfBObGdAafdiTMVG04ELM1jEkM0myfYhAmnj11ovnvh4Bmx68ipWF+oAtTY0ZxYgiBiiWjCrri4GPfeey/Wr18PlUoV08+WKBSAwnmBkWr9D6GPNkLELozmiS0n7I0TE/qmo6i2FQBQE8VUbEZi57swh4PT7qSdzRMeQieaqVghYmeygOd5lxq7aKZincejkEqEm4/OBDsmXxE7NieWInYEQcQC0c40O3bsQFVVFUaNGgWZTAaZTIbNmzfj1VdfhUwmQ3Z2NkwmExoaGtzeV1lZiZycHABATk5Omy5Z9pht0xGQFzhr7Hib77FEnjToTdhf1ggAGN8nA+mOjtVIp2Ldx4lRxA7wbnfChFJCe4RdFFOxLGJntvJoNlpgtdlnm0ZTbLmmmlO18k5ZYxaoK5YidgRBxBLRzjQTJ07Evn37sHv3buHr7LPPxsyZM4Xv5XI5Nm7cKLznyJEjKCoqQmFhIQCgsLAQ+/btQ1VVlbDN+vXrkZSUhEGDBsX8mMJFnpMDSKXgTSZYPISqP7adrAXP2+ctZiepBCuSSKdi2TioSI4T6+hovcyKFVKxIaQ2U7Wxi9hpXAxhWWodiHLzhEuqubP+7qgD+NgZLTROjCCI2CFaKjYxMRFDhgxxe06r1SI9PV14fs6cOViwYAHS0tKQlJSEu+++G4WFhRg3bhwAYMqUKRg0aBBuvvlmPP/886ioqMCiRYswb948KJUdJ7LEyeVQ9OoJ0/ETMBw6DHlublDvY/51E/qkA7Cb+AKRj9gxEZCmVUR8okVHRbA78eJjF0rELkklg1TCCdGzaEbsZFKJMP6K/UxVcklUf6auEbuO3jjhi2DtTihiRxBELIjrM81LL72Eyy+/HNOnT8f555+PnJwcfPHFF8LrUqkU3377LaRSKQoLC3HTTTdh1qxZWLJkiYirDg/1kKEAAMP+fUG/h/nXje+bAQBI17JUbGQjdtXUEdsGb3YnujBq1jiOc6tDi2bzBOCcMsGEXSgiNBxco3Qd2erEHywVq/cZsbM/T8KOIIhYEFezYjdt2uT2WKVSYfny5Vi+fLnP9/To0QOrV6+O8sqij2roEDR+9RVa9+0PavuKRgNOVusg4YBxvR0RO61deDUbLTBarBFL/QjjxGjqhAATb2YrD6PFCgnHCZGZUEd0pWoUQsNLNFOxgD3tWq83o8rxM41mGhZwb57oqHNiA6FW2AWbwWfzBNmdEAQRO+hMEyeohzoidvv2gef5gNv/6rA5GdotGckOMZCklkHmSKvVRbDOjokOmjrhxDXS1WKwCJ5wQOhdpq5RrahH7JTuEbtod6m6NU900lSs2iGOAxoUk7AjCCIG0JkmTlAOHAjI5bA2NMBcWhpwe880LGBP6zk7YyMp7GjqhCdSCSeIohajBS0OTziFTAJ5iGOjXBsMktTRjaCxCB0TdtG0OgGcNYRAJ26eCLIrliJ2BEHEAjrTxAkShQKq/v0B2KN2/uB5HluExokMt9dYOrYmgg0UZE7sHdc6O+ec2NAjYK6CJ9o1b0LEriU2wo7jOKQ4IsqdXtgFbJ6grliCIKIPCbs4QjXU3g0cqM7uZI0OFU0GKKQSnN0z1e21aEbsyJzYHUHYGSxhmRMzmOWJViH1OrIqkrCIXVWTQfjMaMOOr9M2T7Aau4B2J3S6JQgi+sRV80RXRz10KBpWrgoYsWNjxEb1SBGsFhgsqlar8x2x0xktmP7mFjQbLBjZPQWje6RiVPdUDMpL8ppGpDmx3nGdPqG02n8O4cxdTXNEsqLdOAE4hRz7mUa7eQIAbj+vF9bsr8CYXmlR/ywxYH+DerI7IQgiDiBhF0eomOXJgQPgrVZwUu/RlF99pGGB4CxPdhc34HBFMwCgtKEV3+4tt3++XIJh3VIwqkeqQ+ylID1B6WyeoBo7N1xTsWarveElnLmrzN8t2o0TAKBxrJmZWEdzTizj+nO64/pzukf9c8QiUI0djRQjCCKWkLCLI5R9eoNTq2HT62E6dQrKvn3bbKMzWvDTsWoAwLn9vAi7BFZj51vYldTrAQBDuiXh0iG52HGmHjvO1KOx1Yztp+uw/XSdsG3PdI3QYUsRO3e0LsKOGQyHk4rtm5UAAOiRronc4nzAInas8TraNXZdgUCTJyhiRxBELKGzehzByWRQDRqE1h070Lpvv1dht/ZABfQmK3qkazCiIKXN60KNnZ9UbGl9KwBgWH4K5l1k/wybjcfJGh12nqnHziK70DtW1YLTtXYRqJZLO23xe7gkutTY2ZiwCyO1ObJ7Kr7863j0zkyI6Pq84Zl6jUWNXWdHI3fYnQTysYty/SRBEARAwi7uUA8ZgtYdO+x1dldf1eb1z3eWAACuGZnvdaB6MKnYEoewy09VC89JJBz6ZiWgb1YC/nxOAQCgUW/GruJ67C1pxND8ZBon5oFrjZ2tnRGwkd1TA28UATxTr7GosevsqBzNE61mK3ieb/N3KdidyElEEwQRfeisHmeoHEbFrfvbdsaWNbRiywl7fd01o7p5fX8w82KZsOuWova5DQAka+S4cEAWLhyQFXjhXRBvY8USYlCz1h7aROzifL0dAVZjZ+MBk9XWZuKLyepIxVLEjiCIGEBnmjhD7bA8MR46BN7kHnX7clcpeB4Y2ysNBWne67GEiJ3O5HOCRWkDi9hFv6arM6N1ScUycaeJ85o1TyFHNXbtx7Uz3Vs6VmiekNPpliCI6ENnmjhD3r07JMnJ4M1mGI4eE57neR6f77CnYaePzvf5flZjZ7TYhKH0rpitNpQ3tk3FEqGT6JKKZT520TYYbi9ta+zie70dAblUArnUnn711hkrNE9QxI4giBhAZ5o4g+M4qAcPBgAY9jv97HYXN+BkjQ4quQSXDc31+X6NQiaMuvKWjq1oNMDG2y8yNPu1fbhNnnCI6HhvRvAUctGeFdtVUPmZPiE0T1DEjiCIGEBnmjhEqLNzMSpmTROXDM4JGBViUTtvlidCfV2qGhJqhmgXWi8jxeI9FauhVGxUYALZW8TOKETsSEQTBBF9SNjFIazOzuAYLWa0WPHNHruJsL80LIPNi/UWsWP1dYEaJ4jAuNqd6I32C3q8p2IpYhcdWAOFNy87GilGEPHD8uXL0bNnT6hUKowdOxbbt2/3u/3LL7+MAQMGQK1Wo6CgAPfffz8MBkO79hlt6EwTh7CInfH4cdj0emw8VIXGVjNyklQY72XahCcZCc4GCk+YOTHV17UfV7uTlnbMio0lnkIu3oVoR8GZirW1eY0MigkiPli1ahUWLFiAxYsXY+fOnRg+fDimTp2Kqqoqr9t//PHHeOSRR7B48WIcOnQIK1aswKpVq/Doo4+Gvc9YQGeaOESenQ1ZZiZgs8Fw6JDQNHH1qG5Becn5i9h587AjwsO9xs4h7OI8AuYpPOM9ddxRUPtNxdqfI2FHEOLy4osv4vbbb8fs2bMxaNAgvPXWW9BoNHj33Xe9br9lyxZMmDABM2bMQM+ePTFlyhTceOONbhG5UPcZC+hME6ewqF3Jrv3YdNQ+Qmz6qMBpWABI81NjV+pSY0e0jwQvNXYdLWKnJtPciMD+H/UmS5vXTJSKJYiooTNZ0GwwC1/sRsoTk8mEHTt2YNKkScJzEokEkyZNwtatW72+Z/z48dixY4cg5E6ePInVq1fjsssuC3ufsSC+r0JdGPXQIWj54Qd8e6QeVmkGhhekCDNFA+HqZedJSQNLxZKHXXthqViehzBPN97tQ5QyCaQSDlYbD7VcStNEIoS/GjtKxRJE9Jj82u+QKA8Ij++d2A/3T+7fZruamhpYrVZkZ2e7PZ+dnY3Dhw973feMGTNQU1ODc889FzzPw2Kx4K677hJSseHsMxbE91WoC6MaYo/YfWdMATTAdB+TJryR4WP6hNXGo7zBXvRJzRPtRy2XQsLZJw44R4rFdwSM4zhoFFI0GyxxH13sSKgUQdidyOL7d4MgOiLr7z4HeXnO62Mkb6A2bdqEZ599Fm+88QbGjh2L48eP495778XSpUvx+OOPR+xzIg2d2eMU1ZDBOJWUixOaTMglHK4Ylhf0e5ndSZ1HxK6yyQCLjYdMwiE7SRXR9XZFOI6DVilDs8GZfusIYkmrkDmEHQmNSKFhzRNm380TlIoliMijVciQqJIH3C4jIwNSqRSVlZVuz1dWViInJ8frex5//HHcfPPNuO222wAAQ4cOhU6nwx133IHHHnssrH3GAjrTxCmy1FTs63c2AKAwQ4pUR3o1GFjzhGeNHWucyEtRUwouQiS6CDmphOsQF2/mZec5hYIIn2CaJzrC7wZBdFYUCgVGjx6NjRs3Cs/ZbDZs3LgRhYWFXt+j1+shkbj/3UodfpQ8z4e1z1hAZ/Y4piKvDwCgj7EupPdlCBE7I2w2XjAiLnXU11EaNnIkqGRAo/17rUIKjot/wczqAOO9g7cj4avGzmK1CWl6qrEjCHFZsGABbrnlFpx99tkYM2YMXn75Zeh0OsyePRsAMGvWLHTr1g3Lli0DAFxxxRV48cUXMXLkSCEV+/jjj+OKK64QBF6gfYoBCbs4pjQxC9ADOWUnQnofi+7ZeKCh1Yw0x+OSOrI6iTSuqdeO4gnHOmM7Qtq4o6Dy0RXL6usAEnYEITbXX389qqur8cQTT6CiogIjRozAmjVrhOaHoqIitwjdokWLwHEcFi1ahNLSUmRmZuKKK67AM888E/Q+xYDO7HFMMacBYEHm7m2wtuggTdAG9T65VIIUjRwNejNqW4yCsBOmTpCwixiuYq6jeMIxQUc1dpFDSMV6GBSbXIWdlIQdQYjN/PnzMX/+fK+vbdq0ye2xTCbD4sWLsXjx4rD3KQZ0polTWk1WlOvsd//dGsqh+2lzSO9nlieudXZOc2KyOokUiSqnmOsoETAWsaMau8jhKxXLInZSCQcZCTuCIGIAnWnilNO1OgBAEmdFklmPpvXrQ3q/MH1C57Q8oXFikSfBLRXbMSJgVGMXeXw1T1BHLEEQsYbONnHKqRq7sOuVbhdhLZt/gs1j8LA/mOVJrSNiZ7PxKCMPu4jjGqXrKBEwNpkk3eF3SLQftdy7j53JSuPECIKILR3jStQFYcKuT0EmZLm5sJSXQ7dlCxIvvjio9zuFnT1iV91ihMlqg1TCITeZPOwiRWIHbJ6YPaEnUtRyXHd2gdhL6TQIws4jYmcwU8SOIIjYQmebOIUJu96ZWiROts+ha14XfDrWmYq1R+xYfV1OkopqfSJIgluNXcdIbWYlqnDnBX2Ephqi/ah9TJ4wWWmcGEEQsYXONnEKE3Y9M7RImjwZAND844/gzeag3p/hkYpl9XXUERtZXFOx8T4nlogeKh8RO6OZxokRBBFbSNjFKUKNXYYW6lGjIE1Ph62xEfrffw/q/ax+ijVPMKsTapyILK7p147SFUtEHl+pWCFiR1FygiBiBJ1t4pAGvUmY89ozXQtOKkXixIkAgKZ164LaB7M7cUbsHMKOGiciiqvdiYa6TLss7GdvMHlG7Kh5giCI2EJnmziERetyklRCFCiRpWM3bARvbTuP0hMWsatxNE+Qh110SFDKXb6niF1XxafdiZWaJwiCiC10tolDXNOwDO3YMZAkJsJaU4PWPXsC7oNF7JoMFpgsNpSSh11UcG2YoFRs14XV2FlsPMxW57QJVmNHETuCIGIFnW3iEEHYZTqFHadQIOGiCwEE1x2brJZDKrEPpK/VGWmcWJRIdInYdZSuWCLysBo7ANC7pGOdETv63SAIIjaQsItDTjKrkwz32bBCOnbdOvA873cfEgkn2FkcrWyBwWwDxwG5ySTsIomb3Ql1xXZZ5FJOuJFyHStGkycIgog1dLaJQ05Vt03FAkDCueeCU6thLiuD4eDBgPth6dg9xQ0AgOxEFaWEIgylYgkA4DjO6/QJo8X+PQk7giBiBZ1t4gye573W2AGARK1GwnnnAQCag5gdm+FooNhb0gCA6uuigVImFS7arh2yRNfDm5cdi9jRDRVBELGCzjZxRmWTEa1mK6QSDgVpbTtYhXTs+g0B98XGiu0ubgRAwi5a3D+5P2aO7Y7uXn5eRNdB46Uz1kjCjiCIGEMhhjjjZE0LAKB7mgZyL6amCRdeAMjlMJ04AeOJE1D26eNzX2ysGLM8ocaJ6HDXBb5/BkTXgaViXb3sqMaOIIhYQ2ebOMNXGpYhTUyEtnAcALunnT9YxI5BHnYEET1UFLEjCCIOoLNNnMEaJ3qmexd2AJA4cRIAoHmD/3Rshoew60ZTJwgiaqjl9tOp3tRW2JHdCUEQsaLdws7a0oLmDRtgPHEiEuvp8njzsPMkceLFAMfBsG8fzBUVPrdLc6RiGVRjRxDRw9u8WGqeIAgi1oR8tim5737UffgRAMBmMOD09GtRcv8CnLzyKjStDW6OKeGbUz487FyRZWRAPXIkAKB5o+90rGcqNo8idgQRNdhYMYOZ7E4IggiOLSdqIr7PkM82+j/+gObs0QDsnZk8eAzY/htyHnsUNW+9FfEFdiUsVhuK6uyjv3zV2DESJ04E4D8dm+ESsctMVAp2DARBRB613N6L1uqleYIidgRBeOPWd3/H+c//iNc2HkOZY0JUewn5bGNrboY0ORkAoPvlZyRNmWL3V7vgApjOnInIoroqJfWtsNh4qOQS5CSp/G6bOMku7PTbf4e1sdHrNq4RO0rDEkR0USvsp1NvzRNUY0cQhDe2PToRswp7YPX+Cpz//I+4ecVv+HZvmXBTGA4hCzt5Tg5ad++GTa9Hy8+/QDthAgDA2tQEiUIR4N3uvPnmmxg2bBiSkpKQlJSEwsJCfP/998LrF154ITiOc/u666673PZRVFSEadOmQaPRICsrCw899BAsFkuohxUXsDRsz3QtJI7xRL5Q9OgBZb9+gNWKlk2bvG6jUUihchR0U0csQUQXqrEjCCJU0rQK3HZeb3x/73n4at4E9M7Q4vGv9mPssxvw5NcHcLCsKeR9huxjl3rLLJQ+9DdINBrI8/KgGTMGAKD//Q8o+/cPaV/5+fl47rnn0K9fP/A8jw8++ABXXnkldu3ahcGDBwMAbr/9dixZskR4j0bjFChWqxXTpk1DTk4OtmzZgvLycsyaNQtyuRzPPvtsqIcmOsKMWD+NE64kTp4E47FjaN6wEclXXtnmdY7jkK5VorShlTpiCSLK+BsppvDiSUkQBOHKkG7JyExUIkWjwJubT+DTP4rxn21nMKp7Cp65eij6ZycGtZ+QhV3ajBlQDx0Gc0U5EsaPByexn7DkBfnIvO/ekPZ1xRVXuD1+5pln8Oabb2Lbtm2CsNNoNMjJyfH6/nXr1uHgwYPYsGEDsrOzMWLECCxduhQPP/wwnnzySShCjCCKzSmHOXGg+jpGwsSJqHnjTbT88gtsBgMkqrbp24wEBUobWikVSxBRRvCxc62xszpSsXISdgRBeMdstWH9wUp8+kcxfjlWg6H5yVjyp8H404g81LaY8M91R/DXj3Ziw4ILgtpfWGcb9dAhSJo8GRKtFrzVCsOhQ9CMHAnNqFHh7A6APfq2cuVK6HQ6FBYWCs9/9NFHyMjIwJAhQ7Bw4ULo9Xrhta1bt2Lo0KHIzs4Wnps6dSqamppw4MABn59lM5lgbWlxful0Ya87kjjNiROC2l41aBBkebngW1uh27LF6zaTB2UjVSPHhL4ZEVsnQRBt8ZaKNZodwo4idgRBeGHx//ZjzDMb8OiX+9ArQ4vv7jkPX/51Am4Y0x0ahQwFaRo8Ou0snKhuCXqfIUfsKp59Fqr+/ZFy7bXgrVacuXkWWnftAqdWo+DNN6EdOyak/e3btw+FhYUwGAxISEjAl19+iUGDBgEAZsyYgR49eiAvLw979+7Fww8/jCNHjuCLL76wr6Wiwk3UARAeV/jxd6t9+1+oWb7ceUxmU0hrjhbMnDjYiB3HcUicOAn1//kPmtdvQOLFF7fZZv7F/TDvor7gOP81ewRBtA+NF7sTitgRBOGPY1UtePJPg3HJkByfTVZpGgU+uX1c0PsMWdg1r12H5Cv+BABo+fFHmEtK0Hv1d2j8+mtUv/wytJ98HNL+BgwYgN27d6OxsRH//e9/ccstt2Dz5s0YNGgQ7rjjDmG7oUOHIjc3FxMnTsSJEyfQx8+M1ECk33kH0mbfKjzWlJYCAweGvb9I0GqyoqzRAMC/h50niZPswq7lxx/BWyzgZG1/pCTqCCL6qPw1T0ipK5YgiLZ8HIRgk0klGNc7Peh9hnwbaa2vhyzTntZr2fwTEi+ZCmWvXkiZPh3Go0dD3R0UCgX69u2L0aNHY9myZRg+fDheeeUVr9uOHTsWAHD8+HEAQE5ODiorK922YY991eUBgEShgDQhwfmlDV5IRYvTtfZoXbJajlRt8LWBmtGjIE1JgbWhAfodO6O1PIIgAuC9eYIidgRB+Gb5j8fx6e/FbZ7/9PdivLkpvIleIZ9tpBnpMB4/Ad5qRcsvv0A7fjwAgG9tBSJwV2qz2WA0Gr2+tnv3bgBAbm4uAKCwsBD79u1DVVWVsM369euRlJQkpHM7Cs76utBEJieTIeGiiwAEnh1LEET0YJMn9N4MiqnGjiAIL3z8WxH6ZLW97vfLTsBHv4XnDRzy2Sbl6mtQev/9OHnFnwAOgrBr3bsXyl69QtrXwoUL8dNPP+H06dPYt28fFi5ciE2bNmHmzJk4ceIEli5dih07duD06dP4+uuvMWvWLJx//vkYNmwYAGDKlCkYNGgQbr75ZuzZswdr167FokWLMG/ePCiVygCfHl8EM0rMF8ysuHnjBvA8H9F1EQQRHCxi522kGPnYEQThjeoWI7IS2zpapGuVqGr2HuQKRMg1dpl3z4eyXz+YK8qRdMklTlNiiRTpd9we0r6qqqowa9YslJeXIzk5GcOGDcPatWsxefJkFBcXY8OGDXj55Zeh0+lQUFCA6dOnY9GiRcL7pVIpvv32W8ydOxeFhYXQarW45ZZb3HzvOgonQ2yccEU7YQI4tRqWsnIYDh6E2mEVQxBE7PCssbPZeJit9hstmhVLEIQ38pJV+ONMHQrS3IcI/HGmDtlJ4QWoQhZ2AJB0ydQ2z6VcfVXI+1mxYoXP1woKCrB58+aA++jRowdWr14d8mfHG4KHXZDmxK5IVCoknDsBzes3oGXjRhJ2BCECag8fO9YRC1DEjiAI79wwpjuWfHMQZiuP8X3sDRJbjtdi2feHcNt5vcPaZ1jCTrd9O+refQ/GkycBAMo+fZA+5y/QnH12WIsggDO1dn++nunhNXIkTpqE5vUb0PDlV0i/805IOlgqmiA6Ok67E7ugM7rMeqRZsQRBeOPO83ujXm/C41/th9nqnC191wV9MO+ivmHtM2Rh1/j11yh79DEkTp6EtJtuAgDod+3Emdl/Qd6zzyL5isvDWkhXhud5NLaaAQAZCeEJssSpUyF78SVYystR//EnSHexcyEIIvqwGjuT1QaL1SbU1wGAXEqWQwRBtIXjOCy89Czcc3E/HK9qgUouRc8MTbtuBkMWdjVvvY2sBx9A+q23Cs+lzboZte+9j5o33yRhFwYmqw0Wm70WR6MM74cpUamQec/dKH9sEWrfegsp06+BNCkpksskCMIPrMYOsNfZsY5YpUxCXpIEQfhFq5RheEFKRPYVsrAzFxcj0WGv4UrixReh+qWXIrKorobO6Lyz18jDV+nJV12Fuvffh/HYcdS+8w6yHnggEssjCCII7AIO4Hl3YUf1dQRB+GNvSQO+21uO0oZWIR3LePvm0EvcQj7jyHJzodu6rc3zuq1bIcv1bQpM+EZntAAAVHIJZO3wu+KkUmTevwAAUPd//4G5vDwi6yMIIjAcxzktT0w2pzkx1dcRBOGDr/eUYfqbW3C8qgXrDlTCYuVxrLIFW07UIlElD2ufIUfs0mffispnnoHh8CFoRo4EAOh37kLjl18i+9FHw1pEV4cZmmoVYfWyuJFw0YVQnz0arX/sQPXrryPvmWfavU+CIIJDLZdCb7K2ScUSBEF4440fj+PxywdhVmFPDH5iDRZfMRgFaWo8+uU+ZHrxtwuGkM84qTfeiLwX/wnj0WOofHYZKp9dBuOxY+j20otIveH6sBbR1WlxROzCra9zheM4ZD/4IACg8cuvYDx2rN37JAgiOATLE7NViNhRKpYgCF+cqdXjogFZAAC5TAK92QKO4zDn3F74ZHtRWPsMz8du8mQkTZ4c1gcSbdGb7MIuEhE7AFCPGIHEKVPQvG4dqv75IgreejMi+yUIwj+u82KtNjInJgjCP8lqOXQODZCTpMKRimYMzElCY6sFBpfxhKFAZ5w4gDVPaJWREXYAkHn/fYBUipZNm6D//feI7ZcgCN+oFc6xYjROjCCIQIzplYZfjtUAAC4bmosl3xzEI5/vxT2f7ML4vulh7TMoJXFkzFggyHb9Ab+1bawg/MOaJyIp7JS9eiHlumvRsHIVKv/xD/RcuZIsFwgiyjDLE73JConjz40idgRB+GLJlYOFso35F/WFTMph55l6XDokB3df3C+sfQalJLIXLgxr50RwOFOxke2ey5w3D41ffwPDnr1oXrceSVOnRHT/BEG4o3aZFytzKDuK2BEE4Q2L1YaNh6pwfv9MAIBEwuGvF4Y3bcKVoIRdOHNgieBpcaRiNRGqsWPIMjORfuutqHnjDVS//DISJ14MThbZzyAIwomrsFM6rIvI7oQgCG/IpBI89tU+bFhwQUT3S7eScQCL2CVEoCvWk7S/zIY0NRWmU6fQ8MUXEd8/QRBOhHmxJiuMDqNRRTu8KQmC6NwMz0/BwbKmiO6TzjhxAGue0ESwxo4hTUhAxty7AAA1ry+HrbU14p9BEIQdlavdidn+d62U02mWIAjv3FzYA09/dwgfbDmNHWfqcai8ye0rHCgvFwcIzRMRrrFjpNxwA+o++D+YS0tR958PkXHH7VH5HILo6rjV2EkdNXYUsSMIwgd3f7ILAPDkNweE5zgAvOPfk8umhbxPEnZxAPOwiWRXrCsShQKZ99yNsocfQe077yD1z9dBmpISlc8iiK6Mq48dE3TUPEEQhC9+/ttFEd8nnXHigEiOFPNF0uWXQ9m/P2zNzah5552ofQ5BdGWEyRMmK0xWmhVLEIR/8lM1fr/CISglUXL33cEv8rXXwlpIVyaSI8V8wUmlyHpgAYrvvAv1//kQaTfdBHlubtQ+jyC6Iiq5a40djRQjCMI/n+8o8fv69NH5Ie8zKGEnSUgMecdE8OijnIplaM8/H5qzz4b+jz9Q/frryHvmmah+HkF0NVxr7ExWR/MECTuCIHzwlEttHQBYbDxazVbIpRKo5dLoCbu8Zc+GvGMieISRYlFMxQIAx3HIevABnL7hRjR++RXSZ8+Gsm/7zRAJgrCjcRkpZrJQxI4gCP/sfXJqm+dO1eiw6Kt9uOP8PmHtk844cYBzpFj0a3HUI0YgYdJEwGZD9SuvRP3zCKIroXJpnmBjgihiRxBEKPTK0OLhSwa2ieYFS1ghoqY1a9G0Zg3M5WXgzWa313qTCW7IxKJ5wpWs++5Dy4aNaN6wEaaiIii6d4/J5xJEZ4c1T+hNzogdCTuCIEJFKuFQ1WQM670hn3Hq/u8/KH/0UcjS02E8eAjqocMgS0mBubgECeedH9YiujI8zwt2J9FsnnBF2bcvtOedB/A86j9ZGZPPJIiuAKuxM5idETtKxRIE4Yv1ByvdvtYdqMCH287g/lW7MbpHalj7DDlEVP/JJ8hZsgTJl09D45dfIv22OVAUFKD61VdhbWgMaxFdmVazFTxv/z4hys0TrqTOuBG6n39Gw+efI/OeuyFRq2P22QTRWXFrnrCQ3QlBEP654z9/uD3mAKRplRjfJx2Lpp0V1j5DVhLm8nJoRo6wL0Clgk2nAwAk/+lPOH39Dch54vGwFtJVYY0THAeoYngBSDj/fMjz82EuKUHTd98h5dprY/bZBNFZUSvs0blWsxVGi/1vmyJ2BEH44lQYkyUCEfIZR5aRAWujPTInz81F6+49AABTSSn4yK6tS8AaJzRyKSQSLmafy0mlSL3xBgBA3Ucfg+fpp0cQ7UXtqJNtpRo7giBEIuQzjmbcWDT/8CMAIPmaq1H53HMo+stfULpgARInTYz4Ajs70R4n5o/ka64Bp1TCeOgQWnftjvnnE0Rng6VijRYbWs0UsSMIwj93/WcH3tx0os3zb20+gb9+tCOsfYasJnKXLAFs9jvRtJkzIU1JQeuu3Ui46GKkXv/nsBbRlRE87EQQdrLUVCRNm4bGL75A/UcfQTNqZMzXQBCdCSbsAKCp1X7TRjV2BEH4YvvpOtw3uV+b5y8ckIl//3wyrH2GfCtpqagApM4TVfK0achZ9BhSb5oJS01NWIvoyjgjduKc/FNnzgAANK1bB0t1tShrIIjOgmvataHVBIAidgRB+EZntEAubXuOkEkkaDZYwtpnyGec45Mmw1pX1+Z5a0MDjk+aHNYiujJ6R8ROEyMPO0/UgwdDPXw4YDaj/rPPRFkDQXQWJBIOKrn9tGowU40dQRD+GZiTiG/3lLd5/ps9ZeiXnRDWPkNXEzxvb+H0fFqvB6dUhrWIrowwdUIhXrom9aaZaN2zBw2rPkXG7beDk8tFWwtBdHTUcqkg6gCK2BEE4Zu7L+6Huz7cgTN1OozvkwEA2HK8Bl/vKcPymaPC2mfQwq5y2XP2bzgO1a+8ColKJbzG22xo3bsHqoEDw1pEV0bM5glG4tSpkD73d1gqK9G88QckXdJ2dh1BEMGhUchQr3dO5FF4SbMQBEEAwKRB2fjXrNFY/uMJfL9vP1RyCQbmJOHD28ZiXO/0sPYZtJowHDpk/4bnYTx61C2qw8nlUA0YiPS/zA5rEV2ZWI8T84ZEoUDKddei9q23Uf/xxyTsCKIdsFQsQyknYUcQhG8uHpiNiwdmR2x/QauJHv/3AQCgbOGjyH7sUUgTwsv9Eu60GGM7TswXqddfj9p3/g399u0wHDkC1YABoq6HIDoqao+yCqWUumIJgvDOnuIG2HgeI7u7jw/bVVQPqYTDsPyUkPcZ8q1k3rJnBVFnrqiAuaIi5A8lnOgdwi6W48S8Ic/NReKkSQCAsr89DJteL+p6CKKj4mp5AlDEjiDiieXLl6Nnz55QqVQYO3Ystm/f7nPbCy+8EBzHtfmaNs05LeLWW29t8/oll1wS9Hqe+N9+lDca2jxf2WTA4/87ENrBOQj5jMPbbKhevhxHzj4Hxy+eiOMXT8SRc8ag+o03wNtsgXdAuNEiclesK9mPPAxpejqMR46gbOGjNI2CIMJA5SHsqMaOIOKDVatWYcGCBVi8eDF27tyJ4cOHY+rUqaiqqvK6/RdffIHy8nLha//+/ZBKpbjuuuvctrvkkkvctvvkk0+CXtOxqhYMyUtu8/zgvGQcr2wO7QAdhHzGqX7pZdR/9DGyHliAXl9+gV5ffoHM++9D/YcfofqVV8NaRFdGL7KPnSvy3Fzkv/YqIJejee1a1L79tthLIogOh2vETi7lYjoqkCAI37z44ou4/fbbMXv2bAwaNAhvvfUWNBoN3n33Xa/bp6WlIScnR/hav349NBpNG2GnVCrdtktNTfW6P28oZBJUtxjbPF/VbIA0zHNHyMKu8auvkPv0UqTeeCNUAwZANWAA0mbMQO7SJWj88suwFtGV0cVB84QrmlGjkPP4IgBA9cuvoPmHH0ReEUF0LFxr7ChaRxDRRWeyoNlgFr6MFqvX7UwmE3bs2IFJjpIjAJBIJJg0aRK2bt0a1GetWLECN9xwA7RardvzmzZtQlZWFgYMGIC5c+eitrY26PWf1y8Tz685jCaDs5O+sdWM59ccwXn9MoPejyshqwlrYyMUvXq1eV7RqzesjY1hLaIrI/jYxUHEjpH65z/DePgI6j/+GGUPPoSeq1ZC2a/tyBOCINqicRV25GFHEFFl8mu/Q6J01qLdO7Ef7p/cv812NTU1sFqtyM527z7Nzs7G4cOHA37O9u3bsX//fqxYscLt+UsuuQTXXHMNevXqhRMnTuDRRx/FpZdeiq1bt0IaROPUY5edhT+/vRUTnvsBg/OSAAAHy5qQkajES9ePCPh+b4Qs7JQDB6L+o4+Rs+gxt+frP/oIyoHUSRkqTmEXHxE7RvbCR2A8dgz6339H8bz56PXpKkhTUsReFkHEPa41djQnliCiy/q7z0FeXjfhcbRuplasWIGhQ4dizJgxbs/fcMMNwvdDhw7FsGHD0KdPH2zatAkTJ04MuN+cZBXW3HcevtpVhkPlTVDJJbhudAH+NCLP66ixYAhZTWQ9+ACK75oL3datUI8YDgBo3b0HlvJyFPyLarJChfnYxUPzhCucXI5ur7yM09deB3NREUoXLEDBW2+BUyjEXhpBxDWuNXYUsSOI6KJVyJCoCjwtKSMjA1KpFJWVlW7PV1ZWIicnx+97dTodVq5ciSVLlgT8nN69eyMjIwPHjx8PStgB9uv/OT1TkZeigtlqb1rcdMQ+u33yoND97UJWE9oxY9Dn++9R//HHMJ08CQBInDwJqTfOgDw7K+QFdHXiMRXLkKWlIf+N5Th94wzotmxF2SOPIO+FF8CRLxdB+ETtFrEjYUcQ8YBCocDo0aOxceNGXHXVVQAAm82GjRs3Yv78+X7f+9lnn8FoNOKmm24K+DklJSWora1Fbm5uUOsqqtXjjv/8gSOVzeAA8ABcWyZOLpvm452+CVnYmcvKIMvNRdb993l9TZ6XF/IiujLCSLE4i9gxVAMHIv/VV1H817+iafX3kCQlIWfxYnBe5gUTBOHRPEHCjiDihgULFuCWW27B2WefjTFjxuDll1+GTqfD7Nn2qVmzZs1Ct27dsGzZMrf3rVixAldddRXS091HfLW0tOCpp57C9OnTkZOTgxMnTuBvf/sb+vbti6lTg5vg9NQ3B1CQpsHHt4/DeX//AV/Nm4CGVjOe/u4QHrvsrLCOM+SzzvFJk2Gtq2vzvKW+HscnTQ5rEV0Vq40XhoXHW42dKwnnnYtuz/8d4Dg0rFyF6pdfEXtJBBG3qChiRxBxyfXXX49//OMfeOKJJzBixAjs3r0ba9asERoqioqKUF5e7vaeI0eO4JdffsGcOXPa7E8qlWLv3r3405/+hP79+2POnDkYPXo0fv75ZyiVyqDWtLOoHgsm90eaVgEJZ7dHOqdnGh6eOgBPfh2eQXHoaoLnAS/RGl6vBxfkgRB2WLQOcO+ki0eSLr0U1qZmVCxejNq334Y0OZlmAxOEF6grliDil/nz5/tMvW7atKnNcwMGDPBp1q9Wq7F27dp2rcdq44XJU6laBSqbDOiTmYBuqWqcrGkJa59BC7vKZc/Zv+E4VL/yKiQqlfAab7Ohde8eqAYODGsRXRW9Y+qETMJ1iDv71Ov/DGtjI6pffBFVzz8PaXIyUqZfI/ayCCKuUFNXLEEQQTIgJxEHy5tQkKbBiIIUvL35JBRSCT7eXoTuaZqw9hm0sDMcOmT/hudhPHoUnNzZhcLJ5VANGEgRnBBpcTROaBTSDlOzln77bbA2NKDu3XdR/vjjkKalIvGii8ReFkHEDSqK2BEEESTzL+6HVkf2bsHk/vjLB7/jure3IlWjwOs3jgxrn0ELux7/9wEAoGzho8h+7FFIExLC+kDCiXOcWPzW13nCcRyyHnoQ1sYGNH7+Bcr+9jB6/fczKHr0EHtpBBEXkN0JQRDBckF/53SJnhla/PDAhWjQm5Cslocd8An5rJO37NmIibo333wTw4YNQ1JSEpKSklBYWIjvv/9eeN1gMGDevHlIT09HQkICpk+f3saDpqioCNOmTYNGo0FWVhYeeughWCwWz4+KS3SOVGxHEnaAXdzlLl4M9ciRsDU3o+See2FrbRV7WQQRF5DdCUEQ7SFFo2hXFk/Us05+fj6ee+457NixA3/88QcuvvhiXHnllThwwN4Jcv/99+Obb77BZ599hs2bN6OsrAzXXOOs6bJarZg2bRpMJhO2bNmCDz74AO+//z6eeOIJsQ4pJAQPuzhvnPAGp1Cg28svQZqWBuORI6h4aonPAlOC6Eq42p2QsCMIItaIeta54oorcNlll6Ffv37o378/nnnmGSQkJGDbtm1obGzEihUr8OKLL+Liiy/G6NGj8d5772HLli3Ytm0bAGDdunU4ePAgPvzwQ4wYMQKXXnopli5diuXLl8NkMvn8XJvJBGtLi/NLp4vVIbuh64CpWFfk2dno9uI/AYkEjV99hYbPPhN7SQQhOtQ8QRCEmMTN7aTVasXKlSuh0+lQWFiIHTt2wGw2Y9KkScI2AwcORPfu3bF161YAwNatWzF06FC3ob5Tp05FU1OTEPXzRu3b/8LRs88Rvk5edln0DswP8TpOLBS048Yh8777AACVTz+D1v3h+e4QRGeBDIoJghAT0RXFvn37UFhYCIPBgISEBHz55ZcYNGgQdu/eDYVCgRSPwfPZ2dmoqKgAAFRUVLiJOvY6e80X6XfegbTZtwqPNaWlgAhWLfE8TiwU0m+bg9bdu9Hyww8ovfde9Pr8v5B6/NwIoqtANXYEQYiJ6GedAQMGYPfu3fjtt98wd+5c3HLLLTh48GBUP1OiUECakOD80mqj+nm+6KjNE55wEgnynlsGeUEBzKWlKP3b38BbrWIviyBEwXXyhEIq+imWIIguhuhnHYVCgb59+2L06NFYtmwZhg8fjldeeQU5OTkwmUxoaGhw276yshI5OTkAgJycnDZdsuwx2yaecc6J7dgROwCQJiUh/9VXwCmV0P30M6r++aLYSyIIUZBKOCEFS6lYgiBiTdyddWw2G4xGI0aPHg25XI6NGzcKrx05cgRFRUUoLCwEABQWFmLfvn2oqqoStlm/fj2SkpIwaNCgmK89VHSCQXHHjtgxVGedhdxnnwEA1L37Lhr++1+RV0QQ4sDSsZSKJQgi1oiqKBYuXIhLL70U3bt3R3NzMz7++GNs2rQJa9euRXJyMubMmYMFCxYgLS0NSUlJuPvuu1FYWIhx48YBAKZMmYJBgwbh5ptvxvPPP4+KigosWrQI8+bNC3oAr5iw5omEDp6KdSV52jSYTp1Gzeuvo/zJpyAv6A7t2DFiL4sgYopaLkVjqxkK6oolCCLGiKooqqqqMGvWLJSXlyM5ORnDhg3D2rVrMXnyZADASy+9BIlEgunTp8NoNGLq1Kl44403hPdLpVJ8++23mDt3LgoLC6HVanHLLbdgyZIlYh1SSAgjxTp484QnGfP+CtPJk2havRol99yDXqtWQtGzp9jLIoiYoVFQxI4gCHEQVditWLHC7+sqlQrLly/H8uXLfW7To0cPrF69OtJLiwlspFhnitgBjskUzz4DU2kJDHv2oviuuei58hPqlCW6DKyBgmrsCIKINXTWERHWFdtZauxckahUKHj9dcjycmE6fRol994H3mwWe1kEEROyk+ylIJmJ8V8SQhBE54KEnYh05JFiwSDLzETBm29CotFA/9tvqFiylMaOEV2CpVcNwRszR2FMzzSxl0IQRBeDhJ2IsOaJju5j5w/VgAHI++c/AI5Dw2efoe6DD8ReEkFEnfxUDS4bmguJJPxB3gRBEOFAwk5EWjrJ5IlAJF50EbIe/hsAoOrvz6P5xx9FXhFBEARBdE5I2IkIa57ojDV2nqTdcgtSrrsO4HmUPfAgDEeOiL0kgiAIguh0kLATCZPFBrPVXm/WmVOxDI7jkPPE49CMGwebXo/iuXNhqakRe1kEQRAE0akgYScSrHECcHpedXY4uRz5L78ERY8esJSVo2TefNgMBrGXRRAEQRCdBhJ2IsHmxCpkEsi70KBwaUoK8t96E5LkZLTu2YPyRx+jTlmCIAiCiBBdR1HEGZ1xnFiwKHv1Qv4rrwAyGZpWr0bDypViL4kgCIIgOgUk7ERCGCfWRdKwnmjHjUX2Qw8CACqf+zuMJ06IvCKCIAiC6PiQsBMJvbHrRuwYqTffDO2ECeCNRpQ++BBsJpPYSyIIgiCIDg0JO5Ho6hE7AOAkEuQuexbSlBQYDx1C9SuviL0kgiAIgujQkLATCeZh1xWsTvwhz8pC7tNLAQB1774H3bZtIq+IIAiCIDouJOxEQsfGiXUBc+JAJE6ahJQ//9luXvzwI7A2NAiv8VYrWn76CSV334PTN86AqaREvIUSBEEQRJxDqkIkmI+dppOPEwuW7Ecehn77dphOn0b54ieR/fDf0PDFl2j44nNYysqF7Urm/hU9PvkE0gStiKslCIIgiPiEInYioWdzYiliBwCQaDTIe+EFQCZD89q1OD5xEmpefx2WsnJIkpOROnMmZJmZMB47hrJHHgZvs4m9ZIIgCIKIO0jYiYSQiu3iNXauqIcOQeY999gf8Dw0Y8ci74UX0O+nzch5fBHyX38NnEKBlg0bUfP66+IuliAIgiDiEFIVIqETInaUinUl/fbboBo0CIqCfCh69HB7TT18OHKWPIXyRxai5o03oezXD0mXXirSSgmCIAgi/qCInUiwiJ2GInZucByHhHMntBF1jJSrrkLa7NkAgLKFj8Jw8GAsl0cQBEEQcQ0JO5FgEbsEap4ImawHH4D2vPPAGwwonjcflpoasZdEEARBEHEBCTuRELpiqXkiZDipFN3++Q8oevaEpbwcpfcvAG+1ir0sgiAIghAdEnYioTfRSLH2IE1KQv4bb0Ci0UD/+++o/fcKsZdEEARBEKJDwk4kdDRSrN0oe/dC9qJFAIDq115D6779Iq+IIAiCIMSFhJ1I6GikWERIvvoqJF5yCWCxoOzBB2HT68VeEkEQBEGIBgk7kdAbyccuEnAch9wnF0OWnQ3TmTOoXPac2EsiCIIgCNEgYScCPM87I3aUim030pQU5P397wDHoeGzz9C8YYPYSyIIgiAIUSBhJwIGsw023v49+dhFBu24sUif8xcAQPmix2GurBJ5RQRBEAQRe0jYiQCL1gGARk4Ru0iRec89UA46C9aGBpQ/+ih4iyXwmwiCIAiiE0HCTgRcO2IlEk7k1XQeOIUC3V54AZxKBd2vv+L45CmoeestMjAmCIIgugwk7ERAR40TUUPZpw/ynlsGaUoKLOXlqH75FRy76GKULngA+h07wPO82EskCIIgiKhBwk4EqHEiuiRdcgn6bt6EvL8/B9XwYYDZjKbVq3Fm5k04c/PNMJeXi71EgiAIgogKJOxEgMaJRR+JUonkK69Er1Wr0PO//0XytdPBqVRo/WMHTl19DVp+/kXsJRIEQRBExCFhJwI0Tiy2qIcMRt7TT6P31/8TmiuK77gD1a++SjNmCYIgiE4FCTsRaGEROyWlYmOJont39PzkE6TccD3A86h5400UzbmNmisIgiCITgMJOxHQG1mNHUXsYo1EqUTuk08i74UXwGk00G/bhlNXX4P6zz6DzWgUe3kEQRAE0S5I2ImAzsS6YiliJxbJV1yOXp99CkXfPrBUV6Pi8Sdw/OKJqF6+HJb6erGXRxAEQRBhQcJOBKh5Ij5Q9umDXp99hqyHH4YsLxfW2lrUvPY6jl94EcoXPwlTcbHYSyQIgiCIkCBhJwJ6itjFDRK1Gumzb0XftWuR949/QDV4MHijEQ2rVuHUtdfBUl0t9hIJgiAIImhI2IkAa54gg+L4gZPLkXz5NPT872fo/n8fQNmvL2yNjaj654tiL40gCIIggoaEnQjoTdQ8Ea9wHAftmDHIffppAEDjV1+hdfducRdFEARBEEFCwk4EaKRY/KMePhzJV18NAKh4+hnwNpvIKyIIgiCIwJCwEwGdkUaKdQSyHlgASUICDPv3o+Hzz8VeDkEQBEEEhISdCDC7Ew1F7OIaWUYGMubPAwBUv/gSrE1NIq+IIAiCIPxDwk4EWI1dAnXFxj1pM2dC0acPrPX1qH7tdbGXQxAEQRB+IWEnAuRj13Hg5HLkPPYoAKD+449hOHrU7XWbyQTdtt/Q+N130G3bBsPRo7DU1dEMWoIgCEIUSFmIgNA8QcKuQ6AdPx6Jkyejef16VD79DHKXPIWWX36F7uefofv9d/B6fds3SSSQpacj7S9/Qdqtt4DjuNgvnCAIguhykLKIMVYbj1YzGRR3NLIefhgtP/0E/fbtOHHJpW6vSTMyoOzZE5aGelhramFtaABsNliqq1H197/DUlGOrIcfBiehADlBEAQRXUS90ixbtgznnHMOEhMTkZWVhauuugpHjhxx2+bCCy8Ex3FuX3fddZfbNkVFRZg2bRo0Gg2ysrLw0EMPwWKxxPJQgobV1wFkd9KRUOR3Q8Zcx++dXA7N2LHIfGABen35Bfr9tBk9PvwP+nz7Lfpv24qB+/ai70+bkfXQgwCAug/+D2UPPwLebBbxCAiCIIiugKjKYvPmzZg3bx7OOeccWCwWPProo5gyZQoOHjwIrVYrbHf77bdjyZIlwmONRiN8b7VaMW3aNOTk5GDLli0oLy/HrFmzIJfL8eyzz8b0eIKBjROTcIBSRhGcjkT6nXci4aKLoMjPh8Tl99MTTi6HPCsL6XPmQJaZibJHH0PTN9/A2tiA/JdfhsTl95cgCIIgIomowm7NmjVuj99//31kZWVhx44dOP/884XnNRoNcnJyvO5j3bp1OHjwIDZs2IDs7GyMGDECS5cuxcMPP4wnn3wSCoUiqscQKq7jxKjuqmPBcRxUAwaE9J7kP/0J0uRklNx7H3Q//Yyi2X9BwdtvQZqSEp1FEgRBEF2auAoZNTY2AgDS0tLcnv/oo4+QkZGBIUOGYOHChdC7FKtv3boVQ4cORXZ2tvDc1KlT0dTUhAMHDnj9HJvJBGtLi/NLp4vC0XhHT40TXY6ECy5A9/fehSQ5Ga179uD0TTfBVFIi9rIIgiCITkjcqAubzYb77rsPEyZMwJAhQ4TnZ8yYgR49eiAvLw979+7Fww8/jCNHjuCLL74AAFRUVLiJOgDC44qKCq+fVfv2v1CzfLnwuMJsivTh+ETH5sRS40SXQjNyJHp++B8U3XY7TMdP4PS116HbK69AO3aM2EsjCIIgOhFxI+zmzZuH/fv345dffnF7/o477hC+Hzp0KHJzczFx4kScOHECffr0Ceuz0u+8A2mzbxUea0pLgYEDw9pXqOhcUrFE10LZrx96rlqJknnzYThwAEVz5iDnsUeReuONYi+NIAiC6CTERSp2/vz5+Pbbb/Hjjz8iPz/f77Zjx44FABw/fhwAkJOTg8rKSrdt2GNfdXkShQLShATnl59C+EgjjBOjObFdEnlODnp89CGSpk0DLBZUPLUE5U8+Cd4Uu6gxQRBEV2X58uXo2bMnVCoVxo4di+3bt/vc1psrB8dxmDZtmrANz/N44oknkJubC7VajUmTJuHYsWOxOBSfiCrseJ7H/Pnz8eWXX+KHH35Ar169Ar5n9+7dAIDc3FwAQGFhIfbt24eqqiphm/Xr1yMpKQmDBg2KyrrbA4vYJVDErssiUamQ948XkLlgAcBxaFi5CkV/mQP9rl0wnTkDa1MTeJ4Xe5kEQRCdilWrVmHBggVYvHgxdu7cieHDh2Pq1Klu+sGVL774AuXl5cLX/v37IZVKcd111wnbPP/883j11Vfx1ltv4bfffoNWq8XUqVNhMBhidVht4UVk7ty5fHJyMr9p0ya+vLxc+NLr9TzP8/zx48f5JUuW8H/88Qd/6tQp/n//+x/fu3dv/vzzzxf2YbFY+CFDhvBTpkzhd+/eza9Zs4bPzMzkFy5cGPQ6iouLeQB8cXFxxI/Rk3d+OsH3ePhb/u6Pd0b9s4j4p+mHH/jDo0bzBwcMdP8aPIQ/MuFc/sxf5vCmigqxl0kQBBFXhHPdHjNmDD9v3jzhsdVq5fPy8vhly5YF9f6XXnqJT0xM5FtaWnie53mbzcbn5OTwL7zwgrBNQ0MDr1Qq+U8++STodUUaUSN2b775JhobG3HhhRciNzdX+Fq1ahUAQKFQYMOGDZgyZQoGDhyIBx54ANOnT8c333wj7EMqleLbb7+FVCpFYWEhbrrpJsyaNcvN9y6eEMaJUfMEASDxoovQc9VKaMcXQp6XB4553FkssNbUQPfrr6h4YjFF8AiCILygM1nQbDALX0aL9zndJpMJO3bswKRJk4TnJBIJJk2ahK1btwb1WStWrMANN9wg+OyeOnUKFRUVbvtMTk7G2LFjg95nNBA1HxjoYlVQUIDNmzcH3E+PHj2wevXqSC0rqjQZ7NMHklRykVdCxAvKvn3R/d13hcc2gwHWhgaYTp5E0Z13oWXzZjSvXYukSy4RcZUEQRDxx+TXfodE6bQ2u3diP9w/uX+b7WpqamC1Wr26aBw+fDjg52zfvh379+/HihUrhOeY84a3ffpy5YgFVOgVYxpbHcJOTcKO8I5EpYIkJwfynBxk3HEHapYvR8XTz0BbWAhpcrLYyyMIgogb1t99DvLyugmPFVGa6LRixQoMHToUY8bEv0VVXHTFdiWYsEsmYUcEQfqdd0DRqxesNTWo+ueLYi+HIAgirtAqZEhUyYUvpcx7mVNGRgakUqlXFw1fDhoMnU6HlStXYs6cOW7Ps/eFs89oQsIuxpCwI0JBolAgd8lTAICGTz+F/o8/RF4RQRBEx0OhUGD06NHYuHGj8JzNZsPGjRtRWFjo972fffYZjEYjbrrpJrfne/XqhZycHLd9NjU14bfffgu4z2hCwi7GNJGwI0JEc845SHG015c/sRg28rwjCIIImQULFuCdd97BBx98gEOHDmHu3LnQ6XSYPXs2AGDWrFlYuHBhm/etWLECV111FdLT092e5zgO9913H55++ml8/fXX2LdvH2bNmoW8vDxcddVVsTgkr1CNXYyhiB0RDlkPPoDmH3+E6eRJ1P7rHWTOnyf2kgiCIDoU119/Paqrq/HEE0+goqICI0aMwJo1a4Tmh6KiIkgk7vGuI0eO4JdffsG6deu87vNvf/sbdDod7rjjDjQ0NODcc8/FmjVroFKpon48vuB48lFASUkJCgoKUFxcHHDyRXsZ9MQa6E1WbHrwQvTMiN3EC6Lj07R6NUoXPABOLkevr76EMsyRegRBEB2dWF63OxoUsYshZqsNesdIMYrYEaGSeOml0P7vf9Bt/gknL78C0tRUyNLTIcvMgDQ9A4qCAqTefBNkqakh7ZfneRiPHkXTmjWQJiQgbfZscBKq0iAIguiIkLCLISwNC5DdCRE6HMch94knUDTnNphOn4a1rg7WujoYXeYSNn79NfKXL4dqQFsfJ09MRUVo+u47NH73HUzHTzifLy5GzuLF4DguKsdBEARBRA8SdjGECbtEpQxSCV00idCRd+uG3t99C2t9PSy1tbDU1MBaUwNLTS3qV66EubgYp2+8Ed2e/zsSXdzQGbzFgqbvvkPdhx/BsG+f8Dwnl0MzZgx0W7agYeUqcFIZshc9RuKOIAiig0HCLoaQOTERCTipFLKMDMgyMoABA4Tnk6+5GqX3L4B+2zaUzL8bmffeg/S77gLHceBNJjR+/TVq/vUOzEVF9jdIJNCOG4ekyy9H4uRJkCYmouHLr1D+6KOo/+gjcDIpsh55hMQdQRBEB4KEXQyhjlgimshSU9H9nX+h8u/Po/7DD1H9yqswHDkK7dgxqH3n3zCXlQEApKmpSLvlFqRcO90uDl1IufoqwGpB+aLHUffB/wEyGbIefJDEHUEQRAeBhF0MIQ87ItpwcjlyFj0G5YD+qFiyFM1r1qB5zRoAgDQjA+l/+QtSb7geEo3G5z5Srr0WvMWCiiefQt2Kd8HJ5Mi8714SdwRBEB0AEnYxhCJ2RKxIve46KHv3Rul99wNSKdLnzEHKdddCEqS3UuoNN4C3WFH59NOoffttSDQaZNx5R5RXTRAEQbQXEnYxpFFPwo6IHZrRo9H3xx8AqTSsaFvaTTPBm82o+vvfUf3SS1D06omkKVOisFKCIAgiUpBZVQwRInYaEnZEbOBksnalUNNn34pUx3zEsocfgeHgwUgtjSAIgogCJOxiCKViiY5I9iMPQzthAvjWVhT/dR4s1dViL4kgCILwAQm7GEJ2J0RHhJPJ0O2lF6Ho1QuWigoUz58Pm9Eo9rIIgiAIL5CwiyEUsSM6KtKkJBS8+QYkyckw7NmL8kWPg42ZNldWoX7lKhTdeSeOjh2Hkvvvh6W2VuQVEwRBdE2oeSKGkLAjOjKKnj2R/8rLKJpzG5q++Qa82QxzSQkM+/e7bdf8/Rrof9uOnCcXU7MFQRBEjKGIXQwhHzuio6MdNw45ix4DADSvWWMXdRwH9YgRyFywAAX/ehvKAQNgratD6T33ovRvf4O1sVHkVRMEQXQdKGIXQyhiR3QGUm+8ETadDq379iPhvHORcMEFkGVmCq9rxo1DzfI3UPvOO2j6+hvot/2G3KVLoD3/fDI5JgiCiDIk7GKE2WqDzmQFQMKO6Pik33abz9ckCgWy7r8PiRdfhLKHH4Hp9GkU33kXlP37I+W665D8pysgTU6O4WoJgiC6DpSKjREsDQsASSrS00TnRz18OHp9+QXSbr0VnFIJ49GjqHzmGRw7/wKUPfww9Dt2CA0YBEEQRGQghREjWBo2QSmDTEp6mugaSNRqZD/yMDLm3oXGb75Fw6efwnj0KBr/9zUa//c1pOnpUA8fDvWIEVCPGA71kCF+59gSBEEQ/iFhFyOovo7oykiTk5F200ykzpwBw969qP/sMzR9txrW2lq0/PADWn74wbGhFOohQ5C9aBHUQ4eIu2iCIIgOCIWOYgSZExMEwHEc1MOHI+/pp9F/21b0+PhjZP3tb0icMgWyrCzAakXrnj04M3MmGj7/QuzlEgRBdDgoYhcjnBE7+i8nCACQKJXQjBoJzaiRwnPm0lJUPPMsWn74AeWPPYbWfXuR8+ij4BQKEVdKEATRcaCIXYwgDzuCCIy8Wzfkv/4aMu+9B+A4NKxchTOzboG5sqrNtja9Huaqts8TBEF0ZSh8FCOoxo4ggoOTSJAxdy5Ugwah9KG/oXX3bpyaPh0pV18Nc3k5zMXFMJWUwOoYW5Z57z3ImDvX7z4Nhw+j7v/+g5Tp10AzenQsDoMgCEIUSNjFCBJ2BBEaCRdcgF6ffYqSu++B8ehR1L7zjtftql95FRKtFmmzZnl9vXXfPhTNuQ22piY0fv01shc+gtQZM8gsmSCITgkJuxhBwo4gQkfRowd6rvwEtSvehaWmBoruBZDnF0BRkA95fj7qPvwQNa++hspnl0Gi1SJl+nS39+t37ULx7XfA1tICaVoarHV1qFz6NAwHDyJn8WJIqHaPIIhOBgm7GEHCjiDCQ6LRIPPu+V5fy5g7F7bmFtS99x7KH38CEq0WSZdcAgDQ79hhF3V6PTRnn438t95Cw6efouof/0Dj51/AePw48l99DfLsrFgeDkEQRFSh5okYQXYnBBF5OI5D1t8eQsp11wE2G0of+htaNm+Gbvt2FDFRN24cCv71NqQJWqT/ZTYK/vUvSJKTYdizF6eunQ79zl1iHwZBEETEIGEXIxpbLQAoYkcQkYbjOOQ8uRhJl10GmM0ouedeFN9xJ3i9HtoJE1Dw5htu0ywSzp2AXp99CmW/frBW16Do1lvR8vMvIh4BQRBE5CBhFyPI7oQgogcnlSLv788h4aKLwBuN4A0GaC84H/lvLIdErW6zvaJ7d/Rc+QkSLr4YvMmEkvnzoduyRYSVEwRBRBYSdjGCauwIIrpwcjm6vfwSUv78Z6TedBPyX3sNEqXS5/YSrRb5L79kF3dGI4r/Og+6bb/FcMUEQRCRh4RdDLBYbWgxUiqWIKKNRKlE7pKnkLPosaA6XjmFAt1efgkJF1wA3mBA8dy50P/+e5vtbDodGr/9DvUrV4I3m/3u02YwoOzRx3DikkthPH487GMhCIIIBxJ2MaDJYBG+p+YJgogvJAoFur36CrTnnQe+tRVFd94F/c6dsBmNaFq3DiX33Y+jE85F2YMPouLJp+yTMCoqvO7LXFWFMzfPQuMXX8B0+jTKH38CvM0W4yMiCKIrQ8IuBrA0rFYhhVxK/+UEEW9IlErkv/YqtOPHg9frUXTb7Tg2fgJK77kXzWvWgDcYoOjRA5LERLTu2oVTV12Nlp9/dtuH4eBBnL7uzzDs2wdpSgo4jQatu3ah8YsvRDoqgiC6IqQyYgDV1xFE/CNRqZC//HVoxo0Dr9fDptNBlpuLtDl/Qc/P/4vea75Hr8//C9WgQbA2NKD49jtQ9dLL4C0WNK1fj9Mzb4KlshKKPn3Q89NVyJxv996reuEfsNTViXx0BEF0FcigOAaQhx1BdAwkajUK3nwDjV9/A2W/vlCPGAFO4rz/VXTvjh6ffIyqv/8d9R9/gtq330bLDxthPGavpdNOmIBuL78EaWIi0m6+CY3/+9//t3ff8VFV+f/HX1My6b0npMEKoQhCEAhYUFAWEEFR0Y1sEEWBAIGggKAEVIhfK1YQpe1PENAVRAUVQbAsiARQQQklIQVSICGFtAkz5/dHZCQQEDTDZMbP8/GYx4a5Z+49n9zdyXvPvedcajMyKHr+BcLS5tqqLCHE34iM2F0BMmInhP3QurriO+we3Lp0aRDqLNudnQmZOZPwl15E6+ZmCXW+CQlEvLUAnacnUD9LN2RWKgBla9Y0OikDwFxdTfW+fSilrFSREOLvRILdFSDBTgjH4zVgANH//QCvAQMInfMMIU8+gUbf8CKIW+fO9U/FAPJnz0YZjZZtSinK16/n8D/7c2ToXeQ+/Ah1hUVXtAYhhOORYHcFyOLEQjgm55gYwl96EZ+hQy/YJmhyCjpfX4yHDlO8bBkAtQcPkjPiAY6mTOZ0YSEAld98Q9btt1O+YUOj+6nNzCI/dRaHBwykcvv2P9Vfs9FI3qRJZN0zTO77E8JBSbC7AmTEToi/L52PD0FTpwBw4o03yZ89m8whd1D1/fdonJ0JGD+OmA//i0v79pjKyjg6KYWjkx/FVFaGUorK7d+TO3oMmQMGULpqFcbMTI5Nn465uvqy+qGUIv+JJ6jY8Bk1P/1EwVNPW6NcIYSNSbC7AsqqJNgJ8XfmPXgwbtdei6qpofS9lWAy4dG3Dy0//ZTApCRc2rUjeuV7BIwdCzod5Z9+Subtg8kaOrT+WbZbtoBGg8fNN6MPDeX0sXxOLFx4WX048eablK/7GHQ60Oup+OyzC44OCiHslwS7K8AyYucmwU6IvyONRkPIrFR0Pj4YoqOJeHshEa+/jqFF+O9tnJwInDCe6BXLMURHc7qwkNpffkXj4oLPfffScv2nRLz5BsGPTwOg5J1FGI8cuaTjl338CSdeex2AkJkzCXj4YQAKZj/F6RMnmrZYIYRNyXInV4BcihVCOLdqxVVfbwUnJzQazQXbuXbqRMyaDyletBiNswGfu+5C7+tr2e55yy24X3cdld9+S8HcuUS89dZF91eVnk7+9OkA+I0cie+we1BGIxWbN1O7fz8Fs2cT/uqrF92HEMJ+2HTELi0tjWuvvRZPT0+CgoIYMmQIGRkZDdrU1NSQlJSEv78/Hh4eDB06lMLfbjY+Iycnh4EDB+Lm5kZQUBCPPfYYp0+fprmQdeyEEFD/bNpLCVBaV1cCxyURMGpUg1AHv43+PTEDjZMTlV9/w6lNmy64H2N2NnlJ41B1dXje0pegRydb+hH2bFr9JdmNX1L+6fq/VpgQotmwabDbunUrSUlJbN++nY0bN1JXV8ett95KZWWlpc2kSZP4+OOPef/999m6dSvHjh3jzjvvtGw3mUwMHDgQo9HI//73P5YtW8bSpUuZOXOmLUpqVHmNjNgJIZqOIToav5EjASicm9boRIq6Y8fIfWQ0ptJSXDp0IOy55xqsy+cSG0vAmNH1+3j6aU4fP27ZZq6tpeyjjzjyrwQODxiIMTfXyhUJIZqKRjWjVTGPHz9OUFAQW7du5YYbbqCsrIzAwEBWrFjBXXfdBcD+/ftp27Yt27Zto0ePHmzYsIHbbruNY8eOERwcDMCCBQuYOnUqx48fx2Aw/OFx8/LyiIiIIDc3lxYtWjR5XVfP+pyKmtNsmnwjrQI9mnz/Qoi/H3NVFYdvu43Tx/LxHzOaoORkAOoKiyheuJDS1atRdXXoQ0OJXrUSp6Cg8/ah6urIGjaM2l9+xaNPH4KnPMbJVasp+/BDTKWllnZu3boRuXRJows2C2EL1v67bc+a1f9Ky8rKAPDz8wMgPT2duro6+vbta2kTGxtLZGQk27ZtA2Dbtm1cffXVllAH0K9fP8rLy9m3b1+jxzEbjZhOnfr9ddYIYVMzmRUVNfWXhWXETgjRVLRubgRP+30iRVV6OoVpaRy+5RZOLl+OqqurD2SLFjUa6qB+wkZY2rPg5MSpTZs43O+flCxejKm0FH1oKP6PPILG1ZWqHTs4uXLllSxPCPEnNZvJE2azmYkTJ9KrVy86dOgAQEFBAQaDAR8fnwZtg4ODKSgosLQ5O9Sd2X5mW2OK31rIiTfesPy7oM7YaLumUPHbZViQYCeEaFpnT6TITrjf8r5rXByB48fj3qP7H+7DpU1rApOSOD5vHmg0uF9/Hb733ofHDdej0evRBwZS+MwzFL3wIh433IBBRkeEaNaaTbBLSkpi7969fPvtt1Y/lv8jD+P3wAjLv92OHoXYWKsc68zECTeDDiddsxogFULYuTMTKTJvH4wyGnHt1ImACeNx79nzsma5+j/yMC4dOmCIjjovuPn+6z4qPvuMqp07yZ/xBJFLFsslWSGasWYR7MaNG8cnn3zC119/3eBaeUhICEajkdLS0gajdoWFhYSEhFja7Nixo8H+zsyaPdPmXFqDAc66907n7t5UpZxHljoRQliTITqa6NWrMJ86hWtc3J9atkSj0eBxXa/Gt2m1hM6dQ+btg6n6/ntKV6/G9957/2q3hRBWYtP/26WUYty4caxZs4bNmzcTExPTYHtcXBxOTk5sOms6f0ZGBjk5OcTHxwMQHx/Pzz//TFHR7w/P3rhxI15eXrRr1+7KFHIREuyEENbmEhuLW9euVluLzhAZSVBKCgBFzz2PMe/oJX1OGY0Uv/MORx+bQu4joznyrwQyBw3i4I29OXjDjVT+dq+0EKLp2HTELikpiRUrVvDRRx/h6elpuSfO29sbV1dXvL29efDBB0lJScHPzw8vLy/Gjx9PfHw8PXr0AODWW2+lXbt2DB8+nOeee46CggKeeOIJkpKScHZ2tmV5gKxhJ4RwDL73J1D+xedU70wn/8kniFy8+KJB0lReTt6EZKq2b79gm6Mpk4lZuwanc+6TFkL8eTYNdvPnzwegd+/eDd5fsmQJI0aMAODll19Gq9UydOhQamtr6devH2+++aalrU6n45NPPmHMmDHEx8fj7u5OYmIiTz311JUq46JkxE4I4Qg0Wi1hzzxD5pA7qNq2neIFC/AfNQqN/vw/I8a8PHIfGY3x8GG0bm74PzwKfUAAWk8vdN5eaN09yJ85k9pff+VoymSili1tdD9CiMvXrNaxsxVrrofz5pZDPPdZBnfFteCFuzs16b6FEOJKK1m2jMK0ZwEwREURMHYMXgMHWoJZ9Z495I5NwlRSgj44mIi3FuDSyOQ0Y3Y2WXcOxVxZif+ohwiaPPmK1iHsm6xjd2EytcnKZMROCOFIfIcPJ2jaVHS+vhizszk2dRqZtw2ibN06yjdsIDtxBKaSEpzbtSV69apGQx3Uh8LQOXMAKH77HSq2bLmCVQjhuGTs28rKJdgJIRyIRqvFf8QIfO++m5IVKyhZtBjjkSMcmzLV0sajd2/CX3wB7R+sOOD1z35UJSRwcvly8qdOw2XNhziFhVm2K6Wo/fVXqnbtxhAdjes1ndB5nP/0HmU2U/Prr1R+8w1VO9NRRiPotGi0OtDr0Gh1OEW0IDApCZ23d9P9MoRohiTYWZmM2AkhHJHW3Z2AUaPwve9fnFy+vP6JFWVl+N5/P8GPT0Oj013SfoKmTqH6xx+p2bu3/n67//cfajOzKN+wnooNn2HMzj7roFqcY9vg1iUOty6dUWZF5TffcOq77zCdOPGHxzr15SbC572Ma8eOf7ZsIZo9uccO616rT3hnO98dKmbesGsY0jm8SfcthBDNhbmykrpjx3C+6qrL/qwxL4+sO+7EXFGBzt8fU3GxZZvG2Rm3uDiMOTnU5eVdcB9aNzfc4uNx79UTvY8PymRGmU6DyYyqM1K8aDF1ubng5ETwY4/iO3y41ZaHEdYn99hdmIzYWZmM2Akh/g607u5/KtQBGFq0IHTuHI6On4CpuBiNkxPuN9yAV//+eN7U23JJt66wkOpdu6jatZvq9HSUUrj3jMfj+htw69IZzVkLz5/La+BA8mc8QcUXX1A4N42qH3YSOucZdF5ef6rPQjRXEuysTNaxE0KIP+Z1yy1oFszHXFGBR+/e6Dw9z2vjFByMU//+ePXvf9n713l6Ev7KPE6+u5zC556jYuNGavbvp8Ur83Cx4WL2xtxc0GjkGbyiycisWCsrq5IROyGEuBSevXvjPWhQo6GuKWg0GvyG30/0iuU4hYdTl5tL9vB/U5WebpXjXYzZaKTopZc53O+fZN42iJoDB654H4RjkhE7KzKbFRW1pwEJdkII0Vy4Xn01MR/+l7zxE6jasYOcBx+ixRuv49Gr8eflni4poWTZfzCVlaLz9ETr4YnW06P+Z09P9H5+6Pz80fv7oXV1/cPjV/+8l/zpj1N78BAAqqaGoykpxLz//iV9XoiLkWBnRRU1pzkzNUWCnRBCNB86b28iFr5F3oQJVH79DXmjxxA+72U8+/SxtFFmM6Xvf0DRSy9hLiu7pP1qXF3R+/lhiIrE9Zpr6l+dOqHz9kYZjRyfP5/ihW+DyYTO35+glBSOz5uH8dBhCubMIeyZZ6xVsvibkGBnRWfur3N10mHQy1VvIYRoTrQuLkS8/jpHH32Mii++IG9CMmH/93943zaQmv37KZg1m+o9ewBwjo3Fs08fzKcqMFWcwlxRgelUBeayck6fPImpuBhlNKKqq6k7epS6o0ep/N82y7EMrVqByYTxyBEAvAb0J/jJJ9H7+uIUHkbOAyMp++C/uPeIx/u2gTb4bQhHIcHOimRGrBBCNG8ag4Hwl14kf8YMyj5ax7HH6kNexaZNYDKhdXMjMHkCvgkJF32erVIKc2UVppJiTp8opjZjP9V79lC1Zw912TkYDx8GQOfrS0hqKl7/7Gf5rHuPHgSMGc2JN+dTkJqK69UdMERFWb124Zgk2FmRBDshhGj+NHo9oWlpaFxdKV25ioovvgDAs18/gqc/jlNw8B/vQ6NB5+GOzsMdQ2Qkbl0643vffUD9PXrVe37kdFERnrf0Re/vf97nA8aOpXLHDqp3ptcv1PzeCrQXWb5FiAuRYGdFEuyEEMI+aLRaQlJT0QcGUvnd/wgY/QgeN9zQJPvW+/nhefNNFz++Xk/4Cy+QNXgINfv2cfzFFwl+/PE/fcyyjz+m6oedeN8+CNe4OFmM+W9EbvyyIlnDTggh7IdGoyEwKYnoFcubLNRdDqeQEELT0gAoWfYfTq5cxZ95OFTJu8s59tgUSlevJvv+4WQNHsLJlaswV1Y2dZdFMyTBzopkxE4IIcTl8Lz5JvwSEwEomDWLvNFjqCssvOTPlyxfTuFvM2vdunVD4+JC7YEDFMyaxcEbe1PwzBzqjh2zSt/twRtvvEF0dDQuLi50796dHTt2XLR9aWkpSUlJhIaG4uzsTOvWrVm/fr1l+6xZs9BoNA1esbGx1i7joiTYWZEEOyGEEJcraMpjBE5OQePkxKmtW8kcdDula9f+4ehdyfLlFD5dH+r8Rz1E5LKlXLV1C8GPT8MQFYX51ClOvvsuWfcMu6QFkat//pm6wqImqak5WLVqFSkpKaSmprJr1y46depEv379KCpqvEaj0cgtt9zCkSNH+OCDD8jIyODtt98mPLzhc9/bt29Pfn6+5fXtt99eiXIuSIKdFUmwE0IIcbk0Oh0Bo0YR8+F/cenQAXN5OfnTHidvzNgLBq2SFSt+D3UPPUhgSkr9hA5vb/wSE2m5YT0R77yDc5s2mE6cIOffiVTv29fovsxGI/mzZ3Pk7nvIGjwYY07On65FmUyYjcY//fmm9NJLLzFq1CgeeOAB2rVrx4IFC3Bzc2Px4sWNtl+8eDElJSWsXbuWXr16ER0dzY033kinTp0atNPr9YSEhFheAQEBV6KcC5JgZ0XllmAnc1SEEEJcHuerriJ65XsETpwITk6c2rKFQ717c6hfP3LHjaPolVcoX7+e4kWLKHzqaQD8HhxJ4OTJ502W0Gi1eFzXi6j/LMOlY0dMpaXkjHjAsk7fGXUFBWQPH07peysBMJWWkjt6DKby8kvqs7m2lqoffuDEgrfIefhhDvSIp/T99//y7+JCKo2nqaips7xqT5sabWc0GklPT6dv376W97RaLX379mXbtm2NfmbdunXEx8eTlJREcHAwHTp0YO7cuZhMDY9x8OBBwsLCaNmyJQkJCeT8hSDcFCRxWJFlxM5NRuyEEEJcPo1eXz9D9+abyH/ySWp+/Im67BzqsnM49eWmBm39Ro4k6NFHLzoDVuftTeTiReQ+Mprq9HRyRj5IxFsLcLv2Wiq3b+doymRMJSVovbwIfvxxjr/yCsbMTI5OnEjEW2+hcTr/75nZaKRk2TJObf6Kmr17UXV1DbbX/PQTJCQ0zS/kHLe89gNa599HHpP7XMWkW1qf1+7EiROYTCaCz1m6Jjg4mP379ze678zMTDZv3kxCQgLr16/n0KFDjB07lrq6OlJTUwHo3r07S5cupU2bNuTn5zN79myuv/569u7di6eVnnn8RyTYWZFcihVCCNEUXFq3JmbVKk4XF1N78CC1Bw7W/+fBgxizs/EZdg+BycmXtKyJzsODyLcXkjs2iart28kZ9TA+d97JyZUrwWzGOTaWFq+9iiEiApe2sRz5VwKV/9tGwTNzCJmV2uAYNRkZHJsyldqMjN/3HxiAW1xX3Lp0wTWuCy5t2ljldwKwcfy1hIX9fs9bUz7lyWw2ExQUxMKFC9HpdMTFxXH06FGef/55S7Dr37+/pX3Hjh3p3r07UVFRrF69mgcffLDJ+nI5JNhZkQQ7IYQQTUnv74/e3x/3Hj3+0n60bm5ELJhveVbuyRUrAPAeMoSQ1JloXV0BcImNJfyFF8hLSqJ01SoMMdH4jxiBMpkoXryY46++BnV16Hx9CUyegHvPnjhFRFyxdfPcDXo8Xf74b2xAQAA6nY7Cc2YYFxYWEhIS0uhnQkNDcXJyQqfTWd5r27YtBQUFGI1GDI0sIO3j40Pr1q05dOjQZVbSdOQeOyuSYCeEEKK50rq40OL11/EaMACtmxshs1IJTZtrCXVneN58E0FTpgBQ9H/PcfK998i+fzjHX3wJ6urw6NOHlh+vw/feezFERjbLxZANBgNxcXFs2vT75Wuz2cymTZuIj49v9DO9evXi0KFDmM1my3sHDhwgNDS00VAHcOrUKQ4fPkxoaGjTFnAZZMTOSsxmRXmNLFAshBCi+dL+9qxcZTKhOWtk6lx+IxIxZmVRuno1BbOfqv+suzvBM2bgfceQZhnmzpWSkkJiYiJdu3alW7duzJs3j8rKSh544AEA/v3vfxMeHk7ab4tEjxkzhtdff53k5GTGjx/PwYMHmTt3LhMmTLDs89FHH2XQoEFERUVx7NgxUlNT0el03Pfb4+RsQYKdlVTUnubMkkMyYieEEKI5u1iog/qncoQ8+QR1eblU/m8bbt27EzZ3Dk7nrOnWnA0bNozjx48zc+ZMCgoKuOaaa/jss88sEypycnLQan+/kBkREcHnn3/OpEmT6NixI+Hh4SQnJzN16lRLm7y8PO677z6Ki4sJDAzkuuuuY/v27QQGBl7x+s7QqD/zvBIHk5eXR0REBLm5ubRo0aJJ9mk8bWZndgnl1af5Z4fGr98LIYQQ9kTV1VFz4AAubdui0drubi5r/N12FDJiZyUGvZaerWy7SKEQQgjRlDROTri2b2/rboiLkMkTQgghhBAOQoKdEEIIIYSDkGAnhBBCCOEgJNgJIYQQQjgICXZCCCGEEA5Cgp0QQgghhIOQYCeEEEII4SAk2AkhhBBCOAgJdkIIIYQQDkKCnRBCCCGEg5BgJ4QQQgjhICTYCSGEEEI4CAl2QgghhBAOQoKdEEIIIYSDkGAnhBBCCOEg9LbuQHNgNpsByM/Pt3FPhBBCCPFHzvy9PvP3W/xOgh1QWFgIQLdu3WzcEyGEEEJcqsLCQiIjI23djWZFo5RStu6ErZ0+fZrdu3cTHByMVtt0V6crKipo164dv/zyC56enk223+bAkWsDx67PkWsDx67PkWsDx67PkWuDK1+f2WymsLCQzp07o9fLGNXZJNhZUXl5Od7e3pSVleHl5WXr7jQpR64NHLs+R64NHLs+R64NHLs+R64NHL8+eyKTJ4QQQgghHIQEOyGEEEIIByHBzoqcnZ1JTU3F2dnZ1l1pco5cGzh2fY5cGzh2fY5cGzh2fY5cGzh+ffZE7rETQgghhHAQMmInhBBCCOEgJNgJIYQQQjgICXZCCCGEEA5Cgp0QQgghhIOQYGdFb7zxBtHR0bi4uNC9e3d27Nhh6y5dtq+//ppBgwYRFhaGRqNh7dq1DbYrpZg5cyahoaG4urrSt29fDh48aJvOXqa0tDSuvfZaPD09CQoKYsiQIWRkZDRoU1NTQ1JSEv7+/nh4eDB06FDLI+iau/nz59OxY0e8vLzw8vIiPj6eDRs2WLbbc23nevbZZ9FoNEycONHynj3XN2vWLDQaTYNXbGysZbs91wZw9OhR7r//fvz9/XF1deXqq69m586dlu32/L0SHR193rnTaDQkJSUB9n3uTCYTTz75JDExMbi6utKqVSuefvppzp6Dac/nzmEoYRUrV65UBoNBLV68WO3bt0+NGjVK+fj4qMLCQlt37bKsX79ezZgxQ3344YcKUGvWrGmw/dlnn1Xe3t5q7dq16scff1S33367iomJUdXV1bbp8GXo16+fWrJkidq7d6/as2ePGjBggIqMjFSnTp2ytBk9erSKiIhQmzZtUjt37lQ9evRQPXv2tGGvL926devUp59+qg4cOKAyMjLU9OnTlZOTk9q7d69Syr5rO9uOHTtUdHS06tixo0pOTra8b8/1paamqvbt26v8/HzL6/jx45bt9lxbSUmJioqKUiNGjFDff/+9yszMVJ9//rk6dOiQpY09f68UFRU1OG8bN25UgPrqq6+UUvZ97ubMmaP8/f3VJ598orKystT777+vPDw81CuvvGJpY8/nzlFIsLOSbt26qaSkJMu/TSaTCgsLU2lpaTbs1V9zbrAzm80qJCREPf/885b3SktLlbOzs3rvvfds0MO/pqioSAFq69atSqn6WpycnNT7779vafPrr78qQG3bts1W3fxLfH191TvvvOMwtVVUVKirrrpKbdy4Ud14442WYGfv9aWmpqpO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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/3LEJw8BRgJJFGqlLxaETxA/model-fine1-acc')\n",
+ "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/-CT1h97vjv0TolY82Nw29g/model-fine1-loss')\n",
+ "acc_epoch = pickle.load(acc_urlopened)\n",
+ "cum_loss_list = pickle.load(loss_urlopened)\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "85866d1f-1a0d-487c-a426-9da326a06c1f",
+ "metadata": {},
+ "source": [
+ "The following line loads a prefine-tuned model that was trained for 100 epochs on the full IMDB training set and evaluates its performance on the IMDB test set. **For the sake of efficiency, let's not run the evaluation because it can take a few minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, feel free to uncomment the last line in the code block.**\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "id": "cda6a606-1a87-4846-9926-54edc577879a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/e0WOHKh5dnrbC2lGhpsMMw/model-fine1.pth')\n",
+ "model_fine1_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
+ "model_fine1_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "id": "e75cfe66-a265-4e7a-8d5f-a7c68f17c6e3",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 77.06it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.8604"
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_fine1_)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c9b127d6-b41d-4195-ac5a-3da2d8d70b33",
+ "metadata": {},
+ "source": [
+ "This model demonstrated notable improvement, exhibiting a remarkable achievement with an accuracy of 86% on the test data. This is higher than the 83% achieved by the model trained from scratch on the IMDB dataset. Although the training process was time-intensive (The fine-tuning was as time-intensive as training the model from scratch), the enhanced performance underscores the fine-tuned model's effectiveness and superiority over the model trained from scratch. Much of the computational effort was devoted to updating the transformer layers. To expedite the training process, one viable strategy is to focus on training the final layer only, which can significantly reduce the computational load but might compromise the model's accuracy.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "55331d63-1150-465b-b0bc-d13bbd24fb7c",
+ "metadata": {},
+ "source": [
+ "### Fine-tune the final layer only\n",
+ "\n",
+ "Fine-tuning the final output layer of a neural network is similar to fine-tuning the whole model. You can begin by loading the pretrained model that you would like to fine-tune. In this case, it is the same model pretrained on the AG News data set.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "id": "c2ffcf34-695f-4b9d-b6c2-5529a74d568a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
+ "model_fine2 = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
+ "model_fine2.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5fa5ba41-8d73-4649-b459-cbc321ca26e2",
+ "metadata": {},
+ "source": [
+ "Now, the key difference. You iterate through all of the parameters in the `model_fine2` model and set the `requires_grad` attribute of each parameter to `False`. This effectively freezes all of the layers in the model, meaning that their weights are to be updated during training.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "id": "000978e5-6244-4be2-8fd5-3e0c7ed1c619",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Freeze all layers in the model\n",
+ "for param in model_fine2.parameters():\n",
+ " param.requires_grad = False"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "54b17c25-96f4-43b9-b0a8-963085cf5638",
+ "metadata": {},
+ "source": [
+ "Replace the final layer to reflect the fact that you are solving a two-class problem. Note that the new layer will be unfrozen.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "id": "f0c29db4-3051-4247-8459-b7adab12fa45",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dim=model_fine2.classifier.in_features"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "id": "b79d7ed1-7a83-4140-ad93-b5e28cdab784",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model_fine2.classifier = nn.Linear(dim, 2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "id": "9387fde1-0a71-45b5-89cf-a2c90ff663d1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Net(\n",
+ " (emb): Embedding(400000, 100)\n",
+ " (pos_encoder): PositionalEncoding(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer_encoder): TransformerEncoder(\n",
+ " (layers): ModuleList(\n",
+ " (0-1): 2 x TransformerEncoderLayer(\n",
+ " (self_attn): MultiheadAttention(\n",
+ " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
+ " )\n",
+ " (linear1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (linear2): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (dropout1): Dropout(p=0.1, inplace=False)\n",
+ " (dropout2): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 63,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model_fine2.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "42123afb-6a78-4f98-87dd-e87c2cfa7c4f",
+ "metadata": {},
+ "source": [
+ "The following block simulates fine-tuning on the shortened training set for just 2 epochs. **For the sake of time efficiency, this code block has been commented out**. The following code should take a shorter amount of time to train than the full fine-tuning conducted previously because only the final layer is unfrozen.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "id": "3114fa2b-90ee-4955-8459-e01c1db83f2d",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/2 - Loss: 27.616634011268616\n",
+ "0.5616\n",
+ "save model epoch 1\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|██████████████████████▌ | 1/2 [00:01<00:01, 1.41s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 2/2 - Loss: 27.362923175096512\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████████| 2/2 [00:02<00:00, 1.25s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training time: 2.5001277923583984\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "LR=1\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model_fine2.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
+ "save_dir = \"\"\n",
+ "file_name = \"model_fine2.pth\"\n",
+ "train_model(model=model_fine2, optimizer=optimizer, criterion=criterion, train_dataloader=train_dataloader, valid_dataloader=valid_dataloader, epochs=2, save_dir=save_dir ,file_name=file_name )\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "id": "78fd006e-74d6-4e3c-b82d-54c31bbee129",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:10<00:00, 76.08it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.51816"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_fine2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b93c85f7-ab98-4bbd-8df3-b1f96808e9b9",
+ "metadata": {},
+ "source": [
+ "Once again, you will not use the model that you just fine-tuned, but instead inspect the final layer fine-tuning process of a model fine-tuned on the full IMDB training set for 100 epochs.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "id": "01dcda12-2d33-45fa-94c1-6caad9ec7363",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "acc_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/UdR3ApQnxSeV2mrA0CbiLg/model-fine2-acc')\n",
+ "loss_urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/rWGDIF-uL2dEngWcIo9teQ/model-fine2-loss')\n",
+ "acc_epoch = pickle.load(acc_urlopened)\n",
+ "cum_loss_list = pickle.load(loss_urlopened)\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3043392c-ee76-4103-a758-83e90f594604",
+ "metadata": {},
+ "source": [
+ "The following line loads the pretrained model and evaluates its performance on the test set. **For efficiency, let's not run the evaluation because it can take a few minutes to run. Instead, report the result underneath the cell. If you would like to confirm the result for yourself, feel free to uncomment the last line in the following code block.**\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "id": "14e51cf2-4e3f-4adf-8c58-f65da0e74f65",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/B-1H6lpDg-A0zRwpB6Ek2g/model-fine2.pth')\n",
+ "model_fine2_ = Net(vocab_size=vocab_size, num_class=2).to(device)\n",
+ "model_fine2_.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "id": "d7cf2dfa-3705-4f3e-a114-b4c56368cc77",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:09<00:00, 85.13it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.64144"
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_fine2_)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dbd9b301-88ba-42d4-b8ca-6e00379fb3b4",
+ "metadata": {},
+ "source": [
+ "The previous code indicates that although fine-tuning the final layer takes a significantly smaller amount of time than fine-tuning the whole model, the performance of the model with just the last layer unfrozen is significantly worse (64% accuracy) than the fine-tuned model with all layers unfrozen (86% accuracy).\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d23b9fe8-1655-4c4c-8ee2-f78db934d5f2",
+ "metadata": {},
+ "source": [
+ "# Adapters\n",
+ "FeatureAdapter is a neural network module that introduces a low-dimensional bottleneck in a transformer architecture to allow fine-tuning with fewer parameters. It compresses the original high-dimensional embeddings into a lower dimension, applies a non-linear transformation, and then expands it back to the original dimension. This process is followed by a residual\n",
+ "connection that adds the transformed output back to the original input to preserve information and\n",
+ "promote gradient flow.\n",
+ "\n",
+ "## Benefits of using adapters in neural networks\n",
+ "\n",
+ "- **Efficient fine-tuning**: Adapters allow for targeted updates to specific parts of the model, reducing the need to retrain large sections of the network.\n",
+ "\n",
+ "- **Parameter efficiency**: By adding only a few parameters, adapters make it feasible to modify large models without substantial computational overhead.\n",
+ "\n",
+ "- **Preservation of pretrained features**: Adapters enable the modification of a model while retaining the valuable features learned during extensive pretraining.\n",
+ "\n",
+ "- **Modularity and flexibility**: They enhance the modularity of models, allowing easy adaptation to various tasks without altering core architecture.\n",
+ "\n",
+ "- **Task-specific adaptation**: Adapters can be tailored to improve performance on particular tasks, optimizing the model’s effectiveness.\n",
+ "\n",
+ "- **Transfer learning and domain adaptation**: They facilitate the adaptation of models to new domains, bridging gaps between different data distributions.\n",
+ "\n",
+ "- **Continual learning**: Adapters support the model's ability to learn new information continuously without forgetting previous knowledge.\n",
+ "\n",
+ "- **Reduced risk of overfitting**: With fewer trainable parameters, adapters help prevent overfitting, especially on smaller data sets.\n",
+ "\n",
+ "The following code shows an adapter model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "id": "c46c86b1-eb04-4976-9fa7-c3fc06339bae",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class FeatureAdapter(nn.Module):\n",
+ " \"\"\"\n",
+ " Attributes:\n",
+ " size (int): The bottleneck dimension to which the embeddings are temporarily reduced.\n",
+ " model_dim (int): The original dimension of the embeddings or features in the transformer model.\n",
+ " \"\"\"\n",
+ " def __init__(self, bottleneck_size=50, model_dim=100):\n",
+ " super().__init__()\n",
+ " self.bottleneck_transform = nn.Sequential(\n",
+ " nn.Linear(model_dim, bottleneck_size), # Down-project to a smaller dimension\n",
+ " nn.ReLU(), # Apply non-linearity\n",
+ " nn.Linear(bottleneck_size, model_dim) # Up-project back to the original dimension\n",
+ " )\n",
+ "\n",
+ " def forward(self, x):\n",
+ " \"\"\"\n",
+ " Forward pass of the FeatureAdapter. Applies the bottleneck transformation to the input\n",
+ " tensor and adds a skip connection.\n",
+ "\n",
+ " Args:\n",
+ " x (Tensor): Input tensor with shape (batch_size, seq_length, model_dim).\n",
+ "\n",
+ " Returns:\n",
+ " Tensor: Output tensor after applying the adapter transformation and skip connection,\n",
+ " maintaining the original input shape.\n",
+ " \"\"\"\n",
+ " transformed_features = self.bottleneck_transform(x) # Transform features through the bottleneck\n",
+ " output_with_residual = transformed_features + x # Add the residual connection\n",
+ " return output_with_residual"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a5c12e9a-5bf1-4a4f-b792-25a264253d28",
+ "metadata": {},
+ "source": [
+ "The adapted class wraps this adapter functionality around any specified linear layer, enhancing its output with the non-linearity of a ReLU activation function. This setup is particularly useful for experimenting with subtle architectural modifications in deep learning models, facilitating fine-tuning and potentially improving model performance on complex tasks.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "id": "97d59ae0-610e-49bb-a9c4-1020c2dc468d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class Adapted(nn.Module):\n",
+ " def __init__(self, linear,bottleneck_size=None):\n",
+ " super(Adapted, self).__init__()\n",
+ " self.linear = linear\n",
+ " model_dim = linear.out_features\n",
+ " if bottleneck_size is None:\n",
+ " bottleneck_size = model_dim//2 # Define default bottleneck size as half the model_dim\n",
+ "\n",
+ " # Initialize FeatureAdapter with calculated bottleneck_size and model_dim\n",
+ " self.adaptor = FeatureAdapter(bottleneck_size=bottleneck_size, model_dim=model_dim)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " # First, the input x is passed through the linear layer\n",
+ " x=self.linear(x)\n",
+ " # Then it's adapted using FeatureAdapter\n",
+ " x= self.adaptor(x)\n",
+ " return x"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d8cfb80d-eb8c-4342-8066-33134c5b456d",
+ "metadata": {},
+ "source": [
+ "You load the pretrained transformer model that was trained on the AG News dataset.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "id": "01070ca9-5037-470e-b8f7-ceddfc2f279b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 74,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/9c3Dh2O_jsYBShBuchUNlg/model-AG%20News%20small1.pth')\n",
+ "model_adapters = Net(vocab_size=vocab_size, num_class=4).to(device)\n",
+ "model_adapters.load_state_dict(torch.load(io.BytesIO(urlopened.read()), map_location=device))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1df412e-51c5-4e8c-9dbe-c6d38f11a0cf",
+ "metadata": {},
+ "source": [
+ "\n",
+ "First, freeze the parameters of a model named model_adapters to prevent them from being updated during training. Then, retrieve the number of input features for the classifier, and replace the classifier with a new linear layer that outputs to two classes.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "id": "1820db89-b3b0-4cb2-b42f-1826ba1ec6d0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for param in model_adapters.parameters():\n",
+ " param.requires_grad = False\n",
+ "\n",
+ "dim= model_adapters.classifier.in_features\n",
+ "\n",
+ "model_adapters.classifier = nn.Linear(dim, 2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "905ad98d-2f62-475a-a7e0-a2f7119b5081",
+ "metadata": {},
+ "source": [
+ "Let's explore how to apply the adapted object to a linear layer to obtain the first output. You can obtain the unadapted linear layer for the first output by:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "id": "cbdcd100-7fda-45ee-a823-9233b7e68ca6",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Linear(in_features=100, out_features=128, bias=True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "my_example_layer=model_adapters.transformer_encoder.layers[0].linear1\n",
+ "print(my_example_layer)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1cf2017f-bb26-4b9c-86ea-f32cc5ce4450",
+ "metadata": {},
+ "source": [
+ "In the following code, you copy the linear layer and add an adapter layer to it.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "id": "83fd78c1-111d-45f6-9adf-3ab5c7264a8b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Adapted(\n",
+ " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=128, out_features=64, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=64, out_features=128, bias=True)\n",
+ " )\n",
+ " )\n",
+ ")\n"
+ ]
+ }
+ ],
+ "source": [
+ "my_adapeted_layer=Adapted(my_example_layer)\n",
+ "print(my_adapeted_layer)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "50e35b98-bcbd-4aec-b039-464e87ddd6fb",
+ "metadata": {},
+ "source": [
+ "You can print the adapted layer and show that the new layers have their requires_grad attribute set to True, indicating that these layers will be updated during training.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "id": "d23c9515-4303-437d-8f02-99a3723e8b89",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "False\n",
+ "False\n",
+ "True\n",
+ "True\n",
+ "True\n",
+ "True\n"
+ ]
+ }
+ ],
+ "source": [
+ "for parm in my_adapeted_layer.parameters():\n",
+ " print(parm.requires_grad)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1a6bc1b1-f1bb-4c01-99ee-c2e16e5090c2",
+ "metadata": {},
+ "source": [
+ "You can set a layer in the model to the adapter layer, as shown in the following code in the commented-out line. However, because there are many layers, a more systematic approach would be to traverse the model and replace specific layers with the adapter layer. Note that you should set the bottleneck size to 24, ensuring that there are fewer parameters to train than during a full fine-tuning.\n"
+ ]
+ },
{
"cell_type": "code",
- "execution_count": null,
- "id": "94133067-93b7-4652-b497-040866a7b78c",
+ "execution_count": 79,
+ "id": "f49d7836-5487-4cb4-a177-797f4eb75cee",
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "# Adapt a specific layer\n",
+ "#model_adapters.transformer_encoder.layers[0].linear1=Adapted(my_example_layer)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "id": "bc5a4706-ef6f-4d1d-9b44-4e6e3cfba925",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Find number of layers\n",
+ "N_layers=len(model_adapters.transformer_encoder.layers)\n",
+ "N_layers"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "id": "6af0d8e7-f38c-47a6-9ba4-7a74994e7f33",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " before linear1\n",
+ "Linear(in_features=100, out_features=128, bias=True)\n",
+ " after linear1\n",
+ "Adapted(\n",
+ " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=128, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=128, bias=True)\n",
+ " )\n",
+ " )\n",
+ ")\n",
+ " before linear2\n",
+ "Linear(in_features=128, out_features=100, bias=True)\n",
+ " after linear2\n",
+ "Adapted(\n",
+ " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=100, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=100, bias=True)\n",
+ " )\n",
+ " )\n",
+ ")\n",
+ " before linear1\n",
+ "Linear(in_features=100, out_features=128, bias=True)\n",
+ " after linear1\n",
+ "Adapted(\n",
+ " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=128, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=128, bias=True)\n",
+ " )\n",
+ " )\n",
+ ")\n",
+ " before linear2\n",
+ "Linear(in_features=128, out_features=100, bias=True)\n",
+ " after linear2\n",
+ "Adapted(\n",
+ " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=100, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=100, bias=True)\n",
+ " )\n",
+ " )\n",
+ ")\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Traverse model and adapt\n",
+ "for n in range(N_layers):\n",
+ " encoder=model_adapters.transformer_encoder.layers[n]\n",
+ " if encoder.linear1:\n",
+ " print(\" before linear1\")\n",
+ " print(encoder.linear1)\n",
+ " model_adapters.transformer_encoder.layers[n].linear1=Adapted(encoder.linear1, bottleneck_size=24)\n",
+ " print(\" after linear1\")\n",
+ " print(model_adapters.transformer_encoder.layers[n].linear1)\n",
+ "\n",
+ " if encoder.linear2:\n",
+ " print(\" before linear2\")\n",
+ " print(model_adapters.transformer_encoder.layers[n].linear2)\n",
+ " model_adapters.transformer_encoder.layers[n].linear2=Adapted(encoder.linear2, bottleneck_size=24)\n",
+ " print(\" after linear2\")\n",
+ " print(model_adapters.transformer_encoder.layers[n].linear2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1ea3e84d-649a-462d-8c21-ce1d4a915ce2",
+ "metadata": {},
+ "source": [
+ "The following code sends the model to the device.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "id": "67b7450d-b1f4-42c6-9995-b13da7a8a7d7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Net(\n",
+ " (emb): Embedding(400000, 100)\n",
+ " (pos_encoder): PositionalEncoding(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer_encoder): TransformerEncoder(\n",
+ " (layers): ModuleList(\n",
+ " (0-1): 2 x TransformerEncoderLayer(\n",
+ " (self_attn): MultiheadAttention(\n",
+ " (out_proj): NonDynamicallyQuantizableLinear(in_features=100, out_features=100, bias=True)\n",
+ " )\n",
+ " (linear1): Adapted(\n",
+ " (linear): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=128, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=128, bias=True)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (linear2): Adapted(\n",
+ " (linear): Linear(in_features=128, out_features=100, bias=True)\n",
+ " (adaptor): FeatureAdapter(\n",
+ " (bottleneck_transform): Sequential(\n",
+ " (0): Linear(in_features=100, out_features=24, bias=True)\n",
+ " (1): ReLU()\n",
+ " (2): Linear(in_features=24, out_features=100, bias=True)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (norm1): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (norm2): LayerNorm((100,), eps=1e-05, elementwise_affine=True)\n",
+ " (dropout1): Dropout(p=0.1, inplace=False)\n",
+ " (dropout2): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (classifier): Linear(in_features=100, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 84,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Send model to device\n",
+ "model_adapters.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d233586b-c7ef-49e6-b684-b8d24997db80",
+ "metadata": {},
+ "source": [
+ "Finally, the following code simulates training of the adapted model by training on a shortend IMDB train set for 2 epochs.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "id": "f275d5f0-ee19-469b-a957-98bf72d3f3c3",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/2 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 1/2 - Loss: 28.25411468744278\n",
+ "0.5256\n",
+ "save model epoch 1\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 50%|██████████████████████▌ | 1/2 [00:02<00:02, 2.36s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Epoch 2/2 - Loss: 27.504657685756683\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████████| 2/2 [00:04<00:00, 2.19s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Training time: 4.385776519775391\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "LR=1\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model_adapters.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)\n",
+ "save_dir = \"\"\n",
+ "file_name = \"model_adapters.pth\"\n",
+ "train_model(model=model_adapters,\n",
+ " optimizer=optimizer,\n",
+ " criterion=criterion,\n",
+ " train_dataloader=train_dataloader,\n",
+ " valid_dataloader=valid_dataloader,\n",
+ " epochs=2,\n",
+ " save_dir=save_dir, \n",
+ " file_name=file_name )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "id": "dbee37a9-750f-4907-8875-4c39c0fc0429",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|█████████████████████████████████████████| 782/782 [00:12<00:00, 63.17it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "0.50024"
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader, model_adapters)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "880ad357-dd0a-4b17-8636-6d72825f0500",
+ "metadata": {},
+ "source": [
+ "Naturally, you will not use the model you just trained. Instead, you will track the training of an adapted model fine-tuned on the full IMDB dataset for 100 epochs.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "id": "7576770c-efdc-452a-8cab-236471b57a2e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Instruction-Tuning with LLMs\n",
- "\n",
- "\n",
- "Instruction-based fine-tuning, referred to as instruction GPT. It trains the language models to follow specific instructions and generate appropriate responses. For instruction-tuning, the dataset plays an important role as it provides structured examples of instructions, contexts, and responses, allowing the model to learn how to handle various tasks effectively. Instruction GPT often uses human feedback to refine and improve model performance; however, this lab doesn't cover this aspect.\n",
- "\n",
- "The context and instruction are concatenated to form a single input sequence that the model can understand and use to generate the correct response.\n",
- "\n",
- "#### Context and instruction\n",
- "\n",
- "\t•\tInstruction: A command to specify what the model should do\n",
- "\t•\tContext: Additional information or background required for performing the instruction\n",
- "\t•\tCombined input: The instruction and context combine together into a single input sequence\n",
- " \n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Let's review certain examples for various templates:\n",
- "\n",
- "---\n",
- "#### Response template\n",
- "Template: `### Question: {question}\\n ### Answer: {answer}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Question: What is the capital of France?\n",
- "### Answer: Paris\n",
- "```\n",
- "\n",
- "---\n",
- "#### Conversation template\n",
- "\n",
- "Template: `### User: {user_input}\\n ### Bot: {bot_response}`\n",
- "Example:\n",
- "```\n",
- "### User: How are you today?\n",
- "### Bot: I'm doing great, thank you! How can I assist you today?\n",
- "```\n",
- "\n",
- "---\n",
- "#### Instruction and output template\n",
- "\n",
- "Template: `### Instruction: {instruction}\\n ### Output: {output}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Instruction: Translate the following sentence to Spanish: \"Hello, how are you?\"\n",
- "### Output: \"Hola, ¿cómo estás?\"\n",
- "```\n",
- "\n",
- "---\n",
- "#### Completion template\n",
- "\n",
- "Template: `{prompt} ### Completion: {completion}`\n",
- "Example:\n",
- "```\n",
- "Once upon a time in a faraway land, ### Completion: there lived a wise old owl who knew all the secrets of the forest.\n",
- "```\n",
- "\n",
- "#### Summarization template\n",
- "\n",
- "Template: `### Text: {text}\\n ### Summary: {summary}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Text: The quick brown fox jumps over the lazy dog.\n",
- "### Summary: A fox jumps over a dog.\n",
- "```\n",
- "\n",
- "---\n",
- "#### Dialogue template\n",
- "\n",
- "Template: `### Speaker 1: {utterance_1}\\n ### Speaker 2: {utterance_2}\\n ### Speaker 1: {utterance_3}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Speaker 1: Hi, what are you doing today?\n",
- "### Speaker 2: I'm going to the park.\n",
- "### Speaker 1: That sounds fun!\n",
- "```\n",
- "\n",
- "---\n",
- "#### Code generation template\n",
- "\n",
- "Template: `### Task: {task_description}\\n ### Code: {code_output}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Task: Write a function to add two numbers in Python.\n",
- "### Code: def add(a, b):\\n return a + b\n",
- "```\n",
- "\n",
- "---\n",
- "#### Data analysis template\n",
- "\n",
- "Template: `### Analysis Task: {task_description}\\n ### Analysis: {analysis_output}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Analysis Task: Provide insights from the sales data of Q1 2022.\n",
- "### Analysis: The sales increased by 15% compared to Q4 2021, with the highest growth in the electronics category.\n",
- "```\n",
- "\n",
- "---\n",
- "#### Recipe template\n",
- "\n",
- "Template: `### Recipe Name: {recipe_name}\\n ### Ingredients: {ingredients}\\n ### Instructions: {instructions}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Recipe Name: Chocolate Chip Cookies\n",
- "### Ingredients: Flour, Sugar, Chocolate Chips, Butter, Eggs, Vanilla Extract\n",
- "### Instructions: Mix the dry ingredients, add the wet ingredients, fold in the chocolate chips, and bake at 350°F for 10-12 minutes.\n",
- "```\n",
- "\n",
- "---\n",
- "#### Explanation template\n",
- "\n",
- "Template: `### Concept: {concept}\\n ### Explanation: {explanation}`\n",
- "\n",
- "Example:\n",
- "```\n",
- "### Concept: Photosynthesis\n",
- "### Explanation: Photosynthesis is the process by which green plants use sunlight to synthesize nutrients from carbon dioxide and water.\n",
- "```\n",
- "\n",
- "---\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Objectives\n",
- "\n",
- "After completing this lab, you will be able to:\n",
- "\n",
- " - Understand the various types of templates including instruction-response, question-answering, summarization, code generation, dialogue, data analysis, and explanation and their applications for fine-tuning large language models (LLMs).\n",
- " - Create and apply different templates to fine-tune LLMs for various tasks.\n",
- " - Format datasets based on the created templates to prepare them for effective model training\n",
- " - Perform instruction fine-tuning using Hugging Face libraries and tools\n",
- " - Apply Low-Rank Adaptation (LoRA) techniques to fine-tune LLMs efficiently\n",
- " - Configure and use the SFTTrainer for supervised fine-tuning of instruction-following models\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The concepts presented in this lab would apply to the other template formats as well.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# __Table of contents__\n",
- "\n",
- "\n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Reward Modeling\n",
- "Imagine that you're working as a machine learning engineer for a large technology company that wants to integrate advanced language models into its suite of AI-powered products. Your task is to evaluate and select the best large language model (LLM) that can understand and follow complex instructions, improve the quality of automated customer service, and generate high-quality responses.\n",
- "\n",
- "However, simply choosing a powerful LLM isn't enough. To truly excel in these tasks, the model should be fine-tuned to align with specific goals and criteria. This is where reward models come into the picture. By training a reward model, you can guide the LLM to prioritize certain behaviors, ensuring it generates responses that not only meet technical standards but also align with the company's values and objectives.\n",
- "\n",
- "In this hands-on lab, you dive into the process of creating and training a reward model by using the transformer reinforcement learner (trl) library from Hugging Face. You learn how to set up the environment, define the rewards that shape the model's behavior, and fine-tune the LLM to perform with precision. This project equips you with the skills to implement reward models in real-world applications, enhancing the effectiveness and quality of AI-powered products.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## __Table of Contents__\n",
- "\n",
- "\n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# **Direct Preference Optimization (DPO) Using Hugging Face**\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Estimated time needed: **60** minutes\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Large language models (LLMs) have revolutionized the field of natural language processing (NLP) by achieving remarkable performance in various tasks. However, it is challenging to align these models with human preferences. Therefore, the direct preference optimization (DPO) method comes in place which directly optimizes LLMs based models on user preferences, enhancing their alignment with human expectations. In this hands-on lab, you'll use the transformer reinforcement learning (trl) library from Hugging Face to implement DPO and fine-tune LLMs.\n",
- "\n",
- "The objective of this lab is to provide a practical understanding of the DPO method and its implementation using the trl library. \n",
- "\n",
- "By the end of this lab, you'll have hands-on experience in creating a data set formatted for DPO, implementing the optimization process, and evaluating the enhanced performance of LLMs.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## __Table of Contents__\n",
- "\n",
- "\n",
- "
\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Reinforcement Learning from Human Feedback Using PPO\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Estimated time needed: **30** minutes\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "Imagine you are an AI engineer who wants to train a \"Happy LLM\" and a \"Pessimistic LLM\" to train customer service agents. You have a reward function trained on the sentiment classifier from the IMDb dataset, and you will now use Reinforcement Learning (RL). RL is a subfield of machine learning where an agent learns to make decisions by performing actions in an environment to maximize a cumulative reward. The agent, in this case, will be the LLM, and the decisions will be about what text to output. Unlike supervised learning, which requires labeled input/output pairs, RL relies on the agent exploring the environment and learning from the feedback it receives in the form of rewards or penalties. This trial-and-error approach enables the agent to improve its decision-making strategy over time.\n",
- "\n",
- "Proximal Policy Optimization (PPO) is one of the most effective and widely used RL algorithms. Introduced by OpenAI, PPO strikes a balance between simplicity and performance, making it a popular choice for training RL agents. PPO optimizes the policy directly and employs mechanisms to ensure the updates are not too drastic, thereby maintaining stability and reliability during training.\n",
- "\n",
- "In this lab, you will be guided through the process of training an RL agent using the PPO algorithm with a focus on sentiment analysis. You will use the IMDb dataset, a large collection of movie reviews, to train your model. By the end of this lab, you will have a solid understanding of how to implement and train an RL agent using PPO, and you will be equipped with practical skills to apply RL techniques to other problems and datasets.\n",
- "This lab is based on [a HF example code titled `Tune GPT2 to generate positive reviews`](https://github.com/huggingface/trl/blob/main/examples/notebooks/gpt2-sentiment.ipynb).\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## __Table of Contents__\n",
- "\n",
- "\n",
- "
\n",
+ "\n",
+ "# LoRA with PyTorch\n",
+ "\n",
+ "Estimated time needed: **60** minutes\n",
+ "\n",
+ "As an AI engineer, you are tasked with fine-tuning a model for sentiment analysis on the IMDB dataset, starting with a model that is pretrained on the AG News dataset. By leveraging Low-Rank Adaptation (LoRA), the model is initially trained on AG News, benefiting from its extensive labeled data and broad categorization capabilities. This robust foundation enhances the model’s language understanding.\n",
+ "\n",
+ "Subsequently, LoRA is used to fine-tune the model on the IMDB dataset, adapting its knowledge to the nuances of movie reviews for sentiment analysis. This two-phase process — starting with AG News and refining with IMDB data — ensures that the model is both well-rounded and specialized, achieving superior performance in sentiment analysis tasks.\n",
+ "\n",
+ "**Note: If you are already familiar with training a model on the IMDB dataset, you can run the cells and then jump to the Low-Rank Adaptation (LoRA) section**\n",
+ "\n",
+ "\n",
+ "![Documents Overload](https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBM-GPXX0Y15EN/docs.png)\n",
+ "\n",
+ "```Efficiency in parameter updates:``` LoRA introduces only a small fraction of additional parameters compared to the total number of parameters in a large model. This makes the training process faster and less resource-intensive because fewer parameters need to be updated during backpropagation.\n",
+ "\n",
+ "```Preservation of pretrained knowledge:``` By keeping the majority of the model's weights fixed and only adjusting them through low-rank matrices, LoRA helps preserve the rich representations that the model learned during pretraining. This is particularly beneficial for tasks that do not require drastic deviations from the behavior learned during pretraining.\n",
+ "\n",
+ "```Customization to specific tasks:``` Despite the minimal updates, the changes introduced by LoRA are significant enough to adapt the model to specific tasks. This lets you fine-tune large models on specialized tasks without the need for extensive retraining.\n",
+ "\n",
+ "```Reduction in overfitting:``` Because only a limited number of parameters are adapted, the risk of overfitting is lower compared to full model fine-tuning, especially when adapting to smaller datasets.\n",
+ "\n",
+ "```Scalability:``` LoRA scales well with model size. As models become larger, the relative increase in the number of parameters introduced by LoRA becomes even smaller, making it a particularly attractive option for adapting very large models.\n",
+ "\n",
+ "```Compatibility and simplicity:``` The method can be easily applied to different types of neural networks, especially those based on the transformer architecture. It doesn't require major changes to the existing architecture, which simplifies integration into existing pipelines.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "29f9693c-5bf2-4e3b-9974-ed709cf69670",
+ "metadata": {},
+ "source": [
+ "# __Table of Contents__\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80470861-da2d-41b1-a0ee-1048d18a0857",
+ "metadata": {},
+ "source": [
+ "## Objectives\n",
+ "\n",
+ "After completing this lab you are able to:\n",
+ "\n",
+ "- Construct and train a neural network from the ground up\n",
+ "- Fine-tune a neural network in the conventional manner by unfreezing specific layers\n",
+ "- Use LoRA to fine-tune a neural network\n",
+ "- Comprehend the functions of LoRA and the reasons behind its effectiveness\n",
+ "- Save and load models that employ LoRA efficiently\n",
+ "\n",
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8b717c75-4b99-4895-b615-6ba25b33fa47",
+ "metadata": {},
+ "source": [
+ "## Setup\n",
+ "\n",
+ "### Install required libraries\n",
+ "\n",
+ "The following required libraries are __not__ preinstalled in the Skills Network Labs environment. __You must run the following cell__ to install them. Note that it can take between __5 and 10 minutes__ to install the required libraries:\n",
+ "\n",
+ "```bash\n",
+ "!pip install numpy==1.24.1\n",
+ "!pip install -U portalocker==2.8.2\n",
+ "!pip install torch==2.0.1\n",
+ "!pip install torchtext==0.15.2\n",
+ "!pip install torchdata==0.6.1\n",
+ "!pip install -U plotly==5.22.0\n",
+ "!pip install pandas==2.2.2\n",
+ "!pip install matplotlib==3.9.0\n",
+ "!pip install scikit-learn==1.5.0\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3068bedb-32c8-45f4-92c7-bbd77fc5754e",
+ "metadata": {},
+ "source": [
+ "### Import required libraries\n",
+ "\n",
+ "The following imports the required libraries:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "7759af5f-1618-4edb-955f-e424b5357054",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "True\n",
+ "Tesla P40\n",
+ "Import Successfully!\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Standard library imports\n",
+ "import io\n",
+ "import math\n",
+ "import os\n",
+ "import pickle\n",
+ "import tarfile\n",
+ "import tempfile\n",
+ "from itertools import accumulate\n",
+ "from urllib.request import urlopen\n",
+ "\n",
+ "# Third-party imports\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import plotly.graph_objs as go\n",
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.nn.functional as F\n",
+ "import torchtext # ; torchtext.disable_torchtext_deprecation_warning()\n",
+ "from IPython.display import Markdown as md\n",
+ "from sklearn.manifold import TSNE\n",
+ "from torch.utils.data import DataLoader\n",
+ "from torch.utils.data.dataset import Dataset, random_split\n",
+ "from torchtext.data.functional import to_map_style_dataset\n",
+ "from torchtext.datasets import AG_NEWS\n",
+ "from torchtext.vocab import GloVe, Vectors, build_vocab_from_iterator\n",
+ "from tqdm import tqdm\n",
+ "\n",
+ "# Suppress warnings\n",
+ "def warn(*args, **kwargs):\n",
+ " pass\n",
+ "\n",
+ "import warnings\n",
+ "warnings.warn = warn\n",
+ "warnings.filterwarnings('ignore')\n",
+ "\n",
+ "# CUDA-related checks\n",
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
+ "print(torch.cuda.is_available())\n",
+ "print(torch.cuda.get_device_name())\n",
+ "\n",
+ "print(\"Import Successfully!\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "65025fce-7345-4630-b541-71b5703b71f8",
+ "metadata": {},
+ "source": [
+ "### Defining helper functions\n",
+ "\n",
+ "The following are some helper functions to help with plotting, saving, and loading files. These functions are not the main focus of this lab, you do not have to dwell on these too long. However, do run the cells in this section to define these helper functions:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "aa667f44-288d-463f-9c22-2401e3277c88",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot(COST,ACC):\n",
+ " fig, ax1 = plt.subplots()\n",
+ " color = 'tab:red'\n",
+ " ax1.plot(COST, color=color)\n",
+ " ax1.set_xlabel('epoch', color=color)\n",
+ " ax1.set_ylabel('total loss', color=color)\n",
+ " ax1.tick_params(axis='y', color=color)\n",
+ "\n",
+ " ax2 = ax1.twinx()\n",
+ " color = 'tab:blue'\n",
+ " ax2.set_ylabel('accuracy', color=color) # You already handled the x-label with ax1\n",
+ " ax2.plot(ACC, color=color)\n",
+ " ax2.tick_params(axis='y', color=color)\n",
+ " fig.tight_layout() # otherwise the right y-label is slightly clipped\n",
+ "\n",
+ " plt.show()\n",
+ "\n",
+ "\n",
+ "\n",
+ "def save_list_to_file(lst, filename):\n",
+ " \"\"\"\n",
+ " Save a list to a file using pickle serialization.\n",
+ "\n",
+ " Parameters:\n",
+ " lst (list): The list to be saved.\n",
+ " filename (str): The name of the file to save the list to.\n",
+ "\n",
+ " Returns:\n",
+ " None\n",
+ " \"\"\"\n",
+ " with open(filename, 'wb') as file:\n",
+ " pickle.dump(lst, file)\n",
+ "\n",
+ "\n",
+ "def load_list_from_file(filename):\n",
+ " \"\"\"\n",
+ " Load a list from a file using pickle deserialization.\n",
+ "\n",
+ " Parameters:\n",
+ " filename (str): The name of the file to load the list from.\n",
+ "\n",
+ " Returns:\n",
+ " list: The loaded list.\n",
+ " \"\"\"\n",
+ " with open(filename, 'rb') as file:\n",
+ " loaded_list = pickle.load(file)\n",
+ " return loaded_list"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2239f5cc-059f-44ee-9bd0-f26f8880ad69",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ad8914c5-a862-4573-adbe-94efa43a10d2",
+ "metadata": {},
+ "source": [
+ "## Data pipeline\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dddf985a-c832-457f-bfd5-7ac48e1187ad",
+ "metadata": {},
+ "source": [
+ "### Tokenizer\n",
+ "\n",
+ "A tokenizer takes as input a document and breaks it up into individual tokens. Now, you might wonder, what's a token?\n",
+ "This example might help you understand it better.\n",
+ "\n",
+ "Imagine a token as a puzzle piece of a jigsaw puzzle. Each word, number, or small part of a word is a token. When you tokenize a document, you break it into these puzzle pieces so that a computer can understand and work with the text more easily, just like how you solve a puzzle by arranging its pieces.\n",
+ "\n",
+ "First, import the **```get_tokenizer```** function from **```torchtext.data.utils```**.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "8a5f684b-e84f-4768-a152-bc51ff205ca9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torchtext.data.utils import get_tokenizer"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9c2b2a53-ed87-4110-b631-8a38f5be539b",
+ "metadata": {},
+ "source": [
+ "Next, we'll create the tokenizer. We'll set it to the \"basic_english\" tokenizer that is provided by `torchtext`. The \"basic_english\" tokenizer is designed to handle basic English text and splits the text into individual tokens based on spaces and punctuation marks.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "60bc3e17-5998-4cc0-9a86-10001ce78f4f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tokenizer = get_tokenizer(\"basic_english\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "98b0055f-f35c-4d2e-a565-e52723a493b7",
+ "metadata": {},
+ "source": [
+ "Our dataset is going to be an iterable. Therefore, We'll use a generator function **```yield_tokens```** to apply **```tokenizer```**. The purpose of the generator function **```yield_tokens```** is to yield tokenized texts one at a time. Instead of processing the entire dataset and returning all of the tokenized texts in one go, the generator function processes and yields each tokenized text individually as it is requested. The tokenization process is performed lazily, which means the next tokenized text is generated only when needed, saving memory and computational resources.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "e25b8369-e601-4cbd-8345-b2d9bde1247d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def yield_tokens(data_iter):\n",
+ " for _,text in data_iter:\n",
+ " yield tokenizer(text)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2bddee85-4f64-4911-aa9c-e6145681f0d6",
+ "metadata": {},
+ "source": [
+ "The following loads a pretrained word embedding model called GloVe into a variable called `glove_embedding`:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "25aabfc6-0ed7-4749-a2f3-3c4693b5d96b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Note that GloVe embeddings are typically downloaded using:\n",
+ "#glove_embedding = GloVe(name=\"6B\", dim=100)\n",
+ "# However, the GloVe server is frequently down. The code below offers a workaround\n",
+ "\n",
+ "\n",
+ "class GloVe_override(Vectors):\n",
+ " url = {\n",
+ " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
+ " }\n",
+ "\n",
+ " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
+ " url = self.url[name]\n",
+ " name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
+ " #name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
+ " super(GloVe_override, self).__init__(name, url=url, **kwargs)\n",
+ "\n",
+ "class GloVe_override2(Vectors):\n",
+ " url = {\n",
+ " \"6B\": \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/tQdezXocAJMBMPfUJx_iUg/glove-6B.zip\",\n",
+ " }\n",
+ "\n",
+ " def __init__(self, name=\"6B\", dim=100, **kwargs) -> None:\n",
+ " url = self.url[name]\n",
+ " #name = \"glove.{}.{}d.txt\".format(name, str(dim))\n",
+ " name = \"glove.{}/glove.{}.{}d.txt\".format(name, name, str(dim))\n",
+ " super(GloVe_override2, self).__init__(name, url=url, **kwargs)\n",
+ "\n",
+ "try:\n",
+ " glove_embedding = GloVe_override(name=\"6B\", dim=100)\n",
+ "except:\n",
+ " try:\n",
+ " glove_embedding = GloVe_override2(name=\"6B\", dim=100)\n",
+ " except:\n",
+ " glove_embedding = GloVe(name=\"6B\", dim=100)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "eaf6bdf2-2052-4b45-8e90-0ee9ffefe01f",
+ "metadata": {},
+ "source": [
+ "The following builds a vocabulary object from a pretrained GloVe word embedding model and sets the default index to the token:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "98e18d96-f913-4af2-8b9d-40787ff47a67",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torchtext.vocab import vocab\n",
+ "\n",
+ "vocab = vocab(glove_embedding .stoi, 0,specials=('', ''))\n",
+ "vocab.set_default_index(vocab[\"\"])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "793e527e-a76b-4acf-bb08-0d027bf8d391",
+ "metadata": {},
+ "source": [
+ "The following prepares the text processing pipeline with the tokenizer and vocabulary. The text pipeline will be used to process the raw data strings from the dataset iterators.\n",
+ "\n",
+ "The function **```text_pipeline```** first tokenizes the input text, following which **```vocab```** is applied to get the token indices.\n",
+ "\n",
+ "The function **```label_pipeline```** simply converts labels into their integer values.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "c2494315-f59a-4904-84b8-d00beee9e7c2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def text_pipeline(x):\n",
+ " return vocab(tokenizer(x))\n",
+ "\n",
+ "def label_pipeline(x):\n",
+ " return int(x) "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f115c03b-5da3-4142-9ee4-33accb9ab0ba",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5766072a-eed9-4dea-8aac-857c091613d9",
+ "metadata": {},
+ "source": [
+ "## IMDB dataset \n",
+ "\n",
+ "The following loads the IMDB dataset into a temporary folder. This might take some time, so please be patient.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "7a571d7b-69a1-4bed-b66c-06f98357e59c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "urlopened = urlopen('https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/35t-FeC-2uN1ozOwPs7wFg.gz')\n",
+ "tar = tarfile.open(fileobj=io.BytesIO(urlopened.read()))\n",
+ "tempdir = tempfile.TemporaryDirectory()\n",
+ "tar.extractall(tempdir.name)\n",
+ "tar.close()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c93501ce-1ea0-4503-a2b4-aa5335121706",
+ "metadata": {},
+ "source": [
+ "The **IMDB dataset** contains movie reviews from the Internet Movie Database (IMDB) and is commonly used for binary sentiment classification tasks. It's a popular dataset for training and testing models in natural language processing (NLP), particularly in the context of sentiment analysis.\n",
+ "\n",
+ "### Dataset composition\n",
+ "\n",
+ "- **Reviews**: The dataset consists of 50,000 movie reviews, divided evenly into 25,000 training and 25,000 testing samples.\n",
+ "- **Sentiment labels**: Each review is labeled as either positive or negative, indicating the sentiment expressed in the review. The dataset is balanced, with an equal number of positive and negative reviews in both the training and testing sets.\n",
+ "- **Text content**: Reviews are presented as plain text and have been preprocessed to some extent. For example, HTML tags are removed, but the text retains its original punctuation and capitalization.\n",
+ "- **Usage**: The dataset is commonly used to train models for binary sentiment classification, where the goal is to predict whether a given review is positive or negative based on its text content.\n",
+ "\n",
+ "### Applications\n",
+ "\n",
+ "- **Sentiment analysis**: The primary application of the IMDB dataset is in sentiment analysis, where it serves as a benchmark for various text classification algorithms.\n",
+ "- **Natural language processing (NLP)**: The dataset is widely used in NLP research and applications, providing a basis for testing the effectiveness of different models and approaches in understanding human language.\n",
+ "\n",
+ "### Challenges\n",
+ "\n",
+ "The dataset is small, so it's hard to train a model from scratch.\n",
+ "\n",
+ "The following class is defined to traverse the IMDB dataset. The need to define this class arises from the fact that the IMDB dataset is split across a large number of files:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "f0b1ac02-3b52-4e4d-ac61-a33e3e429c0f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class IMDBDataset(Dataset):\n",
+ " def __init__(self, root_dir, train=True):\n",
+ " \"\"\"\n",
+ " root_dir: The base directory of the IMDB dataset.\n",
+ " train: A boolean flag indicating whether to use training or test data.\n",
+ " \"\"\"\n",
+ " self.root_dir = os.path.join(root_dir, \"train\" if train else \"test\")\n",
+ " self.neg_files = [os.path.join(self.root_dir, \"neg\", f) for f in os.listdir(os.path.join(self.root_dir, \"neg\")) if f.endswith('.txt')]\n",
+ " self.pos_files = [os.path.join(self.root_dir, \"pos\", f) for f in os.listdir(os.path.join(self.root_dir, \"pos\")) if f.endswith('.txt')]\n",
+ " self.files = self.neg_files + self.pos_files\n",
+ " self.labels = [0] * len(self.neg_files) + [1] * len(self.pos_files)\n",
+ " self.pos_inx=len(self.pos_files)\n",
+ "\n",
+ " def __len__(self):\n",
+ " return len(self.files)\n",
+ "\n",
+ " def __getitem__(self, idx):\n",
+ " file_path = self.files[idx]\n",
+ " label = self.labels[idx]\n",
+ " with open(file_path, 'r', encoding='utf-8') as file:\n",
+ " content = file.read()\n",
+ " \n",
+ " return label, content"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b43c4995-df1e-4dcf-b40d-5c4a42e1899d",
+ "metadata": {},
+ "source": [
+ "The following uses the `IMDBDataset` class defined above to create iterators for the train and test datasets:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "075f1957-46e9-4ad0-a273-600bfe5b8336",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "root_dir = tempdir.name + '/' + 'imdb_dataset'\n",
+ "train_iter = IMDBDataset(root_dir=root_dir, train=True) # For training data\n",
+ "test_iter = IMDBDataset(root_dir=root_dir, train=False) # For test dataart=train_iter.pos_inx\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6242e5c7-b354-4888-a996-e81a6618a6f0",
+ "metadata": {},
+ "source": [
+ "The following prints 20 samples from the training set:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "fb923043-bde7-4289-bcb0-6c5c6ba051d2",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(1, 'Let me start off by saying that after watching this episode for the first time on DVD at 10 o\\'clock P.M. one night, I could not fall asleep until about 3:00 A.M.
This brief review may contain spoilers.
I\\'m a long-time fan of The Sopranos and I can safely say this is the best episode I\\'ve seen. I\\'m not saying everyone should feel this way, but I do. This episode is identical to the weekend I spent with my family, watching over my own father, comatose in the ICU before he passed.
The episode begins with Tony in an alternate reality: he is a salesman who\\'s identity has been mistaken for that of a man named Kevin Finnerty.
By the time ten minutes had gone by, I knew either Tony was dreaming, or I was watching some other show. It wasn\\'t like the normal Sopranos and I loved it.
Option 1 is confirmed when Anthony (or \"Kevin\") looks into the sky at a \"helicopter spotlight\" and we see prodding through it, a doctor with a flashlight. We see this only for a moment and the sequence plays out until we go back to real life in a situation similar to the one I just stated.
Tony has come out of the coma for only a moment. His boys take A.J. home and Carmella, overcome by stress, breaks down in the hallway: a signature moment in the episode.
For the remainder of the episode, we cut in between the real world: the family dealing with the potential negative outcome of this coma, and Tony\\'s alternate reality, which parallels what\\'s going on both in his mind and in the real world around him.
Then comes the stellar point in the episode: after A.J. finishes telling his mother he\\'s flunked school, she walks in to see Meadow sitting at Anthony\\'s side.
She approaches Tony, and utters the best line of the episode: \"Anthony, can you hear us?\" In Tony\\'s world, he enters a dark hotel room and turns on a light. He takes off his shoes and goes to the phone. He tries to dial, but he cannot--as if he were trying to say something back to Carmella, but couldn\\'t physically bring himself to do so. Not yet.
He sits down and looks out his window. A shimmering light that has reoccurred throughout the episode now seems to call to him from the other side of the city.
\"When It\\'s Cold I\\'d Like To Die\" by Moby marries perfectly with these last images and helps in creating an emotional roller-coaster of an episode.
10 out of 10.
P.S.: Watch the next episode. You find out what the light is. It\\'s wonderful.')\n",
+ "(1, \"This is, in my opinion, a very good film, especially for Michael Jackson lovers. It contains a message on drugs, stunning special effects, and an awesome music video.
The main film is centered around the song and music video 'Smooth Criminal.' Unlike the four-minute music video, it is normal speed and, in my opinion, much easier to watch.
The plot is rather weird, however. Michael Jackson plays a magical 'gangster' that, when he sees a shooting star, he transforms into a piece of machinery. Throughout the film, he transforms into a race car, a giant robot, and a space ship.
The robot scene in particular is a bit drawn out and strange. I found it a little out-of-whack compared to the rest of the film.
A child is kidnapped, Michael tries to save her, is tortured and beaten, and suddenly turns into a giant robot that blows up all the bad guys. A little weird? Yeah.
But besides the bizarre robot scene, it's a very good movie, and any Michael Jackson fan will enjoy both the Smooth Criminal music video and the movie.\")\n",
+ "(1, \"This move actually had me jumping out of my chair in anticipation of what the actors were going to do! The acting was the best, Farrah should have gotten a Oscar for this she was fabulous. James Russo was so good I hated him he was the villain and played it wonderful. There aren't many movies that have riveted me as this one. The cast was great Alfie looking shocked with those big eyes Farrah looking like a victim and you re-lived her horror as she went through it. Farrah made you feel like you were there and feeling the same anger she felt you wanted her to hurt him, yet you also knew it was the wrong thing to do. The movie had you on a roller coaster ride and you went up and down with each scene.\")\n",
+ "(1, \"Surprisingly not terrible and well animated for one of Disney's straight to video throw away sequels. Like the previous sequel (The Lion King 2) I was glad that Disney brought back most of the original voice actors which makes a big difference and they kept a good level of traditional animation. The plot wanders around for a while but we are distracted by an unending string of jokes ranging from hilarious to dull. To break up the detached plot and jokes they gave us some silly musical sequences, which much like the jokes, range from entertaining to a quick trip to the fridge. For the most part the MST3K-like moments are bland and full of untapped potential and really don't add a whole lot to the movie other than to act as a vehicle for an hour-long flashback. The new characters are at least likable, and the old characters are out doing their thing so I can't fault them there. Overall this movie in not bad and it makes for a nice frivolous filler between the more serious Lion King titles.\")\n",
+ "(1, \"At one end of the Eighties Warren Beatty created and starred in the literate epic Reds about the founding of the Soviet Union as seen through the eyes of iconoclast radical John Reed. It was a profound film both entertaining and with a message presented by an all star cast. At the end of the decade Warren Beatty created another kind of epic in Dick Tracy that makes no pretense to being anything other than entertainment with a whole bunch of the best actors around just having a great old time hamming it up under tons of makeup.
That both Reds and Dick Tracy could come from the same individual speaks volumes about the range this man has as a player. In this film Beatty managed to get all the famous cartoon characters from the strip and put them in one original screenplay.
The city's top mobster Big Boy Caprice is making a move to really eliminate competition. The film opens with him rubbing out Lips Manlis's henchmen in a Valentine Massacre style shooting and then Lips himself being fitted for a cement overcoat. But Caprice's moves are making him a target for Tracy.
In the meantime a third mysterious and faceless individual is looking to topple Caprice himself. Will our hero sort out this thicket of crime?
The spirit of fun this film has is truly infectious. When people like Al Pacino, Dustin Hoffman, Paul Sorvino, William Forsythe, R.G. Armstrong get themselves outrageously made-up to look like the cartoon creations of strip author Chester Gould and then indulge in an exercise of carving the biggest slice of ham, you've got to love this film.
Al Pacino got a nomination for Best Supporting Actor, but any of these guys could have, it's only that Pacino as Big Boy Caprice gets the most screen time. Only Beatty plays it completely straight, the others all seem to play off of him. Dick Tracy won Oscars for Best Art&Set Design, Best Song written by Stephen Sondheim and introduced by Madonna, Sooner Or Later. The fact he was even able to get somebody like Sondheim to write a score for this film only shows Sondheim wanted to get in on the fun. As for Madonna, the Material Girl does more than hold her own with all these acting heavyweights as club torch singer Breathless Mahoney.
Before this film, Dick Tracy movies were consigned to the B pictures and worse as Saturday afternoon serials. The only thing that rivals this all star extravaganza is a radio broadcast done for Armed Forces Radio during World War II that got to vinyl. Can you believe a cast like Bing Crosby, Bob Hope, Frank Sinatra, Dinah Shore, Jimmy Durante, Judy Garland, Frank Morgan, and the Andrews Sisters? Try and find a recording of that gem.
Until then Warren Beatty's classic comic strip for the big screen will do nicely.\")\n",
+ "(1, \"This is one of the best Bollywood movies i have seen up until now. Family and friends feel the same way about it. This movie is really romantic and dramatic at the same time. In my opinion we need more films or movies like this to keep the south Asian culture alive. Shahid Kapoor and Amrita Rao acted extremely well in this, also their couple attracts a lot of people to the movies. This is a must see movie, it's a family and romantic movie. This movie is also from the makers of Hum Saath Saath Hain and Hum Apke Hain Kon. This movie is their best right now... the setting of the movie was beautiful which also is a huge attraction. This movie is must see... recommended to everyone!!\")\n",
+ "(1, 'I recently watched this, but when it started I had no idea what the concept was about, what the topic was.....in short - I had no idea what it was. Was it a documentary, was it a comedy routine.....Well, it was BOTH.
It started a little slow, but I think that\\'s because I had absolutely no idea what type of program I was viewing. But it quickly sucked me in. The episode I watched had Robert Wuhl discussing fact and fiction in history. Mainly how we (american\\'s) learn history that isn\\'t really true - and how we got to learn what we did. He did this in such a way as to keep the viewer completely entertained, and interested. I actually learned a few things and that is a true indicator of how effective this type of program can be.
I would love to see this picked up as a series for HBO. I believe it can be just as fun and effective with a variety of topics - especially if they are \"taught\" in the same type of manner as this episode.')\n",
+ "(1, \"Poor Basil Rathbone, an egotistical composer who's lost his muse. He's been faking it for some time, buying his lyrics and his music from various sources. Trouble is that two of the sources (Bing Crosby music) and (Mary Martin words) happen to meet and fall in love. And then they discover what they've been doing. Complications ensue, but all is righted at the end.
Crosby and Martin sing terrifically. Mary had signed a Paramount contract and also at the same time doubled as a regular on Crosby's Kraft Music Hall Radio Show. For reasons I don't understand, movie audiences didn't take to her, so she went back to Broadway and did One Touch of Venus in 1944 and stayed there.
Basil Rathbone in one of the few times he played comedy does it very well. His ego is constantly being deflated by sidekick Oscar Levant and again I'm surprised they didn't do more films together.
As in most of Crosby's Paramount vehicles, no big production numbers, but I agree with the previous reviewer about the title tune being done as an impromptu jam session in a pawn shop. Good job by all.
A surprisingly original plot and great entertainment.\")\n",
+ "(1, '\"Emma\" was a product of what might be called by the First Great Jane Austen Cycle of the mid-nineties, and it was recently shown on British television, doubtless because of the interest in the author created by the Second Great Jane Austen Cycle which started with \"Pride and Prejudice\" two years ago. We currently have in the cinemas the Austen biopic \"Becoming Jane\", and ITV have recently produced three TV movies based on Austen novels. These include \"Northanger Abbey\", the only one of the six major novels not to have been filmed previously, so the cycle should now be complete. No doubt, however, there will be more to come in the near future. (There is, after all, her juvenile \"Love and Freindship\" (sic), the short novella \"Lady Susan\", and someone, somewhere, has doubtless supplied endings to her two unfinished fragments \"The Watsons\" and \"Sanditon\". Then there are all those Austen sequels churned out by modern writers\\x85\\x85\\x85).
The main character is Emma Woodhouse, a young lady from an aristocratic family in Regency England. (Not, as some reviewers have assumed, Victorian England- Austen died before Queen Victoria was even born). Emma is, financially, considerably better off than most Austen heroines such as Elizabeth Bennett or Fanny Price, and has no need to find herself a wealthy husband. Instead, her main preoccupation seems to be finding husbands for her friends. She persuades her friend Harriet to turn down a proposal of marriage from a young farmer, Robert Martin, believing that Harriet should be setting her sights on the ambitious clergyman Mr Elton. This scheme goes disastrously wrong, however, as Elton has no interest in Harriet, but has fallen in love with Emma herself. The speed with which Emma rejects his proposal makes one wonder just why she was so keen to match her friend with a man she regards (with good reason) as an unsuitable marriage partner for herself. This being a Jane Austen plot, Emma turns out to be less of a committed spinster than she seems, and she too finds herself falling in love, leading to further complications.
Emma always insists that she will not marry without affection, and when she does find a partner, the handsome Mr Knightley, we feel that this will indeed be an affectionate marriage. It does not, however, seem likely to be a very passionate one (unlike, say, that of Elizabeth Bennett and Mr Darcy). Knightley, who is sixteen years older than Emma (she is 21, he 37), and related to her by marriage, is more like a father-figure than a lover. Much more of a father-figure, in fact, than her actual father, a querulous and selfish old hypochondriac who seems more like her grandfather. When Emma is rude to her unbearably garrulous and tedious friend Miss Bates, it is Knightley who chides her for her lack of manners. (His surname is probably meant to indicate his gentlemanly nature- nineteenth-century gentlemen liked to think of themselves as the modern equivalent of mediaeval knights with their elaborate codes of chivalry). Both Gwyneth Paltrow and Jeremy Northam play their parts very well, but this is not really one of the great screen romances.
Of the other characters, I liked Juliet Stephenson\\'s vulgar Mrs Elton and Toni Collette\\'s Harriet. I know that in the novel Harriet was a naïve young teenager, whereas here she is more like the character Collette played in \"Muriel\\'s Wedding\"- a gauche, slightly overweight twentysomething, fretting about her chances of finding a man. Nevertheless, I felt that this characterisation worked well in the context of the film and did not detract from Austen\\'s themes.
\"Emma\" is one of Austen\\'s more light-hearted works, without the darker overtones of \"Mansfield Park\" or even \"Pride and Prejudice\", and this is reflected on screen. We see a world of beauty and grace, full of stately homes and elegant costumes and fine manners. Apart from the ruffianly gypsies, who make a very brief appearance, the only \"poor\" people we see are Mrs Bates and her daughter, and, as they live in the sort of picturesque rose-strewn thatched cottage which today would change hands for over £500,000, we can be sure that their poverty is relative, not absolute. In Emma\\'s world, poverty is defined as not having your own stately home. This is, of course, not a comprehensive picture of early nineteenth-century life, but nobody has ever claimed Austen as the Regency equivalent of a kitchen-sink realist. Sophisticated romantic comedy, combined with a keen eye for analysing human character, was more in her line.
I would not rate this film quite as highly as the 1994 \"Sense and Sensibility\" or the recent \"Pride and Prejudice\"- it tends to drag a bit in the middle, although it has a strong beginning and strong ending- but it is, in the main, a highly enjoyable Austen adaptation. 7/10')\n",
+ "(1, \"A very strong movie. Bruce is good and Brad also.
As I think there are two cities missed in the receptionist list from the list Bruce remembered.
That means the woman was a real insurance and she did her job.
Well, Novikov property seems to me work in this movie. However, I do believe in Back to the future theory of worlds' multiplicity.
So Bruce could save the world, but not his world.
In the theory of parallel worlds the man can meet himself.
And I do believe there is no problem in that. Here I disagree with Dr. Brown from Back...
But the story pf 12 Monkeys has its own beauty. Inspite of all these theories of one world or many or continuum one can believe that he is really insane and the doctor - his girlfriend was just lost.
A sequence of events which may lead her to believe that he is from the future. The bullet - well it might be some mistake, some falsification.
Well I like this movie - has to buy a DVD.
Best.\")\n",
+ "(0, \"I have no clue as to what this was shot on but you can definitely tell that they had no budget. Bad acting, horrible cinematography, and lame plot and some decent special effects do not make a good movie. The WWF style cinemtography will make you cry...where's the tripod?! The filmakers aimed high, but sorely missed their mark.\")\n",
+ "(0, \"This film can be judged from three viewpoints: as history, as a profile of Amin, as a fictional thriller.
It fails as history, it mentions in passing the coup that threw out Obote, the expulsion of the Asians, and has the Entebbe hi-jack as background, but not in any chronologically consistent time frame.
As a profile of Amin it may have been interesting, because Forest Whitaker is incredibly good, and if this was a better film, he would get an Oscar. (He got it - which proves the Oscar voters don't watch the films they vote on.) It ignores relevant historical episodes in the novel, which observed Amin and the history of Uganda from the point of view of the doctor. It tells instead the fictitious story of the Scots doctor and his impossible love life from the point of view of Amin. But the story told is the one incident that Amin was probably innocent of.
As a fictional thriller, there is no plot to hold it together. The beginning is taut - it takes cinematic liberties with the novel, but sets up the story. The character of the doctor is well-defined, but becomes lost in the second half of the film which suffers as a result.
Why the doctor decides to stay in Kampala is badly explained - seduced by power? Why he befriends no-one is strange. The character of the friend in the novel has been lost because the Scotsman has the affair instead of the black doctor - a ludicrous entanglement which does not seem even faintly believable, but allows the writers of the film to show the ferocity of Amin close at hand. The Man called Horse bit at the end is risible.
Finally in 1971, Uganda drove on the left, not right, the number plates were three letters and two or three numbers - and where are the Equator tusks?!
In short - if you've never heard of Amin, you may want to spend two hours watching this film to appreciate Forest Whitaker's acting, but the last hour will bore you to confusion. If you know Uganda or have read the book - don't see the film - it will only depress you. And if you want to know why the doctor was so foolhardy - he wasn't.\")\n",
+ "(0, \"This show comes up with interesting locations as fast as the travel channel. It is billed as reality but in actuality it is pure prime time soap opera. It's tries to use exotic locales as a facade to bring people into a phony contest & then proceeds to hook viewers on the contestants soap opera style.
It also borrows from an early CBS game show pioneer- Beat The Clock- by inventing situations for its contestants to try & overcome. Then it rewards the winner money. If they can spice it up with a little interaction between the characters, even better. While the game format is in slow motion versus Beat The Clock- the real accomplishment of this series is to escape reality.
This show has elements of several types of successful past programs. Reality television, hardly, but if your hooked on the contestants, locale or contest, this is your cup of tea. If your not, this entire series is as I say, drivel dripping with gravy. It is another show hiding behind the reality label which is the trend it started in 2000.
It is slick & well produced, so it might last a while yet. After all, so do re-runs of Gilligan's Island, Green Acres, The Beverly Hillbillies & The Brady Bunch. This just doesn't employ professional actors. The intelligence level is about the same.\")\n",
+ "(0, \"Besides all of the technical mistakes ....
How about a female flight attendant who's able to kill, all by herself, 4 out of the 7 terrorists (including ex marines), 2 of whom without even using a gun. Then, she lands the plane perfectly. We're not talking about Sigourney Weaver or Linda Hamilton; we're talking about a regular, frightened, yet very well composed flight attendant. :D How about the leader in charge of the assault/rescue squad, having a full-proof (according to the logic of the script) plan of sleep-gassing everyone and having someone from his team fly the plane. Only he decides at the spur of the moment to change plans and instead lead an attack on the terrorists, guns blazing, not knowing where the terrorists are, or how many, and not securing a position of advantage, so that his whole team gets easily wiped out. Yeah, that's using the old noggin. Only later to decide to use the sleep gas anyway. And it turns out useless for all intensive purposes.
Bad as this movie was, though, I couldn't stop myself from watching and wondering, what next? :D I can't help but imagine all the excellent, unemployed script writers thinking to themselves, it's not fair. lol! :D\")\n",
+ "(0, 'We purchased this series on DVD because of all of the glowing reviews we had seen here. I gave it three stars because there can be little doubt that sometimes the acting, directing and writing are brilliant. In fact they are so brilliant we did not see the propaganda that was being transmitted so smoothly on the series. If one watches it with discernment, one will see the entire litany of the radical right wing beliefs being promulgated by the Fox (Faux) News Network. To avoid giving away any spoilers I will refrain from pointing out all of the dozens of specific instances. A brief look at the plots found here on IMDb will disclose that everything from torture to gun control to the right of a network to provide \"Infomercials\" and call them news is justified with cute plot twists and impassioned speeches given by some of the best actors in the world. We watched many shows and finally gave up in disgust when they justified torture using Attorney General Gonzales as a shining example of why all kinds of torture should be used in the name of protecting all of us. The series also manages to demean male and female gays in subtle ways by using them as plot devices depicting evil people. All in all the complete litany of the radical religious right wing.
No doubt the popularity of this program will be used by future historians as proof that America lost its way in the early part of the this century. As a student of history myself I would characterize this program as being in a league with the propaganda produced by Goebbels for Hitler and some of the propaganda produced by Hollywood for the American audience during WWII.
So if you want to use this as a teaching tool to help your students understand how subtle propaganda can be then by all means do so. Just be sure to purchase an inexpensive used copy so you can avoid enriching the ultra right wingers at Faux Network who produced this travesty.')\n",
+ "(0, 'It says that a girl named Susan Montford both wrote and directed this \"movie.\" No wonder she has no other credits to her name for writing or directing. She made a severe vocational error in choosing this as her career. This is one of the worst human creations of this millennium.
The fundamental thing wrong with this movie other than its ridiculous story of a woman running away from four weak thugs, is the blatant and complete lack of LOGIC.
**After she leaves the mall, she gets approached by four thugs as they surround her. Tell me, what woman would aggressively SHOVE a potential attacker while being surrounded, and insult them verbally? I don\\'t mean after an attack had already started, because then of course it\\'s completely normal for someone to fight back. But she shoved that guy and pretty much escalated it to the next level. No woman would do that unless she 1) had a weapon, 2) has the confidence of knowing that backup is very close, and so is relatively safe from harm, or 3) the attackers are so young, and weak looking that she\\'s pretty sure she can take them. None of that applied in this situation, so she was just acting like someone that\\'s asking to get raped or mugged. And by the way, when the security guard approached, as SOON as he came within viewing distance of Kim Basinger, why wouldn\\'t she immediately either run towards him for help, or scream??
**When she drives off after the security guard gets shot in the head, she drives into a deserted part of town, and crashes. She had a good three minute lead on the pursuers, instead of simply running off on foot in a diagonal direction behind houses and climbing fences and continuing, she gets out her Red Toolbox and starts messing around under her hood. I understand she was trying to fix her car, but she should\\'ve ran.
(I didn\\'t even mean this to be a chronological summary of the movie, because I loathe people who do that in their reviews, but it just so happens that every main sequence of this movie has something so blatantly stupid that I have to comment on it).
**Why would she carry a loud, Red Toolbox as she\\'s trying to sneak away in the dark? When she does get caught, one of the jokers demands for her to open the toolbox. First she resists, then eventually opens it. And takes out a wrench. This scene here is so rich in subtle overtones of the complete failure of dramatic effect I have to break it down, it\\'s one of the dumbest scenes in the entire movie. When asked to open the box, she\\'s resisting at first as if it were her plan to somehow get one of the thugs to open it themselves out of anger after she didn\\'t open it, in the same way that someone in some action movie might have some device that an enemy demands that person to touch/push/open/manipulate, and once that hero refuses to open it, the enemy grabs that device, only to have that device automatically dispense a chemical/shoot him in the face/render him unconscious, which was the hero\\'s plan all along. It feels like that\\'s what they tried to do with Kim Basinger here, as she opens the toolbox dramatically and quickly takes out a WRENCH and dispatches one of the thugs, and somehow GETS AWAY from him and the three other thugs.
**Throughout the rest of the movie, basically what you see is this suburban house wife, sneaking around the woods as she carries her Red Toolbox, taking out various tools used as weapons to KILL HER ATTACKERS.
**When she was running away, how did she end up moving BACK to where the thugs were? I think it was the scene where they had that radio playing loudly in tribute to the dead dude. She somehow crept up on them when I thought she was moving AWAY from them.
**Finally, this whole premise is so weak because the whole reason she\\'s being chased in the first place is because from the thugs\\' perspective, she was a witness to a murder they committed against the security officer earlier, and so they felt they had to kill her. How ridiculous. As one of the thugs even said, they could\\'ve just left town and returned back to whatever city they drove from, no one but her had seen them anyway, and she probably didn\\'t get the license plate. Even if these possibilities wouldn\\'t work in their favor, how is raising hell and hunting down someone to kill them improving your chances to get away with the original murder?')\n",
+ "(0, 'Well I just gave away 95 minutes and 47 seconds that I\\'ll never get back on this piece of trash. I heard someone online describe this movie\\'s villains as \"subhuman cannibals\", and I thought it was promising because I thought it would be like the Descent. WRONG! The Descent was a psychological thriller with dynamic characters and strong storyline. These villains are totally unrealistic and no part of their performance is enjoyable to watch. This movie isn\\'t so controversial, I\\'ve seen this level of gore in many films. This movie plain sucks. SYNOPSIS: A blonde who thinks she\\'s real hot (but she isn\\'t), her admirer, and her admirer\\'s friend (no, I don\\'t remember their names) go into the woods. Their car breaks down. They are warned to leave by a man named Mark. The blonde gets unreasonably hysterical and the next morning they can\\'t find the admirer\\'s friend. Admirer impales his foot (whoops!). Don\\'t worry, he is much more upset when his car won\\'t start than when he gets impaled by nails. After a nanosecond of coaxing, the blond leaves to find help. Events ensue that I cannot remember. During this and throughout the movie, we are shown grotesque torture scenes with no substance including one that made me gag. Blonde goes to save admirer from house of cannibals (even though all they are seen eating is intestines, which would logically be the last choice for real cannibals to eat since they contain actual food). Blonde finds admirer hurt and works very hard (unsuccessfully) to work up tears. Then you get a good laugh when the blonde is in the house and announces she can \"out think them\". Mark (the man who warned them to leave) has a remarkable change of character when he reveals the cannibals are his family. Then there is some shooting, they leave the house, the shooting continues, then a random guy shows up and says he\\'s been watching them. Before he is shot, we are shown an acid-trip inspired scene of more killing. The blonde or her admirer shoots him because he did not help them. There\\'s more killing, the admirer professes his love for the blonde. Then a mysterious hand covers the camera. What does that imply? I don\\'t know, hopefully not a sequel.')\n",
+ "(0, \"This was not enjoyable to watch. Frank puts all his dreams on the back burner and gets a normal (boring!) job just so his stepson can go to film school, but his stepson decides that he'll make a humiliating documentary about the man instead. A documentary filmmaker should point the camera and simply shoot, not manipulate and comment with snide captions. The bitterness and resentment of the filmmaker towards his stepfather is obvious. And sad. The goal seems to be to make Frank appear dumb and pathetic, instead he comes across as the most human of the 3 people featured.
Essentially a smear campaign all dressed up as something much smarter and edgier than it really is. It left me with an intense dislike for the filmmaker.\")\n",
+ "(0, 'The plot for Descent, if it actually can be called a plot, has two noteworthy events. One near the beginning - one at the end. Together these events make up maybe 5% of the total movie time. Everything (and I mean _everything_) in between is basically the director\\'s desperate effort to fill in the minutes. I like disturbing movies, I like dark movies and I don\\'t get troubled by gritty scenes - but if you expect me to sit through 60 minutes of hazy/dark (literally) scenes with NO storyline you have another thing coming. Rosario Dawson, one of my favorite actresses is completely wasted here. And no, she doesn\\'t get naked, not even in the NC-17 version, which I saw.
If you have a couple of hours to throw away and want to watch \"Descent\", take a nap instead - you\\'ll probably have more interesting dreams.')\n",
+ "(0, \"There's nothing new here. All the standard romantic-comedy scenes, even down to the taxi sprinting to the airport to stop the woman flying away. The only thing that saves this is the acting of Alison Eastwood & some of the minor characters (blink and you'll miss Gabrielle Anwar), who obviously had some fun.
Turn it off when the pair are in bliss, and you won't have to go through the inevitable plot pain.\")\n"
+ ]
+ }
+ ],
+ "source": [
+ "start=train_iter.pos_inx\n",
+ "start=0\n",
+ "\n",
+ "for i in range(-10,10):\n",
+ " print(train_iter[start+i])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "50a6efb5-01fb-4783-9237-ec83b1f8a3b6",
+ "metadata": {},
+ "source": [
+ "The following defines the mapping of numeric labels to positive and negative reviews:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "8963e017-2696-42cd-a0ba-eb2fb001b8c8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'positive review'"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "imdb_label = {0: \" negative review\", 1: \"positive review\"}\n",
+ "imdb_label[1]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "66729636-d9d6-45b6-a408-10a3636ec607",
+ "metadata": {},
+ "source": [
+ "The following checks to make sure that there are exactly 2 classes in the train dataset:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "fea7d361-1299-4e1c-a8e3-ba86a482edab",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "num_class = len(set([label for (label, text) in train_iter ]))\n",
+ "num_class"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "804dfa23-be45-47d2-b420-a60ed40fb420",
+ "metadata": {},
+ "source": [
+ "The following are some token indices:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "2a502a76-b4af-4681-bb64-dcce35f0d0de",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[466, 13077]"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "vocab([\"age\",\"hello\"])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c7ae8bd3-a8d1-4ebe-b69b-f3da3d9f05a5",
+ "metadata": {},
+ "source": [
+ "### Train and validate\n",
+ "\n",
+ "The following converts the dataset into map-style datasets and then performs a random split to create separate training and validation datasets. The training dataset will contain 95% of the samples in the original training set, while the validation dataset will contain the remaining 5%. These datasets can be used for training and evaluating a machine learning model for text classification on the IMDB dataset. The final performance of the model will be evaluated on the hold-out test set:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "a9283486-de17-4b3c-ae75-96c01ce83bb6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "# Convert the training and testing iterators to map-style datasets.\n",
+ "train_dataset = to_map_style_dataset(train_iter)\n",
+ "test_dataset = to_map_style_dataset(test_iter)\n",
+ "\n",
+ "# Determine the number of samples to be used for training and validation (5% for validation).\n",
+ "num_train = int(len(train_dataset) * 0.95)\n",
+ "\n",
+ "# Randomly split the training dataset into training and validation datasets using `random_split`.\n",
+ "# The training dataset will contain 95% of the samples, and the validation dataset will contain the remaining 5%.\n",
+ "split_train_, split_valid_ = random_split(train_dataset, [num_train, len(train_dataset) - num_train])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8785376c-ec97-4bb9-94f1-8e3ccd0e3aea",
+ "metadata": {},
+ "source": [
+ "The following code checks if a CUDA-compatible GPU is available in the system using PyTorch, a popular deep learning framework. If a GPU is available, it assigns the device variable to \"cuda\" (which stands for CUDA, the parallel computing platform and application programming interface model developed by NVIDIA). If a GPU is not available, it assigns the device variable to \"cpu\" (which means the code will run on the CPU instead).\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "52046e3f-5087-4b63-94cc-e8a7daf96407",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "device(type='cuda')"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
+ "device"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d6ae581f-0cb5-4a81-8e84-e5244ce7eea7",
+ "metadata": {},
+ "source": [
+ "### Data loader\n",
+ "\n",
+ "In PyTorch, the **`collate_fn`** function is used in conjunction with data loaders to customize the way batches are created from individual samples. The provided code defines a `collate_batch` function in PyTorch, which is used with data loaders to customize batch creation from individual samples. It processes a batch of data, including labels and text sequences. It applies the `text_pipeline` function to preprocess the text. The processed data is then converted into PyTorch tensors and returned as a tuple containing the label tensor, text tensor, and offsets tensor representing the starting positions of each text sequence in the combined tensor. The function also ensures that the returned tensors are moved to the specified device (e.g., GPU) for efficient computation.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "9428567c-19c9-4bf6-9f55-11423d70c8bf",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torch.nn.utils.rnn import pad_sequence\n",
+ "\n",
+ "def collate_batch(batch):\n",
+ " label_list, text_list = [], []\n",
+ " for _label, _text in batch:\n",
+ " label_list.append(label_pipeline(_label))\n",
+ " text_list.append(torch.tensor(text_pipeline(_text), dtype=torch.int64))\n",
+ "\n",
+ "\n",
+ " label_list = torch.tensor(label_list, dtype=torch.int64)\n",
+ " text_list = pad_sequence(text_list, batch_first=True)\n",
+ "\n",
+ "\n",
+ " return label_list.to(device), text_list.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d59cb2e6-a0a2-43cd-8afd-55484bfed045",
+ "metadata": {},
+ "source": [
+ "You convert the dataset objects to a data loader by applying the collate function.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "a2020739-e68e-434e-a57a-e7db17162eab",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "BATCH_SIZE = 64\n",
+ "\n",
+ "train_dataloader = DataLoader(\n",
+ " split_train_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")\n",
+ "valid_dataloader = DataLoader(\n",
+ " split_valid_, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")\n",
+ "test_dataloader = DataLoader(\n",
+ " test_dataset, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_batch\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "edb6cdd8-8f81-4530-9b3f-5abd5639cf62",
+ "metadata": {},
+ "source": [
+ "Let's check the what these data loaders generate:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "e08fc3af-9ffe-4271-9d2b-c9e5507d6d16",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(tensor([0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0,\n",
+ " 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0,\n",
+ " 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0], device='cuda:0'),\n",
+ " tensor([[ 39, 16, 31, ..., 0, 0, 0],\n",
+ " [ 43, 59, 1995, ..., 0, 0, 0],\n",
+ " [ 2, 139, 5, ..., 0, 0, 0],\n",
+ " ...,\n",
+ " [ 2, 4182, 17, ..., 0, 0, 0],\n",
+ " [ 38, 9, 0, ..., 0, 0, 0],\n",
+ " [ 194, 4510, 33, ..., 0, 0, 0]], device='cuda:0'))"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "label,seqence=next(iter(valid_dataloader ))\n",
+ "label,seqence"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a1369331-f011-4df4-9f59-8ef962d7f3dc",
+ "metadata": {},
+ "source": [
+ "### Neural network\n",
+ "\n",
+ "This code defines a class called `TextClassifier` that represents a simple text classifier that uses an embedding layer, a hidden linear layer with a ReLU avtivation, and an output linear layer. The constructor takes the following arguments:\n",
+ "\n",
+ "- `num_class`: The number of classes to classify.\n",
+ "- `freeze`: Whether to freeze the embedding layer.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "6e1f8a63-28ab-45dd-b1a4-c69664fe57d0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from torch import nn\n",
+ "\n",
+ "class TextClassifier(nn.Module):\n",
+ " def __init__(self, num_classes,freeze=False):\n",
+ " super(TextClassifier, self).__init__()\n",
+ " self.embedding = nn.Embedding.from_pretrained(glove_embedding.vectors.to(device),freeze=freeze)\n",
+ " # An example of adding additional layers: A linear layer and a ReLU activation\n",
+ " self.fc1 = nn.Linear(in_features=100, out_features=128)\n",
+ " self.relu = nn.ReLU()\n",
+ " # The output layer that gives the final probabilities for the classes\n",
+ " self.fc2 = nn.Linear(in_features=128, out_features=num_classes)\n",
+ "\n",
+ " def forward(self, x):\n",
+ " # Pass the input through the embedding layer\n",
+ " x = self.embedding(x)\n",
+ " # Here you can use a simple mean pooling\n",
+ "\n",
+ " x = torch.mean(x, dim=1)\n",
+ " # Pass the pooled embeddings through the additional layers\n",
+ " x = self.fc1(x)\n",
+ " x = self.relu(x)\n",
+ " return self.fc2(x)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "67cd83d4-5789-48e6-929d-22287abee1d8",
+ "metadata": {},
+ "source": [
+ "## Train the model on the full dataset\n",
+ "\n",
+ "The model can then be trained on labeled data from the IMDB dataset with two classes.\n",
+ "\n",
+ "First, let's create the model.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "id": "3acca5e8-1a69-4589-82c7-46c6c2081dc2",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "TextClassifier(\n",
+ " (embedding): Embedding(400000, 100)\n",
+ " (fc1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (relu): ReLU()\n",
+ " (fc2): Linear(in_features=128, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model=TextClassifier(num_classes=2,freeze=True)\n",
+ "model.to(device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "05531fdc-68fb-4b6e-ad6d-edeadbb81dea",
+ "metadata": {},
+ "source": [
+ "The code line `predicted_label=model(text, offsets)` is used to obtain predicted labels from a model for a given input text and its corresponding offsets.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "f96b774b-4435-4864-a264-576a28fed21b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "torch.Size([64, 2])"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model.eval()\n",
+ "predicted_label=model(seqence)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "9f9410bc-bd8c-465f-9fcb-48ba5493ce60",
+ "metadata": {},
+ "source": [
+ "The following returns the shape of `predicted_label`. Because your dataset iterators are batching 64 inputs, `predicted_label` should return 64 rows:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "065e2be0-d613-4287-8227-016209a8b87c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "torch.Size([64, 2])\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(predicted_label.shape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "57ddc0ea-36d3-4f6f-9cb0-0e491a1844f1",
+ "metadata": {},
+ "source": [
+ "For each input, the model outputs two logits corresponding to the two classes in the classification task. If the value of the first logit is greater than the second, the predicted class is class 0, which maps to a negative review. If the second logit is greater than the first, the predicted class is class 1, which maps to a positive review:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "32e6eb56-18fa-4f03-a431-53180c744c57",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "tensor([[0.1659, 0.0446],\n",
+ " [0.1570, 0.0366],\n",
+ " [0.1655, 0.0466],\n",
+ " [0.1657, 0.0450],\n",
+ " [0.1656, 0.0384],\n",
+ " [0.1721, 0.0519],\n",
+ " [0.1721, 0.0525],\n",
+ " [0.1489, 0.0255],\n",
+ " [0.1621, 0.0394],\n",
+ " [0.1737, 0.0522]], device='cuda:0', grad_fn=)"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "predicted_label[:10,]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6eb1d187-d606-4da5-93cb-d79a8a4dd889",
+ "metadata": {},
+ "source": [
+ "The following **`predict`** function takes in a text, a text pipeline, and a model as inputs. It uses a pretrained model passed as a parameter to predict the label of the text for text classification on the IMDB dataset:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "e8f1aefb-3058-4b46-9d9b-98ef5f392dbc",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def predict(text, model, text_pipeline):\n",
+ " with torch.no_grad():\n",
+ " text = torch.unsqueeze(torch.tensor(text_pipeline(text)),0).to(device)\n",
+ "\n",
+ " output = model(text)\n",
+ " return imdb_label[output.argmax(1).item()]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "e5d08087-8aba-445d-86e1-5cdacabdcf92",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "' negative review'"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "predict(\"the is a good movie\",model,text_pipeline )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b88a47f4-5326-487a-86cf-c74d1942fe5c",
+ "metadata": {},
+ "source": [
+ "You can create a function to evaluate the model's accuracy on a dataset:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "99a0391e-5770-4247-8475-3ee78fd8ee13",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def evaluate(dataloader, model, device):\n",
+ " model.eval()\n",
+ " correct = 0\n",
+ " total = 0\n",
+ " with torch.no_grad():\n",
+ " for label, text in dataloader:\n",
+ " label, text = label.to(device), text.to(device)\n",
+ " outputs = model(text)\n",
+ " _, predicted = torch.max(outputs.data, 1)\n",
+ " total += label.size(0)\n",
+ " correct += (predicted == label).sum().item()\n",
+ " accuracy = 100 * correct / total\n",
+ " return accuracy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5838996b-d0fa-4f4d-ba39-e7dd7ea6fc26",
+ "metadata": {},
+ "source": [
+ "The following evaluates the performance of your model on the test set:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "eb37f6eb-84ab-4def-b607-391ae3fcb0c1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "50.0"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader , model, device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dac15043-ba2b-43ba-94bf-87528af585d5",
+ "metadata": {},
+ "source": [
+ "Note that the current performance of the model is no better than average. This outcome is expected, considering that the model has not undergone any training yet.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a9e263a8-6689-4546-ac57-9b19fc60f509",
+ "metadata": {},
+ "source": [
+ "## Train the model\n",
+ "\n",
+ "The following defines the training function used to train the model:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "31f35bc9-ee1d-439d-9ffd-905c821eda38",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def train_model(model, optimizer, criterion, train_dataloader, valid_dataloader, epochs=100, model_name=\"my_modeldrop\"):\n",
+ " cum_loss_list = []\n",
+ " acc_epoch = []\n",
+ " best_acc = 0\n",
+ " file_name = model_name\n",
+ " \n",
+ " for epoch in tqdm(range(1, epochs + 1)):\n",
+ " model.train()\n",
+ " cum_loss = 0\n",
+ " for _, (label, text) in enumerate(train_dataloader): \n",
+ " optimizer.zero_grad()\n",
+ " predicted_label = model(text)\n",
+ " loss = criterion(predicted_label, label)\n",
+ " loss.backward()\n",
+ " torch.nn.utils.clip_grad_norm_(model.parameters(), 0.1)\n",
+ " optimizer.step()\n",
+ " cum_loss += loss.item()\n",
+ " #print(\"Loss:\", cum_loss)\n",
+ " cum_loss_list.append(cum_loss)\n",
+ " acc_val = evaluate(valid_dataloader, model, device)\n",
+ " acc_epoch.append(acc_val)\n",
+ " \n",
+ " if acc_val > best_acc:\n",
+ " best_acc = acc_val\n",
+ " print(f\"New best accuracy: {acc_val:.4f}\")\n",
+ " torch.save(model.state_dict(), f\"{model_name}.pth\")\n",
+ " \n",
+ " save_list_to_file(cum_loss_list, f\"{model_name}_loss.pkl\")\n",
+ " save_list_to_file(acc_epoch, f\"{model_name}_acc.pkl\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c9529fe4-f63d-4404-9563-f68d73b1b648",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3d36ca3a-0c98-481a-9c61-8d3a931b8c1f",
+ "metadata": {},
+ "source": [
+ "The following sets the learning rate (LR) to 1, which determines the step size at which the optimizer updates the model's parameters during training. The CrossEntropyLoss criterion is used to calculate the loss between the model's predicted outputs and the ground truth labels. This loss function is commonly employed for multi-class classification tasks.\n",
+ "\n",
+ "The chosen optimizer is Stochastic Gradient Descent (SGD), which optimizes the model's parameters based on the computed gradients with respect to the loss function. The SGD optimizer uses the specified learning rate to control the size of the weight updates.\n",
+ "\n",
+ "Additionally, a learning rate scheduler is defined using StepLR. This scheduler adjusts the learning rate during training, reducing it by a factor (gamma) of 0.1 after every epoch (step) to improve convergence and fine-tune the model's performance. These components together form the essential setup for training a neural network using the specified learning rate, loss criterion, optimizer, and learning rate scheduler.\n",
+ "\n",
+ "For the sake of time efficiency, the number of epochs has been set to 2. This is to give you a practical demonstration of what the training process looks like. However, if you were to train this model in a real-world scenario, you would likely increase the number of epochs to a larger figure, such as 100 or more. Given the reduced training set defined earlier, it takes approximately 2 minutes to complete 2 epochs of training:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "ac97cc88-2c4c-4d81-926b-1a8b81e01cc6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "LR=1\n",
+ "\n",
+ "criterion = torch.nn.CrossEntropyLoss()\n",
+ "optimizer = torch.optim.SGD(model.parameters(), lr=LR)\n",
+ "scheduler = torch.optim.lr_scheduler.StepLR(optimizer, 1.0, gamma=0.1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c51c4267-910b-4cb1-86f9-448922630c65",
+ "metadata": {},
+ "source": [
+ "You have pretrained the model for 300 epochs using a GPU and saved this model for your convenience. However, to demonstrate the training process, the following code has been included that trains the model for just two epochs. Please note that you have limited the number of epochs to two because training on a CPU can be time-consuming. Even with just two epochs, you can expect the following code to run for approximately one minute.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "a9120faf-0f9a-4c23-83d6-e67ac7474887",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "New best accuracy: 48.8800\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 10%|████▍ | 1/10 [00:06<01:02, 6.92s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "New best accuracy: 51.1200\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|███████████████████████████████████████████| 10/10 [00:59<00:00, 5.94s/it]\n"
+ ]
+ }
+ ],
+ "source": [
+ "model_name=\"model_imdb_freeze_true2\"\n",
+ "train_model(model,\n",
+ " optimizer,\n",
+ " criterion,\n",
+ " train_dataloader,\n",
+ " valid_dataloader,\n",
+ " epochs=10,\n",
+ " model_name=model_name)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "b054f5d6-b5b5-42af-8eaf-9a0e39d13852",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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UFDAyJEjeeCBB7BavV/mYcOGkZ+fz3PPPYfdbsdms/Hcc88xfPhwBg0a1Of5+mp38+bNjBo1igEDBijvzZo1i6amJr788suemsNlt+NsafG+umQeY43QsOubijz/wVngRQi09o1sbeV2Q01j5JcD5UlZRb747vaE/N2NRhmFKEHoG31nnV2iadmlEqqRO3G5XCxevJjJkycrgoEAN998MwMHDqS0tJTdu3fzs5/9jH379vHPf/4T8AgPfvjhh1x99dU88sgjAJx11lm8++676HS9/3n9tVtXV+cX1AHKz3V1dT22efovf+XUM88oP9c57CFcicghHlB9U5BpwKjXYnM4qWm0MaggOvZEiYiws+obSZIozzNx4EQLRxusEb93hOtE30SzjELsiO0bQ3k51i1bkkLyJFlRTWC3cOFC9uzZw8aNG/3ev+uuu5R/jxo1ipKSEqZPn87BgwcZOnQoNpuNBQsWMHnyZF5++WWcTidPPPEEc+fOZfv27RiNPX85+2s3FPJ/cBd58+9QfjYdOwaVlSG1FQnE4Nw3su/k/igNzomMmBT0T3mu0RPYRThr5G/lJq5/T0Szxk7siO0b2TNWZOzUiyrWWBYtWsTq1atZv349ZZ2WJb0xfvx4AMVkd8WKFRw+fJilS5cybtw4JkyYwIoVKzh06BBvvPFGwH3o2m5xcTHHjx/3O0b+ube6PI3BgDYz0/vKiG+gIGb9/VMexSWdREZInfRPtLJGXiu3NIwGbT9HpyblPl7Pkd6dKV//CnHv94ihQhYpFpInaiWugZ3b7WbRokWsXLmSDz74gMGDB/f7Ozt37gRQTHatVisajcZP60n+2eUKvG6qa7sTJ07kiy++4MSJE8oxa9euJSsrixEjRgTcbjwRg3P/yMXpYmesPyLb2z/RyhodFT6l/SJnMlvaO2i09q1+ECzee188N3tCXy5EitVOXAO7hQsXsnz5clasWIHZbKauro66ujpsNs8X6+DBgzzyyCPs2LGDw4cP8+abb3L77bczdepURo8eDcCMGTNoaGhg4cKF7N27ly+//JL58+ej0+m45JJLADh27BiVlZVs27Yt4HZnzpzJiBEjuO2229i1axfvvvsuv/zlL1m4cCFpaerfAt/hdFHT6DEoFzPP3vFm7ERg54vI9vaP130istlece37J12vpdDseQ5HclLmZ+Umrn+P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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "cum_loss_list=load_list_from_file(\"model_imdb_freeze_true2_loss.pkl\")\n",
+ "acc_epoch=load_list_from_file(\"model_imdb_freeze_true2_acc.pkl\")\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "9cc31ff0-ee7c-4f88-8005-01de11c81ff0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "%%capture \n",
+ "!wget https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/ZvhVWJU0flC7BmU1jjYxjg/model-imdb-freeze-true2.pth\n",
+ "!wget https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/2RdN-JG4Rm5Gx3UNtOP4NA/model-imdb-freeze-true2-acc.pkl\n",
+ "!wget https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/8qoGvWk0BdXRGoFAOT-dAw/model-imdb-freeze-true2-loss.pkl\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8495d949-6aec-4330-bf71-0ce599265cbd",
+ "metadata": {},
+ "source": [
+ "Let's plot the cost and accuracy for each epoch for the pretrained model that was trained for 300 epochs. From the plot, it becomes evident that with just a few epochs, the accuracy exhibits significant volatility.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "8c51d7c9-8125-47d4-a43d-371b9ea9d9b4",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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lA0jfZyCIMDGjRtxxBFHoFDINSqKnNiNM+zatQudnZ3YuXMnOjo6xno64xL5MUpHfozSkR+jdOTHKB35McqG/DiNHvLgiRw5cuTIkSNHjn0EObHLkSNHjhw5cuTYR5ATu3GGcrmMT3/60yiXy2M9lXGL/BilIz9G6ciPUTryY5SO/BhlQ36cRg+5j12OHDly5MiRI8c+glyxy5EjR44cOXLk2EeQE7scOXLkyJEjR459BDmxy5EjR44cOXLk2EeQE7scOXLkyJEjR459BDmxG0e47rrrMH/+fDQ1NWHZsmV4+OGHx3pKY4arr74ajDHt/5IlS+T6wcFBrFy5EpMnT0ZbWxvOO+88WeZtX8V9992Hs846CzNnzgRjDLfeequ2nnOOT33qU5gxYwaam5uxYsUKPPvss1qbbdu24cILL0RHRwe6urpwySWXoLe3dxT3Yu8i7RhdfPHFsevq9NNP19rs68fommuuwVFHHYX29nb09PTgnHPOwerVq7U2WX5fL730Et74xjeipaUFPT09+MhHPoJarTaau7LXkOUYnXDCCbFr6fLLL9fa7MvH6Prrr8fSpUvR0dGBjo4OLF++HP/zP/8j10/0a2gskRO7cYIf/vCH+OAHP4hPf/rT+N3vfofDDjsMp512GjZt2jTWUxszHHzwwVi/fr38f//998t1V155JX7xi1/gxz/+Me69916sW7cO55577hjOdu+jr68Phx12GK677jrr+i984Qv42te+hq9//et46KGH0NraitNOOw2Dg4OyzYUXXoinnnoKd9xxB375y1/ivvvuw2WXXTZau7DXkXaMAOD000/Xrqvvf//72vp9/Rjde++9WLlyJR588EHccccdqFarOPXUU9HX1yfbpP2+6vU63vjGN6JSqeCBBx7At7/9bdx000341Kc+NRa7NOLIcowA4NJLL9WupS984Qty3b5+jGbPno3Pf/7zePTRR/HII4/gpJNOwtlnn42nnnoKQH4NjSl4jnGB173udXzlypXye71e5zNnzuTXXHPNGM5q7PDpT3+aH3bYYdZ1O3bs4MVikf/4xz+Wy5555hkOgK9atWqUZji2AMBvueUW+T0IAj59+nT+xS9+US7bsWMHL5fL/Pvf/z7nnPOnn36aA+C//e1vZZv/+Z//4Ywxvnbt2lGb+2jBPEacc/7Od76Tn3322c5tJtox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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "cum_loss_list=load_list_from_file(model_name.replace('_','-') + \"-loss.pkl\")\n",
+ "acc_epoch=load_list_from_file(model_name.replace('_','-') + \"-acc.pkl\")\n",
+ "plot(cum_loss_list,acc_epoch)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8779d43e-2ae8-4f27-b90a-d436904f4d9e",
+ "metadata": {},
+ "source": [
+ "Here, you load the model that has been trained for you. Please comment out these lines if you want to train the model yourself.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "cafb242d-1968-48f4-973f-b1894c138e8e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "TextClassifier(\n",
+ " (embedding): Embedding(400000, 100)\n",
+ " (fc1): Linear(in_features=100, out_features=128, bias=True)\n",
+ " (relu): ReLU()\n",
+ " (fc2): Linear(in_features=128, out_features=2, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model.load_state_dict(torch.load(model_name.replace('_','-') + \".pth\", map_location=device))\n",
+ "model.eval()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0f52df3f-cac4-48ef-abec-7317fcc02dec",
+ "metadata": {},
+ "source": [
+ "The following evaluates the model on the test data. The pretrained model achieves an accuracy of 66%.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "a80d646f-83df-4a88-b498-b3726935559c",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "66.216"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "evaluate(test_dataloader , model, device)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c8cc8cd8-04f9-4089-be92-91927d136ce4",
+ "metadata": {},
+ "source": [
+ "## Low-Rank Adaptation (LoRA)\n",
+ "\n",
+ "PyTorch and the Hugging Face library provide robust tools for model manipulation with LoRA, but they are not intuitive. In this section, you delve into building a LoRA (Low-Rank Adaptation) implementation from scratch using PyTorch. LoRA is a general method, but it's commonly applied to the Attention layer. For the sake of simplicity, in this lab, you apply it to a Vanilla neural network. This decision is made because accessing the Attention Parameters in the PyTorch Encoder module can be challenging.\n",
+ "\n",
+ "### LoRA\n",
+ "1) For any arbitrary layer of a network, you have the model with pretrained parameters $ W_0 $, which are the parameters of the model. If you only consider the attention parameters for each layer, at a minimum $ 4 \\times m \\times n$ for each layer. For many models, this can reach in the trillions of learnable parameters. Each time you fine-tune a new dataset, you have to store trillions of parameters.\n",
+ "\n",
+ "2) $ \\Delta W $ represents two matrices $ B $ and $ A $, where $ B $ and $ A $ are constrained such that $ B \\in \\mathbb{R}^{m \\times r} $, $ A \\in \\mathbb{R}^{r \\times n} $, and $ r \\leq \\min(m, n) $. The total number of parameters is $ A $ and $ B $ is much smaller than $ W_1$ and much easier to store.\n",
+ "\n",
+ "$ W_1\\approx W_0 + \\Delta W = W_0 + BA $\n",
+ "\n",
+ "\n",
+ "\n",
+ "3) To train and predict, the forward pass holds $W_0$ constant.\n",
+ "\n",
+ "$h = W_0 + \\Delta W = W_0x + BAx $\n",
+ "\n",
+ "\n",
+ "To scale $\\Delta W \\times \\dfrac{\\alpha'}{r}$, where $\\alpha$ is a constant in $ r $. Adjusting $\\alpha'$ is similar to tuning the learning rate if the initialization is properly scaled. Therefore, you set $\\alpha'$ to the first $ r $ you try and do not tune it further; just use $\\alpha$. This scaling reduces the need to retune hyperparameters. The final form is:\n",
+ "\n",
+ "$h = W_0x + \\dfrac{\\alpha'}{r} BAx= W_0x + \\alpha BAx $\n",
+ "\n",
+ "The following example illustrates the process.\n",
+ "\n",
+ "\n",
+ "$\n",
+ "W_0 + BA = \n",
+ "\\begin{bmatrix}\n",
+ "w_{11} & w_{12} & w_{13} & w_{14} \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n",
+ "w_{21} & w_{22} & w_{23} & w_{24} \\\\\\\\\\\\\n",
+ "w_{31} & w_{32} & w_{33} & w_{34} \\\\\\\\\\\\\n",
+ "w_{41} & w_{42} & w_{43} & w_{44} \\\\\\\\\\\\\n",
+ "\\end{bmatrix} +\n",
+ "\\begin{bmatrix}\n",
+ "a_1 \\\\\\\\\\\\\n",
+ "a_2 \\\\\\\\\\\\\n",
+ "a_3 \\\\\\\\\\\\\n",
+ "a_4 \\\\\\\\\\\\\n",
+ "\\end{bmatrix}\n",
+ "\\begin{bmatrix}\n",
+ "b_1 & b_2 & b_3 & b_4 \\\\\\\\\n",
+ "\\end{bmatrix}\n",
+ "$\n",
+ "\n",
+ "This illustrates the product of matrices $ A $ and $ B $, denoted as $ AB $, which can be added to $ W_0 $. However, the resulting matrix $ W_0 + AB $ is limited depending on the dimensions of $ A $ and $ B $. This limitation is due to the concept of rank.\n",
+ "\n",
+ "### Rank\n",
+ "The rank of a matrix is the number of dimensions the rows of the matrix \"live in.\" A square matrix is said to be **full rank** if its rank is equal to the number of its rows or columns. Let's make this idea more intuitive with an example.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "id": "f5054a80-14ad-4f3a-86f6-4b2475dfd125",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sympy import Matrix, init_printing,Symbol\n",
+ "from numpy.linalg import qr,eig,inv,matrix_rank,inv, norm\n",
+ "from scipy.linalg import null_space\n",
+ "from sympy import Matrix, init_printing,Symbol\n",
+ "init_printing()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "0fa127f4-d7bd-44f2-a22b-5e4723f1ec42",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_matrix_and_subspace(F):\n",
+ " assert F.shape[0] == 3, \"Matrix F must have rows equal to 3 for 3D visualization.\"\n",
+ " \n",
+ " ax = plt.figure().add_subplot(projection='3d')\n",
+ " \n",
+ " # Plot each column vector of F as a point and line from the origin\n",
+ " for i in range(F.shape[1]):\n",
+ " ax.quiver(0, 0, 0, F[0, i], F[1, i], F[2, i], color='blue', arrow_length_ratio=0.1, label=f'Column {i+1}')\n",
+ "\n",
+ " if F.shape[1] == 2:\n",
+ " # Calculate the normal to the plane spanned by the columns of F if they are exactly two\n",
+ " normal_vector = np.cross(F[:, 0], F[:, 1])\n",
+ " # Plot the plane\n",
+ " xx, yy = np.meshgrid(np.linspace(-3, 3, 10), np.linspace(-3, 3, 10))\n",
+ " zz = (-normal_vector[0] * xx - normal_vector[1] * yy) / normal_vector[2] if normal_vector[2] != 0 else 0\n",
+ " ax.plot_surface(xx, yy, zz, alpha=0.5, color='green', label='Spanned Plane')\n",
+ "\n",
+ " # Set plot limits and labels\n",
+ " ax.set_xlim([-3, 3])\n",
+ " ax.set_ylim([-3, 3])\n",
+ " ax.set_zlim([-3, 3])\n",
+ " ax.set_xlabel('$x_{1}$')\n",
+ " ax.set_ylabel('$x_{2}$')\n",
+ " ax.set_zlabel('$x_{3}$')\n",
+ " #ax.legend()\n",
+ "\n",
+ " plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "0718ea57-d8af-4bec-9608-d425656912dd",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_matrix_and_subspace(F):\n",
+ " assert F.shape[0] == 3, \"Matrix F must have 3 rows to represent 3D space.\"\n",
+ "\n",
+ " ax = plt.figure().add_subplot(projection='3d')\n",
+ " \n",
+ " # Plot each column vector of F\n",
+ " for i in range(F.shape[1]):\n",
+ " ax.quiver(0, 0, 0, F[0, i], F[1, i], F[2, i], color='blue', arrow_length_ratio=0.1, label=f'Column {i+1}')\n",
+ "\n",
+ " # Calculate the null space of the transpose of F\n",
+ " normal_vector = null_space(F.T)\n",
+ " \n",
+ " # Check that the null space is 1-dimensional\n",
+ " if normal_vector.shape[1] == 1:\n",
+ " normal_vector = normal_vector[:, 0] # Simplify the array to 1D\n",
+ " # Create a meshgrid for the plane\n",
+ " xx, yy = np.meshgrid(np.linspace(-3, 3, 10), np.linspace(-3, 3, 10))\n",
+ " # Calculate corresponding z coordinates based on the plane equation ax + by + cz = 0\n",
+ " zz = (-normal_vector[0] * xx - normal_vector[1] * yy) / normal_vector[2] if normal_vector[2] != 0 else 0\n",
+ " ax.plot_surface(xx, yy, zz, alpha=0.5, color='green', label='Spanned Plane')\n",
+ " else:\n",
+ " print(\"The null space is not 1-dimensional, so a unique plane cannot be determined.\")\n",
+ "\n",
+ " # Set plot limits and labels\n",
+ " ax.set_xlim([-3, 3])\n",
+ " ax.set_ylim([-3, 3])\n",
+ " ax.set_zlim([-3, 3])\n",
+ " ax.set_xlabel('X axis')\n",
+ " ax.set_ylabel('Y axis')\n",
+ " ax.set_zlabel('Z axis')\n",
+ " #ax.legend()\n",
+ "\n",
+ " plt.show()\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "82792cf9-222a-4d02-8b3b-cf4b124b0dc5",
+ "metadata": {},
+ "source": [
+ "In the context of Low-Rank Adaptation (LoRA), where $B \\in \\mathbb{R}^{d \\times r}$, the matrix $B$:\n",
+ "\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "10fb63a2-c601-4911-a5ad-d495cb935e48",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/latex": [
+ "$\\displaystyle \\left[\\begin{matrix}1 & 0\\\\0 & 1\\\\0 & 0\\end{matrix}\\right]$"
+ ],
+ "text/plain": [
+ "⎡1 0⎤\n",
+ "⎢ ⎥\n",
+ "⎢0 1⎥\n",
+ "⎢ ⎥\n",
+ "⎣0 0⎦"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "B=torch.tensor([[1,0],[0,1],[0,0]]).numpy()\n",
+ "\n",
+ "Matrix(B)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6d7e2826-6a0d-4244-9e48-f1803873cc8c",
+ "metadata": {},
+ "source": [
+ "This $3 \\times 2$ matrix has columns that span a 2-dimensional subspace in $\\mathbb{R}^3$. Specifically, the columns of $B$ are:\n",
+ "\n",
+ "- $\\mathbf{b}_1 = \\begin{bmatrix} 1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 0 \\\\ 0 \\end{bmatrix}$\n",
+ "- $\\mathbf{b}_2 = \\begin{bmatrix} 0 \\\\\\\\ 1 \\\\ 0 \\end{bmatrix}$\n",
+ "\n",
+ "These columns are standard basis vectors for the $xy$-plane in $\\mathbb{R}^3$, and, thus, they span the $xy$-plane shown in green in the following image. Muliplying each column vector in blue by a scaler always falls in the plane.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "3c3e3709-0681-44c8-9301-36f3b52401f7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ " plot_matrix_and_subspace(B)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cf941efb-add8-470b-862f-14dd911cc860",
+ "metadata": {},
+ "source": [
+ "In this scenario, the vectors, despite each having three components, can reach any point on the two-dimensional green plane depicted in the image. These vectors span the green plane, which resides within a two-dimensional subspace. This subspace's dimension, also known as its 'rank', is two—corresponding to the dimensionality of the plane. If the rank were three, any point in the 3D space could be reached by some combination of the columns of $𝐵$. The rank of a matrix can be determined by using the matrix_rank function provided by NumPy.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "894b2da5-9f86-4336-ab4f-b3a3f158b978",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2"
+ ]
+ },
+ "execution_count": 50,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "matrix_rank(B)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "62c90995-d697-4bf4-96aa-0c60d0b42698",
+ "metadata": {},
+ "source": [
+ "Here, you plot a different matrix where the matrix spans a different plane, but the rank remains two.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "c92466da-2d0e-485d-abda-5c7ed31cc4a2",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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4L//+7+xceNGtLa24kc/+hH27ds35XXNooQSBE888QS2b9+OpqamcXuOup46vHnmTa/bfH1Igqn8MmAgF8thsVsgYAVwcIFdFIEvU10uZ0CBR08oRArMT5qPTZmbRvFqvMHzPM6ePUvJpba2FqtWrUJpaSmuvvpqxMfH05y77yY50oHA/v5+VFRUYObMmXQyO9JBUnOJiYm0/jAS8DyPwcFBOutitVq9pPfHY9Ym2GzMhx9+iFtvvRUvvfQSbrzxxrA/73jh2WefpYONixYtwp///OewtTaTQvu3v/1tnD59GkeOHEFSUhLKysrQ2dmJlStXUomj3bt345FHHsHevXunvLZZlFCC4OGHH8b777+PU6dOjdtzvFz2MloHWr1u8zTECuVBQq7TSDUwWIPLsMiFcrAsG/RxPJGblItrc64NexqF53mcP38eO3fuxK5du1BVVYUVK1agtLQU11xzDZKTkym5eA4EEvOr5ORkmvf2BfHZmDt37pTx8TaZTCgrKwtrao4YYGm1Wi8DrKSkpLDUIYmemEwm8+qaO3ToEL797W/j+eefx2233TYlIsPxhMvl8vqe1tXVoaSkBDExMdi1a5eX2G13dzeOHz+OrVu34le/+hV+/OMfT8aSw4oooQRAQ0MDioqK8OSTT3rlQMOJi/0X8UrFK163+XZqBSMUz+skAknQIruYFYMHD6lQGnI2BQBSlCm4o+AOSITj2wTB8zyam5spuZw8eRLLli1DSUkJNm/ejPT0dEouRqORpsUsFovftLlOp8OZM2emjMoxcIlMUlJSaJttuEEMsLRaLQwGA9RqNSWXkYphAt5Kx57ilJ988gmuv/56PP300/jOd77ztScTT/zsZz/D3XffjVmzZqGlpQXr1q2DUqnEjh07kJGRgc7OTvz+97/H0aNHcfPNN+OBBx6Y7CWHBV9pQhnppD4AtLe344orrsCqVavw0ksvjdva/nn6n6jvraf/9nVIDOZB4ulXEqq+ImAEEAvcDQW+boy+UIqVuKvoLmikmhG/jrGA53m0trZi165d2LVrFz7//HMUFxejpKQEJSUlyMjIoJuUJ7mYTCYolUoYjUZkZ2dj2rRpE7ru0cJoNKKsrAxpaWkTZkBms9nojJBer4dCoRjRACox9BIKhVi0aBElk2PHjmHLli343//9X9x9991RMvHAZ599hiuvvBKt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",
+ "text/plain": [
+ "
` header displaying the content of the `article` variable, and an `
` header indicating the predicted category of the news article which is provided by the `result` variable. The placeholders `{article}` and `{result}` will be dynamically replaced with actual values when this markdown is rendered.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "id": "6264a056-7192-47fa-b02b-5f32d6e0e404",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "\n",
+ "
\n",
+ "
This was a lacklustre movie with very little going for it. I was not impressed.
\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# QLoRA with HuggingFace\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "QLoRA is an extension of LoRA that leverages quantization. Quantization is the process of mapping continuous infinite values to a smaller set of discrete finite values. Effectively, the model's parameters are are stored in 2, 3, 4 or 8-bits as opposed to the usual 32-bits, lowering the number of bits needed to store information. Quantization offers two benefits:\n",
+ "\n",
+ "1. It reduced memory footprint. By using a finite set of discrete levels, the values can be represented with fewer bits, reducing the memory required to store them; and\n",
+ "2. It allows for efficient computation. Quantized values can be represented and processed more efficiently on hardware with limited numerical precision, such as low-power microcontrollers or specialized AI/ML accelerators.\n",
+ "\n",
+ "Choosing QLoRA over LoRA provides several tradeoffs. QLoRA offers the following advantages of LoRA:\n",
+ "\n",
+ "1. Substantially smaller GPU memory usage than LoRA.\n",
+ "2. Higher maximum sequence lengths resulting from the smaller GPU memory usage.\n",
+ "3. Higher batch sizes resulting from the smaller GPU memory usage.\n",
+ "\n",
+ "The main disadvantage of QLoRA is slower fine-tuning speed.\n",
+ "\n",
+ "Interestingly enough, the accuracy of QLoRA and LoRA are comparable despite the fact that QLoRA offers substantially smaller models with lower GPU memory footprints than LoRA.\n",
+ "\n",
+ "The original QLoRA paper is available [here](https://arxiv.org/pdf/2305.14314).\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Note that the following uses the popular `BitsAndBytes` library to implement QLoRA, which only supports quantization using a CUDA-enabled GPU. You will not be able to run this notebook without a compatible GPU!**"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# __Table of Contents__\n",
+ "\n",
+ "\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Objectives\n",
+ "\n",
+ "After completing this lab you will be able to:\n",
+ "\n",
+ "- Load and predict using models from HuggingFace\n",
+ "- Fine-tune language models using QLoRA\n",
+ "- Understand the advantages and disadvantages of QLoRA\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Setup\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Install required libraries\n",
+ "\n",
+ "For this lab, you use the following libraries, which are __not__ preinstalled in the Skills Network Labs environment. __You must run the code in the following cell__ to install them.\n",
+ "\n",
+ "\n",
+ "```bash\n",
+ "!pip install -U datasets==2.20.0 huggingface_hub==0.23.4 transformers==4.41.2 peft==0.11.1 bitsandbytes==0.43.1 matplotlib==3.9.0 scikit-learn==1.5.0\n",
+ "```\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Import required libraries\n",
+ "\n",
+ "The following code imports required libraries.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "True\n",
+ "Tesla P40\n",
+ "Import Successfully!\n"
+ ]
+ }
+ ],
+ "source": [
+ "import os\n",
+ "os.environ[\"CUDA_VISIBLE_DEVICES\"]=\"0\"\n",
+ "\n",
+ "import torch\n",
+ "print(torch.cuda.is_available())\n",
+ "print(torch.cuda.get_device_name())\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "# You can also use this section to suppress warnings generated by your code:\n",
+ "def warn(*args, **kwargs):\n",
+ " pass\n",
+ "import warnings\n",
+ "warnings.warn = warn\n",
+ "warnings.filterwarnings('ignore')\n",
+ "\n",
+ "import json\n",
+ "\n",
+ "import numpy as np\n",
+ "\n",
+ "from datasets import load_dataset #load_metric\n",
+ "\n",
+ "from transformers import AutoTokenizer, AutoModelForSequenceClassification, Trainer, TrainingArguments, BitsAndBytesConfig\n",
+ "\n",
+ "from peft import LoraConfig, get_peft_model, TaskType, replace_lora_weights_loftq, prepare_model_for_kbit_training\n",
+ "\n",
+ "print(\"Import Successfully!\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's check whether a compatible GPU is available:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "device(type='cuda')"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Move the model to the appropriate device\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
+ "device"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Define helper functions\n",
+ "\n",
+ "Here are some helper functions. We will use these later to save and load from JSON:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def save_to_json(data, file_path):\n",
+ " \"\"\"\n",
+ " Save a dictionary to a JSON file.\n",
+ "\n",
+ " Args:\n",
+ " data (dict): The dictionary to save.\n",
+ " file_path (str): The path to the JSON file.\n",
+ " \"\"\"\n",
+ " with open(file_path, 'w') as json_file:\n",
+ " json.dump(data, json_file, indent=4)\n",
+ " print(f\"Data successfully saved to {file_path}\")\n",
+ " \n",
+ " \n",
+ "def load_from_json(file_path):\n",
+ " \"\"\"\n",
+ " Load data from a JSON file.\n",
+ "\n",
+ " Args:\n",
+ " file_path (str): The path to the JSON file.\n",
+ "\n",
+ " Returns:\n",
+ " dict: The data loaded from the JSON file.\n",
+ " \"\"\"\n",
+ " with open(file_path, 'r') as json_file:\n",
+ " data = json.load(json_file)\n",
+ " return data "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# IMDB dataset \n",
+ "\n",
+ "The IMDB dataset is a large movie review dataset, consisting of 50,000 movie reviews for training and 25,000 movie reviews for testing. The reviews are labeled as either positive or negative, and each review is a variable-length sequence of words. The IMDB dataset is a popular benchmark for text classification tasks, and it has been used to train a variety of natural language processing models. The following line loads the IMDB dataset:\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "imdb = load_dataset(\"imdb\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's display the structure of the IMDB dataset:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Dataset structure:\n",
+ "DatasetDict({\n",
+ " train: Dataset({\n",
+ " features: ['text', 'label'],\n",
+ " num_rows: 25000\n",
+ " })\n",
+ " test: Dataset({\n",
+ " features: ['text', 'label'],\n",
+ " num_rows: 25000\n",
+ " })\n",
+ " unsupervised: Dataset({\n",
+ " features: ['text', 'label'],\n",
+ " num_rows: 50000\n",
+ " })\n",
+ "})\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Display the structure of the dataset\n",
+ "print(\"Dataset structure:\")\n",
+ "print(imdb)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following displays the available splits in the dataset (train, test, unsupervised)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "dict_keys(['train', 'test', 'unsupervised'])"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "imdb.keys()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's explore and print a sample from the training set:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Sample from the training set:\n",
+ "{'text': 'I rented I AM CURIOUS-YELLOW from my video store because of all the controversy that surrounded it when it was first released in 1967. I also heard that at first it was seized by U.S. customs if it ever tried to enter this country, therefore being a fan of films considered \"controversial\" I really had to see this for myself.
The plot is centered around a young Swedish drama student named Lena who wants to learn everything she can about life. In particular she wants to focus her attentions to making some sort of documentary on what the average Swede thought about certain political issues such as the Vietnam War and race issues in the United States. In between asking politicians and ordinary denizens of Stockholm about their opinions on politics, she has sex with her drama teacher, classmates, and married men.
What kills me about I AM CURIOUS-YELLOW is that 40 years ago, this was considered pornographic. Really, the sex and nudity scenes are few and far between, even then it\\'s not shot like some cheaply made porno. While my countrymen mind find it shocking, in reality sex and nudity are a major staple in Swedish cinema. Even Ingmar Bergman, arguably their answer to good old boy John Ford, had sex scenes in his films.
I do commend the filmmakers for the fact that any sex shown in the film is shown for artistic purposes rather than just to shock people and make money to be shown in pornographic theaters in America. I AM CURIOUS-YELLOW is a good film for anyone wanting to study the meat and potatoes (no pun intended) of Swedish cinema. But really, this film doesn\\'t have much of a plot.', 'label': 0}\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Explore and print a sample from the training set\n",
+ "print(\"\\nSample from the training set:\")\n",
+ "print(imdb['train'][0])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The followiong displays the unique class labels in the dataset. For the IMDB dataset, the labels are integers representing sentiment, where 0 stands for “negative” and 1 stands for “positive”. Here’s how you can extract this information:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Unique labels in the dataset (class information):\n",
+ "{0, 1}\n"
+ ]
+ }
+ ],
+ "source": [
+ "train_labels = imdb['train']['label']\n",
+ "unique_labels = set(train_labels)\n",
+ "print(\"\\nUnique labels in the dataset (class information):\")\n",
+ "print(unique_labels)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following dictionary maps class values to class names:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{0: 'negative', 1: 'positive'}"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "class_names = {0: \"negative\", 1: \"positive\"}\n",
+ "class_names"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Since the IMDB dataset is quite large, we’ll create smaller subsets to facilitate quicker training and testing.\n",
+ "\n",
+ "In this notebook, we simulate training and testing using the `small_` datasets due to time constraints. However, it's important to recognize that these smaller datasets are insufficient for proper fine-tuning of the DistilBERT model. For more accurate results, a larger subsample, such as the `medium_train_dataset`, would be necessary.\n",
+ "\n",
+ "Consequently, all results presented here pertain to models trained with the `medium_train_dataset` and evaluated on the test set from `medium_test_dataset`. However, the notebook, as is, does NOT train models on these datasets; rather, it trains models using the `small_` datasets, as training on the `medium_` datasets would be too time-consuming.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "small_train_dataset = imdb[\"train\"].shuffle(seed=42).select([i for i in list(range(50))])\n",
+ "small_test_dataset = imdb[\"test\"].shuffle(seed=42).select([i for i in list(range(50))])\n",
+ "medium_train_dataset = imdb[\"train\"].shuffle(seed=42).select([i for i in list(range(3000))])\n",
+ "medium_test_dataset = imdb[\"test\"].shuffle(seed=42).select([i for i in list(range(300))])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Tokenizer\n",
+ "\n",
+ "The following loads the DistilBERT tokenizer: \n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tokenizer = AutoTokenizer.from_pretrained(\"distilbert-base-uncased\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The tokenizer provides tokenized input IDs and an attention mask for a given input text:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Input IDs: [101, 1045, 12524, 1045, 2572, 8025, 1011, 3756, 2013, 2026, 2678, 3573, 2138, 1997, 2035, 1996, 6704, 2008, 5129, 2009, 2043, 2009, 2001, 2034, 2207, 1999, 3476, 1012, 1045, 2036, 2657, 2008, 2012, 2034, 2009, 2001, 8243, 2011, 1057, 1012, 1055, 1012, 8205, 2065, 2009, 2412, 2699, 2000, 4607, 2023, 2406, 1010, 3568, 2108, 1037, 5470, 1997, 3152, 2641, 1000, 6801, 1000, 1045, 2428, 2018, 2000, 2156, 2023, 2005, 2870, 1012, 1026, 7987, 1013, 1028, 1026, 7987, 1013, 1028, 1996, 5436, 2003, 8857, 2105, 1037, 2402, 4467, 3689, 3076, 2315, 14229, 2040, 4122, 2000, 4553, 2673, 2016, 2064, 2055, 2166, 1012, 1999, 3327, 2016, 4122, 2000, 3579, 2014, 3086, 2015, 2000, 2437, 2070, 4066, 1997, 4516, 2006, 2054, 1996, 2779, 25430, 14728, 2245, 2055, 3056, 2576, 3314, 2107, 2004, 1996, 5148, 2162, 1998, 2679, 3314, 1999, 1996, 2142, 2163, 1012, 1999, 2090, 4851, 8801, 1998, 6623, 7939, 4697, 3619, 1997, 8947, 2055, 2037, 10740, 2006, 4331, 1010, 2016, 2038, 3348, 2007, 2014, 3689, 3836, 1010, 19846, 1010, 1998, 2496, 2273, 1012, 1026, 7987, 1013, 1028, 1026, 7987, 1013, 1028, 2054, 8563, 2033, 2055, 1045, 2572, 8025, 1011, 3756, 2003, 2008, 2871, 2086, 3283, 1010, 2023, 2001, 2641, 26932, 1012, 2428, 1010, 1996, 3348, 1998, 16371, 25469, 5019, 2024, 2261, 1998, 2521, 2090, 1010, 2130, 2059, 2009, 1005, 1055, 2025, 2915, 2066, 2070, 10036, 2135, 2081, 22555, 2080, 1012, 2096, 2026, 2406, 3549, 2568, 2424, 2009, 16880, 1010, 1999, 4507, 3348, 1998, 16371, 25469, 2024, 1037, 2350, 18785, 1999, 4467, 5988, 1012, 2130, 13749, 7849, 24544, 1010, 15835, 2037, 3437, 2000, 2204, 2214, 2879, 2198, 4811, 1010, 2018, 3348, 5019, 1999, 2010, 3152, 1012, 1026, 7987, 1013, 1028, 1026, 7987, 1013, 1028, 1045, 2079, 4012, 3549, 2094, 1996, 16587, 2005, 1996, 2755, 2008, 2151, 3348, 3491, 1999, 1996, 2143, 2003, 3491, 2005, 6018, 5682, 2738, 2084, 2074, 2000, 5213, 2111, 1998, 2191, 2769, 2000, 2022, 3491, 1999, 26932, 12370, 1999, 2637, 1012, 1045, 2572, 8025, 1011, 3756, 2003, 1037, 2204, 2143, 2005, 3087, 5782, 2000, 2817, 1996, 6240, 1998, 14629, 1006, 2053, 26136, 3832, 1007, 1997, 4467, 5988, 1012, 2021, 2428, 1010, 2023, 2143, 2987, 1005, 1056, 2031, 2172, 1997, 1037, 5436, 1012, 102]\n",
+ "Attention Mask: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n"
+ ]
+ }
+ ],
+ "source": [
+ "my_tokens=tokenizer(imdb['train'][0]['text'])\n",
+ "\n",
+ "# Print the tokenized input IDs\n",
+ "print(\"Input IDs:\", my_tokens['input_ids'])\n",
+ "\n",
+ "# Print the attention mask\n",
+ "print(\"Attention Mask:\", my_tokens['attention_mask'])\n",
+ "\n",
+ "# If token_type_ids is present, print it\n",
+ "if 'token_type_ids' in my_tokens:\n",
+ " print(\"Token Type IDs:\", my_tokens['token_type_ids'])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following preprocessing function tokenizes a text input. We apply this function to all texts in our datasets using the `.map()` method:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "0893c8e8a7d3452abbcabc48a4e8604d",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Map: 0%| | 0/50 [00:00, ? examples/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def preprocess_function(examples):\n",
+ " return tokenizer(examples[\"text\"], padding=True, truncation=True, max_length=512)\n",
+ "\n",
+ "small_tokenized_train = small_train_dataset.map(preprocess_function, batched=True)\n",
+ "small_tokenized_test = small_test_dataset.map(preprocess_function, batched=True)\n",
+ "medium_tokenized_train = medium_train_dataset.map(preprocess_function, batched=True)\n",
+ "medium_tokenized_test = medium_test_dataset.map(preprocess_function, batched=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Run the following to see what a sample from the tokenized dataset looks like. Note that this dataset is identical to the original, with just the token indices and attention mask appended.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{'text': 'With no affinity towards any type of filmmaking, and a healthy appreciation of documentaries, I can honestly say I was angry at myself for bothering to sit through the entire length of \"20 Dates\". I won\\'t waste your time with the plot, you may read other reviews. I will say though that Berkowitz\\'s hyper, Woody Allen-style narration was extremely annoying. You either wished he\\'d lay off the coffee or ingest some tranquilizers. And it\\'s potentially apparent to Berkowitz himself that this film was a bad idea, as parts of it details his trials to finance the documentary. Forgive me for disguising insults as compliments, but I\\'ll give credit to Berkowitz for having the skills to convince some idiot to finance this horrid piece of ****. I appreciate the boundaries & intentions of the film here, but even when regarding the standards Berkowitz sets for himself, he fires off and misses on all levels. In closing, I\\'m sure many of these female companions were not at ease going on a date with a twitchy wanna-be filmmaker, and therefore I question the film\\'s sense of authenticity. Hey Myles, I loved your film the first time I saw it... when it appeared as an episode of Seinfeld or was a film directed by Woody Allen or Kevin Smith.', 'label': 0, 'input_ids': [101, 2007, 2053, 16730, 2875, 2151, 2828, 1997, 24466, 1010, 1998, 1037, 7965, 12284, 1997, 15693, 1010, 1045, 2064, 9826, 2360, 1045, 2001, 4854, 2012, 2870, 2005, 17067, 2000, 4133, 2083, 1996, 2972, 3091, 1997, 1000, 2322, 5246, 1000, 1012, 1045, 2180, 1005, 1056, 5949, 2115, 2051, 2007, 1996, 5436, 1010, 2017, 2089, 3191, 2060, 4391, 1012, 1045, 2097, 2360, 2295, 2008, 2022, 8024, 5004, 8838, 1005, 1055, 23760, 1010, 13703, 5297, 1011, 2806, 21283, 2001, 5186, 15703, 1012, 2017, 2593, 6257, 2002, 1005, 1040, 3913, 2125, 1996, 4157, 2030, 13749, 4355, 2070, 25283, 26147, 17629, 2015, 1012, 1998, 2009, 1005, 1055, 9280, 6835, 2000, 2022, 8024, 5004, 8838, 2370, 2008, 2023, 2143, 2001, 1037, 2919, 2801, 1010, 2004, 3033, 1997, 2009, 4751, 2010, 7012, 2000, 5446, 1996, 4516, 1012, 9641, 2033, 2005, 4487, 28745, 28580, 23862, 2004, 19394, 2015, 1010, 2021, 1045, 1005, 2222, 2507, 4923, 2000, 2022, 8024, 5004, 8838, 2005, 2383, 1996, 4813, 2000, 8054, 2070, 10041, 2000, 5446, 2023, 7570, 18752, 2094, 3538, 1997, 1008, 1008, 1008, 1008, 1012, 1045, 9120, 1996, 7372, 1004, 11174, 1997, 1996, 2143, 2182, 1010, 2021, 2130, 2043, 4953, 1996, 4781, 2022, 8024, 5004, 8838, 4520, 2005, 2370, 1010, 2002, 8769, 2125, 1998, 22182, 2006, 2035, 3798, 1012, 1999, 5494, 1010, 1045, 1005, 1049, 2469, 2116, 1997, 2122, 2931, 11946, 2020, 2025, 2012, 7496, 2183, 2006, 1037, 3058, 2007, 1037, 19435, 2100, 10587, 1011, 2022, 12127, 1010, 1998, 3568, 1045, 3160, 1996, 2143, 1005, 1055, 3168, 1997, 21452, 1012, 4931, 27056, 1010, 1045, 3866, 2115, 2143, 1996, 2034, 2051, 1045, 2387, 2009, 1012, 1012, 1012, 2043, 2009, 2596, 2004, 2019, 2792, 1997, 7367, 2378, 8151, 2030, 2001, 1037, 2143, 2856, 2011, 13703, 5297, 2030, 4901, 3044, 1012, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(small_tokenized_train[49])"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following defines the `compute_metrics` funcion to evaluate model performance using accuracy:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import evaluate\n",
+ "import numpy as np\n",
+ "\n",
+ "def compute_metrics(eval_pred):\n",
+ " # Load the accuracy metric from the evaluate library\n",
+ " accuracy_metric = evaluate.load(\"accuracy\")\n",
+ " \n",
+ " logits, labels = eval_pred\n",
+ " predictions = np.argmax(logits, axis=-1)\n",
+ " accuracy = accuracy_metric.compute(predictions=predictions, references=labels)[\"accuracy\"]\n",
+ "\n",
+ " return {\"accuracy\": accuracy}\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Configure BitsAndBytes\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following code creates a `BitsAndBytes` config object where we define the quantization parameters. Every line in that config is commented to inform you of its function:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "config_bnb = BitsAndBytesConfig(\n",
+ " load_in_4bit=True, # quantize the model to 4-bits when you load it\n",
+ " bnb_4bit_quant_type=\"nf4\", # use a special 4-bit data type for weights initialized from a normal distribution\n",
+ " bnb_4bit_use_double_quant=True, # nested quantization scheme to quantize the already quantized weights\n",
+ " bnb_4bit_compute_dtype=torch.bfloat16, # use bfloat16 for faster computation\n",
+ " llm_int8_skip_modules=[\"classifier\", \"pre_classifier\"] # Don't convert the \"classifier\" and \"pre_classifier\" layers to 8-bit\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Load a quantized version of a pretrained model\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following code creates two lists. The first list (`id2label`) maps ids to text labels for the two classes in this problem, and the second list (`label2id`) swaps the keys and the values to map the text labels to the ids:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "id2label = {0: \"NEGATIVE\", 1: \"POSITIVE\"}\n",
+ "label2id = dict((v,k) for k,v in id2label.items())"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "The following instantiates an `AutoModelForSequenceClassification` from a pre-trained `distilbert-base-uncased` model using the `BitsAndBytesConfig` defined above and the id to label and label to id mappings. The `quantization_config` parameter in particular indicates that a quantized version of the model should be loaded, with the quantization settings contained in the config object passed to `quantization_config`\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "`low_cpu_mem_usage` was None, now default to True since model is quantized.\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "b65e3d7893114747a407c3b15c9ff988",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "model.safetensors: 0%| | 0.00/268M [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Some weights of DistilBertForSequenceClassification were not initialized from the model checkpoint at distilbert-base-uncased and are newly initialized: ['classifier.bias', 'classifier.weight', 'pre_classifier.bias', 'pre_classifier.weight']\n",
+ "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
+ ]
+ }
+ ],
+ "source": [
+ "model_qlora = AutoModelForSequenceClassification.from_pretrained(\"distilbert-base-uncased\",\n",
+ " id2label=id2label,\n",
+ " label2id=label2id,\n",
+ " num_labels=2,\n",
+ " quantization_config=config_bnb\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`model_qlora` is now a quantized instance of the model, but the model is not ready for quantized training just yet. This is accomplished by passing the model through the `prepare_model_for_kbit_training()` function:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "model_qlora = prepare_model_for_kbit_training(model_qlora)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Despite its name, `model_qlora` is not a LoRA or QLoRA object yet, but a quantized instance of a pre-trained `distilbert-base-uncased` model that has been made ready for quantized training. To allow this model to be fine-tuned using QLoRA, we must convert the linear layers into LoRA layers. This is done analogously to the way LoRA is applied to a non-quantized model:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lora_config = LoraConfig(\n",
+ " task_type=TaskType.SEQ_CLS, # Specify the task type as sequence classification\n",
+ " r=8, # Rank of the low-rank matrices\n",
+ " lora_alpha=16, # Scaling factor\n",
+ " lora_dropout=0.1, # Dropout rate \n",
+ " target_modules=['q_lin','k_lin','v_lin'] # which modules\n",
+ ")\n",
+ "\n",
+ "peft_model_qlora = get_peft_model(model_qlora, lora_config)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "`peft_model_qlora` is now a QLoRA model which we can go ahead and train. However, before doing so, we will perform one other optimization: we will reinitialize the LoRA weights using LoftQ, which has been shown to improve performance when training quantized models. You can find information about LoftQ [here](https://arxiv.org/abs/2310.08659).\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "replace_lora_weights_loftq(peft_model_qlora)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Let's print out the model summary:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "PeftModelForSequenceClassification(\n",
+ " (base_model): LoraModel(\n",
+ " (model): DistilBertForSequenceClassification(\n",
+ " (distilbert): DistilBertModel(\n",
+ " (embeddings): Embeddings(\n",
+ " (word_embeddings): Embedding(30522, 768, padding_idx=0)\n",
+ " (position_embeddings): Embedding(512, 768)\n",
+ " (LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (transformer): Transformer(\n",
+ " (layer): ModuleList(\n",
+ " (0-5): 6 x TransformerBlock(\n",
+ " (attention): DistilBertSdpaAttention(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (q_lin): lora.Linear4bit(\n",
+ " (base_layer): Linear4bit(in_features=768, out_features=768, bias=True)\n",
+ " (lora_dropout): ModuleDict(\n",
+ " (default): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (lora_A): ModuleDict(\n",
+ " (default): Linear(in_features=768, out_features=8, bias=False)\n",
+ " )\n",
+ " (lora_B): ModuleDict(\n",
+ " (default): Linear(in_features=8, out_features=768, bias=False)\n",
+ " )\n",
+ " (lora_embedding_A): ParameterDict()\n",
+ " (lora_embedding_B): ParameterDict()\n",
+ " (lora_magnitude_vector): ModuleDict()\n",
+ " )\n",
+ " (k_lin): lora.Linear4bit(\n",
+ " (base_layer): Linear4bit(in_features=768, out_features=768, bias=True)\n",
+ " (lora_dropout): ModuleDict(\n",
+ " (default): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (lora_A): ModuleDict(\n",
+ " (default): Linear(in_features=768, out_features=8, bias=False)\n",
+ " )\n",
+ " (lora_B): ModuleDict(\n",
+ " (default): Linear(in_features=8, out_features=768, bias=False)\n",
+ " )\n",
+ " (lora_embedding_A): ParameterDict()\n",
+ " (lora_embedding_B): ParameterDict()\n",
+ " (lora_magnitude_vector): ModuleDict()\n",
+ " )\n",
+ " (v_lin): lora.Linear4bit(\n",
+ " (base_layer): Linear4bit(in_features=768, out_features=768, bias=True)\n",
+ " (lora_dropout): ModuleDict(\n",
+ " (default): Dropout(p=0.1, inplace=False)\n",
+ " )\n",
+ " (lora_A): ModuleDict(\n",
+ " (default): Linear(in_features=768, out_features=8, bias=False)\n",
+ " )\n",
+ " (lora_B): ModuleDict(\n",
+ " (default): Linear(in_features=8, out_features=768, bias=False)\n",
+ " )\n",
+ " (lora_embedding_A): ParameterDict()\n",
+ " (lora_embedding_B): ParameterDict()\n",
+ " (lora_magnitude_vector): ModuleDict()\n",
+ " )\n",
+ " (out_lin): Linear4bit(in_features=768, out_features=768, bias=True)\n",
+ " )\n",
+ " (sa_layer_norm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
+ " (ffn): FFN(\n",
+ " (dropout): Dropout(p=0.1, inplace=False)\n",
+ " (lin1): Linear4bit(in_features=768, out_features=3072, bias=True)\n",
+ " (lin2): Linear4bit(in_features=3072, out_features=768, bias=True)\n",
+ " (activation): GELUActivation()\n",
+ " )\n",
+ " (output_layer_norm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " )\n",
+ " (pre_classifier): ModulesToSaveWrapper(\n",
+ " (original_module): Linear(in_features=768, out_features=768, bias=True)\n",
+ " (modules_to_save): ModuleDict(\n",
+ " (default): Linear(in_features=768, out_features=768, bias=True)\n",
+ " )\n",
+ " )\n",
+ " (classifier): ModulesToSaveWrapper(\n",
+ " (original_module): Linear(in_features=768, out_features=2, bias=True)\n",
+ " (modules_to_save): ModuleDict(\n",
+ " (default): Linear(in_features=768, out_features=2, bias=True)\n",
+ " )\n",
+ " )\n",
+ " (dropout): Dropout(p=0.2, inplace=False)\n",
+ " )\n",
+ " )\n",
+ ")\n"
+ ]
+ }
+ ],
+ "source": [
+ "print(peft_model_qlora)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As you can see, the `distilbert-base-uncased` model adapted for QLoRA fine-tuning has a similar structure to the non-quantized LoRA model derived from `distilbert-base-uncased`. The key difference in the structure's summary is the conversion of some of the `Linear` layers into `Linear4bit` layers, which are 4-bit linear layers that use blockwise k-bit quantization under the hood.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "trainable params: 813,314 || all params: 67,768,324 || trainable%: 1.2001\n"
+ ]
+ }
+ ],
+ "source": [
+ "peft_model_qlora.print_trainable_parameters()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "As can be seen above, fine-tuning the `distilbert-base-uncased` model using QLoRA with a rank of 8 results in just 1.2% of the resulting parameters being trainable.\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Train\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Fine-tuning the QLoRA model from this point on is identical to fine-tuning a LoRA model. First, define the training arguments:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n",
+ "To disable this warning, you can either:\n",
+ "\t- Avoid using `tokenizers` before the fork if possible\n",
+ "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n"
+ ]
+ }
+ ],
+ "source": [
+ "training_args = TrainingArguments(\n",
+ " output_dir=\"./results_qlora\",\n",
+ " num_train_epochs=10,\n",
+ " per_device_train_batch_size=16,\n",
+ " per_device_eval_batch_size=64,\n",
+ " learning_rate=2e-5,\n",
+ " evaluation_strategy=\"epoch\",\n",
+ " weight_decay=0.01\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Then, train the model using `Trainer`:\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "