mirror of
https://github.com/rasbt/LLMs-from-scratch.git
synced 2025-06-26 23:50:03 +00:00
1994 lines
338 KiB
Plaintext
1994 lines
338 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e2e65c03-36d4-413f-9b23-5cdd816729ab",
|
|
"metadata": {
|
|
"id": "e2e65c03-36d4-413f-9b23-5cdd816729ab"
|
|
},
|
|
"source": [
|
|
"<table style=\"width:100%\">\n",
|
|
"<tr>\n",
|
|
"<td style=\"vertical-align:middle; text-align:left;\">\n",
|
|
"<font size=\"2\">\n",
|
|
"Supplementary code for the <a href=\"http://mng.bz/orYv\">Build a Large Language Model From Scratch</a> book by <a href=\"https://sebastianraschka.com\">Sebastian Raschka</a><br>\n",
|
|
"<br>Code repository: <a href=\"https://github.com/rasbt/LLMs-from-scratch\">https://github.com/rasbt/LLMs-from-scratch</a>\n",
|
|
"</font>\n",
|
|
"</td>\n",
|
|
"<td style=\"vertical-align:middle; text-align:left;\">\n",
|
|
"<a href=\"http://mng.bz/orYv\"><img src=\"https://sebastianraschka.com/images/LLMs-from-scratch-images/cover-small.webp\" width=\"100px\"></a>\n",
|
|
"</td>\n",
|
|
"</tr>\n",
|
|
"</table>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6f678e62-7bcb-4405-86ae-dce94f494303",
|
|
"metadata": {
|
|
"id": "6f678e62-7bcb-4405-86ae-dce94f494303"
|
|
},
|
|
"source": [
|
|
"# Comparing Efficient Multi-Head Attention Implementations"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b742938a-4bfc-4527-a1f1-d5963508967d",
|
|
"metadata": {
|
|
"id": "b742938a-4bfc-4527-a1f1-d5963508967d"
|
|
},
|
|
"source": [
|
|
"This code notebook compares different ways to implement causal multi-head attention used in decoder-style LLMs like GPT, Llama, etc."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "7898551e-f582-48ac-9f66-3632abe2a93f",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "7898551e-f582-48ac-9f66-3632abe2a93f",
|
|
"outputId": "1dcdc621-7d0b-41e3-eac8-0f5a768e1bed"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"PyTorch version: 2.6.0+cu124\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import torch\n",
|
|
"\n",
|
|
"torch.manual_seed(123)\n",
|
|
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
|
"print(f\"PyTorch version: {torch.__version__}\")\n",
|
|
"\n",
|
|
"batch_size = 8\n",
|
|
"context_len = 1024\n",
|
|
"embed_dim = 768\n",
|
|
"embeddings = torch.randn((batch_size, context_len, embed_dim), device=device)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "LYLcq3403Yq6",
|
|
"metadata": {
|
|
"id": "LYLcq3403Yq6"
|
|
},
|
|
"source": [
|
|
"- To run all the code in this notebook, please ensure you update to at least PyTorch 2.5 (FlexAttention is not included in earlier PyTorch releases)\n",
|
|
"- If the code cell above shows a PyTorch version lower than 2.5, you can upgrade your PyTorch installation by uncommenting and running the following code cell (Please note that PyTorch 2.5 requires Python 3.9 or later)\n",
|
|
"- For more specific instructions and CUDA versions, please refer to the official installation guide at https://pytorch.org"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1db27f43-86f4-478f-89df-fbc2182a129b",
|
|
"metadata": {
|
|
"id": "1db27f43-86f4-478f-89df-fbc2182a129b"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# pip install --upgrade torch torchvision torchaudio"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2f9bb1b6-a1e5-4e0a-884d-0f31b374a8d6",
|
|
"metadata": {
|
|
"id": "2f9bb1b6-a1e5-4e0a-884d-0f31b374a8d6"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 1) CausalAttention MHA wrapper class from chapter 3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "297c93ed-aec0-4896-bb89-42c4b294d3d1",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "297c93ed-aec0-4896-bb89-42c4b294d3d1",
|
|
"outputId": "9d02508e-106d-4a13-9bd6-0941cc7c5d36"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import torch.nn as nn\n",
|
|
"\n",
|
|
"class CausalAttention(nn.Module):\n",
|
|
"\n",
|
|
" def __init__(self, d_in, d_out, context_length, dropout, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
" self.d_out = d_out\n",
|
|
" self.W_query = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.W_key = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.W_value = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.dropout = nn.Dropout(dropout) # New\n",
|
|
" self.register_buffer(\"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1)) # New\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" b, num_tokens, d_in = x.shape # New batch dimension b\n",
|
|
" keys = self.W_key(x)\n",
|
|
" queries = self.W_query(x)\n",
|
|
" values = self.W_value(x)\n",
|
|
"\n",
|
|
" attn_scores = queries @ keys.transpose(1, 2) # Changed transpose\n",
|
|
" attn_scores.masked_fill_( # New, _ ops are in-place\n",
|
|
" self.mask.bool()[:num_tokens, :num_tokens], -torch.inf)\n",
|
|
" attn_weights = torch.softmax(attn_scores / keys.shape[-1]**0.5, dim=-1)\n",
|
|
" attn_weights = self.dropout(attn_weights) # New\n",
|
|
"\n",
|
|
" context_vec = attn_weights @ values\n",
|
|
" return context_vec\n",
|
|
"\n",
|
|
"\n",
|
|
"class Ch03_MHA_Wrapper(nn.Module):\n",
|
|
"\n",
|
|
" def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
" self.heads = nn.ModuleList(\n",
|
|
" [CausalAttention(d_in, d_out, context_length, dropout, qkv_bias)\n",
|
|
" for _ in range(num_heads)]\n",
|
|
" )\n",
|
|
" self.out_proj = nn.Linear(d_out*num_heads, d_out*num_heads)\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" context_vec = torch.cat([head(x) for head in self.heads], dim=-1)\n",
|
|
" return self.out_proj(context_vec)\n",
|
|
"\n",
|
|
"\n",
|
|
"mha_ch03_wrapper = Ch03_MHA_Wrapper(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim//12,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_ch03_wrapper(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "21930804-b327-40b1-8e63-94dcad39ce7b",
|
|
"metadata": {
|
|
"id": "21930804-b327-40b1-8e63-94dcad39ce7b"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 2) The multi-head attention class from chapter 3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "4ee6a61b-d25c-4a0c-8a59-f285544e3710",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "4ee6a61b-d25c-4a0c-8a59-f285544e3710",
|
|
"outputId": "7469c10e-58e4-4b98-f5fd-ffdab4a2ef6b"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"class Ch03_MHA(nn.Module):\n",
|
|
" def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
" assert d_out % num_heads == 0, \"d_out must be divisible by num_heads\"\n",
|
|
"\n",
|
|
" self.d_out = d_out\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.head_dim = d_out // num_heads # Reduce the projection dim to match desired output dim\n",
|
|
"\n",
|
|
" self.W_query = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.W_key = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.W_value = nn.Linear(d_in, d_out, bias=qkv_bias)\n",
|
|
" self.out_proj = nn.Linear(d_out, d_out) # Linear layer to combine head outputs\n",
|
|
" self.dropout = nn.Dropout(dropout)\n",
|
|
" self.register_buffer(\"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1))\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" b, num_tokens, d_in = x.shape\n",
|
|
"\n",
|
|
" keys = self.W_key(x) # Shape: (b, num_tokens, d_out)\n",
|
|
" queries = self.W_query(x)\n",
|
|
" values = self.W_value(x)\n",
|
|
"\n",
|
|
" # We implicitly split the matrix by adding a `num_heads` dimension\n",
|
|
" # Unroll last dim: (b, num_tokens, d_out) -> (b, num_tokens, num_heads, head_dim)\n",
|
|
" keys = keys.view(b, num_tokens, self.num_heads, self.head_dim)\n",
|
|
" values = values.view(b, num_tokens, self.num_heads, self.head_dim)\n",
|
|
" queries = queries.view(b, num_tokens, self.num_heads, self.head_dim)\n",
|
|
"\n",
|
|
" # Transpose: (b, num_tokens, num_heads, head_dim) -> (b, num_heads, num_tokens, head_dim)\n",
|
|
" keys = keys.transpose(1, 2)\n",
|
|
" queries = queries.transpose(1, 2)\n",
|
|
" values = values.transpose(1, 2)\n",
|
|
"\n",
|
|
" # Compute scaled dot-product attention (aka self-attention) with a causal mask\n",
|
|
" attn_scores = queries @ keys.transpose(2, 3) # Dot product for each head\n",
|
|
"\n",
|
|
" # Original mask truncated to the number of tokens and converted to boolean\n",
|
|
" mask_bool = self.mask.bool()[:num_tokens, :num_tokens]\n",
|
|
"\n",
|
|
" # Use the mask to fill attention scores\n",
|
|
" attn_scores.masked_fill_(mask_bool, -torch.inf)\n",
|
|
"\n",
|
|
" attn_weights = torch.softmax(attn_scores / keys.shape[-1]**0.5, dim=-1)\n",
|
|
" attn_weights = self.dropout(attn_weights)\n",
|
|
"\n",
|
|
" # Shape: (b, num_tokens, num_heads, head_dim)\n",
|
|
" context_vec = (attn_weights @ values).transpose(1, 2)\n",
|
|
"\n",
|
|
" # Combine heads, where self.d_out = self.num_heads * self.head_dim\n",
|
|
" context_vec = context_vec.contiguous().view(b, num_tokens, self.d_out)\n",
|
|
" context_vec = self.out_proj(context_vec) # optional projection\n",
|
|
"\n",
|
|
" return context_vec\n",
|
|
"\n",
|
|
"\n",
|
|
"mha_ch03 = Ch03_MHA(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_ch03(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "73cd11da-ea3b-4081-b483-c4965dfefbc4",
|
|
"metadata": {
|
|
"id": "73cd11da-ea3b-4081-b483-c4965dfefbc4"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 3) An alternative multi-head attention with combined weights"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1fa1a5ea-eaff-4d2d-aaf0-b34cdb6fd4dd",
|
|
"metadata": {
|
|
"id": "1fa1a5ea-eaff-4d2d-aaf0-b34cdb6fd4dd"
|
|
},
|
|
"source": [
|
|
"- The code for the `MultiHeadAttentionCombinedQKV` class below is based on code that was kindly shared by [Rayed Bin Wahed](https://github.com/rasbt/LLMs-from-scratch/discussions/51)\n",
|
|
"- The main difference between the `MultiHeadAttentionCombinedQKV` class and the `MultiHeadAttention` class used in chapter 3 is that `MultiHeadAttentionCombinedQKV` uses a single weight matrix, `self.qkv = nn.Linear(d_in, 3 * d_out, bias=qkv_bias)` instead of separate weight matrices:\n",
|
|
"\n",
|
|
" - `self.W_query = nn.Linear(d_in, d_out, bias=qkv_bias)`\n",
|
|
" - `self.W_key = nn.Linear(d_in, d_out, bias=qkv_bias)`\n",
|
|
" - `self.W_value = nn.Linear(d_in, d_out, bias=qkv_bias)`\n",
|
|
"\n",
|
|
"- Here, `self.qkv` combines all three weight matrices `self.W_query`, `self.W_key`, and `self.W_value` to carry out the query, key, and value computation in a single step\n",
|
|
"- Using `q, k, v = qkv.unbind(0)`, we obtain the individual query, key, and value tensors, which are then used similarly to the query, key, and value tensors in the `MultiHeadAttention` class in chapter 3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "9a6bd0a2-f27c-4602-afa0-c96cd295c1a6",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "9a6bd0a2-f27c-4602-afa0-c96cd295c1a6",
|
|
"outputId": "6ced0e41-958e-43af-ae3e-17b62148c1cd"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import torch.nn as nn\n",
|
|
"\n",
|
|
"\n",
|
|
"class MultiHeadAttentionCombinedQKV(nn.Module):\n",
|
|
" def __init__(self, d_in, d_out, num_heads, context_length, dropout=0.0, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" assert d_out % num_heads == 0, \"d_out is indivisible by num_heads\"\n",
|
|
"\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.context_length = context_length\n",
|
|
" self.head_dim = d_out // num_heads\n",
|
|
"\n",
|
|
" self.qkv = nn.Linear(d_in, 3 * d_out, bias=qkv_bias)\n",
|
|
" self.proj = nn.Linear(d_out, d_out)\n",
|
|
" self.dropout = nn.Dropout(dropout)\n",
|
|
"\n",
|
|
" self.register_buffer(\n",
|
|
" \"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1)\n",
|
|
" )\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" batch_size, num_tokens, embed_dim = x.shape\n",
|
|
"\n",
|
|
" # (b, num_tokens, embed_dim) --> (b, num_tokens, 3 * embed_dim)\n",
|
|
" qkv = self.qkv(x)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3 * embed_dim) --> (b, num_tokens, 3, num_heads, head_dim)\n",
|
|
" qkv = qkv.view(batch_size, num_tokens, 3, self.num_heads, self.head_dim)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3, num_heads, head_dim) --> (3, b, num_heads, num_tokens, head_dim)\n",
|
|
" qkv = qkv.permute(2, 0, 3, 1, 4)\n",
|
|
"\n",
|
|
" # (3, b, num_heads, num_tokens, head_dim) -> 3 times (b, num_head, num_tokens, head_dim)\n",
|
|
" queries, keys, values = qkv.unbind(0)\n",
|
|
"\n",
|
|
" # (b, num_heads, num_tokens, head_dim) --> (b, num_heads, num_tokens, num_tokens)\n",
|
|
" attn_scores = queries @ keys.transpose(-2, -1)\n",
|
|
" attn_scores = attn_scores.masked_fill(\n",
|
|
" self.mask.bool()[:num_tokens, :num_tokens], -torch.inf\n",
|
|
" )\n",
|
|
"\n",
|
|
" attn_weights = torch.softmax(attn_scores / keys.shape[-1]**-0.5, dim=-1)\n",
|
|
" attn_weights = self.dropout(attn_weights)\n",
|
|
"\n",
|
|
" # (b, num_heads, num_tokens, num_tokens) --> (b, num_heads, num_tokens, head_dim)\n",
|
|
" context_vec = attn_weights @ values\n",
|
|
"\n",
|
|
" # (b, num_heads, num_tokens, head_dim) --> (b, num_tokens, num_heads, head_dim)\n",
|
|
" context_vec = context_vec.transpose(1, 2)\n",
|
|
"\n",
|
|
" # (b, num_tokens, num_heads, head_dim) --> (b, num_tokens, embed_dim)\n",
|
|
" context_vec = context_vec.contiguous().view(batch_size, num_tokens, embed_dim)\n",
|
|
"\n",
|
|
" context_vec = self.proj(context_vec)\n",
|
|
"\n",
|
|
" return context_vec\n",
|
|
"\n",
|
|
"\n",
|
|
"mha_combined_qkv = MultiHeadAttentionCombinedQKV(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_combined_qkv(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9b14390d-3e21-43fd-87be-43e7029163ee",
|
|
"metadata": {
|
|
"id": "9b14390d-3e21-43fd-87be-43e7029163ee"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 4) Multi-head attention with Einsum\n",
|
|
"\n",
|
|
"- Implementing multi-head attention using Einstein summation via [`torch.einsum`](https://pytorch.org/docs/stable/generated/torch.einsum.html)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "92481814-068d-439b-a65c-b1310ebbe0aa",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "92481814-068d-439b-a65c-b1310ebbe0aa",
|
|
"outputId": "f46b111d-3563-4e5c-da2a-7be156974f5e"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import math\n",
|
|
"\n",
|
|
"\n",
|
|
"class MHAEinsum(nn.Module):\n",
|
|
"\n",
|
|
" def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
" assert d_out % num_heads == 0, \"d_out must be divisible by num_heads\"\n",
|
|
"\n",
|
|
" self.d_out = d_out\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.head_dim = d_out // num_heads\n",
|
|
"\n",
|
|
" # Initialize parameters for Q, K, V\n",
|
|
" self.W_query = nn.Parameter(torch.randn(d_out, d_in))\n",
|
|
" self.W_key = nn.Parameter(torch.randn(d_out, d_in))\n",
|
|
" self.W_value = nn.Parameter(torch.randn(d_out, d_in))\n",
|
|
"\n",
|
|
" if qkv_bias:\n",
|
|
" self.bias_q = nn.Parameter(torch.zeros(d_out))\n",
|
|
" self.bias_k = nn.Parameter(torch.zeros(d_out))\n",
|
|
" self.bias_v = nn.Parameter(torch.zeros(d_out))\n",
|
|
" else:\n",
|
|
" self.register_parameter(\"bias_q\", None)\n",
|
|
" self.register_parameter(\"bias_k\", None)\n",
|
|
" self.register_parameter(\"bias_v\", None)\n",
|
|
"\n",
|
|
" self.out_proj = nn.Linear(d_out, d_out)\n",
|
|
" self.dropout = nn.Dropout(dropout)\n",
|
|
" self.register_buffer(\"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1))\n",
|
|
"\n",
|
|
" # Initialize parameters\n",
|
|
" self.reset_parameters()\n",
|
|
"\n",
|
|
"\n",
|
|
" def reset_parameters(self):\n",
|
|
" nn.init.kaiming_uniform_(self.W_query, a=math.sqrt(5))\n",
|
|
" nn.init.kaiming_uniform_(self.W_key, a=math.sqrt(5))\n",
|
|
" nn.init.kaiming_uniform_(self.W_value, a=math.sqrt(5))\n",
|
|
" if self.bias_q is not None:\n",
|
|
" fan_in, _ = nn.init._calculate_fan_in_and_fan_out(self.W_query)\n",
|
|
" bound = 1 / math.sqrt(fan_in)\n",
|
|
" nn.init.uniform_(self.bias_q, -bound, bound)\n",
|
|
" nn.init.uniform_(self.bias_k, -bound, bound)\n",
|
|
" nn.init.uniform_(self.bias_v, -bound, bound)\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" b, n, _ = x.shape\n",
|
|
"\n",
|
|
" # Calculate Q, K, V using einsum, first perform linear transformations\n",
|
|
" Q = torch.einsum(\"bnd,di->bni\", x, self.W_query)\n",
|
|
" K = torch.einsum(\"bnd,di->bni\", x, self.W_key)\n",
|
|
" V = torch.einsum(\"bnd,di->bni\", x, self.W_value)\n",
|
|
"\n",
|
|
" # Add biases if they are used\n",
|
|
" if self.bias_q is not None:\n",
|
|
" Q += self.bias_q\n",
|
|
" K += self.bias_k\n",
|
|
" V += self.bias_v\n",
|
|
"\n",
|
|
" # Reshape for multi-head attention\n",
|
|
" Q = Q.view(b, n, self.num_heads, self.head_dim).transpose(1, 2)\n",
|
|
" K = K.view(b, n, self.num_heads, self.head_dim).transpose(1, 2)\n",
|
|
" V = V.view(b, n, self.num_heads, self.head_dim).transpose(1, 2)\n",
|
|
"\n",
|
|
" # Scaled dot-product attention\n",
|
|
" scores = torch.einsum(\"bhnd,bhmd->bhnm\", Q, K) / (self.head_dim ** 0.5)\n",
|
|
"\n",
|
|
" # Apply mask\n",
|
|
" mask = self.mask[:n, :n].unsqueeze(0).unsqueeze(1).expand(b, self.num_heads, n, n)\n",
|
|
" scores = scores.masked_fill(mask.bool(), -torch.inf)\n",
|
|
"\n",
|
|
" # Softmax and dropout\n",
|
|
" attn_weights = torch.softmax(scores, dim=-1)\n",
|
|
" attn_weights = self.dropout(attn_weights)\n",
|
|
"\n",
|
|
" # Aggregate the attended context vectors\n",
|
|
" context_vec = torch.einsum(\"bhnm,bhmd->bhnd\", attn_weights, V)\n",
|
|
"\n",
|
|
" # Combine heads and project the output\n",
|
|
" context_vec = context_vec.transpose(1, 2).reshape(b, n, self.d_out)\n",
|
|
" context_vec = self.out_proj(context_vec)\n",
|
|
"\n",
|
|
" return context_vec\n",
|
|
"\n",
|
|
"\n",
|
|
"mha_einsum = MHAEinsum(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_einsum(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "48a042d3-ee78-4c29-bf63-d92fe6706632",
|
|
"metadata": {
|
|
"id": "48a042d3-ee78-4c29-bf63-d92fe6706632"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 5) Multi-head attention with PyTorch's scaled dot product attention and FlashAttention"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f78e346f-3b85-44e6-9feb-f01131381148",
|
|
"metadata": {
|
|
"id": "f78e346f-3b85-44e6-9feb-f01131381148"
|
|
},
|
|
"source": [
|
|
"- The implementation below uses PyTorch's [`scaled_dot_product_attention`](https://pytorch.org/docs/stable/generated/torch.nn.functional.scaled_dot_product_attention.html) function, which implements a memory-optimized version of self-attention called [FlashAttention](https://arxiv.org/abs/2205.14135)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "1b8e5a0d-1f65-4a03-bf6e-723f0cc428f5",
|
|
"metadata": {
|
|
"id": "1b8e5a0d-1f65-4a03-bf6e-723f0cc428f5"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class MHAPyTorchScaledDotProduct(nn.Module):\n",
|
|
" def __init__(self, d_in, d_out, num_heads, context_length, dropout=0.0, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" assert d_out % num_heads == 0, \"d_out is indivisible by num_heads\"\n",
|
|
"\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.context_length = context_length\n",
|
|
" self.head_dim = d_out // num_heads\n",
|
|
" self.d_out = d_out\n",
|
|
"\n",
|
|
" self.qkv = nn.Linear(d_in, 3 * d_out, bias=qkv_bias)\n",
|
|
" self.proj = nn.Linear(d_out, d_out)\n",
|
|
" self.dropout = dropout\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" batch_size, num_tokens, embed_dim = x.shape\n",
|
|
"\n",
|
|
" # (b, num_tokens, embed_dim) --> (b, num_tokens, 3 * embed_dim)\n",
|
|
" qkv = self.qkv(x)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3 * embed_dim) --> (b, num_tokens, 3, num_heads, head_dim)\n",
|
|
" qkv = qkv.view(batch_size, num_tokens, 3, self.num_heads, self.head_dim)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3, num_heads, head_dim) --> (3, b, num_heads, num_tokens, head_dim)\n",
|
|
" qkv = qkv.permute(2, 0, 3, 1, 4)\n",
|
|
"\n",
|
|
" # (3, b, num_heads, num_tokens, head_dim) -> 3 times (b, num_heads, num_tokens, head_dim)\n",
|
|
" queries, keys, values = qkv\n",
|
|
"\n",
|
|
" use_dropout = 0. if not self.training else self.dropout\n",
|
|
"\n",
|
|
" context_vec = nn.functional.scaled_dot_product_attention(\n",
|
|
" queries, keys, values, attn_mask=None, dropout_p=use_dropout, is_causal=True)\n",
|
|
"\n",
|
|
" # Combine heads, where self.d_out = self.num_heads * self.head_dim\n",
|
|
" context_vec = context_vec.transpose(1, 2).contiguous().view(batch_size, num_tokens, self.d_out)\n",
|
|
"\n",
|
|
" context_vec = self.proj(context_vec)\n",
|
|
"\n",
|
|
" return context_vec"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "fbc8ba92-3471-41cb-b1b2-4c0ef5be392b",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "fbc8ba92-3471-41cb-b1b2-4c0ef5be392b",
|
|
"outputId": "c69e79a4-e741-4371-8ecc-a775b8b246bf"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"mha_pytorch_scaled = MHAPyTorchScaledDotProduct(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_pytorch_scaled(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "51492724-6018-49f6-8bf6-ae9e585229c3",
|
|
"metadata": {
|
|
"id": "51492724-6018-49f6-8bf6-ae9e585229c3"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 6) PyTorch's scaled dot product attention without FlashAttention\n",
|
|
"\n",
|
|
"- This is similar to above, except that we disable FlashAttention by passing an explicit causal mask"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "bad53538-e905-4065-ba0c-caacdfec5a0b",
|
|
"metadata": {
|
|
"id": "bad53538-e905-4065-ba0c-caacdfec5a0b"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class MHAPyTorchSDPAWithoutFlash(nn.Module):\n",
|
|
" def __init__(self, d_in, d_out, num_heads, context_length, dropout=0.0, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" assert d_out % num_heads == 0, \"embed_dim is indivisible by num_heads\"\n",
|
|
"\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.context_length = context_length\n",
|
|
" self.head_dim = d_out // num_heads\n",
|
|
" self.d_out = d_out\n",
|
|
"\n",
|
|
" self.qkv = nn.Linear(d_in, 3 * d_out, bias=qkv_bias)\n",
|
|
" self.proj = nn.Linear(d_out, d_out)\n",
|
|
" self.dropout = dropout\n",
|
|
" self.register_buffer(\"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1).bool())\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" batch_size, num_tokens, embed_dim = x.shape\n",
|
|
"\n",
|
|
" # (b, num_tokens, embed_dim) --> (b, num_tokens, 3 * embed_dim)\n",
|
|
" qkv = self.qkv(x)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3 * embed_dim) --> (b, num_tokens, 3, num_heads, head_dim)\n",
|
|
" qkv = qkv.view(batch_size, num_tokens, 3, self.num_heads, self.head_dim)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3, num_heads, head_dim) --> (3, b, num_heads, num_tokens, head_dim)\n",
|
|
" qkv = qkv.permute(2, 0, 3, 1, 4)\n",
|
|
"\n",
|
|
" # (3, b, num_heads, num_tokens, head_dim) -> 3 times (b, num_heads, num_tokens, head_dim)\n",
|
|
" queries, keys, values = qkv\n",
|
|
"\n",
|
|
" use_dropout = 0. if not self.training else self.dropout\n",
|
|
"\n",
|
|
" # Ensure attn_mask is compatible with expected shape and `batch_first=True`\n",
|
|
" # No need to manually adjust for num_heads; ensure it's right for the sequence\n",
|
|
" if self.context_length >= num_tokens:\n",
|
|
" attn_mask = self.mask[:num_tokens, :num_tokens]\n",
|
|
" else:\n",
|
|
" attn_mask = self.mask[:self.context_length, :self.context_length]\n",
|
|
"\n",
|
|
" context_vec = nn.functional.scaled_dot_product_attention(\n",
|
|
" queries, keys, values, attn_mask=attn_mask, dropout_p=use_dropout, is_causal=False)\n",
|
|
"\n",
|
|
" # Combine heads, where self.d_out = self.num_heads * self.head_dim\n",
|
|
" context_vec = context_vec.transpose(1, 2).contiguous().view(batch_size, num_tokens, self.d_out)\n",
|
|
"\n",
|
|
" context_vec = self.proj(context_vec)\n",
|
|
"\n",
|
|
" return context_vec"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "f3da7850-e772-47d3-bd51-22d077b01412",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "f3da7850-e772-47d3-bd51-22d077b01412",
|
|
"outputId": "1d208d5c-0d33-40c5-c473-0bef0bf123a0"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"mha_pytorch_sdpa_no_flash = MHAPyTorchSDPAWithoutFlash(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_pytorch_sdpa_no_flash(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "351c318f-4835-4d74-8d58-a070222447c4",
|
|
"metadata": {
|
|
"id": "351c318f-4835-4d74-8d58-a070222447c4"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 7) Using PyTorch's torch.nn.MultiheadAttention"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "74a6d060-6324-48fa-a35c-cb09f2a48965",
|
|
"metadata": {
|
|
"id": "74a6d060-6324-48fa-a35c-cb09f2a48965"
|
|
},
|
|
"source": [
|
|
"- Below, we use PyTorch's [torch.nn.MultiheadAttention](https://pytorch.org/docs/stable/generated/torch.nn.MultiheadAttention.html) implementation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "3799c7ef-3155-42c6-a829-f95656453ae0",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "3799c7ef-3155-42c6-a829-f95656453ae0",
|
|
"outputId": "dbee238a-a189-4f30-ac45-3b5e51237615"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import torch.nn as nn\n",
|
|
"\n",
|
|
"\n",
|
|
"class MHAPyTorchClass(nn.Module):\n",
|
|
" def __init__(self, d_in, d_out, num_heads, context_length, dropout=0.0, qkv_bias=False, need_weights=True):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" self.context_length = context_length\n",
|
|
" self.multihead_attn = nn.MultiheadAttention(\n",
|
|
" embed_dim=d_out,\n",
|
|
" num_heads=num_heads,\n",
|
|
" dropout=dropout,\n",
|
|
" bias=qkv_bias,\n",
|
|
" add_bias_kv=qkv_bias,\n",
|
|
" batch_first=True,\n",
|
|
" )\n",
|
|
"\n",
|
|
" self.need_weights = need_weights\n",
|
|
" self.proj = nn.Linear(d_out, d_out)\n",
|
|
" self.register_buffer(\"mask\", torch.triu(torch.ones(context_length, context_length), diagonal=1).bool())\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" batch_size, num_tokens, _ = x.shape\n",
|
|
"\n",
|
|
" # Ensure attn_mask is compatible with expected shape and `batch_first=True`\n",
|
|
" # No need to manually adjust for num_heads; ensure it's right for the sequence\n",
|
|
" if self.context_length >= num_tokens:\n",
|
|
" attn_mask = self.mask[:num_tokens, :num_tokens]\n",
|
|
" else:\n",
|
|
" attn_mask = self.mask[:self.context_length, :self.context_length]\n",
|
|
"\n",
|
|
" # attn_mask broadcasting will handle batch_size dimension implicitly\n",
|
|
" attn_output, _ = self.multihead_attn(\n",
|
|
" x, x, x, attn_mask=attn_mask, need_weights=self.need_weights\n",
|
|
" )\n",
|
|
"\n",
|
|
" output = self.proj(attn_output)\n",
|
|
"\n",
|
|
" return output\n",
|
|
"\n",
|
|
"\n",
|
|
"mha_pytorch_class_default = MHAPyTorchClass(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_pytorch_class_default(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a3953bff-1056-4de2-bfd1-dfccf659eee4",
|
|
"metadata": {
|
|
"id": "a3953bff-1056-4de2-bfd1-dfccf659eee4"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 8) Using PyTorch's torch.nn.MultiheadAttention with `scaled_dot_product_attention`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "d2164859-31a0-4537-b4fb-27d57675ba77",
|
|
"metadata": {
|
|
"id": "d2164859-31a0-4537-b4fb-27d57675ba77"
|
|
},
|
|
"source": [
|
|
"- Set `need_weights` (default `True`) to `False` so that `MultiheadAttention` uses `scaled_dot_product_attention` [according to the documentation](https://github.com/pytorch/pytorch/blob/71d020262793542974cf13b30f2a9099773f015c/torch/nn/modules/activation.py#L1096)\n",
|
|
"\n",
|
|
"```markdown\n",
|
|
"need_weights: If specified, returns `attn_output_weights` in addition to `attn_outputs`.\n",
|
|
" Set `need_weights=False` to use the optimized `scaled_dot_product_attention`\n",
|
|
" and achieve the best performance for MHA.\n",
|
|
" Default: `True`\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "4a4c2afe-5e1f-4bd7-a118-67031176f147",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "4a4c2afe-5e1f-4bd7-a118-67031176f147",
|
|
"outputId": "54ae35e3-6d9e-485f-c59c-6955430382f8"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"mha_pytorch_class_noweights = MHAPyTorchClass(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False,\n",
|
|
" need_weights=False # NEW!\n",
|
|
").to(device)\n",
|
|
"\n",
|
|
"out = mha_pytorch_class_noweights(embeddings)\n",
|
|
"print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "21f4ff35-651c-4e47-bfa1-016f3de01ecc",
|
|
"metadata": {
|
|
"id": "21f4ff35-651c-4e47-bfa1-016f3de01ecc"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## 9) Using PyTorch's FlexAttention\n",
|
|
"\n",
|
|
"- See [FlexAttention: The Flexibility of PyTorch with the Performance of FlashAttention](https://pytorch.org/blog/flexattention/) to learn more about FlexAttention\n",
|
|
"- FlexAttention caveat: It currently doesn't support dropout\n",
|
|
"- This is supported starting from PyTorch 2.5, which you can install on a CPU machine via\n",
|
|
"\n",
|
|
" ```bash\n",
|
|
" pip install torch torchvision torchaudio\n",
|
|
" ```\n",
|
|
"\n",
|
|
"- To install PyTorch on a GPU machine, use the following (for more information, also see the installation menu on [pytorch.org](https://pytorch.org/))\n",
|
|
"\n",
|
|
" ```bash\n",
|
|
" pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124\n",
|
|
" ```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "834318c8-4748-4902-99f0-70ee02bef63e",
|
|
"metadata": {
|
|
"id": "834318c8-4748-4902-99f0-70ee02bef63e"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from packaging.version import parse as parse_version\n",
|
|
"\n",
|
|
"def normalize_version(version):\n",
|
|
" parsed_version = parse_version(version)\n",
|
|
" return parse_version(f\"{parsed_version.major}.{parsed_version.minor}.{parsed_version.micro}\")\n",
|
|
"\n",
|
|
"current_version = normalize_version(torch.__version__)\n",
|
|
"MIN_TORCH_VERSION = \"2.5.0\"\n",
|
|
"required_version = parse_version(MIN_TORCH_VERSION)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "WYyFRCXndVH9",
|
|
"metadata": {
|
|
"id": "WYyFRCXndVH9"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"if current_version >= required_version and torch.cuda.is_available():\n",
|
|
" from torch.nn.attention.flex_attention import flex_attention, create_block_mask\n",
|
|
"\n",
|
|
"\n",
|
|
"def causal(b, h, q_idx, kv_idx):\n",
|
|
" return q_idx >= kv_idx\n",
|
|
"\n",
|
|
"\n",
|
|
"class MHAPyTorchFlexAttention(nn.Module):\n",
|
|
"\n",
|
|
" def __init__(self, d_in, d_out, num_heads, context_length, dropout=0.0, qkv_bias=False):\n",
|
|
" super().__init__()\n",
|
|
"\n",
|
|
" assert d_out % num_heads == 0, \"embed_dim is indivisible by num_heads\"\n",
|
|
"\n",
|
|
" self.num_heads = num_heads\n",
|
|
" self.context_length = context_length\n",
|
|
" self.head_dim = d_out // num_heads\n",
|
|
" self.d_out = d_out\n",
|
|
"\n",
|
|
" self.qkv = nn.Linear(d_in, 3 * d_out, bias=qkv_bias)\n",
|
|
" self.proj = nn.Linear(d_out, d_out)\n",
|
|
" self.dropout = dropout\n",
|
|
" # self.register_buffer(\"block_mask\", create_block_mask(causal, B=None, H=None, Q_LEN=context_length, KV_LEN=context_length))\n",
|
|
" # `create_block_mask` function does not support buffers, yet\n",
|
|
" self.block_mask = create_block_mask(causal, B=None, H=None, Q_LEN=context_length, KV_LEN=context_length)\n",
|
|
"\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" batch_size, num_tokens, embed_dim = x.shape\n",
|
|
"\n",
|
|
" # (b, num_tokens, embed_dim) --> (b, num_tokens, 3 * embed_dim)\n",
|
|
" qkv = self.qkv(x)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3 * embed_dim) --> (b, num_tokens, 3, num_heads, head_dim)\n",
|
|
" qkv = qkv.view(batch_size, num_tokens, 3, self.num_heads, self.head_dim)\n",
|
|
"\n",
|
|
" # (b, num_tokens, 3, num_heads, head_dim) --> (3, b, num_heads, num_tokens, head_dim)\n",
|
|
" qkv = qkv.permute(2, 0, 3, 1, 4)\n",
|
|
"\n",
|
|
" # (3, b, num_heads, num_tokens, head_dim) -> 3 times (b, num_heads, num_tokens, head_dim)\n",
|
|
" queries, keys, values = qkv\n",
|
|
"\n",
|
|
" # use_dropout = 0. if not self.training else self.dropout\n",
|
|
"\n",
|
|
" # Ensure attn_mask is compatible with expected shape and `batch_first=True`\n",
|
|
" # No need to manually adjust for num_heads; ensure it's right for the sequence\n",
|
|
" if self.context_length >= num_tokens:\n",
|
|
" attn_mask = self.block_mask[:num_tokens, :num_tokens]\n",
|
|
" else:\n",
|
|
" attn_mask = self.block_mask[:self.context_length, :self.context_length]\n",
|
|
"\n",
|
|
" context_vec = flex_attention(queries, keys, values, block_mask=attn_mask)\n",
|
|
"\n",
|
|
" # Combine heads, where self.d_out = self.num_heads * self.head_dim\n",
|
|
" context_vec = context_vec.transpose(1, 2).contiguous().view(batch_size, num_tokens, self.d_out)\n",
|
|
"\n",
|
|
" context_vec = self.proj(context_vec)\n",
|
|
"\n",
|
|
" return context_vec"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "9cdaaf8a-f956-44bc-932f-4d33448e8aaf",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "9cdaaf8a-f956-44bc-932f-4d33448e8aaf",
|
|
"outputId": "c239092a-696e-4573-e933-c337f090d294"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"torch.Size([8, 1024, 768])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"if current_version >= required_version and torch.cuda.is_available():\n",
|
|
"\n",
|
|
" mha_pytorch_flex = MHAPyTorchFlexAttention(\n",
|
|
" d_in=embed_dim,\n",
|
|
" d_out=embed_dim,\n",
|
|
" context_length=context_len,\n",
|
|
" dropout=0.0,\n",
|
|
" num_heads=12,\n",
|
|
" qkv_bias=False\n",
|
|
" ).to(device)\n",
|
|
"\n",
|
|
" out = mha_pytorch_flex(embeddings)\n",
|
|
" print(out.shape)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8877de71-f84f-4f6d-bc87-7552013b6301",
|
|
"metadata": {
|
|
"id": "8877de71-f84f-4f6d-bc87-7552013b6301"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## Quick speed comparison (M3 Macbook Air CPU)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "219cf93a-078f-434d-888c-2458d0731285",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "219cf93a-078f-434d-888c-2458d0731285",
|
|
"outputId": "a10b52d4-b4e6-43c2-9677-113c41edd3b7"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"PyTorch version: 2.4.0\n",
|
|
"Running on cpu\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"torch.manual_seed(123)\n",
|
|
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
|
"print(f\"PyTorch version: {torch.__version__}\")\n",
|
|
"print(f\"Running on {device}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "a97c0b2e-6593-49d8-98bc-2267b3aa610f",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "a97c0b2e-6593-49d8-98bc-2267b3aa610f",
|
|
"outputId": "7bcd7da4-d115-4ba6-efba-377a0bd7d3a8"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"179 ms ± 7.39 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 1) CausalAttention MHA wrapper class from chapter 3\n",
|
|
"%timeit mha_ch03_wrapper(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "19db9c2c-8e75-431a-8eef-0b4d8284e6e6",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "19db9c2c-8e75-431a-8eef-0b4d8284e6e6",
|
|
"outputId": "b04b4d0d-71aa-4944-f02b-131bf5a50202"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"166 ms ± 2.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 2) The multi-head attention class from chapter 3\n",
|
|
"%timeit mha_ch03(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "aa526ee0-7a88-4f34-a49a-f8f97da83779",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "aa526ee0-7a88-4f34-a49a-f8f97da83779",
|
|
"outputId": "5436928a-7b98-4c40-bf51-97973f13327e"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"190 ms ± 2.03 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 3) An alternative multi-head attention with combined weights\n",
|
|
"%timeit mha_combined_qkv(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "131ca826-35bf-47e5-b497-540aba439ef9",
|
|
"metadata": {
|
|
"id": "131ca826-35bf-47e5-b497-540aba439ef9",
|
|
"outputId": "f5848852-f81b-4e5f-a7ff-e37a8445ad91"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"196 ms ± 1.08 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 4) Multi-head attention using Einstein summation\n",
|
|
"%timeit mha_einsum(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "cc2b4256-16d8-4c34-9fd0-d4b4af0e60fa",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "cc2b4256-16d8-4c34-9fd0-d4b4af0e60fa",
|
|
"outputId": "9e07ce73-a2de-4e2c-8276-64626df9450e"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"110 ms ± 423 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 5) Multi-head attention with PyTorch's scaled dot product attention\n",
|
|
"%timeit mha_pytorch_scaled(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c44305ce-9f61-451a-b9ef-30caba222357",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "c44305ce-9f61-451a-b9ef-30caba222357",
|
|
"outputId": "6bab4a24-5bb4-4ad6-b260-3b442f598950"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"99.5 ms ± 790 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 6) PyTorch's scaled dot product attention without FlashAttention\n",
|
|
"%timeit mha_pytorch_sdpa_no_flash(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "0f209e70-ebb6-4a1a-b608-1ff42e41c01d",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "0f209e70-ebb6-4a1a-b608-1ff42e41c01d",
|
|
"outputId": "630c49d1-8a06-4148-cd96-a7b2467310a0"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"198 ms ± 3.52 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 7) Using PyTorch's torch.nn.MultiheadAttention\n",
|
|
"%timeit mha_pytorch_class_default(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3f4968c2-8d40-4ab9-8dba-052b4f77d756",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "3f4968c2-8d40-4ab9-8dba-052b4f77d756",
|
|
"outputId": "10f6a268-f9cf-446c-aa83-e87b6a0b4f5c"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"168 ms ± 2.63 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 8) Using PyTorch's torch.nn.MultiheadAttention disabling `need_weights`\n",
|
|
"%timeit mha_pytorch_class_noweights(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "bdd8e0fc-ef24-424c-bccf-c381e73da228",
|
|
"metadata": {
|
|
"id": "bdd8e0fc-ef24-424c-bccf-c381e73da228"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"## 9) Using PyTorch's FlexAttention\n",
|
|
"\n",
|
|
"# Requires PyTorch 2.5.0 or newer and currently only supports CUDA PyTorch\n",
|
|
"%timeit mha_pytorch_flex(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a78ff594-6cc2-496d-a302-789fa104c3c9",
|
|
"metadata": {
|
|
"id": "a78ff594-6cc2-496d-a302-789fa104c3c9"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"## Quick speed comparison (Nvidia A100 GPU)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "RStnI1pEi6Eo",
|
|
"metadata": {
|
|
"id": "RStnI1pEi6Eo"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Enable tensor cores\n",
|
|
"torch.set_float32_matmul_precision(\"high\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "e8431d75-e1c9-4d9a-b7da-9a1ff391f2bf",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "e8431d75-e1c9-4d9a-b7da-9a1ff391f2bf",
|
|
"outputId": "787933f2-1911-4830-cc3e-c3fc47afd688"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"PyTorch version: 2.6.0+cu124\n",
|
|
"Running on cuda\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"torch.manual_seed(123)\n",
|
|
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
|
"print(f\"PyTorch version: {torch.__version__}\")\n",
|
|
"print(f\"Running on {device}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "707a2a14-a089-48a8-88aa-d328e1e0a9d0",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "707a2a14-a089-48a8-88aa-d328e1e0a9d0",
|
|
"outputId": "f79aa3cf-f860-4d31-85be-63caa513c9a4"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"4.68 ms ± 121 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 1) CausalAttention MHA wrapper class from chapter 3\n",
|
|
"%timeit mha_ch03_wrapper(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "8686dd69-3655-40e4-a57b-a2c55532a010",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "8686dd69-3655-40e4-a57b-a2c55532a010",
|
|
"outputId": "9e38912d-8ba4-4906-a9a4-47206297465c"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"3.08 ms ± 195 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 2) The multi-head attention class from chapter 3\n",
|
|
"%timeit mha_ch03(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "2209d7df-e54b-4910-ae2b-c78cf684d9bf",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "2209d7df-e54b-4910-ae2b-c78cf684d9bf",
|
|
"outputId": "cb9cda4b-4a35-4718-864c-f8de3cc04853"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"3.81 ms ± 532 ns per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 3) An alternative multi-head attention with combined weights\n",
|
|
"%timeit mha_combined_qkv(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "abee5edf-2585-4f0e-846c-b1c7ca88f545",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "abee5edf-2585-4f0e-846c-b1c7ca88f545",
|
|
"outputId": "aadc2f49-02ff-4b10-bc75-8302c7929597"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"4.11 ms ± 170 ns per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 4) Multi-head attention using Einstein summation\n",
|
|
"%timeit mha_einsum(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"id": "1075abe2-4839-4fd6-af3e-c09bb3651e26",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "1075abe2-4839-4fd6-af3e-c09bb3651e26",
|
|
"outputId": "56968cdf-158b-41bb-9505-ffde33c4f09c"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1.1 ms ± 800 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 5) Multi-head attention with PyTorch's scaled dot product attention\n",
|
|
"%timeit mha_pytorch_scaled(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "218adbaf-f17f-47d9-81d5-41c758218df7",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "218adbaf-f17f-47d9-81d5-41c758218df7",
|
|
"outputId": "63e103a7-fade-4a30-d32a-f2cfac09ea6c"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"1.8 ms ± 93.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 6) PyTorch's scaled dot product attention without FlashAttention\n",
|
|
"%timeit mha_pytorch_sdpa_no_flash(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "868e3670-8edc-47bc-9e06-eb505e44dc9d",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "868e3670-8edc-47bc-9e06-eb505e44dc9d",
|
|
"outputId": "93f1c5e7-6040-44e9-c26c-0995caa86b50"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"3.04 ms ± 394 ns per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 7) Using PyTorch's torch.nn.MultiheadAttention\n",
|
|
"%timeit mha_pytorch_class_default(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "944870e6-de54-4e3b-a455-b8f21f6f92c8",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "944870e6-de54-4e3b-a455-b8f21f6f92c8",
|
|
"outputId": "83e36077-80f9-41e1-abbb-2cd1f7645dd0"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2.13 ms ± 4.48 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 8) Using PyTorch's torch.nn.MultiheadAttention disabling `need_weights`\n",
|
|
"%timeit mha_pytorch_class_noweights(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"id": "evKtpb5QN_2A",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "evKtpb5QN_2A",
|
|
"outputId": "af64f756-1aad-4032-a431-76842bf7dafe"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"13.9 ms ± 557 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## 9) Using PyTorch's FlexAttention\n",
|
|
"\n",
|
|
"# Requires PyTorch 2.5.0 or newer\n",
|
|
"%timeit mha_pytorch_flex(embeddings)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dabc6575-0316-4640-a729-e616d5c17b73",
|
|
"metadata": {
|
|
"id": "dabc6575-0316-4640-a729-e616d5c17b73"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"\n",
|
|
"# Visualizations"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "bbb2f729-d3d8-46d0-b249-9249197ea574",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "bbb2f729-d3d8-46d0-b249-9249197ea574",
|
|
"outputId": "6e6167c4-93e5-4491-a49f-c1d3966fb10a"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"PyTorch version: 2.6.0+cu124\n",
|
|
"Running on cuda\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"torch.manual_seed(123)\n",
|
|
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
|
"print(f\"PyTorch version: {torch.__version__}\")\n",
|
|
"print(f\"Running on {device}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "b0620bf5",
|
|
"metadata": {
|
|
"id": "b0620bf5"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"functions = {\n",
|
|
" \"1) MHA wrapper class\": mha_ch03_wrapper,\n",
|
|
" \"2) MHA Ch03\": mha_ch03,\n",
|
|
" \"3) MHA with combined QKV weights\": mha_combined_qkv,\n",
|
|
" \"4) MHA with Einsum\": mha_einsum,\n",
|
|
" \"5) MHA with PyTorch scaled_dot_product_attention\": mha_pytorch_scaled,\n",
|
|
" \"6) PyTorch's SDPA, no FlashAttention\": mha_pytorch_sdpa_no_flash,\n",
|
|
" \"7) PyTorch MHA class defaults\": mha_pytorch_class_default,\n",
|
|
" \"8) PyTorch MHA with need_weights=False\": mha_pytorch_class_noweights\n",
|
|
" }\n",
|
|
"\n",
|
|
"if current_version >= required_version and torch.cuda.is_available():\n",
|
|
" functions[\"9) PyTorch's FlexAttention\"] = mha_pytorch_flex"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "CDJAPZaszaqx",
|
|
"metadata": {
|
|
"id": "CDJAPZaszaqx"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"# Customize further for dark mode aesthetics\n",
|
|
"plt.rcParams[\"figure.facecolor\"] = \"#121212\"\n",
|
|
"plt.rcParams[\"axes.facecolor\"] = \"#121212\"\n",
|
|
"plt.rcParams[\"axes.edgecolor\"] = \"white\"\n",
|
|
"plt.rcParams[\"axes.labelcolor\"] = \"white\"\n",
|
|
"plt.rcParams[\"text.color\"] = \"white\"\n",
|
|
"plt.rcParams[\"xtick.color\"] = \"white\"\n",
|
|
"plt.rcParams[\"ytick.color\"] = \"white\"\n",
|
|
"plt.rcParams[\"grid.color\"] = \"#444444\"\n",
|
|
"plt.rcParams[\"lines.linewidth\"] = 2\n",
|
|
"plt.rcParams[\"lines.markersize\"] = 8\n",
|
|
"\n",
|
|
"def plot_execution_times(functions, execution_means, execution_stds, filename):\n",
|
|
"\n",
|
|
" # Create plot\n",
|
|
" fig, ax = plt.subplots()\n",
|
|
" bars = ax.bar(functions.keys(), execution_means, yerr=execution_stds, capsize=5, error_kw={'ecolor': 'grey'})\n",
|
|
"\n",
|
|
" plt.ylabel(\"Execution time (ms)\")\n",
|
|
" plt.xticks(rotation=45, ha=\"right\")\n",
|
|
"\n",
|
|
" # Calculate new ylim with a margin\n",
|
|
" max_execution_time = max(execution_means)\n",
|
|
" upper_ylim = max_execution_time + 0.4 * max_execution_time # Adding a 40% margin\n",
|
|
" plt.ylim(0, upper_ylim)\n",
|
|
"\n",
|
|
" # Annotate bars with execution times\n",
|
|
" for bar in bars:\n",
|
|
" yval = bar.get_height()\n",
|
|
" plt.text(bar.get_x() + bar.get_width()/2, yval + (0.05 * upper_ylim), round(yval, 2), ha=\"center\", va=\"bottom\")\n",
|
|
"\n",
|
|
" plt.tight_layout()\n",
|
|
" plt.savefig(filename)\n",
|
|
" plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4df834dc",
|
|
"metadata": {
|
|
"id": "4df834dc"
|
|
},
|
|
"source": [
|
|
"## Speed comparison (Nvidia A100 GPU) with warmup (forward pass only)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "29b63d3d-6d0b-43bb-9c68-d5514dc81000",
|
|
"metadata": {
|
|
"id": "29b63d3d-6d0b-43bb-9c68-d5514dc81000"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"# CUDA benchmark code shared by Andrei Aksionov\n",
|
|
"# and based on code from\n",
|
|
"# https://github.com/cuda-mode/lectures/blob/main/lecture1/pytorch_square.py\n",
|
|
"\n",
|
|
"import numpy as np\n",
|
|
"\n",
|
|
"def time_pytorch_function(func, *input, num_repeats=1_000):\n",
|
|
" start = torch.cuda.Event(enable_timing=True)\n",
|
|
" end = torch.cuda.Event(enable_timing=True)\n",
|
|
"\n",
|
|
" # Warmup\n",
|
|
" for _ in range(5):\n",
|
|
" func(*input)\n",
|
|
" torch.cuda.synchronize()\n",
|
|
"\n",
|
|
" times = []\n",
|
|
" for _ in range(num_repeats):\n",
|
|
" start.record()\n",
|
|
" func(*input)\n",
|
|
" end.record()\n",
|
|
" torch.cuda.synchronize()\n",
|
|
" times.append(start.elapsed_time(end))\n",
|
|
"\n",
|
|
" return np.mean(times), np.std(times)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "9dd07a09",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 486
|
|
},
|
|
"id": "9dd07a09",
|
|
"outputId": "84d3ed5c-d4e6-47d0-b277-75ecf36a55e8"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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R48exMbGUrNmTc6dO6fEnfCl0MjICHNzc2bPno2VlRVubm6qLNfH9OvXjypVqjBnzhwWLlzI27dv6dSpE3379qV///7s2rWL5MmT069fP1KmTEnlypVVfT9IfE4VKlSI5MmT8+zZMy5cuMDr16+pXr06I0eOZM+ePUyePJkLFy589j1+dtJGzgDZ29tTrlw5AgICOHLkCKlSpeK3336jfv36nDhxgl27dpEpUyaGDRvGkydPqFChArGxsaoeCsLDw4NmzZrRvHlzrl+/TtGiRWnatCnbtm2jXr16nDx5Uok/oUHyvHnzuHLlisEkcQDr1q1j48aNDBkyhDlz5tCpUydevHihrLezs6NYsWK8e/dOSb6NjY1VfdGF//WU69ChA7lz52bz5s2cOHECgKpVq/LXX38xceJEnWTu7t27ShKn5otuQlw9evSgatWq2Nra8uLFC4KDg9myZQu9evUiKCiIRo0aodVqlTZkCUPIGELZBg4ciKurK46Ojty9e5cbN27g5+fHli1baN68OXPnziU2NpZx48Zx//79j76HmoSEhFCgQAHatm3L5cuXuX//PhYWFsTFxZEjRw7OnTunxB0XF4eZmRlt2rShVq1aWFlZUa1aNbRaraqPXYI+ffrQsmVLWrRowblz55T2tHPmzMHc3JxBgwbx8uVLHj16xOPHj6lSpYrq7weJe966urpiY2PDkydPePnyJY0bN2bz5s1otVpGjhxJXFwcs2bNUjrEffgevwKpkTNAqVOnZteuXYwdO5arV6/i6emJi4sL1tbWGBkZMWvWLKZPn07hwoU5duwYWq1W9cmAr68vhQsXpkWLFsqy9OnTM2jQICpWrEjVqlW5fPky5ubm+Pr6Ur16da5fv84ff/wBqPNmmfhvbmdnx8uXL5XatYIFC7J48WIOHz5Mx44dlRrVunXrsn37duW1mi+2oPt3Nzc3Z8uWLeTOnZuFCxfSpUsXZTsjIyO2b9+OmZkZfn5+HDp0SF8h/yv+/v60b9+eHj16YGdnR968eWnevDndu3dn/vz5pEmThmHDhpErVy4CAgLYunWrvkP+Yu3ataNnz560adOGiIgISpQoQYMGDbCxsaFJkyY8ePCAihUrsmTJEgYNGsSkSZP0HfI/SpcuHVu2bOHixYt06dKF27dvkypVKho3bkzfvn3p1q2bknADmJmZUbx4cSpU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\n",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"execution_stats = [time_pytorch_function(fn, embeddings) for fn in functions.values()]\n",
|
|
"execution_means = [stat[0] for stat in execution_stats]\n",
|
|
"execution_stds = [stat[1] for stat in execution_stats]\n",
|
|
"\n",
|
|
"\n",
|
|
"plot_execution_times(functions, execution_means, execution_stds, filename=\"1_forward-only.pdf\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "VQaSerWCOnYB",
|
|
"metadata": {
|
|
"id": "VQaSerWCOnYB"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"\n",
|
|
"## Speed comparison (Nvidia A100 GPU) with warmup (forward and backward pass)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 31,
|
|
"id": "69e6377b",
|
|
"metadata": {
|
|
"id": "69e6377b"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def forward_backward(func, embeddings):\n",
|
|
" if embeddings.grad is not None:\n",
|
|
" embeddings.grad.zero_()\n",
|
|
"\n",
|
|
" output = func(embeddings)\n",
|
|
" loss = output.sum()\n",
|
|
" loss.backward()\n",
|
|
"\n",
|
|
"\n",
|
|
"def time_pytorch_function_forward_backward(func, *input, num_repeats = 1_000):\n",
|
|
" # CUDA IS ASYNC so can't use python time module\n",
|
|
" start = torch.cuda.Event(enable_timing=True)\n",
|
|
" end = torch.cuda.Event(enable_timing=True)\n",
|
|
"\n",
|
|
" # Warmup\n",
|
|
" for _ in range(5):\n",
|
|
" forward_backward(func, *input)\n",
|
|
" torch.cuda.synchronize()\n",
|
|
"\n",
|
|
" times = []\n",
|
|
" for _ in range(num_repeats):\n",
|
|
" start.record()\n",
|
|
" forward_backward(func, *input)\n",
|
|
" end.record()\n",
|
|
" torch.cuda.synchronize()\n",
|
|
" times.append(start.elapsed_time(end))\n",
|
|
"\n",
|
|
" return np.mean(times), np.std(times)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "ReCmeRhCOpm8",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 486
|
|
},
|
|
"id": "ReCmeRhCOpm8",
|
|
"outputId": "6d0f526e-d044-49b0-d2e7-fb1dac063920"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"execution_stats = [time_pytorch_function_forward_backward(fn, embeddings) for fn in functions.values()]\n",
|
|
"execution_means = [stat[0] for stat in execution_stats]\n",
|
|
"execution_stds = [stat[1] for stat in execution_stats]\n",
|
|
"\n",
|
|
"\n",
|
|
"plot_execution_times(functions, execution_means, execution_stds, filename=\"2_forward-and-backward.pdf\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1gWX-Ayqia1k",
|
|
"metadata": {
|
|
"id": "1gWX-Ayqia1k"
|
|
},
|
|
"source": [
|
|
"<br>\n",
|
|
" \n",
|
|
"\n",
|
|
"\n",
|
|
"## Speed comparison (Nvidia A100 GPU) with warmup and compilation (forward and backward pass)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "LQDiAPooiYAz",
|
|
"metadata": {
|
|
"id": "LQDiAPooiYAz"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import torch._dynamo\n",
|
|
"torch._dynamo.config.suppress_errors = True\n",
|
|
"\n",
|
|
"def prepare_function(fn):\n",
|
|
" fn = torch.compile(fn)\n",
|
|
" return fn"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"id": "aac06ffe",
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 486
|
|
},
|
|
"id": "aac06ffe",
|
|
"outputId": "d66cf0e8-18ab-40ab-e22f-86e8e82edfdd"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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9WqWLVvGnj17yJEjB4aGhjx79oxx48bx4MEDnJ2dlfX18WapVqt58+YNr169IkuWLPTs2ZNNmzYxevRodu7cib29vc4nNfESnlM3b96kXbt2nDhxgpw5c2Jqaqqs8/r1azp27MjevXvZunUrmTNn1tiPPpT34sWLfPjwgTRp0qBSqTAwMODp06cEBQURGRlJ7ty5lXX18bz800ki9wlubm6cPn06UXfqzZs3M2/ePMqXL4+zszMxMTEcOHCA1q1bky9fPlavXq3FqP9blixZaN++PdWqVaN27dps374dT09PMmTIwKJFi6hduzZlypRh3759NG7cmPLly7NkyRJth/1FarWaiIgIYmNjlQFVX79+zbVr12jbti1t27Zl7Nix1KtXj969e9OgQQMaNmyIg4ODliP/MgsLC4YMGYKdnR3Pnj3D29ubTJkykT17diZOnKjRHvPy5cu0bduWDx8+sHHjRmxtbRNdcHXxAvwtCdiAAQPYtm0br1694uLFi5QsWVIZZFvXymZlZUXVqlWZOXMm6dKlo3z58ri5udGxY0e8vb15/PgxS5cupVChQgCcOXOGdOnSadR86LqEx87JyQljY2Nev35NVFQUEydOZOPGjSRNmpSRI0cqbVOLFi2qrXC/Wfw5VbhwYSDui0RAQADHjh1j/vz5pEiRQlnn9evXdOvWjTFjxmi0G9N18cfw1atXmJmZkSlTJtRqtZJ8Xr16lXfv3uHi4qLNMMUXSCL3CVu2bGHhwoU4ODiQIUMGjffWr19PeHg4pUqVAuI+7Pv376dDhw44OTnh5OSkjZC/6NKlS3Ts2JHo6GguXLjA9OnTqVmzJnPnzqVJkybs37+f2rVrY25uriSnt2/f1nbYX0WlUhETE8Pbt281lkHcN80JEybg5eXFyJEj+ffff7l+/TqPHj3SVrhfzd3dnffv3xMeHg7EjR139OhRDh8+TM2aNfHw8NBY//Lly/j4+GBra0uHDh20EfI3MTQ0VG6EX6ohja8dHjRoEB07dqRz587KECO6WOMRERFB+fLlefv2LbNmzSJNmjTMnj2b7du3s3//furWrcu///7LzJkzKVKkCKdOneLIkSPUqVNH26F/lU91bMiTJw9hYWEMGjSItWvX0r59e/r168eiRYu4fv06r1690viM6qqECWq2bNnYuHGj0uHr+vXrdOjQgYcPH7Jp0yalA4RKpeLly5cMHTpUaROn69q2bcvGjRvp27cvrVu35vTp06RJk0Z5WgNxnapOnjxJ5cqVtRip+JK/vo3c5573m5qaMnHiRMqWLUuLFi3Yt28farUaW1tbtmzZwoQJE1iwYIHGNubm5rx79+53hf5dWrRowfDhw+ncuTO7du0iXbp09OjRg5w5c3L27Fnq1KmjF501qlatyq1btzh37hypU6dm9+7d1KxZU6PtEXz6+MYv04e2K/G8vLzYtGkTz58/J3Xq1IwcORIzMzPmz5/PypUrgbjODyqVChsbm082StYlFStW5OXLlxw9epShQ4eSLFkyjd7Rn6Nv7XPs7e1ZsmQJ+fLlY8aMGfTq1Uvj/YULF5I3b158fHy4e/cuN2/e1JtzEuIeFzdo0IAePXpw+PDhROedsbExNjY2jB8/Hjs7O6pVq6Y35evQoQNGRkb4+/sDMHToUKU5Q7p06Zg0aRLJkiWjVq1ayhAd+qRLly5YW1uTJk0aMmfOTJo0aTA3N+fcuXNcu3aNp0+fcuPGDfbt28elS5f06nP3t/mrE7mEN4WCBQtiYmLCmzdvOH36NBBXSzBz5kzKlCnDkiVLuHnzJiVLliRNmjSUKVNGZ9vCfUnr1q0ZMmQIgwYNYsKECZiYmJA1a1Zu377NixcvtB3eF5mamjJv3jxKlChBuXLluHv3LufPn8fV1fWrx0zT9YQgYYcZFxcXxo8fz9GjRxkyZAj37t0jQ4YMDBkyBCMjI9asWcPmzZvZvXs3kyZNYurUqYBul3Hnzp0kT56cw4cPU7ZsWapXr67M0fg1MmTIwKNHj5TH6boi4d88SZIkvHr1Cnt7e2bNmoWzszMNGjRINLvI1q1befDgAU2bNk20D11WpkwZxo8fT6NGjThz5gwGBgbK9HY3b97kyZMn+Pr6UqpUKWxtbalatarOz2oQz9/fn1atWtGxY0csLS3JlSsX7du3Z8iQIYwbNw6IG+po2bJlnDt3TueHNfqvc8rQ0BAjIyOGDh1KsWLFGDRoEGXKlCFnzpw8e/aMZs2aKbPe6MN5+Tf6qxO5eH369KFu3bq8e/eO9OnTM3LkSBYsWMDDhw8xNDRk4sSJ1KlTh5UrV3Ls2DHmzJmj8yPHf0nLli0ZPnw4gwcPVi5MoD83EScnJ+XC07ZtW3r06EFoaCjHjx/HyspKaa+jUqnImjUra9eu1ctvzRkyZOD69evKqPF3797VSOb69+/PP//8g42NDadPn6Zhw4baDvmrnTt3Dnt7e7p27crixYu/ervWrVvToEEDvLy8dOqYJvzseHt7Y2try6pVq7h69Sr29vYsXboUc3NzmjRpojEh/Mfb6ovy5cvTs2dPmjRpQpIkSfDw8FBq9MPDw6lXrx558uQhe/bsTJs2TWeH4UiTJo1GMxJLS0tWrFjBhg0bNHp7x09fGBAQQEhICGq1GkdHRx49eqTTiWnCc6tBgwZkzpwZS0tLDhw4wLp165T1KleuTP/+/T/ZHk4fz8+/iZG2A9C2Ll260LBhQ1q2bMnhw4fp168fPXr0wM7OjvHjx/Po0SNlUMSSJUsya9YsZeBKXbsgfcuHLX6MtSFDhhATE6M8MtCXD+v9+/fp2bMnI0eOZNmyZUDcvIetWrXC2NgYQ0ND3r17h0ql4tGjR0otlT7p1KkTlStXpkqVKsycORMDAwNq1qxJnz59GDJkCNevX6dnz55kyJABW1tbNm3aBOjuRTc+LpVKhZWVFY8ePeL58+d06dKFmzdvcvjwYeX9+Pg/LkvTpk3p2bMnfn5+OpXEwf8+OwEBATRs2JDevXsrbcKeP39OvXr1WLlypdIuNeHE8B+XWx9ER0eTMmVKxo4dS758+QgNDWXkyJE8efKEoUOHkjNnTvbu3cvevXsBdPKaOW/ePF69eoWvr6+yzMTEhNSpU2skZyqVipkzZ1KyZEkGDhxITEwM06ZNU8Zm1OVaxoTnZf369VmxYgXJkiWjX79+FClShD59+gDw8uVLnJ2dSZs2Lbdu3frkPoRu+utq5D6eQmbw4MEsWbKEjRs3Uq1aNcaNG8fatWtp3Lgx06dPZ9KkSdy/fx9DQ0NmzJhB4cKF8fb25sCBA1ouiSYjIyOWLl3KxYsXuXXrFjNmzFAuLP91kWnRogVBQUE0aNCA7du3/86Qv0mGDBlwdHQkefLkPH36VJlaLFmyZPTt25cGDRpQs2ZNDh8+TJIkSZRkO74RMuhughPv4+OUPn16du/ezZgxYxg7diwArVq1olatWty4cYOhQ4cmSmZ0tYwJ43Jzc+PChQvKOFybN28mefLkdOjQgSNHjih/g/gBc+M1bdqUAQMG0KFDB50dB7B+/fr07dsXT09Pzp07B8QlBilTpuT27dvY2NiwcuVKUqdOTbly5XQuGf2UhMfOysqKyMhIIiMjAahevTqZMmXi6tWr7N+/nxcvXmBjY8PatWsZMGCAMjyMrrKxseHt27dERUVhb2/P8+fPAQgKCqJ48eI0a9ZMOU8hrrNNrly5KF68OM2bN9fZ8xA0j1vZsmUZOXIkrVu35uTJk7i5uTFlyhS6dOnC8uXLgbjPW1hYGK1bt+bgwYPaDF18o7+u12r8iZ0zZ05u3brFmjVr2LVrFwULFmTo0KEEBQXRrVs3pk6dSsuWLenZsyf29vbExMTQunVrLly4wJgxYzAzM9NySTRFR0czZ84czp8/T6dOnViyZAkdOnTAxMREGaLhU2bNmoWHh4dOJ3Genp7Mnz+f0aNHM2rUKFavXs3KlSupWrUqT58+ZfDgwWzfvl2ZOP7ly5dERETw+vVrvUni4H/jTaVPnx4rKytluIPatWtTsmRJAGbMmMHKlStJly4dwcHBiaam0tUyJqwV6N+/PzVr1lSGgKlSpQpPnjxh7NixlCxZEmtraxYsWMDw4cOV7eOTuI4dO+r0zTNVqlScO3eOc+fOkSFDBlq2bMnu3btZvnw5PXr04OXLl9SvX5/Q0FAePnyo7XC/KOHnxsfHh3nz5rFs2TKlBn/Dhg1MnDiRDRs2EBERgY2NDSEhIbx9+1apidNVBgYGvHz5kqioKLy9vVm3bh3Zs2cHYPXq1Tx69Ij+/fuTLl06IK5tbnwnh7lz59K5c2dlzEZd4u3tTerUqZVaXgBHR0fu3bunJHETJkygb9++LF++HAsLC4oUKYKxsTGbN2/m8OHDWi6B+FZ/TY1cwgtSYGAgbdu2JWPGjERHR/Pu3TsCAgJwdnbG19eX9+/f0717dwoWLIiFhQVubm4awySkSJFCp79J29nZ0aVLFwoWLMiLFy9o2bIl7969+2L1vy4mO/Xq1WP06NH4+/tz4MABYmJiyJMnDyNHjuT169cEBgayceNGHBwcGDlyJIULF6Zu3bqcOXNG26F/lwEDBtCiRQtCQkJYvnw59+/fZ+rUqVy6dIlRo0Ypj+rik/RRo0ZpOeKv5+3tjZ+fH/Xr1+fs2bNERUVptJlau3YtGTJk4M2bN0RFRVG2bFmio6Nxd3dn8uTJtG3bVmeTuPjPTrt27ahXrx5nz54lV65cXL58mVu3bvH69Wvatm2Lm5ubRg2PLj+SS6hfv354enoyceJEXr58SZ8+fbhw4QKNGzfm3bt3mJub065dO1xcXEiSJAlVqlTRm44NAMmTJ2fPnj1cu3aNzp07c+3aNdzc3GjWrBl58uTh+PHjODs7ExsbS8mSJenatSuVK1fG1dVV26FrKFu2LMOHD+fEiRMMHjxYuU/Vr1+fsmXLsnz5cmbNmkVAQABz5swB4kYAKFy4MKNGjVLGptSX4ybi/DU1cvEJSqZMmbCwsKBGjRq8fv1aaUeVKVMmDAwMiI6ORqVSkTt3bsaNG0f16tU1vtnExMTodBJnYGBAeHg4Q4YMISQkhOTJk7N8+XLMzMyUnkefo2tJXOrUqWnTpg29evVi8eLF3L59m3v37rFp0yZq1qyJhYUFHTt2xM7OjsePH9O9e3cuX76sMcuGrkt4PIyNjXn69CkRERGkSpWKFStWUKRIEXbt2kWjRo3IkiWLsu6ECRP0KokzMTGhUKFChISEcOrUKWWIm4Q3ixo1ajBkyBDGjBlDmTJllHXOnj1Lo0aNdCqJ+9znaOXKlWzbto2kSZMya9Yshg0bxuDBgzl27Bi3bt0iIiJCY31dvFkmT55c47WrqyuVKlWiadOmTJkyhWfPnmFlZUWBAgVYt26dMuzSv//+y8GDB5WB1HV1jL9PHbsnT55QunRp0qdPz6RJk8iQIQPr16+nW7duDB06lNu3b7NmzRrKlSsHxF2b7t69q3NPZnbt2sWkSZNwdnamX79+yrimYWFhuLu7s2TJEnr27KkkcWZmZjRr1gw7OzuNAcZ18biJz/trauQAatasSUBAAK9evaJevXo8fvxYSV7q1KnDlClT2Ldvn/LIp3Tp0jrXOPdjJUuWxN7eHiMjI9avX6+0XYG4pK506dL07NmTM2fO0KNHD50vT0J58+ZlwYIFNGzYkH///VdZHv9tsUCBAoSGhuLr68vSpUuBuNrIFy9e6FxS+iXx7XMcHR1ZsmQJmzdv5tChQ4wYMYJly5bRtm1bbty4Qd26dZXHxbrs49pdIyMjtmzZwsGDB+nXr5/GuqampmTKlElpUxYvPhHQtWOZsGyNGjUiZ86cWFlZsWzZMvbt24dKpcLY2Fj5LJqbmzN9+nSMjIxo0KCBzpUnoTFjxmBgYMDo0aOVBu9Vq1Yla9asjB49mgoVKjB58mSGDx/O2bNnWblypTK1X8LBfnW1RifhsatevToZMmQgKiqKkydPcuTIEZInT86OHTu4d+8eHTt25MqVKxrbJ0uWjE6dOtGwYUOqVq361cMd/Q4lS5bk8uXLPHr0iObNm+Ph4cGdO3cYOnQod+7coUaNGkycOJEZM2awY8cOVCoVnTp1Inny5JQrV06v7g1C019TIwfw7t07bt68Sbp06bC2tkatVisjcK9YsYKWLVty/fp1tmzZoiRxn2tbpgv69u3LmDFj6Nq1K1OmTGHq1KkYGcV1RI6/kO7bt4+VK1fyzz//KNP/6OK8lJ+SMmVKzMzMNKr7AWUYgxMnTnDy5EkyZsyobBMeHq5Rg6oPfHx8WL58OQULFuTBgwd069aNevXq8fTpUxo1aoShoSEPHjwgX758Sls5XRd/s4wfJd7ExIQ7d+6QOXNm7OzsNI6Ps7MznTp10piXFOJqv3Ux6YmPqX///koP99jYWFatWkX9+vVRq9VERkZiaWmJp6cnc+fOJXXq1Hh5een8uXn27FllEPT06dMDsGnTJpYuXYqFhQVdunRh2rRpzJo1i+vXr3Pz5k3Kli1LcHCwxn50MYkDzbaagwYNolixYuTNm5cNGzbg7u7OkydPKFOmDI6OjowePVpjjtGkSZPSrFkz8uXLR40aNXQqiWvevDmrVq3C0dERgNmzZ7Ny5cr/Y+/M42rK/z/+bN+lIsm+ZhvG2BkkS7aUSLtKUgghFUVSqGxJQxQVkXXIvo917LuxZF/KFqJU0vL7o989U5YZ8x3j3jjPf+jcz7mP97ln+bzO+/NeqFatGpMmTcLQ0JDk5GTGjh0rOC2mTp1Kbm4uXbt2lfm5TuSv+S7O3IABAzAzM2PXrl1ERUWRkpLC4sWLqVWrVqkLePPmzXh7exMcHCzT7X+gOEbKzs4ONzc3+vbtS5s2bejatSv29vbAnw/S/Px8EhMTUVBQwNbWFpC9JdRPcePGDTQ1NbGwsAAotTQseXuUk5P7aBHjsnKMAA8ePODSpUts27YNHx8f5OTkWLJkCQMHDiQtLY0FCxbg7OxMWFiYTC0v/h3m5uYcOXKEBg0akJ2dzYIFC+jYsSMBAQEYGhqioKCAjo4O06ZNQ0dH5wPvhyxja2uLpaUlgwcPxsPDg02bNgEQERGBq6srUPziUbt2bW7dukXXrl2F5UZZvjaXLl3KjBkzsLS0ZMiQIUKLwtTUVAwMDKhcuTL79+8Hiu+xP/74g+7du5eJlnASzMzMsLKyYujQodja2rJ7926guLcxFJeK6dq1K61atWLw4MHCfs+fPycxMZHBgwd/0EFGmjg5OTF9+nScnZ05f/68sD0uLo6NGzdSvXp1YZl1/fr1mJiYYG5ujqOjIw4ODjK9DC7yeXzzdeRUVVWFgNwtW7awb98+lJSUcHNzIzIyklGjRnH37t2PFqqUVVezkZER3bt3Z+LEiZw7dw4FBQXu3LnDrl27qFevXqmx8vLyZGdnM3HiRKKioqhfv/4HleVlldTUVDZu3Ii7uzt3795l48aNpSZBHR0dlJWVadOmDerq6uzdu5erV6/y9u1bKVr9z9m6dStbt27l2LFjuLq68uOPP6KiokJ2djaNGzfm1KlT3L59m9mzZwOymZTyMZ4/f87ly5dZsmQJ7u7unDlzBnt7e+Li4oRjfPPmDSoqKnTr1k1ma6n5+/vz/PlzoqOjgeKCsTo6OsyZM4fz58/To0cPFi9ezNixY6lUqRIhISHk5uaycuVKZs+eLSyxymIdNQklf/fVq1ejpKSEj48PUCzu7t69K9RM8/b2Jjo6Gi8vL+Tl5blw4UKZanlXq1Yt9u/fz5kzZ+jbty9z585l3LhxrF69Gi0tLQwMDLhx4wb169f/IKZR1jKNbW1tCQ8Px9raulSpl/bt2/P777+zdOlSCgoKsLKyYvLkyUyfPp2HDx/y7NkzYaykV7VI2eWb88iVXLZQVFQkNzcXLy8vOnToILw17ty5k5iYGHJzc5k/fz5169YtUxfy8+fPyc7O5tatW8CfgjM9PV14gy65DCn57P79+ygrK0vB4r/nY8tNubm5rFixgtTUVKZOnSq8HaupqaGvr09UVBQVK1akUqVK6OnpUbFixTIn4kqyZs0axo0bx++//07VqlXp2bMn0dHRKCkplRona0IHPn7+jhw5wpw5c3j48CFLly6lQYMGHDhwgG7duhEXF8fmzZtZvny5THurNDU1ad68OX379sXR0RE5OTnevHnDnj17OHDgANWqVSMwMJCZM2eSmJjIgQMHkJeXJyIiAnNz81Ixq7IqckqKuLZt2wKwYsUKZs6ciYWFBa6urtSuXZucnBwmTJhA3bp1CQsLQ15enoEDBwoCXFaPT4LkmViynuEvv/xCYGAgK1asAIp7ANvb21O+fHlev379l6WbpE2tWrWYMGECZ86cKSXi4uPj8fX1RVNTU/h73bp1GBoaMmvWLCpUqFDqe2TtnhP553yzyQ7Dhg1DQUGBnTt3cufOHYYNG8agQYOYMmWKUOywR48e+Pn5cebMGaExcllBU1NTeFuUvAlPmjSJOnXqCEs76urq1KxZkytXrgDFvRGvXbsmU2+VkydPZv369Vy9evWT3hhjY2NGjhyJsbExKSkpKCoqkp6ejpKSksyl//8Vn+ttkpS4WbhwIampqYwcOfIrWPdlGDBgAMeOHSuV2d2mTRvGjBlDjRo1GDJkCNevX//gt5Blb46uri6hoaFUqVKFtWvXsnz5csH2du3aMXPmTJydnbl79y4NGzbE3t6e06dPs2XLljL1gjhp0iQsLCxYvHix0PlF0qFi06ZNLFy4kLS0NFRVVTE0NBTajMli2633GThwIOrq6ixfvhwzMzMmT56MgYEBwcHBxMTEAMXP1NjYWFJSUpgyZYqULf57NDU1cXR0ZODAgZw7dw5vb28WL15M48aNsbGx4eHDh6XusxEjRlCrVi18fHxE8faN8U0KuUqVKrFv3z7U1dW5c+cOwcHBPHz4kClTpnD58mUiIyPJzc0FoHXr1pw6dapMX9iSSdDHxwcjIyNcXV0pX748e/fuJSkpSWbLVPzwww/MnTuXd+/eMWbMGG7cuPFJsVO5cmWMjIzo3LkzOTk5XLt2ja1bt8ps/8aSNGrUiLt375bK6vscZP244uLiuHv3LkFBQQDUr1+fJUuW8Pr1a4YNG1bqhcHY2JgFCxbw9OlTPD09uXr1qrTM/mwGDx5MXl4eq1evRkdHh/DwcAwNDVmzZg3Lly8HwMTEhDVr1uDo6MjNmzcJCgri7du3QhN1WT+HEry9vXFzc8PR0ZH79++XOne2trZMmjSJjRs3smLFilKxjLK4FP4+CgoKJCQkoK2tjZmZGQDh4eHY29vj6+vLuXPnkJeXZ/LkyVSoUIHu3buXiXMGxWLO1tYWe3t7KlSowMuXL+nXrx8vX74UxnzsHJWF8yby+cimz/hf8urVK2JiYjh27BhbtmxhyZIlmJqa8vbtW5ycnIRK3QAnT56U+Uyyv0PiyVBWVkZZWZly5cqxbds27t+/L7MiDuDSpUvMmDGDzMxMIX7vU+fi0aNHHDhwgKCgIMLDw9m8ebOw7CHLD92RI0eyb98+duzYQdeuXalbt26pz//qupPl45JkDQ8fPpyxY8cCkJKSwrx588jPz2fRokVCBh3A4cOHuXv3LpUrV8bLy0tKVn8+jo6OzJkzRyj18vLlS3x8fHj06BHW1tYMHjwYOTk59u/fT1xcHCtWrGD16tUYGhoybNgw4Xtk+RxK0NPTo3PnzkyePJmTJ08KIk6S0Z+UlMTMmTNxd3fH2Ni41L6yKAZK3lPKysoUFBTg6emJkZGR8NLh4+PDpk2bcHNzY//+/cyaNUvw8JelDM6srCySkpJYuXIlr1+/5tq1a4KIe38puSSyeN5E/ne+KY+clZUVKSkpXLhwAQMDAzZt2sS8efM4ceIEHh4eaGpqYm1tzR9//IGZmVmpAojfAmPHjqVLly5oa2uTnp7OgAEDANl8+1JUVBQKvkoyqFRVVRk1ahR37tyRSZv/KXJycowYMYJ69epx584dOnbsiLq6Ovv372f16tU8fPhQ2ib+KxQUFBg8eDAzZsxg9uzZwkuDmZkZQ4cOpaCggKFDh/LixQu0tLQICwtj48aN7N27V6bPrZOTE+Hh4QwZMoRt27aV+kxPT4/Q0FAMDQ1Zu3YtCQkJwJ+xZSdPniwTXuKS1KhRg8OHD+Ph4cH27dtLfSYp9gtgamrKnj17ZHYJ/H2GDx+OpqYm27Zt48qVK9jY2ODm5kZ4eDi7du0CoGbNmhgYGPD06VPu3LkjlKQqK+dOQknP3Llz54SXK1kOWRD5cpSN147PoGrVqvTv35+dO3cybNgwsrKy8PDwYOzYsejp6TFt2jSWL1/OtWvXyMnJ+SAb6VtASUmJdu3acfXqVZkWcYAg4saMGUP//v3R19enTZs2REVFUa9evTLvJYXit96TJ09iamrKtm3bGDp0KAsXLqRbt25ERUUxe/ZsqlWrJpQ9KCtI3vQLCgq4cOECcXFx+Pn5MXz4cAC2bNlCbGwsCgoK7Nu3jwkTJrB69WqqVKkiiDhZPbf9+vVj9uzZWFtblxJxo0ePpmbNmjx//hwfHx/S0tIYNGiQkABx/Phxjh8/Xia8xO8j8eQYGRmhoqIC/OnVMjY2ZtKkSQDs2rVLpoP/S6Knp4eTkxOenp4sXryY/v37c+zYMe7du0fbtm2FRIC7d+9y/Phxbt++LVyXZencSSjpmfvxxx+FlypRxH0ffFMeOVVVVWxtbfH09OTKlSscPnwYBQUF9PT0mD9/vuCBk4gbWRU5/ytGRkZ4enoK2bmyfnzDhg3D398fJycn7t27R5cuXejfvz+KioqMGjWKmzdvyvwxfIqSdgcGBqKvr4+/vz8ZGRk0b96cXbt28fTpU3Jycjhz5gw7d+4UapGVFaZMmUK3bt24dOkSrVq1olatWoSGhgqTSIsWLXBwcKBevXo8fPgQT09PoQWeLJ5TLS0tfvnlFxo0aEBgYCA7duwAijM4K1eujLW1Nc+fPweKS9+Ehoby448/MnXqVGFsWWXOnDmYmpri7e3N3r17yc/PR1VVldjYWN69e4eLi4u0TfxHKCoq4uLiQteuXdm7dy/jxo0jLi6OGjVq0KtXL2xsbDh16pTMXoslKWmjnp6ecA1+DE1NTWxsbBg7diyLFy8mMjLya5kpIkW+KSEnoWXLlvTu3Zt+/fpRvnx5njx5wqhRozh79qwwpizcwP8GWT8+RUVFFi5cyIsXL/Dz8xO29+7dGz8/P169eiXU+CtLtGnThpSUFF6+fCksa/Ts2ZMJEybQo0cPdHR0OHToEDt37mTcuHHY29vTq1cvMjMzBY9WWaBHjx7ExMQwcOBATp06hYGBgVCrKjQ0lLlz5wpjtbS0hJcoWV+2atq0KSNGjMDQ0JBFixZhYWFBw4YNcXR0FFpWSe4tPT09hg4dyqxZs8qs56PkcyIhIYEmTZpw+fJlnj59SuPGjdHS0qJLly6CB13WsbW1JS0tjYMHD6KlpcXmzZtZu3Yt69atY/To0WhpaeHg4MCDBw/o0aMH6enp0jb5Lyl5fkaOHEmtWrVYtmyZUIngY2hpaWFsbMy2bdvK7HUp8s/4JoUcFL+Z1K5dm5CQENq1a8eGDRvw8PCQtlkiJYiMjBQ8HSUfOMHBwXh4eHD79m2srKy4f/++FK38fDp27EhERATr1q1j0aJFpXqirlu3DiUlJerXr89vv/2Gj48Pb968AYoLzEr+X1awt7fH3d2dTp06Cds0NTUZPXo0Y8eOxc/PTyhhUdZo0qQJo0ePpl27digoKNC+fXsyMjJKTarvxx6V5VikkrYPGzaMhg0bUrFiRW7cuEFISIjQ5UaWBTgUZ7ZPmzYNCwsLwsPDiYuLo1y5csTHxzNlyhSOHj1KgwYNmDFjBkpKSvTq1UumX3ZLEhgYiJ2dnVA3LjU19bP2K8vXpcjnU6aE3P+yJKqoqIiVlRVr166V+QfRt8qnzpeLiwvu7u5MmjSJI0eOCMVT7e3tMTMz4/Tp08ydO7dMPYimTZtGu3bt2L17NzExMUL7sC5durB06VK2bNnChAkTShWKLYsYGxsLNbkuXLggbG/bti3JycnIy8szevRokpKSpGjl/06jRo0YN24c1atXJyoqis2bNwOy7+l+n6ZNm3Lt2jUA8vLyPmn/+xN+yXFlQcRJUFRUpE+fPkyaNIk7d+5w6tQpMjMzMTQ0ZP78+UJGZ1kKrzEzMyMkJAQHBwcuXboEFIcR1axZUzi3ZeE4RP47ZD9q9f+xsLBg3rx51KpVC1VV1c/aR15envz8fJKSkoS3SpGvS8kHjKmpKba2tjg5OaGtrU1cXBy3b98mJCSEXr16YWBggJaWFj179uTMmTPMnj27zARXS66tKVOmsHfvXnr27MnQoUPR1tYG4MqVKzx69IiXL1+WKRH3qaSEK1eucPr0aYYPH06jRo2E7enp6axZs4bBgwezdu3ar2XmF+fKlStERERw9+5dhg0bhqWlJVC2yjaYmJiwb98+ZsyYQWhoKDVq1Pik/e+/LJUcV1ZEHBQnUSUnJ+Ps7MyZM2cYMGAAAQEBmJmZ0axZM2GcLIu4OnXqCMkYUFwX9fHjx1y6dIm6devi6enJwYMH2bx5M+Hh4UDZui5FvjxlwiOnpaXFgQMH0NTU5PHjx5w9e5bff/+ddevWCWNEF7JsExgYiJWVFRcuXMDIyIhXr14REhLCb7/9RmJiItWrV8fAwIBnz56hoKBAhw4dytQEAqCioiK0CLt58yYvXrxg3bp1LF26lBcvXmBpacnMmTOxtbUtFa8pq5Sc6KytralWrRq6urps2LCBs2fP0r17d8aOHcurV69YvXo1qampeHt7k5+fj729PVC2vDkfo0mTJowaNQoDAwPWrFnDqlWrpG3SZ9O+fXtWrVrF/PnzqVixIubm5qxdu5azZ8+yZcsWYdy3+uxUVVWlSpUqBAUFYWpqyvbt23FycpK2WX+JgYEBv/32G9HR0SxbtozMzEzMzMyYOHEi9+7do3bt2pw9e5arV6+SmppKdHQ03bp1K+UVF/n+UJS2AZ/Dmzdv2LRpE3fv3uXSpUt07NiRsLAwTExMuHr1KlFRUd/kg+hbwdraGisrK2xtbbl06RJWVlYsXLhQKHXg4OBAy5YtqVevHgUFBWzYsEEoyinL59XLy4uioiLmz5+PvLw8b9++RVlZmS1btnDmzBlu3bpFz549kZOTY8mSJRw5coSioiLq1q1bJoScRMQFBQVha2vL0aNHady4MV27dmX79u3MmDGDvLw8rK2tWbx4Mbdu3SIzM5M+ffoI3yGLIu6feGIuX77MggULCAwMpHnz5mVKyB0/fpxVq1aRmZnJvHnzOHv2LAYGBkRGRtK7d29+//13EhMTZfoeK0m/fv04fPhwqa4Ff0Vubi63bt3CwcEBc3PzUuJVVnn8+DETJkzA398fgIULF3LgwAF0dHRo27Ytc+fO5ciRI6SmptKgQQPOnTv3zdVDFfnnlAmPHBRnyS1evJiePXty/fp11NXVGTNmDOPGjePChQts3LiRffv2CTEDIrKDn58f+vr6jBs3jv79+zNnzhyCg4OJi4tDU1MTFRWVD1LqZV3EAYwfPx4/Pz8CAgJYvHgxcnJy7N27lxcvXjBo0CCKiooIDAykY8eO7Nixg7lz59KpUycOHjwobdM/GxMTEyIiInBwcODixYtA8XF37dqVffv2CaVGqlatioKCAvfv35fpoqolRdwPP/yArq4uN27cICsri9evX39yv9q1awsFY2Wdksc4ZswYrKysMDExIS8vD0VFRS5cuEBGRga5ubmoq6uTlJTEunXrePTokZQt/zQ2NjZMnDiR5cuXExMT85fnqiTvP0dk9bp8n759+zJ37lzMzc2FdnaSY5GXl0dDQ4Po6Gg0NDTo379/mbguRf47ZDb4SOKtkcRH7d69mw0bNgj1jLKzs+nbty87duzg2LFjdOnShcOHD2NtbS01m0VKIzl3VapU4fHjx/zwww9EREQwbdo04uLikJOTw8bGhn79+qGoWNo5LMsiThI3NmfOHAICAoQs2507d5Keno6Li0spb9bhw4cZMmQIPXr0EEScrBbEfT8eUUtLi7y8PNLS0oRtc+fO5cSJEwwaNEgoZvzw4UPu3bsn80VVJedlypQprFixgsWLF7N7927mzZtH06ZNP7lfyYKxskr79u0BBCENMH/+fLKzsxk8eDAA+/bt4/r161hZWeHo6MjFixdp3rx5qd6qssjq1avZuHEjvXv3xt3dXYg9/TskzxHJeZPF6/Jj19TWrVuFFScJhYWFqKmpYWVlRUJCApUrV2bgwIEyf12K/PfIpEeuY8eOODo6EhgYyKNHj4Q3EUdHRwYNGoSdnR3Jycnk5ORgbW1NVlYWhoaGtGvXjk2bNsnkzfo98Kklqz59+rB48WJUVFRwd3fn119/BUBdXZ2EhAQuX74s9ECUdSZPnoyuri4+Pj68e/cOKG4FNG3aNB48eEDnzp0/WjPNwsKiTBX89fDw4OTJk9SuXRt/f3/69u1Lamqq0FpNW1ubK1eu4OTkxN69e6Vt7j/CxcUFPz8/3NzcuHLlCt26dcPMzAxNTU0mTpz4lzW6ZJXy5csLHQp69+4N/NkGb8yYMTRv3pzGjRvz6NEjhg4dytOnTz/4DlkN/ldWVhYShEJCQvjpp5/Yt28fS5Ys+exlxbp163Lz5s3/0sx/Tfv27dHQ0ODq1aukpaVRWFj4wTnR0NDA3t6eChUqEBYWVmZKw4j8t8ikR65Ro0bUqVMHPz8/DAwMhLeqFStWoK6uzu3bt8nMzMTe3l5otZWWlibEVonZqdJB8sDp2rUrNjY2NGjQAHV1dXbu3MmKFSt4+vQp7969Q0NDg/r16xMXF4eenh4hISFStvzzMDIyYvTo0Tg4OBAaGipcZ4sWLWLChAlUq1atlEe45LUoEXGy+uZc0i4HBwemTZvG69evhTZVYWFhyMnJCYVh9fT0uHv37mfHK8kKcnJytG7dmo0bN3Lo0CHS09NZvXo1sbGxyMvL079/f2mb+D+RkZHB4MGDqVSpEhs3bgT+bIO3efNm2rdvT15eHv379xdE3PveV1kUcYAg4mxtbcnPz6du3boMHz4cNzc3ypUr97f7u7q6cuzYMapWrfpfm/rZ+Pv74+7uLvwdHBzMkiVLiI2NJS4uDjc3N5SVlT/wtr1584Zly5YxY8YMIY5YFHEiMpnssHjxYgoKCjA3N2fy5MkEBQUJD5+YmBhGjhzJ5MmThRpd7yNe2NIjKChIiA/Lyspi48aNREVFsXDhQpSUlFiyZAnp6em8ePGCjIwMevToUSYSGwCuX79OUlISWlpaQtcQNzc3CgsLiY+PR01NjRkzZiAvL8+SJUuAD69FWZ0sJXYZGxtTVFTEyJEjBQ/GkCFDSExM5Ndff2XZsmW8fv0aDw8P3rx5w7lz56Rp9j+mqKiIwsJCDAwMSnk7fvvtNzp37oy5uTnh4eGCt7UscebMGQYPHszy5ctZvnw5zs7OFBYWcufOHebPn4+JiQmVKlUSlsll/X4ryYQJE/Dw8MDHxwcvLy8hgUqSSPQpz5yTkxO+vr4MHTqUhw8ffmWrP46WlhYtWrRASUmJrKws7ty5Q9u2bXF2dubFixd4enrSv39/NDU1WbBgwQf1/0p22ShL51Dkv0PmPHKSt8TY2FhWr15Nhw4dCAgIwMDAAICjR4+ip6dHx44dpWmmyP9T8m2xZcuWNGvWDAcHB9q0acOvv/6KiYkJvr6+vHr1Cm9vb7p37463tzdjx47FwsKC/Px8FBQUyswD6eHDh+jp6WFra0vbtm1ZvHixcM0uWrSIKVOmEBwczNixY6Vs6T+nbt26rFu3joiIiFKejnPnztGvXz/U1NSYMmUKYWFhKCkp0bt3b5mu8/cp7+ft27dp0aJFqbpiABcvXiQ9Pf2z61RKm5K1xhQVFSkoKOCPP/7gwYMH9OrVi3Xr1gm/wdWrV6lbty4NGzaUlrn/Mzo6OvTq1Yvp06ezYcMGoYzIoUOHcHZ2ZujQoWhpaQGlvYxOTk5MnTqV8ePHk5ycLC3zPyAzM5OhQ4fy+PFjzM3NMTc35+jRo5w+fZrbt28TEBDAmTNn6NGjB6NGjRI8cyIin0ImnsCNGzdGT08PKO2x6Nq1KyoqKjRo0IDJkydjaGjIgwcPiIqKYsyYMdSvX19aJn/3NGnSBPjzfFlYWODq6sqtW7c4c+YMmZmZhIaGsn37dtq0aYOPjw+VKlXi8uXL7Nq1i7Nnz8p8YPzHmDNnDuXKlePHH39k6NChmJiYsGjRImECiY6OZtasWdStW1fKlv5z7t27h5OTE48fP+bnn38WtsvLy3Pr1i169+6Nubk5VlZWWFlZybQIL+nB6Nq1K926dROOac6cOdy7d4+YmBg6duxI5cqV0dLSwtHRkfT09DJRzqFDhw4sWbIEIyMj4E8vzbJly9DR0cHZ2ZlatWoJy6z79+/n4cOHODo6Ss3m/5Xs7GwKCgoE4SoJV/D19SU1NRUHBwe8vb3R0tISrkVnZ2cmT57M6NGjZa7siJycHC9evGDixIlkZWVhbW1dqqh2dnY2ISEhnDp1iq5duzJx4sQPksFEREoiVSEnJyeHoaEhBw4cYMKECejr6wsP3/j4eOrUqUPXrl1ZtWoVNWvWZNKkSVSsWJHff/+d/fv3c+PGDWma/90ybdo0nJ2dgT+9HqampvTs2ZOmTZuWilGcN28e27dvp0WLFkyePPmDmBZZftOcOnUq8fHxWFpaoqOjAxQvlW7atImGDRty7NgxnJ2d6d69OwsXLhTE3OzZsxk5cqQ0Tf9bPuatevfuHdu3b2fSpEl07dpVKC1SWFgoCLa0tDQePHgg8yK8ZNZwdHQ0s2fPZtGiRQQEBADF5R0ePHjAggUL2Lt3L8nJyejo6DBkyBBpmv3Z1KhRAz09PXx9falWrRpQ/MysV68etra2bNu2jWHDhlG9enUhPtPT01Pmj+9j12VeXh5Pnz7F1NRU8DxK7rWUlBTy8/NRVVUVBHjnzp2ZNWsWY8eOlSkRJzm2oqIiDA0NSU9PZ9y4cezYsYMaNWrg4uIijMnJyWH69OncunULbW3tUsupIiLvIxNZqwMGDBDiqMLCwoiOjqZevXo4Ojpy9+5dAIYOHYq5uTkvXrzAzc1NCIAtC7FV3xqtWrXi3Llz5OfnU61aNR48eICcnBxTpkzBzMyMpKSkD+JWAgIC0NXVZfz48TIt3iQYGRlx5MgRAHbt2kXDhg2ZNWsWJ0+eJCsrixMnTuDi4sKBAwfo0KED8fHxnDt3jkGDBknZ8n/G8OHDady4Mfr6+qxYsYIzZ86QlpaGmZkZCxcuZM2aNXh7e0vbzP+JKlWqsHz5ckaPHk1RURFt27Zl+vTpxMTEMGXKFAC6d++Ojo4O+fn5bNq0SRCtsipQ9fX1hXhhKysr7O3tefbsGXp6epQvXx5nZ2fu378vjG/RogVbtmxh6dKlTJ48GZDdZ2ZJL2rz5s2Rk5NDQUGBU6dOYWhoyO7duzl9+jSjRo0iNzeXd+/eERMTw8aNG9mxY4fwciERuWfOnJHyEf1JyWMbP348HTp0IDg4mHPnzqGrq0t4eLjQPWTFihXCfioqKuTl5ZWJZ6aI9JCakPvpp594/fo1t27doqioCAsLC2JiYnj06BEZGRnY2NiQlpZW6qE6evRoatSogbe3t3hhywD9+/dn+PDhTJ8+nYMHDyInJ0doaCg//fQT27ZtIzY2VsgqLomsljl4H1tbW+bOnUtUVBTPnz/H2NiYKlWqkJycTLNmzXj58iW+vr7k5ORgbGxM3759ZV70lPztfX19cXd3Z/369dSuXZsaNWpw6tQpIiIiSElJwczMjMjISPbu3Yubm5uULf9njBgxgp9++omXL1/i4+NDUVERampqDBgwgFmzZhEbGysIm5LIqsiB4vAFT09PIiIi2Lp1K1DcNcXZ2ZkGDRoILxbv319GRkbcuHFDZo/rffz9/enXrx95eXlUrlyZzZs3M2vWLKpWrUp8fDwZGRk8e/YMLS0tNDU1adeunRCrKevHGBAQgJ2dHf7+/pw8eZLU1FSgOAs8PDycSpUqkZSUxMqVK0vtV1aemSLSQSoL72ZmZixbtowtW7YQHBzMnTt32LRpE2/fvmX58uXs379f8OaUzGiMjIwUvkO8sKVPTk4Or169Yvjw4RQVFXHo0CH8/PwICwujT58+FBYWEhcX90HMUVk5b0lJSaipqREaGoqXlxdjx46lZs2a+Pr60qRJEy5fvixkNx44cIADBw5I1+DPQPLbV6pUiZo1a2Jvb8+xY8eA4ur5NjY2uLu7M3XqVLZv346Kigp2dnZl6n5TU1NDR0cHExMTzp8/L9idk5PDhg0bKCoqIjQ0FHV1dcaPH19qX1kVAhUqVMDHx4cqVaowcOBA5OXl2bx5M2vWrCE/P5/BgwczePBgHj16xPXr10vtK/m7LAid4cOHM3jwYOzs7Dhz5gze3t74+vqyfPlyTp06RZs2bRg+fDgaGhoUFBQwY8aMMiPiGjdujJmZGaNGjWLfvn3CdgUFBZ4/f86ECRMIDQ1l1KhRpKens2vXLmFMWbn3RKSDVGLklJSUgOJCsTNnzqRGjRoA7NixA1dXV+zt7ZkwYYKQACEpjFgS8cL+unwsdmXnzp1ER0cDxd7STp06UVRUhK+vL2fOnMHFxYVevXp9bVO/KMuWLcPf35+IiAgGDhzIsWPHGDRoEJaWljg7O5fJ2BVra2vOnz9PixYtyM7OFrZLquf36tWLChUqCH1vLS0ty1T1+JycHGJjY4mMjOTnn39mxIgRpT7bsGEDwcHB1KtXT4pW/jPS09M5evSoUD7F2tqavn37ArBhwwZWrVqFrq4ufn5+n0wCk3WhA8Vt02bNmsWZM2cwMzNj+PDh+Pj4cP78edTU1MjKymLWrFlMnTqV4OBgoVajLB7b+/eLpqYmmpqaQqs7CQUFBSgrK/PixQv8/f3ZtGkTe/bs+ZqmipRxpCLkfv/9d1atWsWUKVOoW7cuCxYsoHr16kBx8cqhQ4cyfPhwPD09qVChAiAKN2kj+f1NTU0xNzcXCqfu27eP6OhoCgoKGDVqFB07dqSoqIiJEycSExPD+vXrpWn2FyEmJoaJEycyZcoUxowZQ15eHhcvXiQjI6PMiJuS7Nixg3379lGrVi3hvpMcR0JCAkVFRZiYmACl77uydA8+efKEFStWEBYWho+PD8OHDxc+y83NJT4+nn79+knRws9HkrEYERHBwYMHuXbtGgoKCri4uNCnTx8A1qxZQ1JSEtra2oSHhwsJEGUJVVVVWrZsyZMnT2jVqhVRUVFCT2ZFRUV8fX0/WnZKVuMZJffLqFGjsLCwICsrC0VFRX744QdhjCRpw9TUlA4dOvDs2TNCQ0NluqyPiOwhlaXVx48fU1hYSMeOHenVqxc7d+4kMjKS0aNHc//+fZKTkykqKmLp0qWkpqYSGxsrDTO/e2bOnElBQYGQ6TdjxgwGDRpERkYG6urqeHl5MWLECCEuZ9iwYXh6eqKiosLevXtZuHAhILtLOv9kuXDp0qUATJ8+nYKCAqKiooCyJW4kvH79muHDh5OQkEBwcDD379/nwoULQPESXnZ2Ni9evJCylf+e58+fk5CQABQXlC0sLGTx4sXAn90CZBk9PT2eP38ueH3fvHlDYWEhr169YsKECcyePVvoPb1t2zbWrFmDmpoaDRo0kJnit5/iY/debm4u69evZ9SoUTRu3JgJEyawatUqoNib9cMPP/D48WMOHz4sDZM/m5LHZmtri7u7Ow4ODmRkZHD79m0GDRpEeno6Fy9eFASbi4sLV69e5ejRo8L3yOIzU0Q2+SrJDi1atCAzM5PU1FTevHkDFFe3Tk5OZtq0ady4cYNdu3aRkpKCl5eXkHXVsWNHfv/9d5l94/qWKVeuHN7e3nTt2pWNGzeydu1aYmNjGTduHM+ePUNRUZHY2FgqVqyIhYUFDx8+pFu3bvj4+HDy5ElB/MkqioqKrFmzhmvXrnHv3j1iY2OFB+dfCc8hQ4YQFhaGra1tmesx+j5aWlokJiZSt25dVq5cyf379+nVqxfVq1fH2Nj4m7nvKlSogKOjI5MmTcLNza1M9Ly1sLBg7Nix7N+/n0WLFpGdnU1WVhbGxsYsWbKEXr16oaqqyuTJk5GXlyc+Pp7t27eX+g5ZjWssaZeRkRF6eno8fPiQx48f06RJE+bOncvr168ZPXo0d+/epWLFikRGRqKtrU3fvn3LjMBp2bIlFhYWXL9+XchE7dGjB1OnTuXevXscP36cJ0+eYGNjg66uLl26dPlm7jmRr8t/LuTMzc2JjY3lwoULvHz5khkzZvDgwQPS09OZM2cOb9++ZdKkSdSoUYMtW7aQkpKCj48Pt2/fFr5DlssBfMtUqlQJR0dH+vXrx/379yksLMTV1bVU+6IDBw6Qnp7OwIEDgWLRLin2K+uYmZlRrlw5Jk2axB9//MHhw4dZvHgxeXl5fynmOnXqxKFDh76ytf8NWlpaxMTE0LVrV5KSkrh16xZRUVHfXDPuSpUqYWJiwtq1a2X+mAwMDFi7di21atWiqKiIffv2kZeXx+LFi7ly5QpBQUFcv36dZcuW0aZNG0aPHo2BgQEBAQFC4kpZYPLkyZiamqKrq8vNmzd59uwZnp6emJmZ4eLiQtWqVXny5Ikg/Hr27El+fr7MevhL0rhxY3bv3o28vDwhISH88ssvwmc///wzlpaWmJqacvfuXZ48ecKwYcPKzLGJyB7/uZAzNjZm3bp1nD9/njt37vDDDz9w6dIl9uzZw927d1mzZg0DBw7k7NmzVKtWjVOnTrFs2TImTZr0X5ol8pkYGBjg6OjIoEGDyM7OpnPnzkBxfaO3b9/Sp08fpk2bxoABA4SafyC73oCPoaOjw9ixY2nZsiUZGRm4urqSk5Pztw9VWT3GfzoZlCtXjpiYGGrUqIGTkxPXr1//pieUsiBQLS0thRZ2V65cQU5OjqFDh7J27Vq6detGbm4upqam5OXl0bZtW3r16sXUqVNl8nr8GB4eHnh5eeHi4sKxY8eYNWsWdnZ2WFpacuLECZo0aULjxo2pXLkyd+/eZfPmzTJf4+99LC0tmTlzJmfPniUwMJCUlJRSn2toaAAIq1Rl6dhEZIv/VMhJJrouXbqwdu1aQkNDuXr1KuXLl2fy5MmcOHGCPn36MGPGDBYsWEB+fj76+vqkp6d/s5OIrPMxcWJoaIi9vT2jRo1i6dKlBAUFCZ917dqV8PBwLCwsePDgwdc2939CEnsExUus+fn5qKioYGpqyqhRo3j79i0DBw4kNzdXZsXapyhpb6VKlXjy5Mln7aelpcXKlSvR19fH1dWVP/744780U+QTlDx/VlZWDBgwgHfv3jFu3DgqV67Mzz//jLOzM5UqVaJDhw4fxMKVhetVRUWFxYsXc+jQIZYtW0a3bt1YunQpAQEBrFixAiUlJRQUFMjNzS21n6y+XJQUYO/baGtrS0BAABs3biQ2NlZ42ZXVYxEpm3y1gsC9e/cmISGB6Ohopk2bhoaGBr1796Zr167MnTuXP/74o9RDSLzQvz4lf/+GDRvy9u1bnj17RmZmJpUrV8bBwQEbGxt27drFggULKFeuHMHBwaipqdGvXz+Zn0AAvL29+fHHH5kzZw7nzp0D/rzW5OXl6dy5M35+fly6dAlfX98y9YbcuXNn2rVrR2hoKOHh4ejr6zNs2LC/DeyXnHcNDQ2Sk5NRVlama9eupZbQpU3nzp159eoV58+fF7aVBdHyb7G0tMTJyYnXr18TGBjI7du3KVeuHOXLl+f+/ftl9jdYvXo1ixYtQklJiaVLlxIYGEh8fDyKiorY2Njw9OlTdu/eLW0z/xFDhgyhZcuWyMvLk5KSwty5cwFwcHDA19eXTZs2sXTp0lIrFyIiX4Kv2tmhZ8+erFixgvj4eIKCgj5a9V9E+kyePBkHBwdev35NZmYmjo6OpKamCmJuzJgx5ObmsmPHDtTV1XF3dyc/P1/mJxV9fX327NlDRkYG586dIy4uTsjWlLxVKyoqMmTIEPr27cv06dM5ceKEzB8XgLKyMlOnTqV169ZkZ2fTuHFjevbs+Y/6Ebds2VLw8Dx+/Pi/MvUf07JlS3bs2MGrV69Yvnw5aWlppTLZJeen5HnS0tL6oBB1WaV///44OTmRmZlJeHg4ly5dAsqGkP2YjfLy8iQkJFCjRg0MDQ0JDg4WsosrV65MVFQUmzZtKtWqShaxsbHBwMCAiIgIAgMDsbOzE2Ib69atS1ZWFt27d6eoqEiojXrw4EFCQ0N59OiRtM0X+Yb4qoVqdu7ciaOjI87OzgQEBAg14kRkh/bt29O3b1/c3NwICQkhPT2d/fv3Y2RkxKNHj1i+fDnz5s3j3bt3XLlyBVdXV/Lz81FQUJD5SSU9PZ3r169z/vx5mjRpgoeHBy1atAD+rEWVn59PYmIiCgoK2NraAmWjxEheXh5TpkwhLy+Pdu3asWHDBkHEfU6tOxcXFxISEqhYsaJMiTgo7kyQlJTEokWLSE9Px83NjeTkZNzc3KhcubJwfiT/jh49msDAQFRVVaVp9hdj48aNJCQkoKGhwfjx44U6ZLJ+XZYUcU2bNqVWrVoYGhpSWFiIn58fKioqPHjwQOigoqOjw7x581BVVf2gRZWs4eTkRGRkJJcuXaJ+/fqYm5szdOhQ4SVYUoYpOTkZgJUrVxIZGYmurq7M3V8iZZ8vIuQ6duzIjz/+WGrbpyaPnTt34uDggJOTE9OmTUNbW/tLmCDyP/L+eSooKCApKYlDhw6RnJyMl5cXZ86cYfPmzRgZGfHkyRPWrl1LcHCwUJNLsp8sIycnR2FhIRkZGaxZs4YZM2ZQv3597Ozs6N27t/D2Ly8vT3Z2NhMnTuSnn376ZJV8WUNBQQFtbW0uXrzI2rVradKkCT4+PkDxhK+goFBqfMnz7uTkxJQpU4QlZVlDUvleU1OThQsX0q1bN/bs2UPnzp3ZtWsXTk5OtG7dWhhvYGBA27ZtZb5Y8z+xb+PGjSxfvpxatWphYWHx3xn1BZGIuMDAQFauXMmWLVuIioqie/fupKam4ufnR/Xq1dm/fz87d+4kMTERfX19zM3NZbogrq2tLWFhYTg7O7Nv3z4MDQ0pV64cN2/eFMacPXuWyZMnU7FiRYyNjYHiLjGOjo5lqkuKSNngX98pHTp0wNvbm5iYGGJjYzEzM0NJSemjk4eEXbt24eHhQY0aNXj9+vW/NUHkXyB52Hp6ejJ//nxCQ0OpU6eOcO7S0tLw9vbm9OnTbNy4kcaNG/PgwQNWrVol0w/b95Ec59WrVzE2Nmb//v3MmDGDVq1asWjRInR1dYE/28E9e/aM+/fvo6ysLE2z/5KSk0FBQQHPnz/Hz88PPz8/zpw5Q/fu3QUxJxHa1apVQ15eXvg9nJycmDp1KqNGjWLLli1f/yA+g+zsbBYsWICtrS19+vQhMzOThQsX0qBBA3Jycujfvz/R0dEkJSVRsWJFJk2axKtXr4SuB7KK5Bw0adKEli1bCh0cPsWmTZuYPHky06dP/xrmfRFat26Nubk5bm5uBAcHk5qayqxZs+jevTu//fYbrVu3JikpifXr1xMXF0e3bt0ED78sxkgPGjSIyMjIUnX7bty4watXrwTBBsXPkT/++IPy5ctjaGj4wffIujdVpGzxRWLklJWV0dfXJzg4GF1dXXJzc3FxcSE7O/ujSQvvx02UhViPb42Sv/moUaPw8vJiz549VK9enYYNG+Lo6MiRI0eE8ZUrVyYuLo6XL18KS45lEWdnZ/r374+5uTnlypXjwoUL5OXlCYVXS/ZBNDY25tq1azK5FPJ+dmP9+vWRl5dn7969HDt2DG1tbcaNG0fr1q05evQo8+fPJyEhgQcPHjBmzBgAXF1dmTRpEl5eXjIl4jp37kzLli2pXLmyULQ5MzOTWbNmcePGDZYuXcr+/ft59eoVlpaWGBoa0qxZM2xsbHBxcSEvLw8DAwOZPG9+fn6cO3dOaIgeFBSEhYUFenp6nD17lujoaHbt2vWBh/v9Z2RZSAazsbGhcePGvHz5Ugj8b9CgAe7u7piYmDBp0iS2bdv2wX6yemxOTk6EhYWxb98+OnbsiLe3N2vXrkVLS4uFCxeipKTEokWLOHjwIFAcp7lp0yYWLFhQJopQi5RdvoiQkzxk1NTU6Ny5M+PGjUNHR4eePXvy/Plzmb0xRaBmzZqMHDmSDRs2cPz4cdTV1VmwYAE///wzTk5OHD9+XBirp6fHixcvyrTorlu3LmPGjBEeyFu3buXYsWO4u7vz9OlT/Pz8ykwZFSgWAlZWVly9ehVVVVVat27NjBkzmDdvHuXLl8fT05O+ffuirq7Os2fP6NmzJ+/evaNNmzYsXboUf39/IY5HFnB0dGTKlClcv34dIyMj5OXlmTp1KitWrMDOzo7g4GCysrK4desWHh4ePH36VNomfzba2tocOHCAe/fuMXfuXFRVVZkyZQoBAQFkZGQwZcoU1NTUiIuLY8OGDTIfrvBXVKlShblz59KmTRvi4uJKlSwyMjLC3d0dY2Njpk2bViZEjr29PRERETg5ObF9+3YmT57MiBEj8PLyYs2aNdStW5eoqCjy8vK4cOEC58+fx8HBQejYIM5/Iv8l/0nWqpGRkTCRmJiYfFAPSEQ2kJSESUtLw8PDQ6gKr6ioyOLFi+nQoQNOTk6cOHGi1H5l2YNatWpVjh49irq6OmvXrsXLy4t3795hY2NDjRo1CAsLk7aJn02XLl1YuHAhNjY2Qvats7MzYWFh+Pv7Exsbi5aWFtWrV6d69ers2rVLmFBq1aqFurq6TNWLs7OzY+7cuTg4OHD06FFycnJYvXo1jRo14ueff+b169csX76c2rVrY2VlVSYz/wwMDEhISODZs2dcuXKFN2/eMH/+fADBs1OxYkWWLl3Kr7/+WqbFXPv27RkxYgStWrXC0dGRkydPCp8ZGRnh6+uLgoICTk5OUrTy71FVVSUiIoLk5GR27NghbA8ICMDT0xMvLy9Wr15NrVq1cHJyolu3bmRlZfHkyRMhGUx0Zoj8l/xPQq5t27bk5+dz5syZT07oTZo0Yc6cOWWyHtf3xOzZs3FycmLixImsWLGCt2/fAsVibtGiRVhYWNC5c2euXLkiZUu/HGPGjEFTU5O5c+eSk5MjbXM+i/Hjxwst7CRYWloyevRoevbsydu3b0vFO3p7e2NiYlKq1R3IbvX4Nm3asHXrVmbOnCksw0FxwemFCxcycOBALl26hIeHBwMGDMDOzo5nz56VqZcKia2GhoasWLGCpk2bsmbNGjw9PYUxEjGnq6vLmjVrSExMLNMCoFWrVnh6elKtWjV8fX05deqU8Fn16tV58OCBTJ+/v7u+3hdzUHyPaWhoCPHfsnrPiXw7/ONI9f79+7NlyxZmzZpF06ZNPznu6tWrrF+/ntq1a1OlSpV/ZaTIv+dTWVLe3t5s2LCBgIAAunXrJgT35+fnM3z4cObOncu1a9e+pqn/OYsWLWLmzJllRsRVrFgRPz8/pk2bRq1atYTtBQUFGBkZoaurS1FRkRAsv3v3bjIzM9HX1//gu2R1Qjlx4gQXLlzA0tKS9u3bC8dSv359ioqKhE4c8fHxwu8BZSNoXHLvFRUVoaenR1paGnZ2dpw8eZJmzZrRtWtXYWxmZiYjRoygqKiIZs2alWkRB3Dq1Cmio6O5f/8+YWFhtGzZUvjs/v37Mp/BKbm+7OzsCAwMBEo/S0NCQoiKimLu3LlCv+mCgoJSSXyyes+JfDv8IyHXoEEDPD09mT17NoqKiixYsOCDsiMSJGUsKlWqhIuLy5ewVeR/pORbpZmZGWPHjmXIkCFC31QPDw/27NkjlAYoKeZmzpwp9Dj8VsjLyyszE6Qkg7ZFixb8+OOPhIWFUa9ePQAOHjzIiRMnCAsLo2rVquTn5wPFWZ6SRCNZRjIhSkRbt27dePPmDZGRkdSoUQMzMzP8/f3x8/MjLS0NRUVFcnNzWbduHTo6OtI0/bMpee95eXkRFRVF3bp1efLkCUOGDCE3N5dRo0aVynjMzMzEysoKb29vKVn9ZTl27BiLFy/mzp07xMXF0aBBg1KflwUx3rp1azp16gR8aK9EzC1atKjUeRQR+Vr8o6XVli1b0r9/fxYuXEhaWhpHjhwhPz+fMWPGlGqdU5IePXpgY2PDmDFjvplK62WVqVOnYmtry6VLl6hRowYFBQXs2LFDCERevHgxJiYm+Pn5kZycLAgDEelRMrbGyMiI3bt3s2PHDmbPns3NmzeFqv8KCgrMmTMHAHd3d/T09OjZs2eZEKzvxw/t3buX2rVrC4kO8fHxpQRRWViSe58pU6ZgbW3N9OnTOX78uLDkbWBgQGJiIllZWcybN0/IeJQgq0vHSkpKQgu38uXLk5GRIXz2KZuNjY3p0KGD8HJYFpAci56eHgcPHmT+/PnExMR8dKyTkxOJiYmiB07kq/OPhJyqqir6+vrcv38fKG5+vH///g/EnJqamrBs1ahRI2xsbJg1a5Yo5KRI9+7diYiIwMXFhZMnT2JgYIClpSVubm4kJSURHh4OQFJSEoqKilhZWUnZYpGSTJkyBUVFRXr37k2NGjXYv38/48aNIzU1FVNTU+zs7OjRowcpKSk8f/6cQYMGyXSQdevWrWnXrh09e/YkPz+fbdu2cezYMSFpY926dbRu3RpLS0vOnj37QQsukF2R8z6tWrUiOjoaLy8vDh8+LGyXxE5JEiDU1dUZPXq00ANYFrG0tGTTpk3CNTV27Fh69uxJVlYWu3btIiEhgbdv3/7tdSer1+WnUFVVJTg4GC0tLTw8PP5yrBgTJ/K1+Z+zViVvZEpKShw4cID8/HxGjRrFkydPmDp1Kr/99htr164FijMFJT0cRaSDm5sbdnZ2dO3aVXiA6unp4e7uTvv27XFzcxOyAMvKBPm94O7ujre3N3Z2duTl5aGrq0tMTAznz5/Hy8tLuLfq1KlDZmYmz549Ewpyy+KEYm1tzbhx47hw4QJFRUWoqKjQs2dPTp8+TWRkpNAsfffu3UIJldOnT5eZif/9+6dXr14EBwfTpUuXD15mJc/RqlWr4u3tzbhx42T2OAcNGoSvry/r1q0jNDQUGxsbgoODmTVrFp06dUJPT49r164xceJEcnNzy5xYK8mwYcNo3LgxCxcu5Pbt27x7947OnTuzZs0abGxsOHDggLRNFBER+FflRyQThZKSEvv37xcCrhUUFGjfvr1MTiLfAyUnEsn/zczMCAgIYPDgwVy/fl0Y27ZtW5KTk+nZs2cpT4Ao5mSHX375hYKCAkaPHi1sMzIyYvv27Rw9epTp06eXOqcgu+fPycmJ6dOnM3bsWHbu3CkIG0tLS8aOHcubN28ICgoSSuFs27aNJk2a0KtXrzKXOe3s7ExKSgpqamrMnTsXOzs7odyL5PzY2dlx/vz5UscmqwJIW1ubMWPG0KFDBw4dOoS8vDxnz55l27ZtKCgo4ObmRv/+/bl27Rq+vr5lSsw1bdqUatWqAXDhwgW6dOmCp6cnGRkZZGRkEBwczM2bN/H19aVKlSqMHz9eXGESkRn+VTR0QUEB8vLyvHv3Dmtraxo2bEhGRgYdOnQQPhP5upScwM3NzenQoQNqamrcvHkTJSUlrK2tqVSpkjD+6dOnXLt27YN4OFkUAd8rOjo6aGlpCX8rKytz/fp1FixYQK9evQgLC/ugDZAsnr8BAwYwe/ZsHB0dWbduHW/evBE++/XXX5k9ezZ169ald+/eKCkpAdCnTx/Wr19fJjKnS2Yzurm54efnx4sXL0hLS0NOTg5bW1sqV64M/Nn/dtCgQfTv37/U98ii8FFUVOTVq1fMnz+fI0eO8PPPP2NlZcWLFy+A4rkgLi6OjRs3YmRkxMyZM1FTU5PJY3kfOzs7kpKSCAkJIT4+npkzZ3L06FHatWvHggULyM3NZeXKlURHR9O8eXOqVasm3I+ynHEr8v3wr5VWYWEhenp6JCQkkJKSgpmZmUz3yvvWKdmoesaMGULh16tXrxIaGsqQIUPw9vamX79+/PDDD4SFhZGbm8vly5elbLnIp0hKSqJr165Cs/S8vDwAXr58yYYNG8jNzZX54ri6urp4eXlx8eJF0tPTgQ8FS3JyMqtWrWLAgAFoamoK28ePH18m+vqW7J1qYGDApEmTuHbtGlevXiU4OBhHR0f8/Pyws7Oje/furFu3jvLlyxMaGiply/8aRUVF4UXPwMCAGTNmcOTIEVRVVbG2thbEzNu3b1m2bBm//vorHTt2xN3dXZpmfxb29vbMnTsXPz8/LC0tGThwICYmJowaNYrCwkK2bt2Kk5MTEyZM4MKFCzRo0ICWLVsKPYxl8YVJ5PvjizwZy5cvT0pKCp07d6agoEBmY3O+F5ycnLC2tsbe3p7Vq1cLNbjWrl3L2LFjqV+/PvPmzWPhwoWoqKjQp08fma/n9D1z7NgxVq1ahb+/P1ZWVigoKAgt8A4dOoSNjY3Mn78XL14QGBhIdnY248aNo127dqU+l5S3OXXqFKqqqujq6n7wHWXhxbBly5b89ttvjBgxQvAqQnHyxsiRI6lcuTJBQUH4+fmRm5tLt27dZHr1wszMjBkzZgAIHis5OTkiIyNZvnw5TZo0EWr6QfFLRkJCAsHBwURGRkrL7M/C3NyciIgIodfw3bt3OXjwIMuXL6d9+/aUL19eGLt7927mzZuHiYkJUVFR1KpV66N1GkVEpIHil/iSW7duMXLkSEDM2JEFfvrpJ7Zv316qJIzkvGzcuJG9e/eiq6uLqqoqKSkpMh0YLwLp6eksW7aMnJwcIiMj8fHxQVFRkczMTCGhCGTTO2BkZISWlhZnzpxh//79FBYW4ufnx7BhwwCEWDiJSKtZsybnz58vU/1uS3L69GkmTJjArFmzaN26NXv27BGWH7du3cr+/fsFb6OkT6ws3nuSEI28vDxcXFz48ccfqVevHn369CE/P5/MzEzmz5+PvLw8Xbp0ASA0NJSioiLevn0r9O+V5Rg5SYxbvXr1MDAw4PHjx0CxBzIjI+ODcyInJ0daWhoxMTH8/vvvGBsbl7r/RESkxRcRciWRtQfS94aSkhI//PBDqWb3UHxelJWVadCgATdv3uTevXvCZ3JycuJ5kwLdunXjzJkzvHz58m/HpqSkMH36dNatW0fz5s15+/YtGzdulGkP+IABA/D09OS3337j1atX3LhxQ8j28/Pzw83NDSgWc0VFRejo6NCxY0fOnTsnLB/LMp/63ePj41FTU2PatGncvXuX+Ph4QTRIijVLkMV7b/ny5cybN49z586xa9cuDh8+TMeOHdmwYUOppIzMzEzmzZsHQKdOnShXrhwTJ04s9V2yKuLk5OTYv38/Dg4OJCYmoqmpia+vLz179sTBwQFnZ+cPkhkkXu+0tDROnTr1Ua+xiIg0+OJCTkS6vHv3jj179jBo0CBWrlxZqil6tWrVcHV1ZeHChaWyHGXRk/OtY2dnR1hYGEFBQaxbt45Xr1797T4FBQVcuXLlgwxHWRMCUHx8M2fOJCgoiIMHD3Lr1i3hswMHDiAnJ4ePjw/u7u7k5+dz6tQpoqKi0NHREZbyZB3J725nZ0fDhg2Rk5PjwoULrFu3jkWLFqGkpMSUKVMoKioiISHho1mOsnjvvXjxolTM7M6dO9m7dy/+/v5kZGQwZcoU8vLyUFBQEMScuro66urqUrT6nyH53Xft2iWIuTp16tCsWTMmTJjArl27PupNLCoqwtzcHGNj4w9Eq4iItPhX5UdEZJPWrVvj5+dHXl4eISEhXL58mQoVKjB//ny0tbUxMzOTyQnkeyMkJISePXuyePFi1q9f/1meufeRxTIjzZs3JzY2lmnTpglLbBI0NTV58+YNRUVFmJiY4O3tTVpaGnXr1kVNTY0OHTrIdCFjgH79+qGurs7q1auZOnUq9vb27Ny5k0aNGqGiosLt27cZPHgwAJ6engQEBBAREcH8+fNlur/v+7+5h4cHV65c4dChQwD07t2bmJgYVqxYQUBAgJAA0bJlS06fPi0Vm78U3bp1IykpiRMnTmBvb/+XL1ZqamoYGBhw586dr2ihiMinEYXcN0rfvn2xsbGhU6dO3L9/Hzk5OXJzczE1NSU/P18mBcD3grKysrB0GBoaSqdOnYiLi2PNmjWlmm3/FQ0aNJDZkhyWlpa4u7tja2srxId16dIFY2Nj2rVrR3p6OiNHjuTly5d06dKF2bNnk56eLsRfyepSMRTXhps1axbm5uZCluawYcM4ceIEioqK9OvXj9GjR3Pt2jWhA4C3tzddunShT58+Urb+r5E8EyT/Hjx4kIoVK+Lm5sbx48cpKCigV69exMTEsHbtWpYvX86ECRPQ1tamb9++0jb/XyMRc7GxscyZM0fIri6JLL9giHy/iEKujPExAfYpUVa5cmWaNWtGjRo1ePr0KcnJyRQWFsr0RPk9YWdnR8WKFZkwYQJv3rxh9uzZnyXmnJ2dmThxIqampty9e/frGPsPGDp0KIMHD8bV1ZUbN24QEhJC8+bNAfjjjz/o2LEjBQUFmJiYkJeXR6NGjbh27ZrMX5t2dnbMnj0bd3d3tmzZgoWFBSEhIfz8889Cr1E1NTVsbGxwdHTEw8ODlJQU6Rr9P2BsbCzEMm7cuJE6deowYsQIjh07RkFBAcbGxiQkJPDgwQPevn0rvBzKIh07diQzM7NU4tdfvcSampoSHx/Pxo0bmThx4meFPIiISBtRyJUhSjaqrlevHvn5+Tx48OAfedjEN0rZYMKECXh4eDB+/HgUFBTo1asXHTt2/Fsx5+TkRGBgIGPGjGHLli1f2erPo1q1auzatYvMzEy0tLTIzc1l9uzZ7Nmzh2fPnmFsbExsbCy2tracOnVK2E+Wr00rKysWLlxIaGgoc+bMAYqXFBcuXMj48eNL9VCtVq0aJ06cYOjQoWzfvl1aJv9P1KpVi5MnT+Lj40NcXBwAmzZtonbt2owYMYLjx4+Tn5+PgYEBBgYGQps1WRTgHTp0wMfHB0NDQy5cuEBycjI7d+7k3bt3f2mvubk5w4YNo2/fvuKqhUiZQDaLF4mUYvr06ejo6AgibvLkyWzatIlff/2VXbt2YWBg8NkPHFmdKL8nypcvT9++fZk5cyabNm1iw4YNDB06lK1btzJp0iQGDRqEtrY2ULpyvJOTE1OnTpVpEScnJ8eDBw/o1asX0dHRRERE0KlTJ1atWsWzZ8+A4oDxhw8fCvUNJcjqtenk5MQvv/zC6dOnGTlypFADLzU1lZycHJydnalbt64wPi8vj+vXr5OVlSUtkz+b9+vXPX36lKioKDp27IiRkREAFhYW3L59m6ioKNq2bYuSkhKPHz/m/PnzwlKsrIk4gKNHj2JlZUX//v1RUFBg6NChJCYmoq6u/snafXJyciQnJ4u1NUXKFKKQk3EMDQ3p168fycnJaGlpCa1xvLy8CAwMJDMzkz179ggPXRHZR7IMJZn8VFRUgOIOBleuXMHNzQ0XFxe0tLQEge7i4sLkyZMZPXq0zIo4KBZp8vLy3Lt3j7i4OJYsWVJK0KipqeHm5sa9e/fKRLC4i4sLYWFhODs7Y2Zmxo4dO1i7di3t27fn0aNHjBkzhvbt2xMUFMTw4cPp0qULUVFRFBYWcuTIEWmb/7dIxLOpqSlycnK8efOGbdu20aBBA9q3by+Ms7Cw4NatW6xbt46GDRuW+g5Z9loVFBTw8OFDRowYwaJFi9DR0eHgwYPo6el9tFvI+8ciy8cmIiJBFHIyTlpaGgMGDODdu3ds3bqVatWqsWDBAvbs2cPmzZtxdXXlypUrbNiwQRRzMsjH3uizsrJIS0vDzs4OKG5tpKhYXAnowYMHqKmp0bBhQ6FcRefOnZkxYwZjx46VaREn4WOeNS0tLX766ScSEhKEMjiy7vFQV1dnwIABuLm5sX37dvLz85k8eTKbN29mzZo1dOjQgfPnzzNo0CDevXuHq6srgYGBFBQUYGpqWibaikFx94bExETWr19Pjx49OH/+PFFRUYSEhFC7dm1h3IABA4iPj5f5dn4qKipCL1TJy1JOTg47d+5k1KhRPHv2jC1btqCqqiqzXmARkX+CGCMnw5SMe6tXrx6//PILzZs3Z968eaVqbenq6rJw4UIaNGiAvb19qdpxItKj5Plr1qwZcnJyqKiocOLECerUqcOGDRu4evUqtra2QnxYTEwMsbGxnDx5stS+ioqKnDlzRpqHU4qSx6anp/fBMun7Y6OioqhTpw5Pnz7FxcVFpgsZw1/H6+nq6hIcHEy/fv2wsbHh6NGjqKuro6SkhIaGBmlpaYBsdmyAD4P9q1atyo4dO1BWVmbLli2UK1eO5cuXY2Fhga6uLmPGjPmgBp6sxjNaWVkxcOBAatWqxblz5zhy5AgrVqwoNaZJkybMmTOHS5cu4evrK5PnSETknyAKORmlWrVqQpsiCwsLdu3aRfXq1QkLC8PQ0JBevXqVmjx1dHRYu3Ytjx8/xtHRUVpmi3wEf39/evfujaKiImpqauzbt4+pU6fy008/MXv2bAoLC0lJSaFy5cpoaGjQrl07wZsji5NlSSEwcuRIatWqxbJly0oVKn6fSpUq0ahRIw4cOCCzwfEfQ3IvrVixopTNEjFnZmbGoEGDPuikUhbK+1SpUoVXr16RlZVF3759GTRoEAcOHEBdXR1vb2+uXr2KtrY2QUFB7Nq1S9rm/i39+/cnIiKCmTNn8vTpU/r168ePP/7I7t27hSb3UCywhwwZQq9evfDy8uL+/ftStFpE5N8j+37/75B27doRHR1Njx49CAkJISYmBh0dHa5fv46Pjw+ZmZkkJydTrlw5YZ+XL19iaWkpFCIVkQ08PT1xcnJizJgx/Pzzz6xcuRIHBweqVavGb7/9Rvfu3dmyZQt37tzh0KFDtG/fXqZFHPwZNxQYGMjo0aM5dOjQX5ZpkJOT48mTJ/z2228yHRz/Mfr374+lpSVQuv3gixcvhKSjLVu20KhRo1L7ybqI69evH7t372bMmDHUqlWL3377jefPn1NYWEhUVBROTk5kZWVRr149unXrJm1z/5by5cvj4ODAlClTiI6O5tdff2X06NHk5+fj4uLC4sWLhbEFBQUkJSVRqVIlXFxcpGi1iMiXQWzRJUPo6ury4sULUlNTyczMJDw8HC0tLTp27Cgs16SkpDB8+HCio6PZtm0bffr0EUpVSJY/yoI34FtEUVHxg1IwTZo0YerUqZw+fZq+ffsybNgwvL29uXz5Mqqqqrx48YJp06aV+p6y4K0yMzPD0tKSgQMHcunSJQBUVVWpWbOmUKhY8juUxQByiZAOCAhgxYoVmJmZfRCfKDl39+7dK9XyriywefNm6taty48//sj69evx8vLi4sWLeHh4sG/fPg4ePMjNmzf58ccf2bFjh7TN/VvevXtHhQoVhEQiBQUFXr9+zfHjx/n9999p0qQJzs7OxMfHo6CgQFZWFkFBQdjY2KClpfXR9mkiImUF0SMnI8yePRsPDw/k5eW5f/8+J0+epEKFCty+fbtUwDEUizkPDw/evn3LyZMn0dDQKPV5WZgovzVCQ0M5ceIEKioqgtdJVVWVli1bkp2dTYcOHfjll18IDg4mISEBRUVFvLy8PurtkEURV6dOHTQ1NYW/K1WqxOPHj7l06RJ169bF09OTgwcPsnnzZsLDw4GyfR1KvKFPnjwhJSWFtm3bAh8mr6SnpzNnzhwh5q8sIEnAmDt3LkFBQWzatInExEQqVaqEuro606dPR0NDg9TUVLZt2yYUapZlFBQUkJOTo3nz5mhqalJQUECfPn3o0qULq1atIi0tTbjXJPfXw4cPefjwoTTNFhH5IohCTkY4cuQI4eHhFBYWoqyszM6dO7G1teXJkycMGzZMWN6RkJKSgqenJ3v37pXp/o3fC2vWrOHt27ckJycLYi43N5cNGzZgb29PUlIS/v7+xMfHA8VLQT/++CPVq1eXruGfgYGBAVu3bsXV1VXIBnzy5AlaWlokJSWxcuVKGjduzMqVK5k4cSIuLi40a9ZMylb/bwwePJhJkyahpaWFoqIiz58/Z82aNTg7O9O0adO/FKeyKMA/Rskl+1u3bhEcHIyrqyt16tQhNzeXXr16lSo9ArJ/bK9fv8bX1xd7e3u2bt3Kpk2biI+PJzQ0lOPHjxMfH89PP/1ExYoVBSF75coVFi9eLHrjRMo8YrKDjGFnZ0ePHj2YNGkSaWlp1KlTh5CQENTU1IiLixOakLu5ubF8+XLevn0LyG4W2fdEkyZNiI2N5dWrV/Tr14+3b9/Su3dvQkJCuHPnDt7e3ty5cwd9fX3mz58v9KgsC+etb9+++Pv7s3r1ahYuXIiqqir9+/enbdu2HDx4kCNHjpCamkqDBg2IjIzEw8OD27dvS9vsv8XIyAg9PT3k5OS4du0aI0aMwN7enps3b3Lt2jXmzJlDZmYms2fP5v79+4SFhVFYWFimvY2fwtDQkJYtW9KvXz+GDRtWJq7L92ncuDH9+/fn3bt3HDhwgBMnTgAwZMgQLC0tv4mesCIi7yMKOSnzfjzbsGHDGDhwICkpKcycOZPU1FRq165NSEgImpqanDp1igYNGtCqVSsaNGhQJh+23zISMZeZmUmfPn3Iy8vDwcGBkSNHUlhYSE5OjrBUJelRWVZEeN++fZk7dy7m5uZcvXoV+PMFQl5eHg0NDaKjo9HQ0KB///4yL3ZsbW3x8fFBRUWFihUrCp0o3r59i7OzMyYmJjRq1IjVq1fToUMHcnJysLGxITs7W9qm/y2tW7fm6dOnPH369H+2t6xcl3+HqqoqCQkJPHv2DE9PT2mbIyLyxRGFnIwwYMAArl27xh9//IGrqyuWlpbcu3eP6dOnk5qaSs2aNfH09KROnTpkZ2fj5OT0j3qsinx5Pvbby8nJ0aRJE2JiYsjKyqJXr168e/eONm3aUKNGDWrWrMmNGzdITk6W6Sbxn7quqlat+kFckZqaGv369cPa2pry5cvTo0cPmb82HR0dmTVrFiNGjODBgwfUr1+f2bNnM2/ePCHGTzLOyMiIQYMGoaOjQ3h4OLNmzZKi5X9Pq1at2L59O6tXr6ZKlSoEBgby4MEDMjIypG3aV0VRUZFWrVrh6+uLnp4eXbp0EZIhRES+JUQhJwOoqanx+++/c+LECTw8PIDipVMLC4tSYk5DQ4OioiLhDVtWRcD3QEmRUrduXfLz88nJyeHJkyfIycnRuHFjYmNjefPmDb179xaWwEtSFjwe7du3R0NDg6tXr5KWlkZhYeEHAk1DQwN7e3sqVKhAWFiYzBf7NTc3JzY2Ficnp1JN7ePj46latSrm5ua8efNG2C4vL0+9evWYNGkSqqqq2NjYyKxAheIC0tu3b2fixIkYGBhgYWHBlStXOHLkiBCjCWXj+vs3qKqq0r17d1q3bk1QUBD5+fkyfV2KiPyviEJOCpScCCX/b9myJWvXriUgIIBVq1YB4OrqSv/+/bl79y6hoaFihpUMMmHCBCwtLVFQUEBDQ4ORI0dy4MABAEHMvXr1iv79+8t8Uoq/vz/p6elCza3g4GD69++PlpYWKSkprF+/nri4OPLy8j4Qc5LSKyD7AsHe3p6IiAgmTJhAYmKiYPeiRYuoUKECDg4OpYS35Fjr1KnDkSNHsLe3Z//+/dIy/7OYOHEiampqTJkyhc6dO1OhQgVmz57NmTNnOHPmDPPmzSM3N1faZv7nlLwuRREn8q0iZq1KAckE6OTkRK9evdDX1+f06dMkJCTQu3dvGjRoAMDSpUvZsGEDLVu2xNraWpomi3wEHx8foZm9hYUF586dIy4ujkGDBgHwxx9/MHToUOrWrVuqpZosoqWlRYsWLejbty/29va0b9+etm3b4uzsTJcuXbh06RL9+/dn1KhRKCsrf9AnteSSlSyLOICVK1fi4+MjLK0C9O7dG0tLSxYtWvSB97SoqAh5eXlu3brF2bNn0dbWlobZ/4gbN27QsWNHKlSowMGDB9mwYQMvX75ES0uL7t27c+rUKebPn/9BaaNvjZLXpSjiRL5VRI+clKhXrx4HDx7k6dOnnDlzhgULFpCVlcWSJUtYtmwZiYmJwti+ffuyfft2mZ8gvyeaNm1KcHAw8+bN48CBA/Ts2ZOoqCguXrxI+/btGTVqFOvWrQOgVq1a3Lt3T+bPn66uLmFhYWhra3Pnzh1ycnKYOnUqUNxA3t/fn5YtW7J7924WLFhAXl6edA3+l7i6ujJz5kw2btyIiYkJQUFBJCYmfjK2T+LJa9WqFXfv3v36Bn8CY2Njbt++/UGrqW3btnH69GkCAwM5ePAgL1++ZNiwYTx79owpU6ago6PDuHHjZP66FBER+WtEIScltLS0CAwMpEmTJiQnJ+Pv78+YMWPo3r07xsbGmJiYCN0cJMj6ktW3zPuTe506dejatStLlizh559/ZvHixcybN4/Y2Fg2btzIDz/8wLRp01i+fLmwjyyfP8nxVahQgfDwcExMTDh58qTgXYTiWE5/f39++uknTpw4wfTp08t88LiTkxOzZ89m165dODg4/OVYDQ0NqlatKlNdHJSVlTl8+DBFRUUMHDiQhw8fCufSzMwMBwcHGjVqxN27d3F1deXp06cffIcsJ6WIiIj8PeLS6lemR48e1KtXj8zMTCIjI6lZsyYPHjygX79+DBgwgPz8fPT09AgLC0NdXb3UvrIqAr51Sk50rVq1AooLqa5ZswYo9tRs376dZcuWAZCWlkZ6ejpWVlalvkcWz59kebSoqAhDQ0PS09MZN24cO3bsoEaNGri4uAhjcnJymD59Ordu3UJbW7vMiziAhIQExo8fj6mpKSNHjvzkOAUFBd68eSNTIg4gLy8Pc3NzsrOzWbFiBdWqVROu1TNnzlCzZk2ys7MxMzMTRNz73SlEESciUrYRhdxXpGHDhowaNYpNmzZhbm7O/fv3GTduHK6urjx79ozx48dz8OBBnj17hra2dpmoV/U9IJnoJk2axC+//IKzszMAr169Ql1dnQYNGvDkyROhnIgk6cHMzEyKVv89JQXq+PHjiYqKonnz5mRkZODv78+lS5cYMGBAKU9VTk4O3t7ejB8/XlpmfxY//PADhoaGpba9L2AkLF++HF9fXwICAvDz8/voGFmOr3r8+DHm5uYUFhayYMECatSoARS/UMyaNYuCggIaNmwojBeFm4jIt4WitA34nrh69SpjxoxhwIABREZG0rFjR1JSUjhz5gzdunUjLi6OdevWsXXr1o+WqxCRHt7e3jg5OTF48OBSsUjZ2dkcOXKE0aNHU758edq0aYOSkhLnzp0DZHvZSmJXQEAAdnZ2+Pv7C16bFy9e4OvrS3h4ONbW1hQWFrJy5UoA4dqU1WPr0aMHwcHBvHr1isuXLxMXF8eVK1coKCj45PL2smXL0NDQwNTUVAoW/zO0tbV59eoV8GdWZmZmJo8fP6ZHjx4sW7YMFxcX7t+/z5UrV3j79i3t2rUTijiLiIh8W4gxclKiW7duDBw4kDp16lC7dm0ePnyIvb19qRIjshxT9T2hp6dHQkICCQkJQgID/FnOQF1dHR8fHxo2bMizZ8/w8vIqMx0bGjduzLJly5g0aRL79u0TtkuOTVdXl9DQUJo2bUpgYCC7du2SorWfT+XKldHX12fu3LlkZmZy8+ZNAgICyM3NLRPn5VO0bt2aefPmMWbMGE6fPi1sj4uLo1atWnh5eTFv3jzk5ORwcHDg4cOHLFmyBB0dnQ+W+kVERL4NRCEnRapUqUKzZs2YMGECTZo0YcmSJfj7+0vbLJH3qFWrFgcPHsTNze0DIaOsrCxkb2poaAiFZGW1ZtX7XrQ2bdqwbNkyjI2NefbsWamxkmOrWLEirq6uhIeHy7wAqlevHjdu3BD+1tTUxM7OjgEDBpCbm4uNjQ05OTllVswZGxszfPhwdHV1GTVqFNeuXSM+Pp46depgZ2fHgwcP0NfXF+I3nZ2dycjI4PXr1zLpPRUREfn3iDFyXxhJHI68/N//tKmpqWzfvh0zMzNCQkKYMmXKf22eyN9QMo5Kcg4zMjK4fv06DRo0QEVFpdS47t274+vrC1CqG4Asijj4czl11KhRWFhYkJWVhaKiIj/88IMwRnLcpqamdOjQgWfPnhEaGir0VJVV+vfvT3x8PE2aNAGKlx2zsrJYtmwZs2bNQl1dnYSEBJSVlcuciKtSpQoABw4cICoqikePHrFgwQK2bNlCtWrVsLe358GDBwA8ffqUQYMGoa+vz/jx43n16tUHdf9ERES+HWT3qVwG6d27N+PHj6dChQqfPVHIy8uTlZXF/PnzhdZGItKhpLfK3d2doUOHoqWlxcuXL4Xivp07d0ZBQYGioiJUVVWxtbXFyMhIypb/PSUncVtbW9zd3bl79y4ZGRncvn2bQYMG0bRpUwBBsLm4uNC7d+9S3yOrAsjJyYklS5ZQv359evXqBSD0e83Pz2f//v1ERESgqamJu7u7lK39Z/Tv3599+/bh6OgIwOHDh1m6dCmPHj3ixx9/ZM6cOdy/f7/UOX727BkdOnTAy8tL2CZ65EREvk3EpdUvhIGBAQcOHCArKws5OTlWr17N2bNnS8UdldXlnO+NwMBABg0axPz580lOTubJkycAJCYm0qhRIy5cuMDTp0/54Ycf0NLSKlPNuFu2bImFhQXXr19nxYoVQHFywNSpU7l37x7Hjx/nyZMn2NjYoKurS5cuXWTWuyjBycmJ8PBwHBwcqFq1Kh4eHjg4OJRaYgVQUVFh8uTJNGrUCFtb2zKRUKSlpcWyZcto3749Fy9e5NdffyUmJgaATp06MXToUKpUqcKECRM4e/bsRxNQxOeOiMi3jeiR+0JkZ2dz9OhRQkJC8PT0RFtbmyVLljBr1iz69+8PyK43Q+RPHBwcsLW1xcrKiiVLlvDkyRPU1NSEz+bPn8+bN2+oUqUKJ06cwNjYWGjGLes0btyY5ORkXF1dKVeunLB99+7d+Pj48OjRI4YNG4ajoyMvXrzAxMREyPSUVVxcXAgLC8PFxYU9e/Zw48YNdHV1hXIbJb1Ub9++JTw8nHr16uHi4iItk/8RmZmZHD9+nJycHE6fPo2lpSVDhgwB4NChQyxdupTU1FRmzZpF8+bNP+p1E587IiLfNqJH7gsyaNAgpk2bJnRlMDAwYOrUqZiZmXHu3Dmio6O5ePHiB610RGQHf39/dHV1GT9+PHXr1qVDhw4MHTqU58+fs379eqF1WknPh6wmNnwMS0tLZs6cydmzZwkMDCQlJaXU5xoaGgAyn7QBxd6qzZs3M2fOHLZu3SpsX7hwIT/++COmpqZkZmYK2yWeqaFDh1KvXj0htlFWkZQWUVNTY9WqVVy6dAl1dXVatGhBQkIC8fHxQLFnbsiQIfz0008MHDjwg3MqIiLybSO7r9plAEXF4jJ8Eo/Fhg0bOHDgAH379gWKC3U2a9aMPXv2kJqayujRo/n999/p2rWr1GwW+WuUlZWxsrLCy8uLJUuW0K1bN3bu3Mnz589xdnamfPnyQOl4I1kUOiU9hCU9ar/++itTp06ladOmDB48mJo1a5Ya9+bNmzKRtAHF3qo+ffoIIk7iffv1119RUFCgQ4cOpbZLPFNXr15FWVlZSFyRNSSFjCXL9YWFhZw/f553794xd+5czp49i5OTk1CY+tChQ6xcuZJ169Zx8+ZNaZktIiIiJUSP3P+IsbEx7du3Z9GiRbx8+VLYPmnSJNq1a4eZmRn79+8nJycHa2trsrKyaNGiBS1atGDp0qUyPUF+78yfP5969eqxefNmfvvtN65fv07btm0JCQnBwcGBx48fS9vEz2bIkCG0bNkSeXl5UlJSmDt3LlC8TOzr68umTZtYunSpTDWB/7fIy8uza9cunj59ir29/UfH1KpVizt37nxly/4eCwsL5syZw5YtW4iLi+P+/fu8fPmSZs2asWnTJqytrbl37x4TJkygefPmLF++nISEhFLfIcbEiYh8X4hC7n8kJCQEExMTNmzYwNKlS8nIyACKPSG//fYbDRs25Pjx4zg5OfHixYsP9pflJavvlZLLpSVrwikqKrJy5UrevXv3t43VpY2NjQ0GBgZEREQQGBiInZ0da9eupVatWtStW5esrCy6d+9OUVER9vb2TJgwgYMHDxIaGsqjR4+kbf6/RnIOu3btSmRkJKNGjWL//v3SNuuz0NHR4ZdffqFjx47k5eWxbds2GjRowKxZszh+/Dhubm5oa2sTGBiIkZERQ4cOxdTUFD8/P7Zv3y5t80VERKSE2KLrfyQgIIDAwEB69+6NvLw8S5Ys4dWrV8jJybFt2zYUFRVxc3P7qIgD2V6y+l4puVz65s0b1NXVsbKyonfv3hgYGAhL4rLamsrJyYlZs2Zha2tL/fr1MTc3Z+jQoRw+fBgozlidN28eycnJ9OvXj5UrV6KiokKXLl3KlJfxr5Ccl5SUFDIyMujYsWOZEXIvX75k0aJFQkb0xYsXOX/+PCEhIVy+fJkGDRpQVFTEvHnzuH79OkuXLuXevXvs3LlT2qaLiIhIETFG7n9AEn8UFBTE3r17GThwIG5ubujo6JCfn8+mTZuoXr06nTt3lrKlIiVRUlIS/i8J6pfwsWKpKioq6Ovr8+zZM0xMTITsVFkUcba2toSFheHs7My+ffswNDSkXLlypWKmzp49y+TJk6lYsSLGxsZAcY9RR0fHb65g7IMHD9ixYwetWrWStin/iMOHD7N+/Xpu376Ng4MDe/bswdzcnOTkZKC49Ziuri4A165dIyoqSuYLNYuIiPy3iHf/Z1K7dm3h/yUn8nr16lGpUiX69OmDm5sbenp6XL9+ndjYWNzd3YXAZRHp0blzZ+Tl5Xn37h0AI0eOZNmyZcTGxmJqaoqiouJHhczLly+JiIjA09NTKMMhi57UQYMGERkZSXx8vLDEduPGDV69eiUINigOmv/jjz8oX778R69LWRSo/4ZffvkFMzMzaZvxjzly5AjLli3j/v37LF++nCpVqrB582Z69OhBhw4duH379gfXqhgTJyLy/SIKuc+gTp06nDhxgpEjR6KgoCA8NBMSEqhduzbt27dn//79mJqaMmTIEDQ0NDh9+jSPHj0iLS1NytZ/34wcOZKwsDBsbW0BGDp0KOPHj+fs2bPUrl2bsWPHMnr0aJSUlD4q5iTiD2RzsnRyciIyMpLdu3djZ2fHoEGDAHj9+jVXrlzB3Ny8lGc4NzeXtLQ0srOzpWXyV+Ply5dl1tN47NgxFi1axL1795g9ezbt2rXjzZs3PH78WGaX9kVERKSDmOzwmYwZMwYfHx/8/f2Jj48nLi6OunXr4ujoKGT8BQYG0rFjRw4fPkxQUJCwr/jglR76+vrMmDEDAwMD1q1bR5MmTdi2bRsHDhxAUVGR4OBgmjdvzp49e4iMjOTdu3dl5nzZ29sTERGBk5MT27dvZ/LkyYwYMQIvLy/WrFlD3bp1iYqKIi8vjwsXLnD+/HkcHByEjg2yKExFStOuXTvc3NyoUaMGU6ZM4ejRo9I2SURERMYQhdxf0LhxY27cuEFeXh4AI0aMYOrUqdy+fZucnBwcHR15+PBhqQzUOXPmoKKigqenpzRNF+HPMgx6enrMnj2bChUqoK+vz5AhQ/jjjz+A4lg5f39/QcxJhI+so6qqSkREBMnJyezYsUPYHhAQgKenJ15eXqxevZpatWrh5OREt27dyMrK4smTJ7i6upKfny+WqZAS//RFoW3btvj5+fHw4UPxuSIiIvIBopD7BAMGDCA6OpqEhAT8/PyE4pwuLi6Eh4czZ84cQkNDhfHipChbvD9ZVqxYkeDgYHr37k1ERIRQTw1AXV2dSZMmYWpqyty5c0lKSpKGyZ/N3wmB98UcFCfoaGho8Pr1a+FvWYz3+55o3749Ghoa/PHHHzx+/JjCwsJPntvGjRtz5cqVMuEpFhER+bqI5Uc+gSQzbPDgwWhoaDBy5EgKCwuJi4tDWVmZ4OBgXrx4wZIlSwD+8iEs8nUpeR4GDhxIamoqx44dY+LEicjLy9O9e3eePn0qtNvKzs5m5syZPHjwgDVr1kjT9M9Ccmx2dnbUq1ePoKCgUsccEhICwNy5c8nPz2f9+vUUFBQIIg7E8jdfG39/f9LT01m8eDEAwcHB9O/fHy0tLVJSUtiwYQPLli0jLy/vo88RiQdZfMaIiIi8jyjkPsHx48fZv38/Bw4cYMSIEcTExODm5kZhYSGLFy9GXl6e4OBgioqKiImJAb69rL+yiuQ8BAYGMnDgQJYuXcrVq1d5+fIlEydOJDw8XEh+kIi5N2/eCJNsWfGutm7dmh9++AH48NoLCQmhsLCQRYsWkZ6ezoEDB6RgoQgU94Rt0aIFSkpKZGVlcefOHdq2bYuzszMvXrzA09MTCwsLNDQ0WLBgwSfFHIjPGBERkQ8Rl1b/guXLl1NQUEBkZCRJSUkcOnQIDw8PYZL38PAgODgYV1dXNm/eLGVrRUoyZMgQfH19sbKy4tq1a6UmRz09PcLCwtDX12fr1q2CV7WsUPI4Dh48yPz584WXifdxcnIiMTFR9MBJGV1dXcLCwtDW1ubOnTvk5OQwdepUoHhp39/fn5YtW7J7925BzImIiIh8DmL5kf+nadOmaGhooKysLGybPn06urq6FBUV4erqSrdu3Vi0aJFQfDM6Opphw4axbds2aZkt8gmaNWtGUlISFy9eFOIbJTx//hwfHx/y8/OpX7++lCz835F4Zd68ecOOHTto0aLFJ8cmJCRQUFAgFLEW+frIycnx4sULJk6cSFZWFtbW1jRq1Ej4PDs7m5CQEE6dOkXXrl2ZOHEiioriYomIiMjnIQo5wNzcnH379rF8+XJCQ0OpU6cOAPfv3+fdu3d07dqVo0eP4uTkRNeuXVm4cKEg5jZu3ChOlDJE8+bNgeLgcD09PeDP+m9FRUUoKytTv359Xrx4gYuLCxMmTJCarf+UYcOGMX/+fIyMjFBSUiI3N5etW7diYWFRqvDvxxA9cl8fSf26oqIiDA0NSU9PZ9y4cezYsYMaNWrg4uIijMnJyWH69OncunULbW3tD14+RERERD6FKOQoXtqA4qbVSkpKbNu2jaCgIFq1akV4eDgODg7UqVOHw4cPM3jwYAYMGIC3t3ep7xAnSukTEBDAzJkzMTQ0ZP/+/dSpU4cff/yx1JiaNWsSEBCAkZERr169kumCsU2bNqVPnz706dOHqlWrkpOTQ9u2bYmMjCQxMZEmTZpw4sQJFi1ahJ2dHVpaWtI2WeT/KRnjNn78eKKiomjevDkZGRn4+/tz6dIlBgwYgIODg7BPTk4O3t7ejB8/Xlpmi4iIlEFE/z0I5SYiIyOJjY1l+/btNGnShKVLl3L+/HkqVapEixYtuHXrFr///jsmJiZCFpmIbNC0aVNatGhBQEAAaWlp/Pbbb1hYWODk5ISKigonTpzAwMCAKVOmUK5cOW7cuCHsK4sB5HZ2dvj7+5OXl0fVqlXZuXMngYGBrFy5kt69e2NlZcXKlSs5d+4c5cuXR0VFBS0tLTIzM8XMRhlA8vsHBAQI5/Lp06cAvHjxAl9fX8LDw7G2tqawsJCVK1cC8PbtW0DMThUREfl8xGSHEri5uTF9+nT8/f2JiYnB0NAQFxcXWrRogb+/P1evXi01XqzFJRu4urrSqVMnlJSUcHV1JScnBwBTU1PGjRsnLLFmZWVRVFRE9+7dyc/Pl9nJ0t7enjlz5uDm5sbly5epXr06q1atYu3atYwdO1YY16NHDxo3boy7uzt6enqsXLkSLy8v6RkuUorGjRuzbNkyJk2axL59+4TtkueGrq4uoaGhNG3alMDAQHbt2iVFa0VERMoqokeuBDExMRQVFTFz5kw0NDSIiIhg5syZKCoqfjSLTBRxskFBQQHGxsa8efOGunXrcunSJQB27drF7du3qVy5Ms2bN+fu3bts2bKFwsJCmRXh5ubmREREMGrUKLZs2YKcnBx37txh+fLlmJiYUL58eTIyMgDYvXs3u3fvZs2aNbi5ufHTTz+hr68veH5Evi7vvxhoamqiqanJxYsXS40rKChAWVmZFy9e4O/vj6urK3v27Pna5oqIiHwjiDFy7xEbG4ufnx/+/v6MGjWKwsJCsRSADPGxeLb4+HjGjh2LvLw8Tk5O1KpVS/jsxo0bHDp0iPnz55OcnExhYSHy8vIyKeIAMjMzAahXrx4GBgaCMFBUVCQjI+MDu+Xk5EhLSyMmJoZmzZr9bdKDyH+H5FyNGjUKCwsLsrKyUFRUFGr9AUKSlKmpKR06dODZs2eEhoYK16WIiIjIP+W78cj98MMPPH/+nLS0NGHbp5bWli5dSlFREdOnT0ddXZ2wsLCvaarIXyA5X02aNEFNTY3Xr19z/fp1fv31V9TV1fHz8yMnJ4elS5dy9+7dj36HrBb7lZOTY//+/Tg4OJCYmIimpia+vr707NkTBwcHnJ2dBaEnQZKskZaWxqlTp4SOJCJfj5LPEVtbW9zd3XFwcCAjI4Pbt28zaNAg0tPTuXjxoiDYXFxcuHr1KkePHhW+R1avSxEREdnmu4iR69GjB8HBwbx69YrLly8TFxfHlStXKCgo+Msq/qNGjcLU1JS+fft+ZYtF3qdZs2ZcuHABgClTptCnTx/09fVJTU0lNTUVa2troLilmre3Nxs3bmT58uXcunVLmmb/z5iampKYmMjBgwdp1qwZQUFBJCYmfvJ6NTc3JzY2lnbt2nHz5k0pWCzSsmVLLCwsuH79OitWrACKnz1Tp07l3r17HD9+nCdPnmBjY4Ouri5dunSRWc+wiIhI2eG7EHIA+vr6VK5cmblz55KZmcnNmzcJCAggNze3zLRk+l5xcnLCx8eH7t2707dvXyZMmICTkxOvXr2ibt26+Pr6kpOTQ9euXYHijM958+YREBDwyY4HZYFu3bqRlJTEiRMnsLe359WrV58cq6amhoGBAXfu3PmKFopIaNy4Mbt370ZeXp6QkBB++eUX4bOff/4ZS0tLTE1NuXv3Lk+ePGHYsGHk5+eLzx4REZF/zXcj5CRoampiZ2fHgAEDyM3NxcbGhpycHPGBKqMMHjyY2bNn4+LiwrZt21i4cCGpqalMnz4dKF7WatasGdHR0Rw6dAgfHx+gWATt37+/zJ9TiZiLjY1lzpw5pKenfzBGvHZlA0tLS2bOnMnZs2cJDAwkJSWl1OcaGhpAcUcOELPeRUREvgzfdHRtuXLl0NfXL7UtKyuLZcuWMWvWLNTV1UlISEBZWVmcCGUQc3Nz5syZw+DBg4U2aAYGBqXaGxUVFXH+/Hl27NhB/fr1UVVVBWDv3r0yG0DesWPHDwoVf6oo8d69e4X4uGnTpqGtrf3BGPHa/bqU7OJS8vr69ddfmTp1Kk2bNmXw4MHUrFmz1Lg3b94IIg7ErHcREZEvg+zNcl8IS0tLEhIS2L9/PytWrKBZs2ZA8YSZn5/P/v37iYiIQFNTE3d3dylbK/I+Tk5OxMbGfrB9586dVKhQgS5dupTafvfuXTQ0NFBSUiq1XdZETocOHfD29iYmJobY2FjMzMxQUlKiqKjok23edu3ahYeHBzVq1OD169df2WKR95EIsCFDhhAVFUV0dDTjxo0DiouLz5w5E3Nzc1xdXQUxJ2vXoYiIyLfDNynkbG1tmTt3Lnv37sXf35+mTZvi7OwM/Jn1WFhYyN69ezl79ixdunRBRUVFihaLlMTZ2VlojRYaGkpcXBwDBw4EioVcQUEBrq6u9O3bFzk5OXR0dDAzM+POnTsfZHXKGkePHmXQoEH0798fBQUFhg4dSmJiIurq6kLyzfvIycmRnJxMnz59ZLql2LeOjY2NUHA5MDAQX19fnj9/jqamJoMGDWLv3r3IycmRmJhIaGgoZmZmjB07lsqVK0vXcBERkW+aby5G7ueff2bRokVMnjyZTZs2AeDi4kL16tVZunQpz58/Fyr/Q/Hy69GjR/nll1+Ijo6WktUiEjp16sSKFSsYMWKEsJw6efJkRowYwZgxY1i7di3169cXeqpqa2vz+PFjFBQU6Nq1q0w3G1dVVSU3N1f4W01Njc6dOzNu3Dh0dHTo2bMnz58/F2PeZBAnJydmzZqFra0tDx48YPXq1YwZM4bDhw8DxRmr8+bN4+XLl/Tr1w8o9th16dKFwYMHy2QHERERkW+Db0rIycvLY21tjZ6eHsuWLSM7OxuATZs2YWhoiJ6eHhcvXuTIkSPMmTNH2G/o0KHUq1cPX19faZku8v+UL1+e6tWrc/HixVLB4JMnT2bkyJGMGTOGNWvWULFiRapWrUqbNm149OhRmejYUKtWLVatWsXTp09L1R4zMjJi3rx5lC9fHhMTk1JiT0T62NraMm/ePIYMGcL27dsxNjYmNjaWjh078ujRI6D42dOpUydmzpzJxIkTOXDgQKnvkNV2cCIiImWfb2pptbCwkK1bt5KcnCyIuOXLl1OrVi18fX0ZOHAg169fp1evXtSvX1/Y7+rVqygrK4vLqzJARkYGFStWREtLq5QgCw4O5pdffmH+/PlYWVnx7Nkzzp07R3R0tMx3bLC3tycqKoq8vDzevXsHUGpSv379Oj4+PmRmZhISEvLJWDmRr8+gQYOIjIwkPj6e7du3A8XdQl69elWqi0ZhYSF//PEH5cuXx9DQ8IPvEUWciIjIf8U3JeSguMXRgwcPAFBSUmLbtm307duX3377jXPnzgmtjEq2cTp69CiRkZG8fftWWmaL/D8tWrQgNDSUOnXqAKWzAiVibt68eTg4OHywrywuR7Zo0QI/Pz9Gjx7NwoULyc7ORk9PDx0dnVLjrl69yvr166lduzZVqlSRkrUiJXFyciIyMpLdu3djZ2fHoEGDAHj9+jVXrlzB3Nyczp07C+Nzc3NJS0sTXiJFREREvgbfnJArybt371izZo0g7KA4TunUqVPcv3+/1FixkKpscP78ed6+fYurqyvwoTgLDg5m1apVwqQq61SoUIHLly+zceNGGjduTFxcHNu2bWPNmjXMnj1bGFdQUEBSUhKVKlXCxcVFihaLQLEXdfbs2QwZMgR7e3tiYmKYP38+1tbWZGZmEhQURPny5Rk/fjzBwcEMGDCA5cuXo6ioyObNm6VtvoiIyHfENy3k3kdZWZmJEyfy+vVrrl27Jm1zvnvez75UVFSkoKCA4OBgmjVrxk8//fTR/Xx8fISAclmnUaNGVKxYETU1NaKjo7lz5w4zZ85k+/bttGrVisTERGFsVlYWQUFB1KhRAy0tLSla/X2jqqpKx44dGTx4sLCcWnJp38bGhps3bzJ8+HAh693NzY3Xr1/TtWtXma1fKCIi8m2iKG0Dvgbq6up06tQJR0dHqlevTpcuXYQyDmLsivSQ/PatW7fm5MmTQsbprVu3UFBQoGXLlpw9e1aaJv5rDh06RI8ePRg5ciR3794lPDycV69eoaCgwK1btxg3bhwdOnQQmqc/fPiQhw8fStnq7xc5OTlyc3Px8PD44LOQkBAAIiIiAFi9ejVTp04lODgYDQ0NocafrCbciIiIfJt8F6+N6urqWFhYkJOTg7GxMfn5+SgoKIgiTkqoqqoKHqdWrVqRnJxMcnIyw4YNQ1tbm5s3b7J06VLGjBlD7dq1pWztv0OyrD9ixAgqVqwo9EstKCjg2LFjGBgYULVqVWH8lStXWLx4sczXw/tWkTwT7OzsCAwMBEp7jkNCQoiKimLu3LlCbcOCgoJShZpFESciIvI1+S6EXHp6Or6+vgwdOlQouio+bKWDmZkZMTEx7N27l6CgIJSVlWnZsiW3b9+mX79+HDt2jCFDhpCZmcnvv/9O69atAcrsUtXTp0/x8vIiLy+PFi1aYGNjI3yWnZ3NzZs3efnyJfCnYEhNTZWKrSJ/0rp1azp16gR8mHEqEQlnmYgAABOESURBVHOLFi0qlbkqIiIiIg2+qTpyn4O4nCo9nJycCAoKYv369SgrK2NpacmxY8ewtrZGXl4eDQ0NPDw8aN68OfXq1aN69eocO3aszMTD/RVGRkasXLmS7OxsTpw4wfHjx7G3t0dbW5vu3bvLZMbt94jk+aCnp8fBgweZP38+MTExHx3r5OREYmKi+FIoIiIiVb47ISciHezt7QkPD2fIkCHs2rULgM6dO7N+/XqGDh1KcnKyMNbQ0JAaNWowcuRImjdvTkhICElJSdIy/YtRs2ZNnJycMDExISMjgxcvXuDm5kZ+fr7YzUHGUFVVJTg4GC0trY/Gy5VEjIkTERGRJqKQE/nPqVChAlevXuXo0aNYW1vz9u1b5OTk0NLS4sCBA8yaNYukpKQPvKXly5cnIiKCjIwMocflt4CioiLKyspCvTFRCEifYcOG0bhxYxYuXMjt27d59+4dnTt3Zs2aNdjY2HzQqUFEREREViibgUciZYr09HQGDx5M69atCQoKolKlShQVFdG5c2eqVKnC+fPngdKxSPLy8mRkZLBu3To6d+6Mvr6+lKz/8uTn55cqGiuKuK9P06ZN6dOnD3369KFq1ark5OTQtm1bIiMjSUxMpEmTJpw4cYJFixZhZ2cnloMRERGRWb6L8iMi0mfHjh24urqyfPlyXr16xd27dwkNDWX06NFcvXr1g/GSZcbWrVuTmZlJTk7O1zZZ5BvFzs4Of39/8vLyqFq1Kjt37iQwMJCVK1fSu3dvrKysWLlyJefOnaN8+fKoqKigpaVFZmamGGMrIiIic4hLqyJfld69e5OQkADAlClTWLRo0SfHKigoEB8fz5w5cwSvnYjIv8He3p45c+bg5ubG5cuXqV69OqtWrWLt2rWMHTtWGNejRw8aN26Mu7s7enp6rFy58pta3hcREfl2EIWcyFfH2NiYdevWER0dzfz580lPT5e2SSLfAebm5sTGxjJq1ChWr14teNdmzpyJiYkJpqamZGRklNrH0NAQNzc3fvrpJ9zc3Hj69Kl0jBcRERH5BGKMnMhX58CBAwwePBh3d3e8vLyoVKmStE0S+Q6QFFmuV68eBgYGwhKpoqIiGRkZH8QqysnJkZaWRkxMDM2aNRNrxomIiMgkopAT+WK83zv1U9ugOGZOIuYsLCz+Y8tEvnfk5OTYv38/Dg4OjB49WlhG7dmzJw4ODsydO/eDbhqSNn5paWmcOnUKXV1daZguIiIi8peIS6siXwQlJSXevXsHFHs88vPzefDgAfn5+X8ZIN6mTRtOnz4tZm6KfDVMTU1JTEzk4MGDNGvWjKCgIBITEz9Zy0+yJNuuXTtu3rwpBYtFREREPo0o5ET+FdOnT2f27NlCm6nJkydjY2NDXl4eL168wN7ensePH//t94i11ES+Jt26dSMpKYkTJ05gb28v9MD9GGpqahgYGHDnzp2vaKGIiIjI5yEurYr8zxgaGtKvXz+Sk5PR0tLi559/xsrKCi8vLwIDA8nMzGTPnj0YGRn97XeJIk7ka7J3715sbW1p06YNfn5+VKhQ4aPj5OXlycnJEUWciIiIzCJ65ET+FfXr12fRokUoKioSHR2Npqam0JtST0+PhQsX0rhxYwYMGMD169elbK3It07Hjh3JzMwsVa7mr5b2TU1NiY+PZ+PGjUycOPEvPXMiIiIisojokRP5n5AkMaSkpODh4cHbt2+JjIykYsWKwpjnz58zfPhwLl++zJo1a2jcuLG0zBX5DujQoQPe3t7ExMQQGxuLmZkZSkpKFBUVoaCg8NF9du3ahYeHBzVq1OD169df2WIRERGRf4/okRP5x1SrVo0HDx4AYGFhwa5du6hevTphYWEYGhrSq1cvnj9/LozX0dFh7dq1PH78GEdHR2mZLfIdoKysjL6+PsHBwejq6pKbm4uLiwvZ2dkfTWZ431sndm4QEREpa4hCTuQf0a5dOwICApg/fz6dOnXC3d2dZs2akZaWJiyzqqio0Lt371IeDi0tLbKyssRJUuSroKamRufOnRk3bhw6Ojr07NmT58+ffzIzVURERKSsIgo5kc9CV1eXFy9eUL16dcLDw2nQoAFaWlr06dOHa9euCePq169PdHQ0SkpK9OnT54PlKtHjIfKlqVOnDlpaWuTm5pa6FgGMjIyYN28e5cuXx8TEhNzcXClZKSIiIvLfIMbIifwts2fPxsPDA3l5ee7fv8/JkyepUKECt2/fpnbt2qXGloyZO3nyJBoaGqU+F0WcyJfE1taWFStWsGrVKhYtWoSHh0epz69fv46Pjw+ZmZmEhIR8MlZOREREpKwiCjmRv+XIkSOEh4dTWFiIsrIyO3fuxNbWlidPnjBs2DAsLS1LjU9JScHT05O9e/eSk5MjJatFvnXMzc0JDQ1lzpw52NjYcPnyZbp06fLBuKtXr7J+/Xpq165NlSpVpGCpiIiIyH+HKORE/pZNmzaRn5+PnZ0dS5YsISMjg8OHDxMYGEhOTg6DBw/G3NxcGO/m5sadO3fw9PSksLAQeXnxMhP5smhqamJlZUVYWBgbNmzg4sWLrFq1ioyMDNq0aUOLFi2EsQUFBSQlJVGpUiVcXFykaLWIiIjIl0ecYUU+yft9UjU1NTE0NGTSpElUqVKFW7du4e/vT3Z2Nq6urkyePJmVK1cyYcIEoV0XIAaXi3xxsrKyqFChQikP29ixY2nfvj3Lli0jIiKCtWvXlhofFBREjRo10NLSkobJIiIiIv8JopAT+SSSeLYBAwbQuHFjlixZwpo1a6hVqxb+/v5UqVKF27dvM2nSJFJSUvjpp58AaNSoEYWFhR8IQRGRL4WKigqXL1+mZcuWxMbGsmnTJurUqYOVlRXdu3cnMDCQKlWqlPLAPXz4kIcPH0rRahEREZEvj5i1KvKXqKmp8fvvv3PixAkhkNzNzQ0LCwvu3bvH9OnTSU1NRUNDg6KiIrKzswGxd6rIf4+hoSEDBw6koKCAvn37Mn/+fHbu3AmAtrY227dvZ926dURERAj7VKlShdTUVClZLCIiIvLlET1yIqUo6UWTk5MjJycHNzc3evTogZ2dHQAxMTH8+uuvVK9enYkTJ1K1alXevHkjiDgQe6eK/PekpaURGRnJL7/8gpycHNra2sJn+fn5vHz5kpcvXwJ/XteiiBMREfnWEIWcSCkky6lOTk706tULfX19Tp8+TUJCAr1796ZBgwYALF26lA0bNtCyZUusra2labLId46ysjKZmZl07dqVzp0706hRI5YsWYKamhorVqwAxLI3IiIi3y7i0qrIB9SrV4+DBw/y9OlTzpw5w4IFC8jKymLJkiUsW7aMxMREYWzfvn3Zvn27mNAgIlV++OEHli1bhqamJi9evODx48dYW1uTn58vdnMQERH5phGFnMgHaGlpERgYSJMmTUhOTsbf358xY8bQvXt3jI2NMTExIS0trdQ+4mQpIm0qV65MtWrVyM/P59y5cxQVFYmxmiIiIt884tKqiECPHj2oV68emZmZREZGUrNmTR48eEC/fv0YMGAA+fn56OnpERYWhrq6eql9RREnIm0ePXrEyZMnOXv2LEVFRcjJyYkiTkRE5JtHFHIiADRs2JBRo0axadMmzM3NuX//PuPGjcPV1ZVnz54xfvx4Dh48yLNnz9DW1i6V2CAiIouIcXEiIiLfA+LSqohA7dq1GTBgAJ6enqxbt46UlBT09fVJTU0lLi4OKC5H8vbtW9EDJyIiIiIiIgOIQk7kA7p168bAgQOpU6cOtWvX5uHDh9jb25cqpirGxImIiIiIiEgfUciJfJQqVarQrFkzJkyYQJMmTViyZAn+/v7SNktERERERESkBKKQ+474v/buLSSqtY/j+E/HJnDsoEFWVJAW0flCKtBATUsoOyoV4YxRTEGnm4IghBIrtSisLE0NrS7spgxSQTIZCqWgorAD0YnKzKi0zLKDM2tfRNPb+7b3u2XvnFn2/VzJ8lnyB29+PP/1/J+AgAAZhtGt3bSQkBCtWrVK+fn5fDgOAICfIcj9JubMmaPx48errKxMr169+lvv/HfgY5QDAAD+hSD3GxgyZIhcLpc6OjoUEBCgkydP6tq1azp//rx3Dd+8AQBgPkG+LgC/3ocPH1RfX6+zZ8/qxYsXmjt3roqKinT69Gk1NDSooqKCEAcAgAkxR+430N7erpqaGuXk5Ojx48fKyMhQTEyM+vXrp/z8fFVWVio5OVkjR470dakAAKAbCHK9VFDQ183WwMCv/+JTp07J5XIpOTlZktTS0qIpU6bo3LlzevbsmTZu3KiGhgYlJCT4rGYAANA9tFZ7obi4OEVHR6ugoEBtbW2SJLfbrSdPnmjevHkqKipSXV2dWltbtX79enV0dCgqKkpRUVFyuVy+LR4AAPxt7Mj1QomJiUpOTtbKlSs1cOBA7/Pc3FwNGDBAL1++1Pv372W329XR0SFJunr1qoqKiuR2u2WxWHxUOQAA6A6CXC+UkZGhmpoazZkzR06nUwMGDJD0dY5cVVWV7t27J6fTqdbW1p++z4gRAADMgSDXy3zbTcvMzFRtba1SU1PldDoVGhqqrq4unTlzRiNHjlRsbKyPKwUAAP8UQa4XiIiI8P5sGN/HAo4ZM0bh4eGaO3eunE6nBg0apLt376qkpERr1qzRsGHDfFEuAAD4lxDkTC4yMlKXL1/WunXrZLFYvPPgjh07poiICEVHR6uurk5JSUlauXKlbDabrly5oufPn6u5udnH1QMAgH+CU6sm9+DBA+3YsUNbt27V+/fvVVZWptLSUkVERMhut6u5uVlZWVkKDAxUUlKSgoODlZmZqcrKSknf718FAADmwxVdJjVhwgTdu3dPnz9/liStXbtW27dv18OHD9XZ2Sm73a6mpqYf7kfdu3ev+vbtq/Xr1/uydAAA8C+htWpCKSkpcrlc2rVrl3fw7+HDh7VlyxZFRkaqpqZGTU1Nkr6eQP02FHjTpk2EOAAAehFaqyYUFhYmSXI4HLLZbFq3bp08Ho9KS0tltVqVlZWl1tZWFRUVSZI8Hg8tVAAAeiGCnAldunRJdXV1crlcWrt2rYqLi+V0OuXxeHTkyBEFBgYqKytLhmGouLhYkghxAAD0QrRWTaixsVGfPn3StGnT5HA4FBMTo8LCQm8LtaCgQNu2bdOuXbs0f/58H1cLAAB+FYKcCUyePFk2m01Wq9X7bOfOnQoLC5NhGFq1apUSExNVUFDgDXOFhYVavXq1qqqqfFU2AAD4xQhyfm7BggU6f/68jh8/rpycHEVGRkqSnjx5oi9fvighIUH19fVKT09XQkKCDh8+7A1zFRUV3J0KAEAvRpDzc8HBwZKk0NBQ9enTR1VVVcrMzNTUqVO1e/dupaWlKTIyUhcvXpTD4VBKSoo2b978w9/g7lQAAHonDjv4ufLycknSgQMHVFJSourqak2cOFFHjx7V9evXFR4erqioKD148EANDQ2aOXOmbt265eOqAQBAT2BHzgTKy8u1detW5eXlafjw4dqzZ49iY2N1/fp1Xbp0SY2Njd61jY2N8ng8tFMBAPgNsCNnEsXFxTIMQ9nZ2bLZbMrLy1N2draCgoK8tzv8J9qpAAD0fgQ5EykpKZFhGMrJyZHb7dbBgwd/GuIAAMDvgSDnByZNmqTXr1+rubnZ++zPbmI4evSoDMPQzp07FRwcrNzc3J4sFQAA+JGAsLAwRv770OzZs5WVlaW3b9/q5s2bKi0t1e3bt713pHo8np++t2HDBiUlJSk5ObmHKwYAAP6CIOcHBg8erKFDh2rfvn169+6d7t+/r4yMDH38+PEvwxwAAPi9EeT8SEhIiJYvX66UlBR9/PhRy5YtU2dnJ2EOAAD8FEHOR5YuXaoPHz7o7Nmzkr5/ExcUFKS4uDht2bJFbW1tSktL40ADAAD4KebI+YDD4VB+fr46Ozu9zwzDUGBgoLq6ulRXV6e8vDyFhIRozZo1PqwUAAD4M4JcD0tPT1dubq6cTqdqa2t/+N239qnH41Ftba2uXbum+Ph49e3b1xelAgAAP0drtQclJiaqvLxc6enpqq6u1ujRo7Vo0SKNHTtWjx8/VnV1ta5evepd379/f9XX1+vQoUMqLCz0YeUAAMAfsSPXQywWi8aNG6enT59q3LhxGj16tI4fP67p06fLarVq8eLF2r59uxYuXOhd397erv3792vUqFG+LR4AAPglglwPcbvdOnbsmAoLC5WamqoLFy6opqZGK1askMPh0KxZs9TV1SW73e5dL0l37tyR1WqlvQoAAP4HrdUe1r9/f6WlpWnEiBE6dOiQmpqavCdWY2JidObMGc2YMUN37971vjNq1Cg9evTIh1UDAAB/xBVdPay9vV0nTpzQsGHD1NTUJEneq7jCwsJ048YNtbS0/PAOIQ4AAPwMrVUfePfu3Q87bpJktVq1dOlSPXr0SG/fvvVRZQAAwEzYkfMxm82m2NhY2e12DR8+XHFxcZK+DwgGAAD4M+zI+VhwcLCWLFmirq4uxcfHy+12y2KxEOIAAMD/xWEHPxAaGqo3b97IMAxZLBbviVUAAIC/QpDzI7RTAQBAd9Ba9SOEOAAA0B0EOQAAAJMiyAEAAJgUQQ4AAMCkCHIAAAAmRZADAAAwKYIcAACASRHkAAAATIogBwAAYFIEOQAAAJMiyAEAAJjUH1dFkwBVvzOCAAAAAElFTkSuQmCC\n",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"execution_stats = [time_pytorch_function_forward_backward(prepare_function(fn), embeddings) for fn in functions.values()]\n",
|
|
"execution_means = [stat[0] for stat in execution_stats]\n",
|
|
"execution_stds = [stat[1] for stat in execution_stats]\n",
|
|
"\n",
|
|
"\n",
|
|
"plot_execution_times(functions, execution_means, execution_stds, filename=\"3_forward-and-backward-compiled.pdf\")"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"accelerator": "GPU",
|
|
"colab": {
|
|
"gpuType": "A100",
|
|
"machine_shape": "hm",
|
|
"provenance": []
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.16"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|