From e3b4cee023008a343f1f32e2c05a4a387eeb5e9b Mon Sep 17 00:00:00 2001 From: lxr-tech <1838593642@qq.com> Date: Tue, 3 May 2022 22:24:27 +0800 Subject: [PATCH 1/3] add fastnlp_tutorial_1 lxr 220503 --- tutorials/fastnlp_tutorial_0.ipynb | 16 +- tutorials/fastnlp_tutorial_1.ipynb | 1156 +++++++++++++++++ .../figures/T0-fig-trainer-and-evaluator.png | Bin 104863 -> 100764 bytes 3 files changed, 1163 insertions(+), 9 deletions(-) create mode 100644 tutorials/fastnlp_tutorial_1.ipynb diff --git a/tutorials/fastnlp_tutorial_0.ipynb b/tutorials/fastnlp_tutorial_0.ipynb index 28fcfddf..26675ecf 100644 --- a/tutorials/fastnlp_tutorial_0.ipynb +++ b/tutorials/fastnlp_tutorial_0.ipynb @@ -136,7 +136,7 @@ "在`fastNLP 0.8`中,使用`pytorch.nn.Module`搭建需要训练的模型,在搭建模型过程中,除了\n", "\n", "  添加`pytorch`要求的`forward`方法外,还需要添加 **`train_step`** 和 **`evaluate_step`** 这两个方法\n", - "***\n", + "\n", "```python\n", "class Model(torch.nn.Module):\n", " def __init__(self):\n", @@ -177,9 +177,7 @@ "\n", "  从模块角度,该字典的键值和`metric`中的`update`函数的签名一致,这样的机制在传参时被称为“**参数匹配**”\n", "\n", - "***\n", - "\n", - "![fastNLP 0.8 中,Trainer 和 Evaluator 的关系图](./figures/T0-fig-trainer-and-evaluator.png)" + "" ] }, { @@ -206,7 +204,7 @@ "  而在`Trainer`和`Evaluator`中的参数`model_wo_auto_param_call`被设置为`True`时\n", "\n", "    `fastNLP 0.8`会将`batch`直接传给模型的`train_step`、`evaluate_step`或`forward`函数\n", - "***\n", + "\n", "```python\n", "class Dataset(torch.utils.data.Dataset):\n", " def __init__(self, x, y):\n", @@ -253,7 +251,7 @@ "id": "5314482b", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [], @@ -641,11 +639,11 @@ { "data": { "text/html": [ - "
{'acc#acc': 0.43}\n",
+       "
{'acc#acc': 0.29}\n",
        "
\n" ], "text/plain": [ - "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.43\u001b[0m\u001b[1m}\u001b[0m\n" + "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.29\u001b[0m\u001b[1m}\u001b[0m\n" ] }, "metadata": {}, @@ -654,7 +652,7 @@ { "data": { "text/plain": [ - "{'acc#acc': 0.43}" + "{'acc#acc': 0.29}" ] }, "execution_count": 9, diff --git a/tutorials/fastnlp_tutorial_1.ipynb b/tutorials/fastnlp_tutorial_1.ipynb new file mode 100644 index 00000000..11bd2219 --- /dev/null +++ b/tutorials/fastnlp_tutorial_1.ipynb @@ -0,0 +1,1156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "cdc25fcd", + "metadata": {}, + "source": [ + "# T1. dataset 和 vocabulary 的基本使用\n", + "\n", + "  1   dataset 的使用与结构\n", + " \n", + "    1.1   dataset 的结构与创建\n", + "\n", + "    1.2   dataset 的数据预处理\n", + "\n", + "    1.3   延伸:instance 和 field\n", + "\n", + "  2   vocabulary 的结构与使用\n", + "\n", + "    2.1   vocabulary 的创建与修改\n", + "\n", + "    2.2   vocabulary 与 OOV 问题\n", + "\n", + "  3   dataset 和 vocabulary 的组合使用\n", + " \n", + "    3.1   从 dataframe 中加载 dataset\n", + "\n", + "    3.2   从 dataset 中获取 vocabulary" + ] + }, + { + "cell_type": "markdown", + "id": "0eb18a22", + "metadata": {}, + "source": [ + "## 1. dataset 的基本使用\n", + "\n", + "### 1.1 dataset 的结构与创建\n", + "\n", + "在`fastNLP 0.8`中,使用`DataSet`模块表示数据集,**`dataset`类似于关系型数据库中的数据表**(下文统一为小写`dataset`)\n", + "\n", + "  **主要包含`field`字段和`instance`实例两个元素**,对应`table`中的`field`字段和`record`记录\n", + "\n", + "在`fastNLP 0.8`中,`DataSet`模块被定义在`fastNLP.core.dataset`路径下,导入该模块后,最简单的\n", + "\n", + "  初始化方法,即将字典形式的表格 **`{'field1': column1, 'field2': column2, ...}`** 传入构造函数" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a1d69ad2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "from fastNLP.core.dataset import DataSet\n", + "\n", + "data = {'idx': [0, 1, 2], \n", + " 'sentence':[\"This is an apple .\", \"I like apples .\", \"Apples are good for our health .\"],\n", + " 'words': [['This', 'is', 'an', 'apple', '.'], \n", + " ['I', 'like', 'apples', '.'], \n", + " ['Apples', 'are', 'good', 'for', 'our', 'health', '.']],\n", + " 'num': [5, 4, 7]}\n", + "\n", + "dataset = DataSet(data)\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "9260fdc6", + "metadata": {}, + "source": [ + "  在`dataset`的实例中,字段`field`的名称和实例`instance`中的字符串也可以中文" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3d72ef00", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+------+--------------------+------------------------+------+\n", + "| 序号 | 句子 | 字符 | 长度 |\n", + "+------+--------------------+------------------------+------+\n", + "| 0 | 生活就像海洋, | ['生', '活', '就', ... | 7 |\n", + "| 1 | 只有意志坚强的人, | ['只', '有', '意', ... | 9 |\n", + "| 2 | 才能到达彼岸。 | ['才', '能', '到', ... | 7 |\n", + "+------+--------------------+------------------------+------+\n" + ] + } + ], + "source": [ + "temp = {'序号': [0, 1, 2], \n", + " '句子':[\"生活就像海洋,\", \"只有意志坚强的人,\", \"才能到达彼岸。\"],\n", + " '字符': [['生', '活', '就', '像', '海', '洋', ','], \n", + " ['只', '有', '意', '志', '坚', '强', '的', '人', ','], \n", + " ['才', '能', '到', '达', '彼', '岸', '。']],\n", + " '长度': [7, 9, 7]}\n", + "\n", + "chinese = DataSet(temp)\n", + "print(chinese)" + ] + }, + { + "cell_type": "markdown", + "id": "202e5490", + "metadata": {}, + "source": [ + "在`dataset`中,使用`drop`方法可以删除满足条件的实例,这里使用了python中的`lambda`表达式\n", + "\n", + "  注一:在`drop`方法中,通过设置`inplace`参数将删除对应实例后的`dataset`作为一个新的实例生成" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "09b478f8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1969418794120 1971237588872\n", + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n", + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "dropped = dataset\n", + "dropped = dropped.drop(lambda ins:ins['num'] < 5, inplace=False)\n", + "print(id(dropped), id(dataset))\n", + "print(dropped)\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "aa277674", + "metadata": {}, + "source": [ + "  注二:在`fastNLP 0.8`中,**对`dataset`使用等号**,**其效果是传引用**,**而不是赋值**(???)\n", + "\n", + "    如下所示,**`dropped`和`dataset`具有相同`id`**,**对`dropped`执行删除操作`dataset`同时会被修改**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "77c8583a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1971237588872 1971237588872\n", + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n", + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "dropped = dataset\n", + "dropped.drop(lambda ins:ins['num'] < 5)\n", + "print(id(dropped), id(dataset))\n", + "print(dropped)\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "a76199dc", + "metadata": {}, + "source": [ + "在`dataset`中,使用`delet_instance`方法可以删除对应序号的`instance`实例,序号从0开始" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d8824b40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+--------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+--------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n", + "+-----+--------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "dataset = DataSet(data)\n", + "dataset.delete_instance(2)\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "f4fa9f33", + "metadata": {}, + "source": [ + "在`dataset`中,使用`delet_field`方法可以删除对应名称的`field`字段" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f68ddb40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+--------------------+------------------------------+\n", + "| idx | sentence | words |\n", + "+-----+--------------------+------------------------------+\n", + "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n", + "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n", + "+-----+--------------------+------------------------------+\n" + ] + } + ], + "source": [ + "dataset.delete_field('num')\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "b1e9d42c", + "metadata": {}, + "source": [ + "### 1.2 dataset 的数据预处理\n", + "\n", + "在`dataset`模块中,`apply`、`apply_field`、`apply_more`和`apply_field_more`函数可以进行简单的数据预处理\n", + "\n", + "  **`apply`和`apply_more`针对整条实例**,**`apply_field`和`apply_field_more`仅针对实例的部分字段**\n", + "\n", + "  **`apply`和`apply_field`仅针对单个字段**,**`apply_more`和`apply_field_more`则可以针对多个字段**\n", + "\n", + "  **`apply`和`apply_field`返回的是个列表**,**`apply_more`和`apply_field_more`返回的是个字典**\n", + "\n", + "***\n", + "\n", + "`apply`的参数包括一个函数`func`和一个新字段名`new_field_name`,函数`func`的处理对象是`dataset`模块中\n", + "\n", + "  的每个`instance`实例,函数`func`的处理结果存放在`new_field_name`对应的新建字段内" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "72a0b5f9", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------------+------------------------------+\n", + "| idx | sentence | words |\n", + "+-----+------------------------------+------------------------------+\n", + "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n", + "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n", + "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n", + "+-----+------------------------------+------------------------------+\n" + ] + } + ], + "source": [ + "data = {'idx': [0, 1, 2], \n", + " 'sentence':[\"This is an apple .\", \"I like apples .\", \"Apples are good for our health .\"], }\n", + "dataset = DataSet(data)\n", + "dataset.apply(lambda ins: ins['sentence'].split(), new_field_name='words')\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "c10275ee", + "metadata": {}, + "source": [ + "  **`apply`使用的函数可以是一个基于`lambda`表达式的匿名函数**,**也可以是一个自定义的函数**" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b1a8631f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------------+------------------------------+\n", + "| idx | sentence | words |\n", + "+-----+------------------------------+------------------------------+\n", + "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n", + "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n", + "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n", + "+-----+------------------------------+------------------------------+\n" + ] + } + ], + "source": [ + "dataset = DataSet(data)\n", + "\n", + "def get_words(instance):\n", + " sentence = instance['sentence']\n", + " words = sentence.split()\n", + " return words\n", + "\n", + "dataset.apply(get_words, new_field_name='words')\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "64abf745", + "metadata": {}, + "source": [ + "`apply_field`的参数,除了函数`func`外还有`field_name`和`new_field_name`,该函数`func`的处理对象仅\n", + "\n", + "  是`dataset`模块中的每个`field_name`对应的字段内容,处理结果存放在`new_field_name`对应的新建字段内" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "057c1d2c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------------+------------------------------+\n", + "| idx | sentence | words |\n", + "+-----+------------------------------+------------------------------+\n", + "| 0 | This is an apple . | ['This', 'is', 'an', 'app... |\n", + "| 1 | I like apples . | ['I', 'like', 'apples', '... |\n", + "| 2 | Apples are good for our h... | ['Apples', 'are', 'good',... |\n", + "+-----+------------------------------+------------------------------+\n" + ] + } + ], + "source": [ + "dataset = DataSet(data)\n", + "dataset.apply_field(lambda sent:sent.split(), field_name='sentence', new_field_name='words')\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "5a9cc8b2", + "metadata": {}, + "source": [ + "`apply_more`的参数只有函数`func`,函数`func`的处理对象是`dataset`模块中的每个`instance`实例\n", + "\n", + "  要求函数`func`返回一个字典,根据字典的`key-value`确定存储在`dataset`中的字段名称与内容" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "51e2f02c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "dataset = DataSet(data)\n", + "dataset.apply_more(lambda ins:{'words': ins['sentence'].split(), 'num': len(ins['sentence'].split())})\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "02d2b7ef", + "metadata": {}, + "source": [ + "`apply_more`的参数只有函数`func`,函数`func`的处理对象是`dataset`模块中的每个`instance`实例\n", + "\n", + "  要求函数`func`返回一个字典,根据字典的`key-value`确定存储在`dataset`中的字段名称与内容" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "db4295d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----+------------------------+------------------------+-----+\n", + "| idx | sentence | words | num |\n", + "+-----+------------------------+------------------------+-----+\n", + "| 0 | This is an apple . | ['This', 'is', 'an'... | 5 |\n", + "| 1 | I like apples . | ['I', 'like', 'appl... | 4 |\n", + "| 2 | Apples are good for... | ['Apples', 'are', '... | 7 |\n", + "+-----+------------------------+------------------------+-----+\n" + ] + } + ], + "source": [ + "dataset = DataSet(data)\n", + "dataset.apply_field_more(lambda sent:{'words': sent.split(), 'num': len(sent.split())}, \n", + " field_name='sentence')\n", + "print(dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "9c09e592", + "metadata": {}, + "source": [ + "### 1.3 延伸:instance 和 field\n", + "\n", + "在`fastNLP 0.8`中,使用`Instance`模块表示数据集`dataset`中的每条数据,被称为实例\n", + "\n", + "  构造方式类似于构造一个字典,通过键值相同的`Instance`列表,也可以初始化一个`dataset`,代码如下" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "012f537c", + "metadata": {}, + "outputs": [], + "source": [ + "from fastNLP.core.dataset import DataSet\n", + "from fastNLP.core.dataset import Instance\n", + "\n", + "dataset = DataSet([\n", + " Instance(sentence=\"This is an apple .\",\n", + " words=['This', 'is', 'an', 'apple', '.'],\n", + " num=5),\n", + " Instance(sentence=\"I like apples .\",\n", + " words=['I', 'like', 'apples', '.'],\n", + " num=4),\n", + " Instance(sentence=\"Apples are good for our health .\",\n", + " words=['Apples', 'are', 'good', 'for', 'our', 'health', '.'],\n", + " num=7),\n", + " ])" + ] + }, + { + "cell_type": "markdown", + "id": "2fafb1ef", + "metadata": {}, + "source": [ + "  通过`items`、`keys`和`values`方法,可以分别获得`dataset`的`item`列表、`key`列表、`value`列表" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a4c1c10d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_items([('sentence', 'This is an apple .'), ('words', ['This', 'is', 'an', 'apple', '.']), ('num', 5)])\n", + "dict_keys(['sentence', 'words', 'num'])\n", + "dict_values(['This is an apple .', ['This', 'is', 'an', 'apple', '.'], 5])\n" + ] + } + ], + "source": [ + "ins = Instance(sentence=\"This is an apple .\", words=['This', 'is', 'an', 'apple', '.'], num=5)\n", + "\n", + "print(ins.items())\n", + "print(ins.keys())\n", + "print(ins.values())" + ] + }, + { + "cell_type": "markdown", + "id": "b5459a2d", + "metadata": {}, + "source": [ + "  通过`add_field`方法,可以在`Instance`实例中,通过参数`field_name`添加字段,通过参数`field`赋值" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "55376402", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+--------------------+------------------------+-----+-----+\n", + "| sentence | words | num | idx |\n", + "+--------------------+------------------------+-----+-----+\n", + "| This is an apple . | ['This', 'is', 'an'... | 5 | 0 |\n", + "+--------------------+------------------------+-----+-----+\n" + ] + } + ], + "source": [ + "ins.add_field(field_name='idx', field=0)\n", + "print(ins)" + ] + }, + { + "cell_type": "markdown", + "id": "49caaa9c", + "metadata": {}, + "source": [ + "在`fastNLP 0.8`中,使用`FieldArray`模块表示数据集`dataset`中的每条字段名(注:没有`field`类)\n", + "\n", + "  通过`get_all_fields`方法可以获取`dataset`的字段列表\n", + "\n", + "  通过`get_field_names`方法可以获取`dataset`的字段名称列表,代码如下" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "fe15f4c1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'sentence': ,\n", + " 'words': ,\n", + " 'num': }" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.get_all_fields()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5433815c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['num', 'sentence', 'words']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.get_field_names()" + ] + }, + { + "cell_type": "markdown", + "id": "4964eeed", + "metadata": {}, + "source": [ + "其他`dataset`的基本使用:通过`in`或者`has_field`方法可以判断`dataset`的是否包含某种字段\n", + "\n", + "  通过`rename_field`方法可以更改`dataset`中的字段名称;通过`concat`方法可以实现两个`dataset`中的拼接\n", + "\n", + "  通过`len`可以统计`dataset`中的实例数目;`dataset`的全部变量与函数可以通过`dir(dataset)`查询" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "25ce5488", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 False\n", + "6 True\n", + "+------------------------------+------------------------------+--------+\n", + "| sentence | words | length |\n", + "+------------------------------+------------------------------+--------+\n", + "| This is an apple . | ['This', 'is', 'an', 'app... | 5 |\n", + "| I like apples . | ['I', 'like', 'apples', '... | 4 |\n", + "| Apples are good for our h... | ['Apples', 'are', 'good',... | 7 |\n", + "| This is an apple . | ['This', 'is', 'an', 'app... | 5 |\n", + "| I like apples . | ['I', 'like', 'apples', '... | 4 |\n", + "| Apples are good for our h... | ['Apples', 'are', 'good',... | 7 |\n", + "+------------------------------+------------------------------+--------+\n" + ] + } + ], + "source": [ + "print(len(dataset), dataset.has_field('length')) \n", + "if 'num' in dataset:\n", + " dataset.rename_field('num', 'length')\n", + "elif 'length' in dataset:\n", + " dataset.rename_field('length', 'num')\n", + "dataset.concat(dataset)\n", + "print(len(dataset), dataset.has_field('length')) \n", + "print(dataset) " + ] + }, + { + "cell_type": "markdown", + "id": "e30a6cd7", + "metadata": {}, + "source": [ + "## 2. vocabulary 的结构与使用\n", + "\n", + "### 2.1 vocabulary 的创建与修改\n", + "\n", + "在`fastNLP 0.8`中,使用`Vocabulary`模块表示词汇表,**`vocabulary`的核心是从单词到序号的映射**\n", + "\n", + "  可以直接通过构造函数实例化,通过查找`word2idx`属性,可以找到`vocabulary`映射对应的字典实现\n", + "\n", + "  **默认补零`padding`用``表示**,**对应序号为0**;**未知单词`unknown`用``表示**,**对应序号1**\n", + "\n", + "  通过打印`vocabulary`可以看到词汇表中的单词列表,其中,`padding`和`unknown`不会显示" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "3515e096", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vocabulary([]...)\n", + "{'': 0, '': 1}\n", + " 0\n", + " 1\n" + ] + } + ], + "source": [ + "from fastNLP.core.vocabulary import Vocabulary\n", + "\n", + "vocab = Vocabulary()\n", + "print(vocab)\n", + "print(vocab.word2idx)\n", + "print(vocab.padding, vocab.padding_idx)\n", + "print(vocab.unknown, vocab.unknown_idx)" + ] + }, + { + "cell_type": "markdown", + "id": "640be126", + "metadata": {}, + "source": [ + "在`vocabulary`中,通过`add_word`方法或`add_word_lst`方法,可以单独或批量添加单词\n", + "\n", + "  通过`len`或`word_count`属性,可以显示`vocabulary`的单词量和每个单词添加的次数" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "88c7472a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5 Counter({'生活': 1, '就像': 1, '海洋': 1})\n", + "6 Counter({'生活': 1, '就像': 1, '海洋': 1, '只有': 1})\n" + ] + } + ], + "source": [ + "vocab.add_word_lst(['生活', '就像', '海洋'])\n", + "print(len(vocab), vocab.word_count)\n", + "vocab.add_word('只有')\n", + "print(len(vocab), vocab.word_count)" + ] + }, + { + "cell_type": "markdown", + "id": "f9ec8b28", + "metadata": {}, + "source": [ + "  **通过`to_word`方法可以找到单词对应的序号**,**通过`to_index`方法可以找到序号对应的单词**\n", + "\n", + "    由于序号0和序号1已经被占用,所以**新加入的词的序号从2开始计数**,如`'生活'`对应2\n", + "\n", + "    通过`has_word`方法可以判断单词是否在词汇表中,没有的单词被判做``" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3447acde", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 0\n", + " 1\n", + "生活 2\n", + "只有 5\n", + "彼岸 1 False\n" + ] + } + ], + "source": [ + "print(vocab.to_word(0), vocab.to_index(''))\n", + "print(vocab.to_word(1), vocab.to_index(''))\n", + "print(vocab.to_word(2), vocab.to_index('生活'))\n", + "print(vocab.to_word(5), vocab.to_index('只有'))\n", + "print('彼岸', vocab.to_index('彼岸'), vocab.has_word('彼岸'))" + ] + }, + { + "cell_type": "markdown", + "id": "b4e36850", + "metadata": {}, + "source": [ + "**`vocabulary`允许反复添加相同单词**,**可以通过`word_count`方法看到相应单词被添加的次数**\n", + "\n", + "  但其中没有``和``,`vocabulary`的全部变量与函数可以通过`dir(vocabulary)`查询" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "490b101c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13 Counter({'生活': 2, '就像': 2, '海洋': 2, '只有': 2, '意志': 1, '坚强的': 1, '人': 1, '才': 1, '能': 1, '到达': 1, '彼岸': 1})\n", + "彼岸 12 True\n" + ] + } + ], + "source": [ + "vocab.add_word_lst(['生活', '就像', '海洋', '只有', '意志', '坚强的', '人', '才', '能', '到达', '彼岸'])\n", + "print(len(vocab), vocab.word_count)\n", + "print('彼岸', vocab.to_index('彼岸'), vocab.has_word('彼岸'))" + ] + }, + { + "cell_type": "markdown", + "id": "23e32a63", + "metadata": {}, + "source": [ + "### 2.2 vocabulary 与 OOV 问题\n", + "\n", + "在`vocabulary`模块初始化的时候,可以通过指定`unknown`和`padding`为`None`,限制其存在\n", + "\n", + "  此时添加单词直接从0开始标号,如果遇到未知单词会直接报错,即 out of vocabulary" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "a99ff909", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'positive': 0, 'negative': 1}\n", + "ValueError: word `neutral` not in vocabulary\n" + ] + } + ], + "source": [ + "vocab = Vocabulary(unknown=None, padding=None)\n", + "\n", + "vocab.add_word_lst(['positive', 'negative'])\n", + "print(vocab.word2idx)\n", + "\n", + "try:\n", + " print(vocab.to_index('neutral'))\n", + "except ValueError:\n", + " print(\"ValueError: word `neutral` not in vocabulary\")" + ] + }, + { + "cell_type": "markdown", + "id": "618da6bd", + "metadata": {}, + "source": [ + "  相应的,如果只指定其中的`unknown`,则编号会后移一个,同时遇到未知单词全部当做``" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "432f74c1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'': 0, 'positive': 1, 'negative': 2}\n", + "0 \n" + ] + } + ], + "source": [ + "vocab = Vocabulary(unknown='', padding=None)\n", + "\n", + "vocab.add_word_lst(['positive', 'negative'])\n", + "print(vocab.word2idx)\n", + "\n", + "print(vocab.to_index('neutral'), vocab.to_word(vocab.to_index('neutral')))" + ] + }, + { + "cell_type": "markdown", + "id": "b6263f73", + "metadata": {}, + "source": [ + "## 3 dataset 和 vocabulary 的组合使用\n", + " \n", + "### 3.1 从 dataframe 中加载 dataset\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "89059713", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3dbd985d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f634586", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "5ba13989", + "metadata": {}, + "source": [ + "### 3.2 从 dataset 中获取 vocabulary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a2de615b", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f5eed18", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/figures/T0-fig-trainer-and-evaluator.png b/tutorials/figures/T0-fig-trainer-and-evaluator.png index a98ab83b48b29a07ba450f077a95fc5fcf5a8659..6e95650decb06472515c89f5ab7d51cda1f30499 100644 GIT binary patch literal 100764 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
*My@_n) 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 F{C_&s#3}#) literal 104863 zcmd43Ra{nEvfZaD^K@VC z?>;GO%{Av7V~+Tbm|u{Ll<-T0*9Z_05HCeV1mqwfo?$^iKr_KX0Z$C0WicQi2q8oT zJ}S6C?l-@1P*8T;a_?yG(!oEh{Q}8DO4MMg=Ct-P+G)gOA&QfckJ)y+nw>-$>Me9- zRVG=^5ySQGS)-hn2 z;j~x+EpzAXZcm7_pUZH08&`;J?N<>jKj6jYdwVWFICcH}`K=2Q5{?%F3dIKkh7jV< ze|=s;>03->ApHB}pO?XHtRJ3+^V*?)&qfi5kMdvVupw+&qH>FIJIePxM1=uf_Ll&E`JG@=$pX4Ld{JCPNJFv0@{ z@z|r?exb?r^kO|329uvK7iL|P#A+u2saNOs@Lgbd!Gm8S0Wh2bMgXygsPB4rvPk)C z?dE(>J2`=3Tp#}*Y6wN)A~dN)@n0G70W^*<25n&SROfGpV9}=Wct4Cw^Lzn_{J;r$ zeQ0`xu<+$KnSNpr7fyj`H7+fa#+x_vh-p8F-#Mx{52w8lDu5j4aDeDzj z;zVGk5yAr$NB<uq{h@Nr2l&K#|mQNQJ;)*c?-J{Q6k{%TuoZoj!}0( zhUB%pm=6cL2WPLUO^}_72hKE1)sh*c9m*C-@-p--B|n%_Ae5I27A><*JX(~@SG34f z#atmyOlzL!PF2%uV>q90PVbVBNe?DE&f|$eU#9L%AY8<#AYSYc{WM(Wpw?u2Ie)$c zrBtr0ax9Sh-8ipcc+UA+IJ zqt6k923X#J(})TJ&NVR&vlc9}BCnxluO;(}Y7#MtJXaM?Z7nBLRLu~iF^ZG9G*b#5@|8FDcp#LrTTk2dU7b9}&Co^jvrzO=tP;l}Zz$gKJBJf zvgCI%mFj?wCX0Zg2Zc2KkWCG9jIjpFX{6FKE0V)Kf1I=<`d38_?H+4C7a4ykI+=Fw z1k};0wq9-Ql$Km)@WCyR=ls@6-)v%^V5!3HFBQLu<@J&mu2Hi8$*Wy3FUy(NWNMzB zrqT$}k*+a5vyelbU*@HTYZAM?hi`|~QLhQt{G5jM}Ctl*9S1V*ZqbaDgu6awiWk427f@j}VXGw!)& zre=fMl}H^vhHbK6B#Doc`g=%y2ML}oD8?Xrtn9Wp$FVtCdK2?9x*YZyYf=i5ft0!9 zxmrgJk)|(%ER{z;9?6*58;s6}q;AH>u~Z3;2P36vU44`k&&$$V%%J{4p2not@9wlO zckef_H393Hw1P%EKgXEwe=>PcVqRFxEb?*@Fud#Cq<$r`J!u&zx57N0XyojNn_2&)OnmY!wO zB^DbC4Phz&nz|iHCX)EiHeaLg3g&(1Hwp%e1e%{u6K6??o7~mhYq(SC%%!WYpS_}$|^SJ!HD_$o%}QVkE0(+3KIH`n#rW! z^yFSnif5@c9(qX{sr`JPs99e4pvz^~Sl#ZLJ0csK@j`Pi%Bb1w1M1$6aGWu%>Z4YP zwH)2)MShw?I`#-ve}5dvcmc5BJ<0x*I9`v8={}5_GTNGb2 zslM1dIT)PkXkA@;24mfrUb*q&SrtC{AMH{g2ej)SFOuNXx1v!P{vP4FO+!1pq7J(1 zK&6Tb7pby~m9u>?!K}FfpQOZDE|N5%n*-+OHPJ8hZ-zla>Ob+*⪻w1 z9jR%G&1@Bp;Hd{4H~H@Mv*vHX-Zcg_jlMK#0v0iPw6EIcRxc3PwmkfH@SFbT$!rE~OsvX&sH zEX!~CQ|C3geoF2#>2fq1Xc$VVD>G;|!{na!#TQaRt4qp-2QzZ>IVDle^%I*ar)o?a z4Dlrm?3bz ze!<5Ia$4usw#mv?Y_FW4$w#^o_uktC>U%qCh1EV25ZlE=4shls3ywzoUd0u6Prw)4IR>Ot?%Q1!4kB5T)<+o%Z0g|=zD<+WyaIU^r z=pPnp&G_|m@TZOU%WN#Cnb`~*>=@e{s86e1GHyY2tsdVluBiBL&jW=)9V>S1rwDaT z%8$jRrU7#sM#DYM3j4Ch1B;5FpU$xQd+O@q%?soRm=lf#2aVOvY9KobkJN)j#W1Jq zq;C@L{EkVQAh%kE_SE3w?Qf2jwPHF;)ouays+!^lwk1s+Hb2F2W3dKPu?M{u9c#aO z2}OOn4u~vTfqDZyPllJ2H3!mn@=@~=JjvFmYMkUVsWaxzTM7E|@^-q8(-1UuKPU4C zS&AToQHjgYz!R)Vfmd0m72~q$YrwRBNe8tG>s2-`Wouvsgvy#Jym%GZ(s z7YobH_(Dn1z|>YAZs}@&=UOcUU-jT{`Go&*mGCFGqUOgF5KgG)v|nT60Cg|cut!Ej zahb{_*}c(}MVSem-B)2IxMlihQh$(@C@yf> zcQSJTbs?KywCX_TLySR~g(w;K`hmDp^QA(=UN!2Y1(o>JYxX1ski}>~fYJWWjLXjr z&6=?D8ho-H_yDDQ#B0sT3*|X>j38=ZBS}ly68&jv;&_;Z-ssrn%^mHYId2K1){*1}~1*d^uvE@`S zXQk>hLE3!n?F#L2F-+!HXHH0pzpBSSR}VTYq>a6Mq*7PNW(%(gTi9#6NWzqCI^@^Z z>XFiHoXFK4zNNG|IwTEN@7`c9S*u)7h+H~Xvs{TQtbNDL)DMvY_TFHhk_KR^6#~@f zPngOIN{oRv?tBB;c4I*f;#jJ>s?G-+7ylK4uxvnfZpKB6gRvBPm@IEY--Do8Fvv;zfCGCi~ThDgWJJR zd1-JvpOH#bTOI;8l7S`Z#DisoVt}XZ`LQsmoO;6FqY5YO{x(1hHp+9X=w$H8U@&kNP?BHkhSXg&; z{xv<+foIRu(oMWPv5&_wDF}{!q965C?($JH&(;b+x7z=dnRXB97))ygagz@(G^^U> znO^Tw!XNQ(V9?r%s7h;J`m!KfP*}(&yI{R4>Bl6nD{pY_r(C~^#V9I+hw6BE6c1e9bfJiZr<+XJy6Jq1gnEGdv{u+Q(XijQIH-xn^ib1MJa%6IT zAIm!JsAIc=V;D|HD}4T~MO{%iAlI+Df3tSDx#o*vO$!O;HKt1`S$zGTpIuNRLlMS0 zRf2rER9<{zrH7*CS}xv;{*JFL`ZZzt$j=O!2r<+yF8h`=U)G#f^V3J3(|@ukt2uPt zNWA1eA@fd{x-3sLAG|G{j!m<=x0&o8j~vm`sDFyAd>IJ=-}O0Q;1$>mbj11iNo*A? zrWI@=^6 z6D;hG-t|S&@TqB33ckcc@(w7k({!o~5xt;=Cp?j zi&jZCY^=9>l%wklH7?@j8rtRVvUw6K151D9X|tpy;fo)ir3QPH4jUp>A10^{3QkT? z^|L4ArswE|#j98oskb{OTT5gRI&Ha%eyFzOb@WId?r1$Gs>{uhK29*t8Bbom{unMX zd(O^3RxWBCW)}iNn)AW^L!1L)1RX1D0@A5L82Cw4YFmkVoz+6U?e)oq{npS+L`08^ zSz|034VTUSjm+sc7;N&tvk@KCv5{|P4ls2LCvs{vExO|BVL z{_nX^P$3l@1g=aF|DFD~yEYXBbWE}R5Bn0h)aX@WF+HScaSO5Lu*zm?+Rlo)`u57x zzAa;~mzM)NJTO(B{XQPJP{5NhYEAfqWyIG926KY;EP6z3I80NF4@=?Af>z=3LFpLT z8O2stZqzzP8ziKkQbM0W<*D-Y7UT4n=YDg4q?eSKSHKyKi%J3vu_Fv%G)lE9Tog-) zGCIXwl>{BJ6pE45`LG6h#Oa^=4u;Yv!n8+mxX0z5w_wS2c zMel4>yA}x&)0>rnQaTa`{Yxhs`mP_=k2z~@4UWAPl2m%KR|Xci`p!!epMUEGDGP9j zc04@A0pOkY!1Se+MRX1%73(sG?T0Ll>+RK- z&cs}ns@8a`4(C}2x1nc#5Hpbw>Mtj(=Np))rM~E% zhVf4CcJ|(#CMeZ99{k+N4U6TcP?P&IxnHD}V`|lHvAkmF*o=05FlTnm<(?FN#c&w} zrCF!Ud63g4Y+mncGC(+Zj%{H8bi&Td; zf%kJ(9_C3tM5O_pJqwS32PbKP-c`!W$+bdmfVFiK?oSx$#y88jyI56-mzYkgYyn~gnDZYW@-X2OWkP#t7D-yp zO5-}enB8uV)H0q*#Has}CO6^72wlP`HS^U<07c2xj|fgw z5;jgFxj>7eqo8VS9w*YhK6KnCaY`4%cz#Y2Yt*4Z7%>4uPfy?BwZ>FH{^=NA5JKC5 zj|=ImFIcD?VCc=wIt>fo*WmPyZVrqqu71Bs83LUfGQrBvFA(=#61zcflT=}Tj8kM^19QKdrz zdj-a^!)4!JjLVF&a0Zy{^hT3ko}Hzz*}v^H>H|EO2FxL7uT+@8Q^7(=ihTOBxPiIs zXwaQQ`AabO*-^Gj(H1GgrjYd6s{5kumj=4#eo(7z^UYPJ%bTjQ!VmAi9=BhOX~|J? zKj=R-`yobdbu_xkb1;&WN?o%$=P0y37n<;O2A4^He~_!!EXWTtq!R<28mGJ=B46tc zZ?#$ZF_ z+ZA@G)qEM6LZK6^Opk8qnlGj6qcfjzx+^whC`1{okzH)Aa;V4ENF)&u>RObn{z_LO zR)HQlvKoMS>;ZV^VV=jks$uTi-J&u%i!cdTC{eMtt29c{(C&R0QXg7&NCJenPxg!e zYSq=M@HpKnNdH&0#o4Qyl_6J5H~vXtQhmhk;@rW+G~6WIgtxWeN)jJbNM!JCQdpJBrzv z8Nb18YgsH4 z@v2z{P4G0P9{~YY<1~5;4;TWSSMUb$rS{cSPPMc&F^IZo$;}lckfh7+hUx|rGwd=7 z^nJ6~)o$H!@Icz35;}(=DXiAtEawx_@YEGD9oOEy3w(!_)EJ+Ar@M|FJ)wuTD2ZY! z$IbT@>~%h%L3)gmpssQQVhaiPRp6V&Uf1WalxHN0;sv)+sq+mL`maud->bbq2u5-$ z#>2?KziBVGlnC=^_&J9qOH(~kB3_S~nI1~ALe)G=G~Apbt=x3TJRW^)LStwu=5Cwrbm$4eRq!8u#tcZ65PzcOATJ>DHH;zsuIcUr`#P4_24)u-Z<^>v!eHn!}l*zxbVHM8N=fk*|}D{+CI5 zA9b)dERcAvOK-auPn&Jmx`Kj*_>xsv!NwHA*944WLrCxclKBAy)6!&jP`?+w(p_)A zTl~GC6aB43{Xy-#%xHVnD$NtS{DghpEUwsQVf>m#Nf|>jKl^6BdEzZGkYNo= zA>#Unnq3$J*|S0QIw+(yl8o+fg5lt8pKtGeGd3T92ExxsQvVqYg84)Z@Ftwb*$oU| zARu|5@=bV1U;P~r;Q|9i0}LQv`uyW5JzfCz=r_X&IDY__oR80ArU|J70;f_g7z;T3#-5L3CQNwmFy##4`0R$9mGz;lm~Gv>v9c@29Fw z#}AuMhm^HFnSvL)>WX4g6g(p7*aryNfHl9ZFbvqr-Q(m4Gpm;?l>mR+NBhjG(SkjH?V(}bg zx6x;K9}#G^7nqrYI;KRJ0)$HNB0hnKFdpv`z$i)w1_}tzNG5(V!^j2tfIrL|IdzcE zDJwftZoP@MjZ9AFFdj;IFQ1DYPn<0-CN?)W_i6BERG5ItD)hq442P_#g4h(}v*1JDAF+~$j?ZGlG{S*oR^a{7#(*N zROcuf3cA7xXj|{PaCNH#avx_n!v(g-Bh<8K@t;dIf_;gbYVXqtsk?W8RBw zj}X4qJ(!wOl7AVjfO&jP`*=dT$!XAA?P|ppnUq;7DBjOPb<}cOdag9HrTg`~#M+aR zhi6%MCHc7uMy0Ar3g`8DbT0Z*6Itus<&t}uKrM1s^I%^Jpg9#_mE^J)0?P-=TgdiD zDl|22okiPjygI8zG$QJ<&!0c*UWioXqp@Ben+tiXEb8?=%d}maxP(9mvUr~&9Ggo6i_6z7ZKqr@a z)hphvAfY-dBGI~#{ zne?1Bx3<@HP65S6gZdHRJ2NxUu*~$-y-2sI<-s!GJ-j1T zQGvGSd93$vZf)I?+fQHEuj1F@R;R~Pfv;=GNv(+YD_wO}PZ24ajbT5ln+-PDQq z$)H)UN(w|+!+^Jp*DT(ZJkK{dW$-K(lB%&4_|Q+(x<#C}p@`JLxCB+ethl)*$(zzv zi9ge5;YSJIOJ@%A0*ZxFz(voP%JmjGU1y>C`^4Q;z3p15ff$2gwd$Zn58y^noB_G7 z=Yc{50|8*ke7I3G|56lfMlF-ZpL&W%NYYwMqYv*0ir_mf-&`xQAn|kJZrN7(`|69d zkq6Iv8^DKRCYr%q<2rAIXL#4-$IKAywIlOX2Ya){Gn%4hQ)?rnaJf&ByVmO_H(iA*JY-R2WM%89dii~qzhe~@#v$~l_d@qZ>loF$kcplv`c%4SD-w31qUdR5WjoD5yAAzup?Hq3mjdQ zPw3@^CcTVCYLt~zNig$N1fkKtx}soo^vbCmFQ%_Eb6W2Yti>Ccn35cGv*=#j0Qx8t z3qj$ga6ASW!rwU(6dxZ=C?$A`l@TL`+0H&hi#QR}B6DR-BK53-!MD2Ueq2*!XZ&wA zSL5SibcoYRm<^1L)fLZj#N!7V(>+c^)zy<-dx5iwxB|Pi$FJqTcMG09n;UYL7CfVk z)o6BCN++8|T))x)_fBzEKiNqIDM%fuonjVgZlIic8LCIk#9nT?Oq+$ePRKd=3)qST zN$^sau7QvG?@oE&zz6=Q2F38)pUID7%kzl`DSEud$dybsnyR)ZW_L|68^xpi8K&B` zO`JFQWqGv*f2mLxk=aUc#-rn*0GQnzbH(KmA z#LD4}MUAP6#{H|5rSM(XQQzZ?D#@3LNd^^Ph@N2-H{4fz)hsB6oEJ*xUcFfD44JAR zWn4T{5XWwSa~YSnREka;PUSFWuN$;ugSVEO!e<3Em+`?#@3;9H;`+c4g?1Z_Fq6Uu2sIj@R3h7>n7`r32LZypikJLYDS&^>Ku0me z{(zu%VjZ;2e1kq~s+dPEopv^>*XOMw`i&Z=RidmWU!MQl&2&tZNLLim`Ui~0+1C6$ zuyxzaaUEM+v>fE(ZqhZPTqDgEy{_H>>WqOA5PO*QGwe& zXlfv@y^^}@PfY%*2syD=rh*c4IJc9^+BI+Q@pDD7^);K_m{bDjIU+ac-P#b))E_Rr zA20P1h9?I4=!Mf+ZBFA-X3}G7Fn|^T-gOxI=diFOM_=&&l_GZZ2xJ9fzmAQoPAqK^ zqheoQ$VeeH_q$o+^z)00T!zH$p+yxjYR}->Gx&&Fwusr!6IekU1Fuc1atA9&Gu1Qe zONYH)aU&f^TS^jxV?{r>+I~LZ=}=zMVPzGA9mgpxE;o1+x4Ho z0xsOA!H2DBbF9w``NI5lmtWrQV2~es%It@1QB`$YBuF?vNuMMAA40zs3@Tq z*gWbF_x!uOCEQOe$)`?%h#MFctp5V%f6t>D*khJpl-EB`{?2y}4g?-?82%3<0x^Mr zty*LZ`Cr@c`y0UIC^+o$=o`WP!AI8OyJlDD1xnR^FZgGQ20 zWP4&FFBO~tS1l1{`-kU$C$c32vcMY03_$bcU!(V%Fj8r)5DfA?PxAp33% zp3ncM!XSsLqxtufPw3ch-ozw#ng3E-063s0KuAKuFGR1U&q&(-C)Cm7BV?yYLN23o zRY8P;REJq-Fn{f35!=dVw*YeNXT@Q$O5u$VSMSLOFu6doPZQ+EV1mDQNao9^ho`*~ zqQVP&6iiOn2puk~OP`MpMDKhHmrdl0Q#58U)}@`1%woM%Z_BT>QNI?(!QE(AcL2leP9D4?8BL>tAl}F8(7xAQ8yydv?8Uc1HyA zy1$8~R4&zOrXaUVxjE^`(B{Z`84K*gcLb0n{xw0%Cvg{f4ux7^a=lIw@Xq*phJrwA zBSN|q=t)I9?GgeEpCVj>cVMYzLwYs#Sb$Mj?^t)Q9&3J>t?dNx&J` zJ92=W+4W={9*As`7<;K!V1TV~LAoNp?w8QxVI;|=@C{U`=8b%3b<7tM+~RVadA#Cy z@wuQc*!3e}FI@Iyx6-vb>GEojS6r*0T@T2_(kzOLcHj$dA(}{0t6&#DV|8_tR3g0~ zX2Jpxi51+~Bx1ot1^P6RMfa#lNZLT59yl1@k?a1`^a>cM(LDzgme&GKAUm^DU@f``&NL|J6>Wrv zOK9lgS13S~+5&v8w?tCLC^D0w!9x+@d(sK@8Lx$;k^CGGXBl3>SfKvYG<|^{yN?>k zm^qIv_)v#JM4hg&QO-hB^W;Nyys~l6BhgGD5^EmdFEINv(RV6zUciif@;Sy?^oV8C zuDAK9)j1x4d1@SmBBB6QIb^;nAjd+syCy2tnE5R;^pV=&rYm52ecfjg*nt>o1ds50 zCW5y>c88P*@|vHNLXEoxy&&FC8aY}%*oX8w8u8hCCbGBa)=-f`4#^j%iIW1~|4B5M zinR6c)0AzBzUI^ELlKdKB4A;3Sa6)?8BRFfI9?NFe>Myt`zVaOScMsH=0lbP1oSBAGHm)F-O@V*!GA+ibX#(dIZsVdl#rp-{@v z>W{CtJZW35%9ihP-)D47CdW0qp0?hfmu+;YMcc!{kOEL6uv2d4cl)pS$MW&Cmcs)M zsEO+FsYT;u-tr+X3?wY}xf-_9lS)Njk=a5#5+>Wa{Zh5c92?=f+rGODqq>|z%X%rh z8itye#!Q|9(v7~*xAPoZ1C*x}XA9M*RfCCi^82!DH{13cCGBM-r>UxjUyIK1Y9(p! zAWgwp93TTK*d{EJH@N^5MWep7kvBSrcs=~eiMP^h(3{~rZP*gv;raFBMKArc{jVI5 z#2{f0nDNub*QaqNrJgwrZi{KmTg(iHYgg~dBpTf~xEBBa+at^iLjU0B0Fu{vKoJpv z!ty$Pp$bJ^#yyq#&?~*3F0IS15tjIY==9Q?=V&8-gA{KQx05Y1Q}|P2>aqh!E!h-x zj9iL|U|MM~F-MJCvE1sy!7(Z|G0(JN*2@lDpDZz1G!;%PWV{>IWIE+7e@(m?&nC6O z!NRQi%GxR@D@$KUSJ#G!n!Ta4!mQS0VxZyKoO|J=?*S9_oILK!#Thpd&iTo%I_U5I z7qmyNRYmf92UNv{=OC7SWe6>%XYo3t_-Ln@bUD@jO6vRYc%sccS4l=B z8Iml!8j3Z1$HjBEGL1CHB!BS-L742xyx1iHDgj-v2g zFH`8C=G>>7-MkuKrJxpW+Y6>?oGMo@-zg0&36ZU`(&1in)+W%pZkE?x(s_-2A?)JP zi7)c{9z^>`OD7fw;*}{cZG@i1miGQ#x8~*+=uAQLtr*zzOyqN%pAs;qAC)Jc`mHMX z*bM}Y23tZm)ZU`G!ND8<zMRa`R1^L1WcWJ^A^hObe*lQ8IS&c|k_C#j$j49i+|PF$}pG~5lcoiXuAE? z^KsU=6V=l0Cn+faG9zpRl~n&ncQQ1k?aY2k4%bn0jPj>w4*Ux#h}<}XTcoXgvkQmn zz6M*X&uZn(F1eSL2cHl~%+%h`mlW1URdz3asnl?-P(#(EfZR<+m@ZPW9en>HL78pZ zEua{gQjd%Is?*PWiN;FN+P49T(?y_8O@Mlt)&+0X04VfO(9w{-YLY!w_s9E2Ecnk6 zK|sA1{#omObicX$a8R7|dUkDhtU{ljXZC0}wUSPs2=2XFGOq9mNm z=%0F@Q}(`ld#i~9xm39kdxvgZv+o?s>ZB+71Aut2-i&Ti77W+5@yU!nYE!8xA(=Sm z2k7#auhno_31{t>mGeWiEG?WA7~fc%j!IF}EL8SgTgYFu)q<9uoew7=t*4>q89i@X0xL2=w?^EztL@bmkDj)D`DOlv0>rRtITUS@H4BkIaa3 zH05p~$D%Agdd-lgItBCBXZt-lLQw+-QJ3OHHkOLBohRngpp+`0ak%n+awpeuj^=Wx zH)+%EoTld#tG$xe;fO*wQYoUUZPr9dX=t8F-2k?12q(R^^iQ2hAsAhBaz8cNZR|hQ(|r3k?>pL+%u+BfW~1%(=D7^Rjg2lgC72ws4bo z=QwIo6wh&!6-tlBzLNu~-KNAjC}F|Q%z%FJftcwu5j&o)%sb_+4U^m93zK$BI>XXI zC+BZUZn)@|43pMyiV>-_ML>$iskwZ&IYaV?-RoWBN%mR?tTQuv3ZR5Y7RN!ziSV!V zCZR-Zj4X5830y?RAsRRjosu3)M)xudmV=>qmr=dtq<@zfSLyJK_R3tTrCp!hhKawu z`oI{2V-Sxjse|_AMLhBZe!8JaYg!AWY$r_~Lzzv#`}y#0l2g8>)x}p2;ZA&v;RVf{ z7hcXEYFlb*Ci*=ybv|mw&$WoV=jBl5{g|Fz(%dkKFN5!^W>LtS%_%bGU|1;V2}V+z zHY$SIlq_;)ji0QUz@P3D7vmDjZ!$UTFnQQ3tuj1ghh{;YoW~wp+ex!i{@C@v@$6gnpCd{dt8vqN2JwdlM}05Q5DCh${uSWgG{O1O$-o8q zu)1*IopRzUbM-2v%2j>Fdq!bC9TqumIEyb8vo56Et)`jSe?6BQ3wi-MC?`c!_h{n% z1X@H>JNU?@**{b~3vw#g&#IU|9eGz-t4ev&V}$Xl`P)*IXpw;~|3~XBnP<`*Tq5%l z-3RYOPlkc!o1{~fy`E+yi!#&Ejy>+PjW7EXHR6^x=S{6pmxofrWpC>>@*Fkdk}1a2 zbA*74d6=DfMmRq5|B4_0wE@KPE%Sg!F((nL|HfFe;k$>3}qw_vIUTo3(mE92TJ{zh(UeA@HpAapW< z`o!C%XM%f`odItw4i_uMYqQB%qVwII*&K4xOqb%CKwX@926(jEB^-AFR`&n413X1< zZOK5bF*)EdwuM-^mpK+zy?~01dLA@--qa~;Q7h*=@<7)W<<#%&TQRG*E$}k??uRdO z>E$$656A=^?eMSo!ECAHVjz~ZI1ax4dMkI4W-Z_FNWW_e|2Rmggsv@WM^k2 z%hsH9FJ68Db0B{(sj=r?*HhPKPuo~)katJT~&()a%+}*Y3=T&5iV$7I(`Rs`<-ddK;<vU0*kkCl{1R;ztWJ;BZOTkb{&P}LEy2DP3Ipw6T4XGa_F8--k35}6$dP$7T}6?y;V$;|ZawYrJiUP|NAg74 zGRsrRvkdjDCq}c3f%Ika+2*^t{Jn24>mhw#k^F*vy!g^vCtbx>pr1FlMx(klNI_3p zty`thwMd$LmjB$>fJmn4dcAiLRFTO|P{xx)3MXLW-k#a*+D>olhR%yO$aB+9P{MMR&noma93ru2#F=_grU5wK6-QLGZxX ze*tHHFj9+CRlEKMs(_d9cF+DOY5TrY^_QvVU1!iw7JY}U)yd%!63s@}Nw?movKuWF z2v-gL<^7ru+FZVR({%~xQqXMr(ZpC(r{G|c91Cn7KcNFX=r+vYWG#?jV@176_V(Pl zi;wy!gO{2Ac#|GlvJ?uX1@_A-fVA92p5!PW;)~)Mmt5H{dPvH%gO=wYf%*r~mITfQ zp<+*hhmsQc(w5!{2^3rp@9s3)o+hbUrFb|V$Pr5%4fJ?3Q&UQNA_<{SROG{T#l}m!EF4j<~H~MtX5Xt(@tcC@@ zlX|ipP+{S1D@AAvh-Qc zal2M#y76Muv-`$yh1BLVTjL|hM+@Dl3J*j&|BLrA{XFVttzXZVN`3Xc&s(+gU8*-n zZy)acj-$UOks;qNm2p3Kt9#Wfwr0o@3vC(>Rc&gzQ+Rg@Z)uLjdZQP)5@q~43Pyt? zMTWfmq#qRLWo~a9SE+u0O;%72O+~Y$u1!m`(znPnWe&2B3k9h;hHQVS#h{~C;}Qb8 zbP4GJ4=UUhJ_SDRG5`xv2_>0a>j>DI2o zK=lfLYdvt}Qkf&kFnq4snYXXAj|RWvYA$Mc(}io z$0ur3PW`O;p82U+=qGT6;o!^X7flP9U&4X@T?!c$Ln$Wp~m$=JYS#d{ke z8&%h;(hmf!e8R-JyV#NHJ)$0+7G#sgf$lBRP;-wHm$yUKxN|w>c_6PcMjh^Ad3Hj9 z9#cA?{y@$wd&QCsu#&GWB42oqz*|PI2K@xC9fSIGb?Jt&$N`h$F z&i3-aMh0U_Cl~>HHNjlOyX1c30c>m0S$-^|pcFyoSfu<3q;S1yV;dRqf zC@1s6OZznHfD&!|yijN#JZjMjxWKQ=pTdPX0M$SDtt!(9iQ*I2u#oV7KQ7^vQH7K5rPC~elH&TxXE!gJu&X4yK z`Un;Z!Ar%gE;~8@FK!4`t5l890a(wi>YR50&i;>*95x0Ncjg?s|F*H{cSASNlDbuQ zZpR*@hMA+1Q|JEgjvy1(O2Gq_)(g%y&M** zg3M;U6E^upN0Bl(>YwXKi6)RX>7;$8hhr^0Hu7$_h*lK{ExJr5B^AsDaEEI zWsi&GRW0WeGNuS=FRM#uYkFtr3rt_^vN#nZf^2A><)z)p@6J|`m6a-w+hMZyU0Mtd zOFrPxLBo*}LV{aF0^&$#GzsvTm8l+&Tir#O4Z^Ypr_RTI8$alyw|K%Ya9%?N2@;xj z7Fin}S(tfv9*t&M0oPs2Jmea3(c5L}SZ>a1A26H@93F>+t}AuCG!;K3q+_F0KtZ9v zMFMmXJa!wGX+Ds4)S9X_I}YA-4iVa0+Z(aY31%=k6qocKmL|>4>=#wT*3znK&u^G& z$*jyNzm_Iqsr-&FPjZu}Q>A48bUg?!oaHeve+(N6UX1t6s8PaM>|VTQluq}e$)4Lz zf%5{Mv-<}CkrDsK7R=p46j~Lk56{Y|#ctOTTIYSm?+XPrWHc06yshs?ZwL;kaM)hV zMdrF)(|@a+3;P*1Ll16}mW%Uo&!Z%*UL;=tE*wRT2*PqCJ(p&=X3wlLrjo%MbbF_+ z#ju5$A96Pfzh5lH{uyI5Fbud`wDJ9=lR{aP6$peRA}0;D<%KZCy`WZ**KFRAd!EsC zOvja6o=49Ol95i}w$zgPbk+`XdEdV_} z7AQ8inS)8oB{+=3_tK*U{f$qbWTk7RuiHCbq z_ufx8Ukt^_18jlc-Y_qeJ#e_Rz{VprjP6KwbOQgl$0jH{J7^R|gczz4&h?{HL!_&? z6z1UlX91NskBhPHs@zR%Y_cm2gI4cP$HBtp-2V?>Zvj|MLApg6 zq`SLYk?!u4?(UFMy1PWWyX!kweSP2G|6AX;*41^_Ioxyh*)w})_A~R$d29(t)s;9O z@Gmr#5!l(DF}!hlSYt5CfR8^b@!pDX;6Fc%;+-}{i0K0|XzVc8MJBj11yCY{}QHM%G?skfa@iMz?&-%Z(=RJlUw zTi#dC0JxrLvH*=%%fLe=2P1!u2IwWc=3TO_d=K&z4#w8RVc88-GKLdnllO-2KH`LC1Nk(2~e zmL?VT;!T`(zZY3@zqo3dBZKX$1sGWKk^{6t@CcYEbAbx+DEouoWzzz~a-aVy$@P91 zaeUgT-)oP$DOf#XGYdhwnJsiWQG80dYv+D@H`Y$a*|o9aP5)55BN+N!z0x)D-b4^b9!z^AVg!mEbm#>op@G%`D7=kk ztZ4py%F+O%4jq5-kWpFt>KuPrd18EVs>^nINS-&Ko)0*Br$wY zfrL)=dr0OR5)qf`iw;o1*~k_jV(az3-6hHB?=^g7JKx1xso&`5q!D(`F=dvYhFE&R z`MYo&7`74^hv8L&HKkX)RYRO3o!>pJomuuO1#+iTR=o%Wuyl0x)lw;S=1Y1VkIrt& z{lltmmq%p^<+TX0aoeyR)hq*bWsWpvSMQv5XX~h&Yt|eJ59YI!Ygi0-CWb@zCr=U+ zG@J6d=7jof>RJ}w)5b5nbx+0fnCYT02tRbwKH>$tDM zR>XE7tp;DgLdxw}VxN?IByB{u`n%}RhUkkIvi36RNYnM&&rx&Tvg{4K4mOk4xh^Nf$F&TS$sZ)fSct0G=3{a@G$AE#-1FJ* zFyOsiHbo)4NZo0S?_7)?PcAhVSq@3n$_z4}-^mbKkj0luu;oP1?bpjl!=5Y50pJ6v zMJx$F9`IHLtaG9uue0F{@9VS9k;f75R>uc`USsgP20xG;Vp=3XTv1K}LoX$=$T*%q zPGMn6Lu1Y3do^oQ{=qSGK>CzLR9lqt%4$(Ei@iBke1ZYaOU8QPpRF2PB1S0zX@~c`Ed?3kQook)BkCL zio9_zGV&CQLVwQ1;8}B2##yUi|75}n{l)rM+y+D}1>5ppacU;mjs0_$?CQy^^S;zY z=WPElb?!V^j2mI!*VbN`YHJu(SJ3!Tz+Ro~=v>ReJ#S8jU#Renr?|UT;amPEorI`E z2e$DNK-?D9U~zwxiTSm823LBazGCs}kHrH@rLjfOYp-(|yso`h9>kaYnh9~IYo=YwXs{%z|tu z-7vMUM)(W8;g_;1)b_K-3U!>M+y)jS$-&6t*pSyE3Y+rGQRqZASM^T|_*eJtVksr6_T=E4B_;z>Ihn%*O>NAsYoSc_-#T9S1I`}^)y09kc4f_|0h~v)aAuI| zn`6`*8SSe&u383XJ=ISb;JwECq>d-oT2>+aHv5*Vl!3#v=EZu&_Q&adtTr2A#fm3xJtL(KddaT6+ZPR~b| zPau~N1$BcuIZygu7(G!IIO*bnHD>H>yV*@@7=qy6qb3KHX>-{g&UouCUF_Bs+LJju_e*V)GSGX1 znIvru)%@hCXa>kh7mO^js^ky-horEb$Sg#WM4-jCZE)QpyxxEbE|SqYMhiPvmZS&F zI=Fy=nNNs?8Z4gk*T)CB0pCJlk;i#;C6yV8P}w^qB`@Q5fNjCH4m;qZwW+SN6gB3 zq(o#mJT;i2S!v=nI9=QyXlL;6lr`53BzRi1jc)N=9by*4sk4X6dSN-N;9f|Q^X;%` zJPnj!OvROld`Z>5F_4IVvdrmrvi`~?UT_Mav|0=nyC1!}A{(Tulv|n>E`FT0x+gFU z!I^oz{o4BqrrQUo)zyENMEuv>`;ZW6XdvJ{w69Nf6Q_u*oNap(dT&`&zs8ph=4f}b zv*(gl%*Z+PpB5H+dK0*!SsvFR4V+NAYV$yN_mq=HMhb=VWk|s=+f>%aam@4)?r&)% zGQeuE<;&Q)7gBf|k!CY;e#AOLdwb^)Gs@JNM%e|%xEiu*`u(#k(C4g zCKTH@vhZEUCOmGmlssx4ZRLC)Cz2D)3d)*;FY=bR-i1ZEPvF9vrxayf74$MyIX5aK z7aH~ZkIAJtevvTUzHw9%oJL0)dSfPSFx{mO8xT~OlOoQV_q2Huy$N8B|NC(GzG^F; zGERPNPeJT+3|#ty2bH+9-mjygA_nFS;x^1@h0qgJcqLeC?`;W_crBoFTqf!)kJ?YN z(-)*HIGgI*Ot*#!3#GMhr|kI22$eoXv}Cnu6qFFq$8#4wmo&bt@Ed$xye?rYX70Ws zAS!kjG^ULT%nHS-P?y2q4StLd$Xbeosc#J5`iz$cxkt*G3-)Up|mmvlB)OOCflMXihI{p`VE7y@h?`8xTLiJ zpSAAkqzXpjey379Nk&&Lo9ud&50^ir8ahNOS(JEO*se~54c|wY zVqd~fje9`wY!b~b-{)BidH$)xq~#KTo0f)01_;82pI>65#=lD<%6ZP5&qxQvV-u&9 zEIX5AHV?O@_SzpFx6d2p7`%BMjr#_FyM0X1V(_3dH+6kHjuPQv-~`+l`;lWG6I{ii zeIWx4fF7~^^vG5uMyJ(fJn?`-Av5230ofnXF^V@dFzA5!o$3NO7O0&UW}nYO;Fi2LA4x^2O-t=4Z)Zn+s5MnRefWNA zpl4e$p;uwjS2~LXd?dpoZ@POdxP{DpGr%k_OC0G0R;R1)Nj7H44X%6BSXiyG)tu#~ z+TJ!lOY(a|<)g^|C4=e^N7iOHRcVduNaZocJ@oS^hSt0ODUAgEsto-67Unexg#0iT zgJz?{&2FxgN_&ePU1m_sQIq!~?+UO@Of3M&h62Lqzp9jdB-cuuqLa1N3MH25@W0>R z#7*&+Q4d#*GT}v3(asOD8#Q8YO$gTwK@Z8RWaJs%pofodnCJ(&2HsNIW^2F*OLmlI zSGOr(nab4wk+Nt^N3A(W(+WTDJ&dz#8rz#%mrg%efC7h0?dGEVtLJOvH0XSCELzX} zEVyJS;FU1oKCIJ>??ZH-om1)uc?LH10UL_fm=MlRl_lTUUp=7? zaFqa-@eHm(*G6Lt=mGB7w5+{O05F+ z^7&?uoe=H_c%{7rwn+y1ixnfat50TPd)@}6cr9lrhoO@iCUs$qvnEUIp_A5c8rgZdRdr+rn} zE!nQXL%|1R@>8YGG&J({hWTVth@;1U5+v4o&d#$;8|GO=}#A z_Y7wukEZ}9a;tnfoYy;Zl^kaPbrBzZtV~Z-U^#2&*tzds;~e0CBzlJkXDtIP&Ql30qZ&)Z$#(m~ zH;E$1H|q#{D>pyaE}Gt-HtJSu7eNsr!#nvD!D4te~&*TwD>E=Rd`tL;=t7f`K*j0G8E)vmCd zWs99GDE7Ld{-o#gTvfeNyu3oRKih*i&m?Niok39ZU_+O=0Vp=yOEdN9BBDLfk{&gp zWMH=LaHa4`Pw`N;gKk7m>f;#E4*<-(jQl|XLQV8(XTX6ycxo7w+qJX1+@Etd@_IPG zL3${b2TIGkqdOMwHhb(E(D4WOA(URDO?5RC(~xN<(tgx>Y;dk)n5wk!+1SeoH)t_1 z;eP2?-Lgq173bXCokFuSd=^co>P1Pi6hk&_ZuUWdh!;pFr2*6`H3~EcHFUbC5=_#p zQr1Cx7K%n!y=5Rh0gkd;V9>4kZl({LB>QNMIA5EqE*;j({87>F# zH;(q#4&^21nu3J9^yeVo_18ZxMXsLoKIyja-sBvCBW%FO(Q z2cP-Xja&u*mIL(kz;)h6&fS>7Us$0?>x#j?jRVYG6f$vIXmN10vc=|1_mS@V$U_hh z^=-n%3s^;mrYBLxr*2XmO+ZKln>Vje=M^WrCf6~6==5J7NDgp6X17gXd|#n3dIEH6 z-9X$nlh@~rfelc;E+~x4=_fd8wtwP7c`(J6>phpB04r=_2%uA>dTjiKDHNpaS&;v| z=v#oKi5U0lf*4r=(w`Iu))I}Y%_JqW;6H^5$n3rag(j)|y8O>^-s-%9tfIt$<%K7- z0;e5*ZEwK4<6cm9g?7!(eH2>XA=(-&BOd5|O2@@lcPkk+M#tSri5T)Fue$@Fg9rtJ zqZz-g5xAlDpWg#H8lb}8(Eqg33uwl5dZQJtGEctL;>z+hKg<=({^)JqsavpWJ{#r+ zOeM4Bd`+Q39#IzBrK|3%e;-Al2_;Zb1ozQ6YVjk>$DF?5=V_k(e8_Z`GI8>`1b4U;%y$!f$@d?}-@? z6A-4JzaC}CxZbF4I|=rat=A^n#C3!uN!(!M89${C_<(a%TM!`<@ZYEK5h(bBxMbC_ z?hXXF-vlzWG2fIhw3)PwuIhfl07*lhrZfMdzHVyD{zt!njnFmfal!UCc0bDikN$*+ zyYWRAgl0k<;MvF_Ts8U{Ps}jwz=V*01>c<}AdIq`FJ{A0oI(Y>^5dYi)*%NZTE|5>b4NMh}dxbBUk&aKF(~mN8xgVs z6hG8(pPQ2hKsQ|gj{x|fBpY%)WYGIGpB99T6k6A-AeVUOpBH;G<(kdpzQl!m)|*(| zkX9H=Paz1siE1boc=+7K*uUB=RiSOK+{LIY$4lV3Z){ofs$kcl%Q?Z%A_1imM32Td zlYF|Je%wbb3Vhuw084thRD+6LEbqB*H_)oZFVG_Wjcs-d4$4xHH9ICb%AXA;D>YXT z0YM%xNfOdT#ixzNUS)UL?N=_!s3XrO0J9R~v--%)*D%oN(h)gIjwefm><)Pv7vDm- zk@m*x-UVg6lEVi@A@Lc?64kv;5)L4*QBbhf{Mn%ttR-b?5afh>3>dOYvQ9R@A^;6D_{^R%+`Xz+^S_0uEh5S-m9X|K%#1>E$6dfRDkurq?E(+&|?A>yV8uc)^(iegN z{S@-y(D!J_zbz=KmiygE+E*O*d!BNWUwZp3#X-B<73oEJ?E`~1Bfn0&b-Uu1*XJz= z-g8A}hwg$(?svHv4vDoPT6WH-R(HFuMuk@rV^?hqP~R@=y|W(XP=&GkK*{LC+mIMo{-F938up{&L?WVE)1mo z{7LwIZ!DvI%DQlR#Y?>2K%_E%RAKx!nkhAQMf-f5oNOt=YQeQzVd#|QWu2Pa+HX`2 zY!AK=1DOFFK8HNu&VB+vy0j7|)2|ex%7VqL-dK0FA@syE?(e7SAa3d2QPX;g9u{X> zRVSkiTh?~B3zvI5t;q#(tJ_~7*0OO0MO)^HfNAExjjON2>yD;v2anxBY=B}V_v4Ec zl>F9)s^3XPn5VgsQroHgMg<+@3ay*fMT<&ZVdf!!(Iiw0%J9SY>~Uf#_=Rvw)zeZ0 zU+xpCuy{+pCA;4gDDbt%gMqYqjoYF$K(H1kfK(F+QPioUC|H15_A-iNTXH^?ej)Y8 zse{Yu0fu@S*GO~{FtQvmz^rMk)zl)%C8{-unJZ!>K8(vd=UI`uEJUkFhu!L=OTH$z zoiBIEKP8|G*~a?UUkk9au@V`0<_}*(|LzJ@fjSyj1)RS>z57n>ZCP=Yfa=Fm% z8*=P;V=;~w&i6wTQi{`us(5bUOt8Cr*~VL!^W^G;%iT@BW4X^jEg^@RIR#vf6IA5zVO(EYuDg{HmY z=~l2Im(l!`-y7#`Q8)kQHZFr;z6^hYz;%_=KEz?TqJAtJw902NASZs&UP&m9N4cNN`4Y-`XXk@XWSC1Ekd3}r;%dupUS zwSKFHL?GkrSa>@9Y|OJ+NF6cgZge3xKZ5~PB#Zs`sy+gKzlrAiA2-25|0yo;7zo5T zXFy{Tpi9s7e)Y(U7cYj>xHb>3?DF>qxOB7x2AZ^ixNt_9u#HQ5xCYaRb~4f^xI z;wF&t1N5Q>E^qmbL#2RfTiLw1=f+L{`E?~JG86{g?Ho_{G0=-?xyg~niACo%u(IC@ zoLA$W#>X;qRxYmoy9mLHCJ+*$KKSsd=S2?792?gcEfGfCfOW(uq(g8MIa{ec>;}~L z6pBE9vTWHOU(4kZT^42woTdIJk`cFuB*1tWaCm>)26`S{fSJ6Fb|Q-B znk;#_uSfxp_?k@MgL5?Bo55clI)BfWxB+C;<~Ak<9lgoe2!Q$Wct5sSOeBA=?qP=k zdZr2ijag&=x0S1CihyvN36m^e9xlq#&k#&v-ucaO{(r^)N56=|K_p6JdQHS%$jUT$ z#%)t!h5o@L|40MS4d7bniZzLpZ`I#6_fY+RUMM>!I}El0h9w*+I_s}}_~$+^KqN!- zn9tF$fr1I(lK&_-_$vU4zZ-)+C1M0~dH?5Bv=7i56qW#${7;Fq0;*TKU`V;;F)GT!k<6e1htYl)Be3fhG(f?IpJ zsr1RrPzd8Qy^8)pc_0X+C5IMmK?v`W`Mp%fX`q<`4fLC>A z5l9H+XMa9~#LsBv#Rx!?{~Y*x2Ko3oBsmS&&!GD2Z%B&%!9>p>iAL{1MeImN6WkVq zoBg6HxjNH{%etQLjV#&NZxs`tfdu}3IyfN|!Vd!>UTk@eJ^yt)GYD4EN;6GC+8%Rb z|Bi&z)j=3dE&?e1`S({fAmp)9vXAcIF&q;^qV!=?jeU`m?*EZb>LJch00{{m!>{*-1l}i@KzlZ*u6ObZ*M$<&b z?^%Km66kP*RD#-LR_LV6Nxa48qu8rBoTZk0LEe-LKSEm&+oWWrlyYttos`TBH@F06 zl(fYxV`j?i9Mz_RX;qi*Y_AnJIT(WISiKYW^55xu2B8UAk?mNSi3)x|1IW+*6UO)}=oM^FK(N|HR>6_$HeBx_b`BQ7Z~43FP1$ za9b{!4C^FPA$v11bi=w0@$WPcb-;84_l`h-AMXvhK!Cc;vY_VekgBFl&6i-$OUx3y zF*%n0MLNR`ty(#WseocNy^5bDh4Df~KVP&9cLnoNGpdJ`-TovsijR1OM^m&`C2b#v zJ{X8nTL)#Qm(P60N8TgZsz$Z+rHy`v{6Y-nUs(xs&_k$>IgMpPfRDZMZ3&}wXE?^h)M>$%q8gnY5@X~bs z?5;cPINbkUKQ-h;Y4*PwC{3ZM z+;H)n6@M}tb+6Ov3NEe1C=H|r*o*OBmBdgvtShJMkbCh{h)Fb;r3|AN{AaNtSCIPz zTA33xJO@^vZ!bAA$`u~m89TJ&nay78`4~zVFVp&e)z`(>rw{7@N&@+p$bF@JJ{wSc zZ_`_|-HRz}y3`5k)`KV93{7a>LDkKgR0~kcI~-f8y47a*H%f$ST00oeJ7}PTbe#y@PrhvTQy`ov{{2*0%Zqc!o!H8Lt#L#rl@ySlC zzVy)KP*0w)IGW~8h>mZRn89!z&F5poCdYY zN!^igr|c3eR;(@qE%C%_Q^A^BKzTLZpUPKgFU1;DY*O6rXu}LYg-Y>+dqB<@H{>ls6XOaEPL8**F-HX=`g;hTAk_3U-(+^YobhAt%A7n zN^>*JR44ha^>ym9pU0dpl3`Kzx1(iI&i?(rD^EAqOBngZ zY-;@_`R}zP8rr|{9*D%&ejhH~>9vM>+2ncCYQ4e7+B`eCbUe8Hmbp+&ucxSRIZh;K zmGbYbT|+@Ivy00e2DZ6fP~$HOX!l_)%`wyjL=)*`JcBpAvq&z5Qm)zB#(J#NxW>;q zb*bVKwax?7ZJGnemzt07?)bf?48 zxkWq5u-7#JyP8;;ZCuBTe1;X|(jl!(EX+>7&88?f#UH^@n+D<>&C&1v+Jue}(D!ws zClWGr zo$IeuA?1$g!yjtqo$Nukl386$Mz&h^z2DL!y6C$*#49!F^390AVdx7X$x%#CSZvWl zcO->0#cfNu-FlBBCB2?L^gd6FNX!1-Bg=nJbXVSY`nwW|Q1Z{#6cJwOm;b~mqpv^> zGqSVe>j_q&YD8!tfy~cnJ{Si#NY9eO(YFRa)l=nSHhO<9DVvU3&Q5=s9u`g3pjyUd zUX|U)F+8+XWMATcSMV9RioGY^Xgus=>P?$fRei!?IoCV0%7Bf~mGu=&D=kzJy!9`7 zTV=_EicC@ySOgI*adMI&$(3sjB^_m5Pnh*6&gwnuA#Uh@-Ti&?GwkvE(>)~tSHOC& zyaoc{v#nFd4Kml_`&8UqzN|o2UpXTf zNE$y4c}5@R2UDD~4nugiwj|9??Z}c|7|(g^JM^g3f>VLOoPd9ttx-(_5B2xPEmA%u zCPy#*Siw%?2Pjf=@GJu)^Rm*MLwdSUKPWxSj&?$e20OA-U%I!Vce?dXIo>));f`JJ zI*4T|oAzZs!xBvUr_bdRQ#~#1>J}Y&lKrZA?6;#>x(6|`^|j_QL0=E3D72Vn_k7&` z>zBdbBmcxtTDZQSatwJMm8}T%Fh0CcIZb|3b+Yqw z?>TV=?8~$T4K1WGEr&MzR@luR^#8He&mbY>IxIxIFW9xIOHA6m)^Y4lnls8D#jX~v zgTr?Xw=Va3xZY_E;~i$=0@=d<#2~=;4oyhRgtTVTv6U;>(HB1wZkI&Jb1mQ0mz|=+ zSnh=%&Q7Bb%LoZOnJ=xjDM+|a?j)L*$@R&pU>!(KG_%;5r*}CA;8I zT7nk$Jv+JkmvFQmZ(24EIx4og*Grb(zG)>z4#9|{^zkW2p-g1Ub5_lWRnrI?%2Auz zT=jGd2%Gyb$1^cdjX6jnvo2@kySV6JNT@gN5Yj9CceqB7f!pjc$E!#9U()(M$Z(3( zy}KtkV^Yi(t$(Lb%*!3+gczdPT@%D*se^TE(mNh*;_A$F(C`>$un>dLvT@bQD&%0j zQL`%VT%RBo;{KA{nqgW9Pll8@S^HKOuJxo;ikiSH!%b zNr_IfC%gk2IiYvYAOb)|FQ+X(SW8x$T1mL$Ws5Uw}$}$Df_Rn33h}y--9@Ktj zMdK>pK@$8sdLkVWV9Q8@*XBz4jlv#5POIjPI&K+D(l^o8nC#C6%vqLKD&D{gU7Tn` zh83?@*09z!8l}G(E=b8=0+yrExND#}Lfur{h(&GfzDs7?Uk(D6F39JErK>DEPuoV= zP84|Y2W|}W^-f@3#xf0y8-nJC>9J_)3k62fUYa67n14gt206e@-wh_~`&sCkEp`$V zqm2g}Vy$7hTJ@dhrj2aAoN%s+=~J*Yf2+XKnA0ashE&1h_j>>OHukwf5?2hXdyauT z0>i}SaSg)C7#yVgG+&|Z`+3aeV{Bpw5Y8uo57VN|`1V!NUARJA1|R>~F$12XK>|oG z974qC`?Hbu>07u*5O)P4y0TGBG)n^&L7|Iflj z9wmE5qmC8Apv)dNwe^)YoX*mnk{8!dE_uSuy__HwQ8*x8mWZL+d6ypct*!Eh4B8#9 z?z|j-&;;*BTmSc<^d5Fu6^y}Tp}QnCkV|`lQ7g+gH-7s#rgEK!Q%`QhYJ?Goo^$t| zMk;+#io~k(6G>3|BX&%&RBqHYP)0j9Xa9={tifxMP|+{me;u z-6mS>f0C4-JKk({o1t6%HG3WbKxn(-ia81b0Y&yO=r}+}3S!!kuI8$rk{DDJNw!O= z#4lnV2C+UkxTwhQmdPOid%T%MS9(a!O4sXkTBe-$9}E(CzQjuJsbYPTT6&3~8{;f~ z6+AbYu-DQCVt^YQkd|O;hkAEG-idA7tXBft%u^^OJ?UD*JLM`hg+;^6ujO=VugCq2 z?XTAJz3r%B_zm@lO@71yAOC>{LfuRpS5qp*`-)DYQqB1_E_qY(P4>`ybaislD3gDj zyIKH}@kLJj&yuOnn~3MFV$%JgQ&5D-WZn&2pV=_6+55NH8>1v>jA4O4r}F5{aYvxV zO^S}8kkV%xX5i|OV9UCTa?3M3q*LYmNGE9DSOK~kZ6tb^^Koh6?I*Lha75?m%Ej38 z!SMF%D*as_k|rI=H`6zvb<^wLm=_&T8J69relG(0wf}jHA3~r(<@0AkezzyYQ<*Qp zE9siT7bWF;@!<2KE>StxAiAH;XrgE8o!>^X6m{P_*s6ZOEUh_8?0thpPSZBChFF-0aoSzZ#wE@$`}0vWb9&8*!75|$4<7QIjsImypZ z3YuzQEgX=J?f)pp$$R$c-PVvnxjZ6+S_Va4Ejr#)s_JbP=eg*2XjqcVEx(&A+e~V%XnVsTlPcw+p!#-n!V{5|%TZ z^!;afvvNZ0hd5!}#IIc00q+~R!G%~_{P9=^v%Np6862K(1zHodoa7C^uOW~LXd!%OIl2tF5 z+~FlZpmwy?{b*A2H@s)10KlRl2|{}S-l!3PWbdngi13|B_~GbV#%LKYp(zjV`R@Wr z1r~@3A@X8eS@c_ez)C=aPMKNkR9Oy!;vn0pn5N*~M_WR#;kE|#5DcK~yu3P;JahAe zT}ChPH_#Z5lQL6@Wf40U(v&&bJ(S)}4a#;n5R6*rNoM^qeopz<(18$vnLtc64vGWo z2_Hn;NIbJk*o0~kUuKgTG_^?XX|JyRvZ(|wAoXI%E)oI~O*Vw?LF*2SAIG+hW_>{IK++|_eHVSX@BRC!iIi<%vnP_h+=yY zYulv97Mn%SE`F5yeQaEa^iEarOQRuq%?Ad{Q`uY+w+Wf$Y`> zwU>~<-weD`m$a1E^ln1#rr7JTGbT!gN0fs#Gsv;SAx!Q^RyY!^yTPKp^Ofm+A>(tH zS+Y^9;~J;R9M`k3({}Ct;fe(e1fo$!U_*i1iumDM_t@RL=ut z#4N)@F~i)TtjwdTS!pf7JRCP9Ys4Dtm zR`q7ma*MpC^R4j1Tv4(RH=B%Bi{(>i3IGKWEZ+E@g?Jx`RK8XGR#_~9T~{FB3kd@Q znHP8nMjKHOD1Ym+DvEewwev(M%ERne5rl^C)9O^PLE#c=jrBVEFG7T@9%<+%>fmM}abCPRc#j=UF?8cAh8og17`+hS_mgPy(s16N< zfNkY+#r-Yeo#kG|_74rKD{-GQ!PD&2D^Vn56IakjtK}An;$dxq?im99&r3}%Q!_K# z?OqS38w2@r8GMer=$^U2JL21uF8TLI8$d)%(NF{!W;Tt zWkM=}e#{#hT>N3b3IE`Hta`_y!pF$!uV*k+x9d=@-*=HP;SH>1{?z?aYShcTH(o)5aHu00jGt$j5UG;uyIS^q*kFck}hTvk1Ae1C3rb zlLdaNbN=`0OLK86(Zn(fq4@js0eRa9ssu7UFEF1W>#<0mTA>bpoBdi%d33cJ9*LQQre40j3qZVSN(+BTT zo9fBzHSDlaFuwprQzv$E@oM_Yi5Y;+7CVMP4-#LKCnPZqYoi{{EL4q8W0bR@_^{e zZW)-Eur*_qG#1}y9prrKQ=v$V8B*NvK?jFe;(?`xqC0DN~ zA=4CcD!>~pWP56nS?#%l<51sv3lSDAW0I9V(Q%hqSO1PsJ@9@~+}BC&DLr*HImib0 z7;HbU#X_L~Db^T3R{9s^_{YOPGlvGl=9{DfVp>5BhsyOU<;5_TxtJH7~P7KmmQE>_IAoBSof6w0JQt%Bm zfG+$&$RfPBi39&Cx&!<>GAd{ z!ZP|0Jzitoi+qjUC^dR5Y2-+A?G_3x)=|rc9)(NF&*!r1GGEdy-m(z87VmgiFH5FO z9Y|!lF=zFRf1ky?EAA^w&~|+j>67OJBo?`J2*@yhW$lI}I`n9kS|r^3YE0d&x9&z} zpFZbtI`%Bei2KNL<&t`&*u0fCBoVk|;mEpCu`$JjtmXHXTQFHlzTFHn8(YyrZrC2} z_=vS-hW1F4C0$x69_#9xI!+w%`gCaAz$Utnt_28GPD{(&h+DnsZX?k&*t0}htps1) zTx@wyI}j;otB%DU$xKjN_1%-ZgVpzO5os|<#!zyOjw1{27^EWteNWm82?pCUsbCms znjVcbdGCZ~((sQ=XTWd7j_j(U`f+!PN2XGCUFAk6Sbuos*pQ3wwPKzwhVQYr6iz`7 zZL|kX0NZx3oH?rDIzmKMTf0_ySjWEmK@gvgCf6Cdu4yU*;B=){esCfWNvAKOfbLZg zZ+UgtAmG%zjqEUhkB-V<#Ri2!Q&yO-VJB?P&Od|h>CttKv^)`a1zE=|zt#>qE-!lG z<2FGAugtc$0*=BowT_NJ#=b$zzO}BdF8kKSW>&Mj^tM+;(T{*=^gZmo?l|e#lGSIi zCbe{Ln}FeXS95b(LlNSfD0Wmh=)%SI3p<5jk^a5;7>@FEti6|JXw?0RHgW))@6l+; zP%ZpZ)jijz#_rbhqPO~r-0z;r_=F3~%_J z%H*U^?ZG3}bR#2I5dXr(Et22;v;N9ZGbyd?1ZNbr+wE@pr;1gIH8hN+&HvY$dIqTs`aYwi?Hz+X&NkDB zk3ZftU4+f?Yq@p8EJmLqj^vB%83h$y(ycxFen-8#SIl63D&mgyeqxBMr+ClGJzkq~ zGL7qy^Q9>Xr)&zG#l!=wrjOlzeM_}^Jqxv92L_~8UG`DqR=Vtg#t6YQ@S5;3Xg~)~ zU>sUW(bEHZyWskoK;KtHV3YQC&C0dg%ZO;I=}CcR6EHRKkn0h-LeV|y8#PmQ%v&i_ z^J%T6hvBF>AE+YJXzyq19$L8*N0tAXm(wFWt*b4@nAmlz8f(k*;6Ro zer9Y-QX>lC_8H~2+uQDme`n`avJtJ7pg@ApOo>U`MxNzDouxVy?_%z!Lj$1iJhF)- z9ou8Gd(%7L-JAa3nB5EKr9n2a-V?pVn=Up758qGIl5Kc92EI_Zf^) zl+V(9>;Hzc4~46baN$y=%TIpSBrx0MO+xl}*s=|(-4W%WbM*xKyk)*47;CamjT3|I z<5}-o;zAc91JJrVnljoj3>$xByK#i$!?+$(@kJ)abYn4BA}I@4m#@L(cS$Lu_r(Wz1;D-wK=4e|K+;ciH6(9i4nC|M)T!7#p96 z&(p;@Ra_=KICua)HOP>)?Rebn$5eBZ>u~M1_nAZjPWW?vowOx4TYO^%rEdiEtreF1-!BQf_*B3Rg~ZDh)mk7>$f*<^cY|JZJ?T@$z0qEv7Iy2oDW_ z3du?H-;f*jW|yqneA8^5Hyd1N^15lm4+t50pJR*xRMqOXbvgeIba)}xJ;;%am-_V4 z-7U=d&rs0)q*1=t*d{lNx*9IsXqP3dN4wVn;l%|=V=9W%ZSMl$HBz8Mnz9rh_Zl?_T;xZ8B94>&yQ`C2a7S)%q ziDR&&vc&{+cYk6+A=?OK0(^c^)-)7#Z-vJ9VUr~|j6ivR9=X6=G=}Qv@)s?j0r;Ak z(2l)~g@iItv(mLco1N;ZZSa~S3B~*ahf$#5?8x#uj2hSsATxsK?`;ddnXfjx_QdPE zMx4wwdTOFbk<&P$p%!>l-$ox2m?CZ3$wO=K_Q}b{)qLZ=zGPfBlcQmpetyxwD=pFK z;>GOxQp34EF%Zk5QNDFh`%sR7ZJTr^6CN_vr!TmS$K=Nq%5!Nbuf1~`Iml4O4q3sh z=iode8l#udtkM@@{+aH9K=EPmx%}H~Xny=L1ADA86`Acw+45~zaS-DzXCVf?(f{?*~sCRXq_j&Ho$gdr2p!jW#-4oL&t zDgyb3H?OBKcEKvPZ$n8KnOZu+g@fWo(0iPD>le}{a2<*0;3Tf?Z44E+u4${RZTV9+~C-l!3L{va$A+LRZWq?WNNDBgNnl_?Up$GTOdiN86V9(oy8z74$^t4e7%)efo(j^e};g zFFi>Uk7vy#5!z$i3`(eA{3xi$j z;Q^&u*K0VnfRJistnj+o8eYBkFN_VkdqiwflJI624Av<{{KKHuwz`v4&=MRcYw(jj zfMP(^z}i*-i91LE?^P*73?W%^XNLP|z6WEB?;~8aEW3@P9fe`vI#pJkbGj= zoGF9@9j~uBIo0}%(30mne^x1n>!eB2(9ChjmBq$!7QxEscYVuue@!?2&auYNo4t@L z=1gt!-Pcphj*?7P)7gfnGj3(gN7C%3A(vyIK{0VnVXs-kQa{4;ug5qvoT4P7hPK>>ru<7_d{v4@oYuuM^d zBI!rjk1cXj+)%I4!2f09Q7nJf(kj%yMcV4^#Ih;XaS8>odFTx|OZxYY9RuJT;eY@! zB1j$GcVmO_E*17*0jWb(s~>%zLqD~}S)GaC%Ca^K|6fJ&@gdTw$|g;B3Go(w{;R;@ zM=TgnNWFxOMKtTD&wXRQJN;2|WCne?6dKpVWd)0zSgA&g>ocO+<(t~XttO!O^tZbK z|L;Qql15oVc@Cc*+WQK;n%}{$_Y6n0pG6t@+MaC=H8nLQCntwsF{A@kD3gT>#v|zm zJINWyB53|s7M1|lo?6QYvWG5E;Um@Vc0AU(#47~v$QV^=IAE!IV z(5wH4tha!Q;_Ls%6;VO~6#;3G?gnX)l2{OFmXOX}x?4m91f;vWo25aJ?p$DjMY@*m zSbpm#p6B`g|L4rvvkQA>=FZH$d*83R;~Y&!Hlcj4N@KrB_vV%^04upxv%boATmJpa z^Ve%Y{u}>2V}K0F394n6;sJ+WOdt8|vC^{dT869{)=!3ww1x8RMNDI2K_kNX)XAq& z!mL8K@A27R!k2uUYnAO1N?vZnst;GefPNDg(Qe*+w*%8B7NZ$iQ{aaG-ZU!vKM!le zC?U%qvDg3I4*5~Ne2E_08i>@$<@@YZkPW~yR;Y-WDp9zkg# zhJ+j17ONV`e478ZAEhtk+}Mi1?4mAtvhdHn_E&j{>JTxJj}-#^GoHJjmv6CWrEQlM zHN%!R7?>fveENeQXC?~WOGXwm*HN8xb%_q@MWZZUbkYGYj0J>t$%TK-}fDB zVdb|wpmOhD4+8PZI~$C~PEKB|=lO7dF`KBDQh=-U<^!HV`J3Dgk05b#GIG^waflQ` z+NQTp79}K}W8#3N=y@0GKYo^`!=@UWz|^ZK6ZhNxx?jv;STbEENB3`M@V|d~81`*{ z!FKvfgol%txo&pBM)tiJjd1d&iisWJHT$i5K`%Y8e1x~h=J_$0#tlrGMB-wqri&s& zKj5HUqrU?NIa`wJ`qfahS^7v6f{4-kz9{$KHucXaSan_MiKmyJ{{%n*`4k{PL4)VJ z-^9VOhT`^$%`@rYplXZokiVZW?-+k^?Qw>I0ZapU5N8&fxD>+@fIOj$@y>!B^bKox zoo-|ps2zVOJAR7=OrN`V)EcB^4DeS&qn0e|CkHH|o)fbmT(;DXmG4W&lzfl1U^PwR zSNBMo+&U}2U&m>^K~c9ogQ8v{_D>O%gk`ClzkWw)6qNhiu5)BtNWC2d#xlLqBc$8) zt3ACPnx=CsY2I095048Ds|K}#g&aQSTg>#ggN;2e;9 zlu!xo%we39-O_DVh-317__ufTqTd>^m~>aY(ft*udiX9S!>l`g+wOTx?wJ9%XS4E< zcTIaXnXbs4evSvOH^xIPOnXD;W=-m{&(FsZ*qok&{t<`a9=s-RPZ<1%NlIOU@0gWks@{HmitSUmV77tX{ zHJ0HyK)dZg%kXtuEGnNNg!u1~=k~Mzx@fs!p^a8Qej{*(T}LV9%QQ>=!R%>X1@4|T zL5BAy*G+lY_2>}IV9iR$9+nM++_=XBUd5BZzKW||_b4fUbEC(JYsT=TKqltKZR*^3 z68Rh31X(c0B0lT!i+ek>zoL!oU@3Qki~xhbR9jd)#Y#pCjvRPlP<@r$Zp_7ZrvH|I zDPO*9`KfAbRmngCPHa;mB*A94NYQ;hIVs~*-+L{5?>6LmFkvkd6YcW@IMMK%CIUZq zI)+o(hv>M#%qIa8rp;9gkBG>Uu0)f5p~4^V_+Yo+ql-CPX@3OW2-|D{K!C zf(7Z_-XbUC4#E@S5pUVG1~lmeO}1wO9x~ybdd}&et=T(Z7_E_r_CFz{KfO|fwzCQ< zO7sOQRnT6GSvqp41y4_!aK|Svy|fUoQoo1{KCa533`118W zs~ceo}+p|HvRE>-cyq;Fs#qx zswG-A`{PiG%^t!V*KY%|^Fx&X+6n6t8%+p(zTQ}{sh@`Y`!_JTNTD?odLM%lsV7L> zlyU&GZ>{;G{-906I140Nh5-yxNusa$VDe7QqWaN#dM6*-8m~?k)>IB+*f`)c-ssEk z=NRvB*94&VyA_5RFT-4H@nTTZ#H-yWo*I%6Z>l7CM9$A3?^oVQ59UVoM2+5ukr--{ zHlYxpOY(;qb=mlv$x16u-MhWqrEA`VeCnK(gQg3WUm8p0ssfXTNDF8%*k{|VUrkfY z-#3ov49M^H%MA<5wTXDJo~gBQ@JvAa(oJOviyDWt>4NN0zf$$@bRL_X?3nXscTL8F zbU9VANebj43{_%uak`UfD5wP`m3}cF3-ZboY}9gx7J_Y4hs_4+W+q#-Q*c{4Yo~SQ z1i>Ua-5BO2nnJ3MKZ2TfodOdV)9*am$dd|jozc7)&>wdz&jQWe(#!@EY;>o;f#dU= zr`xP}-LDLqO#nD%Uh-dtpP3DskdN*uvCd0&s9=70!kV>>-wGx&V?GV3{^E2XZd!%4 zE>^$3v+I&wJxI=KRHveEpdNV~5RwBYLd@q10+ck`w3Tg=Nk$-YPUz09!cFtMvCOP_e| zAdk_wNA->CLm3~n2+Q?V&^qCRQ0F*$D@jF#`5}TUs;K$qj{H|LBWt6YT)p6D_Tz|o zSf=90L~y6@(sUz8uBH{5rOzTZK-9)x?CG{(y&}aDCwgf7yFImR+c#qyLh^!?L)Rl< zgm$tr4<*N>H#||z%NGaV#Xd+HGgWZnI7Q`nf;A0G+P#-lplEf#w*i`Nu96}_cF1Rm z$o3<^y53lEX{wG7AyJjtH(Lsz_4*Iny87K;fOY&~#KJQ%S>J8@pvTI+rwGGZ&}hKp zkVgbA*=?E>pG=Uof-H)mdv>4r!(2p)jPY66d$wQk!fISRwTp)=BzbW3h42TDM(o2r z#oosG_Z!fU+C|!JE||Jj>+V^ZjmhE=Bm2g(s#=xu>uP5Tscpdfs>Z?R-!z88MVepV z-R$d1yUj7c+SMm6N>$_0AJ1u@O4Vs>d#RJt;e0?xsUnw`*O)iCc`K>Y6k~+8FsB+$YW`C`QcBp;4GAvtUc68F$ zmPpCc&U(F^l>#{|OU?`p0l8_BUEhcYsL+4ttG6OvOHDuQhX~n_RGX_@C#ZRSi*QV! zw!xn6nO(QmcC{?wC$}_oW|=2qyQo&%kUc%5#!gz*gr++Ov3i#gCZU)~W@7B~hDjjJcZdaa5~?aXR~YL#p8&8l)KnRh zr9Q+|y5GskT%>tde~&C{_oJ?0@AK}DWBgNK`V;*TS$<Bl6Ps`oR+sZFQS!1JDT=p5C`nyAkeH4 z*HC4VF@w`5l5O;MBaOJrb9+b3 z6tFG4-RikjABCki@NAoIhy)KSpKY9)TsPrzbA$U}sgShn@>E9TkiQ=!J3M-VT7e0^R30Z`L?vg~c5 zg0-Xi8ujoxfi02qGgx8j`|)ipkiFKV3GT4sq4T|jnU`0fVv!YBg?{b)E% zWw*Z@DQ%~B@q^Xfq;@N)tOrPL%2;btyh5b{`@fjCZG}#}TpzTXJK%7wXjRPjW#X&; zZoCo3ZyR$0^X{F9ouj3Sk$oaPewk#X6~)35f`a8j@*}vI0y84)&HTH>+E|CPRvyk+ zidb>QG4VlC%}bXl3;4p~K(-1;Y4I+(IuSKZC2GKM5bG0~wyq+Tgm@2|QIao2 zHiiJ<=J_-TBR?g=Ss^XWhId+%EKxLo_{YGkGX_&p5N1&aXsUXFAT08f^7L8F51n{! z>>UHI@4j$?UcDrxIU34a1UjXjq*t!mw!aO35iH^A86-(qwwNk>!kN^rH( zvfS(jNG_otDCQcMtU44c?hWgk!Xb%-um*aylUsan)+ocId#!dM7SX^9=JmC@2z*?Qj(HTw(qWx^=)@5iBYx_yo-TP#pk;zq&pJ};QSL&()C z#SEXGmGwcf9Dif$`Yn~mHb@1QPrlKap>jZC%QcT5=GjiqS!;7~EXi_%A(ZX4>Wqe3RAY4 z6@h`uchm7^=OsPmd?0|i#itNO*H@4n`~4XZ>4&R3-`F6xqs-U3YM&u16 zCR+M)Oe=C}uAU}JeTUfb(3jCi^wr8Twe?^FE}eG;5g^7Cfr_k7Tq(b(IpF?=gU zl-A?Gw0u3oI}_PEe$hq8^J-GH!>)2h_X)@SS2enB)%s)AG5ikTC0DcSmsUN*N!uYk zb!iM9YY`L;%YDU#ST>uK#xK%+ZWsUtQoRo3iDeZHtx_#RtpHfow7-)Rxlg2@i#dF+ zTMm~k9l5V2%rKA2JbUJSkJ{11>sOCL{7Hh!*xwI~gK9eJnlH+Ujcc5AzE5wQf@LI~ z6zoAC^yeV=iq%tzUqi_Tn;j(t67mtxMIrt_|JryL?&r{LiS>+XA;;3wKq{8)f$Sp}ULkA%71v$={l zLN(ScaqoaV*9Rg}R%LEgx$pz`LhLyY-EEZ)PW&3+A@Y+|;fDM8?<4%piC&|E zfTtq_9QLz;eDou1;ssGT;*~Zl3uz(A>A(5awj!s;-#C7nM+VG@x4QNw@BJ3ouyqH= zDEA4G+q>+WwKDBZmFS-^eM=)7=P}rza8LVPcEiICKGqx@=;G4?x%3$0u%jayKawH&M zihBWJ={YnSaqs_Oj`%|ou##rW2*w06nr`Wqz6g6&5!*J%^9(LS&#NyZs5o=+K>_f@ z`zT^+$fE8mL@WQxbB^a!fr97b!luoqmnvF&{i4Tr9=~z&sjES$Zl`c8pW2xQQ9AgqKk~EIG3J=p&l8kM=tPyvl7RqSto3Wk>0$^}w$-QQLjiVLwGLtL@ zAe12-lh#~kJW+>Zcz?H2T$#TAUCIzuy;HuizZ>9K52}E}Y;50qsqw~hFmB$zSZtH1 zDsuVe?ZE`Y*=H1ivBfF9ShkmLmKlZ%$pL;F!Cp0&g)G#IeHZ|%*YAI>nAUIq2vk$M z?jO0oi!|u^8t&}~$_E>B4$|A|bBP(~SbhLl9y1@52`K<$6^q66%FJ(>xrgTTtjfGc zUUFykGqgbb&lZ}u>1I-EW~SJTB7{d{Jvz_z%CN6ix>bDxF1hVTu z|IrtP6=mm4X}3R#5NaLX(!}+ow}G3RlRbM@FV>AuYAgnl@P6sGQ$|>hVqSL@R#&&? z<(bPwj#H1r$zaV1i4QEjRH&DLh9*wu(|q*C7Su-e}G=ElBt4b}BHIQqKMTeR2s8%5e=FZ#lT)hr2~e>e zb<&=l{|zR^vSgc%Ag8%+GJ~Qr`G85>xQqh8i>3(+-CYViar=z&5fpLVP9+h{7D+YuUU$ejJT-ITviE zl@|RNw*IKV)ZA%RpX@W(SAIEWC`+x~`?#M$W1Z52_AbiK?SS4SS->&2=&;dWndD}ES2)J*w$DogQPx$4}mM#q`M@7va2 zzWbf;uS;?IBS>$fqiagGa?n=YnY>)viNi|6t<@kObFwXs+g+mEKM;$uNKJ$TrzpNv zkw+&8{`xRvK&f5PS5IS|{9WP^!WDXU%G&GFHSMJT**#?WI(v-g16C>X)yRRyRS>_hq^Ai5B_}7K2
T|GR{-{URVMy^n-XL^->aok%c z(n8SrRhHu-Ba^}4Rv|45zq(#-t}zU(O80%HYJ;^@&FrtS%HM|f_)KtkvgfQuw!OYG zO2wXLmCyb(TN}*hHGO4pvYkPA*E*UVzNmgAW!`dP8kvRv^<*`7o%pWKR%Aq^X?&3e zMEHCz98_9a1U?R>c<~~fiy_QJi!m>$`w{$gjRgH4+}&Myd96+{648I1bp{FbuyO4> z6E?)7*GaUHJoXox2sk>;zr&vOGJYQOe( zS!U36RJ(#Gb(&OlxMhhAW}Pm^h79t8cx27bKb5ai4Dv9gHpe!`=vM_!tD9k;`JL}i z;DkY#ifp)>peJ#1Mf;XS2+Q_wTjz5O^NFFV)%*Rzw)Ij18{dE6{5d)p|8@1fsQJ4R ztq=OJEW}sjs8i18T^kPlrnP$3XMdsGZkSZfiNdvGMCi8(5`XG$r3@ZA=3<64)VjX| z*dTxUl#4Wjfu(ilR|Gcd3B7xt%n)N(J8f3Gk829;%x+!}oCD~csn71c2PRo?>4ps_ z+L8JFp&RB6X-6{?Thb+>JCf6yhT8i)hE1JwPfQj|vQq`KDR*|>zW$}n&Y!!haMV5U zS!b_>MTqe!EX(KUNP+=1*z*Ly-pwByPlYptrX%mgJ;BbFHn-+B`GE(hR)x!>s1@)K z6BP;~%Dlo#d{nOiXfrC%!AaqfqplIOPV5XfwqiN?!RIvr#U&@n-D5Jd>SZNTWS8}u z@DTOLEih#XbTSvw^~*76WNK2qyiB(XJnac%_f^LXbN@EsOkh#QP6i@?>D74%J{Do& z5+x%YcZF!&uzzk*a#eO2P;i*3Jt)Q=Mm?>%`~fZ0F`98Agbst`Qq9#dUE6WCgBttdP#T!Bx+tT!o0pmIHmtYtB*q=9>wrDYSDpnQW9mPPcm+^ae*u_5*~vDYzXvP3N`AomHb}b zGqrAFEzmsiI?+;VH8|&TN}#`?NZ_KOx4FV50y!w*&x|kizJyHM;cV`e}e>XYr4T%G8o7x7A3{<0Jyx!NB zYeS8SdCp+5BI?-VME^jMHHyJs9kO(sMHj2#%#@vf_y~yv6b-G(>AgfZjc;pLKtHH;Q3$bLi?$R2-U`Lw%-;=bu+VFu>8y z7OtDq?`%H(6T|LJG!gN+YP~ggZt#zo8AmG>RdcpK`6OJFb#d(Cn*GnQGOOwq9_-5o|#8xfW@Xj^?G zx595ucJ{J7E{3iGxZ=;xB%l7vsi7cTu0I0l+rvyDOy2JjvE+(SRu|0m<$5<68Gw$I z#ne9Xs>H?xYNb}&LsW)ZD|i`63?dTqU0nhLp&W3?DyR6efDpZzz3f*tN^TcLf#wR( z589!*=AsnZ$$Tju^}{b~!<AdA85RgNUYz_` z!Q`=2hDu`S37;>~Do+>pLJlR>kTf>@*E1R*@dl-b{gF;TgN6nGWHv?c%VY2Kw6_`+<1b85 zD>i*XTOb;S$YLCFSN-KHMt!eRD%0A`v3)FfQj-Kxn?r(9D?CT-8~0a1C|`ht+Kc6z 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 L5HAxoeEa_ZfajY( From 5e2493352163a7d47d7a9ce3385276c79867782d Mon Sep 17 00:00:00 2001 From: yh_cc Date: Tue, 3 May 2022 22:28:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=AE=BE=E7=BD=AEinit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastNLP/core/__init__.py | 37 +++++++++++-- fastNLP/core/callbacks/topk_saver.py | 2 +- fastNLP/core/collators/__init__.py | 1 + fastNLP/core/collators/collator.py | 2 +- fastNLP/core/collators/padders/__init__.py | 1 + .../core/collators/padders/numpy_padder.py | 2 +- .../core/collators/padders/paddle_padder.py | 4 +- .../core/collators/padders/torch_padder.py | 4 +- fastNLP/core/drivers/paddle_driver/fleet.py | 4 +- fastNLP/core/log/__init__.py | 4 +- fastNLP/core/metrics/__init__.py | 5 -- fastNLP/core/utils/__init__.py | 5 +- fastNLP/core/utils/utils.py | 52 ------------------- fastNLP/envs/__init__.py | 13 +++-- fastNLP/envs/distributed.py | 38 +++++++++++++- fastNLP/envs/env.py | 4 +- .../test_checkpoint_callback_torch.py | 2 +- .../callbacks/test_more_evaluate_callback.py | 2 +- tests/core/collators/test_collator.py | 6 +-- .../test_trainer_wo_evaluator_torch.py | 2 +- .../core/drivers/paddle_driver/test_fleet.py | 2 +- .../paddle_driver/test_single_device.py | 2 +- tests/core/drivers/torch_driver/test_ddp.py | 2 +- .../torch_driver/test_single_device.py | 2 +- tests/core/log/test_logger_torch.py | 2 +- tests/core/utils/test_cache_results.py | 2 +- tests/envs/test_set_backend.py | 2 +- tests/modules/mix_modules/_test_mix_module.py | 2 +- 28 files changed, 108 insertions(+), 98 deletions(-) diff --git a/fastNLP/core/__init__.py b/fastNLP/core/__init__.py index f1421c38..439f5886 100644 --- a/fastNLP/core/__init__.py +++ b/fastNLP/core/__init__.py @@ -57,9 +57,37 @@ __all__ = [ "TorchPaddleDriver", # log - "logger" + "logger", + "print", - # + # metrics + "Metric", + "Accuracy", + 'SpanFPreRecMetric', + 'ClassifyFPreRecMetric', + + # samplers + 'ReproducibleSampler', + 'RandomSampler', + "SequentialSampler", + "SortedSampler", + 'UnrepeatedSampler', + 'UnrepeatedRandomSampler', + "UnrepeatedSortedSampler", + "UnrepeatedSequentialSampler", + "ReproduceBatchSampler", + "BucketedBatchSampler", + "ReproducibleBatchSampler", + "RandomBatchSampler", + + # utils + "cache_results", + "f_rich_progress", + "auto_param_call", + "seq_len_to_mask", + + # vocabulary.py + 'Vocabulary' ] from .callbacks import * from .collators import * @@ -68,4 +96,7 @@ from .dataloaders import * from .dataset import * from .drivers import * from .log import * -from .utils import * \ No newline at end of file +from .metrics import * +from .samplers import * +from .utils import * +from .vocabulary import Vocabulary \ No newline at end of file diff --git a/fastNLP/core/callbacks/topk_saver.py b/fastNLP/core/callbacks/topk_saver.py index 8c3f3811..25e66cb9 100644 --- a/fastNLP/core/callbacks/topk_saver.py +++ b/fastNLP/core/callbacks/topk_saver.py @@ -7,7 +7,7 @@ from copy import deepcopy from pathlib import Path from typing import Optional, Dict, Tuple, Callable, Union -from fastNLP.core.utils import rank_zero_rm +from ...envs.distributed import rank_zero_rm from fastNLP.core.log import logger from fastNLP.envs import FASTNLP_LAUNCH_TIME from fastNLP.envs import rank_zero_call diff --git a/fastNLP/core/collators/__init__.py b/fastNLP/core/collators/__init__.py index 1e508689..3033c37e 100644 --- a/fastNLP/core/collators/__init__.py +++ b/fastNLP/core/collators/__init__.py @@ -8,6 +8,7 @@ __all__ = [ "NullPadder", "RawNumberPadder", "RawSequencePadder", + "RawTensorPadder", 'TorchNumberPadder', 'TorchSequencePadder', 'TorchTensorPadder', diff --git a/fastNLP/core/collators/collator.py b/fastNLP/core/collators/collator.py index 5c5abda4..9ea08d95 100644 --- a/fastNLP/core/collators/collator.py +++ b/fastNLP/core/collators/collator.py @@ -67,7 +67,7 @@ def _get_backend() -> str: # 方式 (2) for backend in CHECK_BACKEND: if backend in sys.modules: - logger.debug(f"sys.modules contains backend:{catch_backend[0]}.") + logger.debug(f"sys.modules contains backend:{backend}.") return backend for key, module in sys.modules.items(): catch_backend = _check_module(module) diff --git a/fastNLP/core/collators/padders/__init__.py b/fastNLP/core/collators/padders/__init__.py index 09a5ca8d..11ffc07b 100644 --- a/fastNLP/core/collators/padders/__init__.py +++ b/fastNLP/core/collators/padders/__init__.py @@ -9,6 +9,7 @@ __all__ = [ "RawNumberPadder", "RawSequencePadder", + "RawTensorPadder", 'TorchNumberPadder', 'TorchSequencePadder', diff --git a/fastNLP/core/collators/padders/numpy_padder.py b/fastNLP/core/collators/padders/numpy_padder.py index 4d507f2e..1113c91a 100644 --- a/fastNLP/core/collators/padders/numpy_padder.py +++ b/fastNLP/core/collators/padders/numpy_padder.py @@ -79,7 +79,7 @@ class NumpyTensorPadder(Padder): def pad(batch_field, pad_val, dtype): try: if not isinstance(batch_field[0], np.ndarray): - batch_field = [np.array(field.tolist()) for field in batch_field] + batch_field = [np.array(field.tolist(), dtype=dtype) for field in batch_field] except AttributeError: raise RuntimeError(f"If the field is not a np.ndarray (it is {type(batch_field[0])}), " f"it must have tolist() method.") diff --git a/fastNLP/core/collators/padders/paddle_padder.py b/fastNLP/core/collators/padders/paddle_padder.py index 10d5a385..f7db6534 100644 --- a/fastNLP/core/collators/padders/paddle_padder.py +++ b/fastNLP/core/collators/padders/paddle_padder.py @@ -131,7 +131,7 @@ class PaddleTensorPadder(Padder): def pad(batch_field, pad_val, dtype): try: if not isinstance(batch_field[0], paddle.Tensor): - batch_field = [paddle.to_tensor(field.tolist()) for field in batch_field] + batch_field = [paddle.to_tensor(field.tolist(), dtype=dtype) for field in batch_field] except AttributeError: raise RuntimeError(f"If the field is not a paddle.Tensor (it is {type(batch_field[0])}), " f"it must have tolist() method.") @@ -143,8 +143,6 @@ class PaddleTensorPadder(Padder): tensor = paddle.full(max_shape, fill_value=pad_val, dtype=dtype) for i, field in enumerate(batch_field): slices = (i, ) + tuple(slice(0, s) for s in shapes[i]) - if isinstance(field, np.ndarray): - field = paddle.to_tensor(field) tensor[slices] = field return tensor diff --git a/fastNLP/core/collators/padders/torch_padder.py b/fastNLP/core/collators/padders/torch_padder.py index 18f414e8..f1940380 100644 --- a/fastNLP/core/collators/padders/torch_padder.py +++ b/fastNLP/core/collators/padders/torch_padder.py @@ -114,7 +114,7 @@ class TorchTensorPadder(Padder): def pad(batch_field, pad_val, dtype): try: if not isinstance(batch_field[0], torch.Tensor): - batch_field = [torch.tensor(field.tolist()) for field in batch_field] + batch_field = [torch.tensor(field.tolist(), dtype=dtype) for field in batch_field] except AttributeError: raise RuntimeError(f"If the field is not a torch.Tensor (it is {type(batch_field[0])}), " f"it must have tolist() method.") @@ -124,8 +124,6 @@ class TorchTensorPadder(Padder): tensor = torch.full(max_shape, fill_value=pad_val, dtype=dtype) for i, field in enumerate(batch_field): slices = (i, ) + tuple(slice(0, s) for s in shapes[i]) - if isinstance(field, np.ndarray): - field = torch.from_numpy(field) tensor[slices] = field return tensor diff --git a/fastNLP/core/drivers/paddle_driver/fleet.py b/fastNLP/core/drivers/paddle_driver/fleet.py index 73342748..f3a739f0 100644 --- a/fastNLP/core/drivers/paddle_driver/fleet.py +++ b/fastNLP/core/drivers/paddle_driver/fleet.py @@ -18,9 +18,9 @@ from fastNLP.core.utils import ( auto_param_call, check_user_specific_params, paddle_move_data_to_device, - is_in_paddle_dist, - rank_zero_rm + is_in_paddle_dist ) +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.core.samplers import ( ReproduceBatchSampler, ReproducibleSampler, diff --git a/fastNLP/core/log/__init__.py b/fastNLP/core/log/__init__.py index 3cb6d4dc..d1d95f20 100644 --- a/fastNLP/core/log/__init__.py +++ b/fastNLP/core/log/__init__.py @@ -1,6 +1,8 @@ __all__ = [ - 'logger' + 'logger', + "print" ] from .logger import logger +from .print import print diff --git a/fastNLP/core/metrics/__init__.py b/fastNLP/core/metrics/__init__.py index 82bca331..f7d60606 100644 --- a/fastNLP/core/metrics/__init__.py +++ b/fastNLP/core/metrics/__init__.py @@ -1,16 +1,11 @@ __all__ = [ "Metric", "Accuracy", - 'Backend', - 'AutoBackend', - 'PaddleBackend', - 'TorchBackend', 'SpanFPreRecMetric', 'ClassifyFPreRecMetric', ] from .metric import Metric from .accuracy import Accuracy -from .backend import Backend, AutoBackend, PaddleBackend, TorchBackend from .span_f1_pre_rec_metric import SpanFPreRecMetric from .classify_f1_pre_rec_metric import ClassifyFPreRecMetric diff --git a/fastNLP/core/utils/__init__.py b/fastNLP/core/utils/__init__.py index 9fb538a9..4af6a24a 100644 --- a/fastNLP/core/utils/__init__.py +++ b/fastNLP/core/utils/__init__.py @@ -23,8 +23,6 @@ __all__ = [ 'Option', 'deprecated', 'seq_len_to_mask', - 'rank_zero_rm', - 'rank_zero_mkdir' ] from .cache_results import cache_results @@ -36,7 +34,6 @@ from .torch_paddle_utils import torch_paddle_move_data_to_device from .torch_utils import torch_move_data_to_device from .utils import get_fn_arg_names, auto_param_call, check_user_specific_params, \ dataclass_to_dict, match_and_substitute_params, apply_to_collection, nullcontext, pretty_table_printer, Option, \ - deprecated, seq_len_to_mask, rank_zero_rm, rank_zero_mkdir -from ..dataloaders.utils import indice_collate_wrapper + deprecated, seq_len_to_mask diff --git a/fastNLP/core/utils/utils.py b/fastNLP/core/utils/utils.py index 91b3c8f6..93f38e2a 100644 --- a/fastNLP/core/utils/utils.py +++ b/fastNLP/core/utils/utils.py @@ -22,8 +22,6 @@ import numpy as np from pathlib import Path from fastNLP.core.log import logger -from fastNLP.envs import FASTNLP_GLOBAL_RANK - __all__ = [ 'get_fn_arg_names', @@ -37,8 +35,6 @@ __all__ = [ 'Option', 'deprecated', 'seq_len_to_mask', - 'rank_zero_rm', - 'rank_zero_mkdir' ] @@ -609,54 +605,6 @@ def wait_filepath(path, exist=True): logger.warning(f"Waiting path:{path} to {msg} for {count*0.01} seconds...") - -def rank_zero_rm(path: Optional[Union[str, Path]]): - """ - 这个是因为在分布式文件系统中可能会发生错误,rank0下发删除成功后就运行走了,但实际的删除需要rank0的机器发送到远程文件系统再去执行,这个时候 - 在rank0那里,确实已经删除成功了,但是在远程文件系统那里这个操作还没完成,rank1读取的时候还是读取到存在这个文件; - 该函数会保证所有进程都检测到 path 删除之后才退出,请保证不同进程上 path 是完全一样的,否则会陷入死锁状态。 - - :param path: - :return: - """ - if int(os.environ.get(FASTNLP_GLOBAL_RANK, 0)) == 0: - if path is None: - return - if isinstance(path, str): - path = Path(path) - if not path.exists(): - return - _recursive_rm(path) - - -def _recursive_rm(path: Path): - if path.is_file() or path.is_symlink(): - if path.exists(): - try: - path.unlink() - except Exception: - pass - return - for sub_path in list(path.iterdir()): - _recursive_rm(sub_path) - path.rmdir() - - -def rank_zero_mkdir(path: Optional[Union[str, Path]]): - """ - 注意该函数是用来创建文件夹,如果需要创建一个文件,不要使用该函数; - 该函数会保证所有进程都检测到 path 创建之后才退出,请保证不同进程上 path 是完全一样的,否则会陷入死锁状态。 - - """ - if int(os.environ.get(FASTNLP_GLOBAL_RANK, 0)) == 0: - if path is None: - return - if isinstance(path, str): - path = Path(path) - - path.mkdir(parents=True, exist_ok=True) - - def get_class_that_defined_method(method): """ 给定一个method,返回这个 method 的 class 的对象 diff --git a/fastNLP/envs/__init__.py b/fastNLP/envs/__init__.py index bc09c33b..6c5e857e 100644 --- a/fastNLP/envs/__init__.py +++ b/fastNLP/envs/__init__.py @@ -3,12 +3,17 @@ r""" """ __all__ = [ 'dump_fastnlp_backend', - 'is_cur_env_distributed', - 'get_global_rank', + + # utils + 'get_gpu_count', + + # distributed + "rank_zero_rm", 'rank_zero_call', + 'get_global_rank', + 'fastnlp_no_sync_context', 'all_rank_call_context', - 'get_gpu_count', - 'fastnlp_no_sync_context' + 'is_cur_env_distributed', ] diff --git a/fastNLP/envs/distributed.py b/fastNLP/envs/distributed.py index 34515c2c..3d87c8b2 100644 --- a/fastNLP/envs/distributed.py +++ b/fastNLP/envs/distributed.py @@ -1,6 +1,7 @@ import os from functools import wraps -from typing import Callable, Any, Optional +from pathlib import Path +from typing import Callable, Any, Optional, Union from contextlib import contextmanager __all__ = [ @@ -8,7 +9,8 @@ __all__ = [ 'get_global_rank', 'rank_zero_call', 'all_rank_call_context', - 'fastnlp_no_sync_context' + 'fastnlp_no_sync_context', + "rank_zero_rm" ] from fastNLP.envs.env import FASTNLP_GLOBAL_RANK, FASTNLP_NO_SYNC @@ -96,3 +98,35 @@ def all_rank_call_context(): os.environ[FASTNLP_GLOBAL_RANK] = old_fastnlp_global_rank else: os.environ.pop(FASTNLP_GLOBAL_RANK) + + +def rank_zero_rm(path: Optional[Union[str, Path]]): + """ + 这个是因为在分布式文件系统中可能会发生错误,rank0下发删除成功后就运行走了,但实际的删除需要rank0的机器发送到远程文件系统再去执行,这个时候 + 在rank0那里,确实已经删除成功了,但是在远程文件系统那里这个操作还没完成,rank1读取的时候还是读取到存在这个文件; + 该函数会保证所有进程都检测到 path 删除之后才退出,请保证不同进程上 path 是完全一样的,否则会陷入死锁状态。 + + :param path: + :return: + """ + if int(os.environ.get(FASTNLP_GLOBAL_RANK, 0)) == 0: + if path is None: + return + if isinstance(path, str): + path = Path(path) + if not path.exists(): + return + _recursive_rm(path) + + +def _recursive_rm(path: Path): + if path.is_file() or path.is_symlink(): + if path.exists(): + try: + path.unlink() + except Exception: + pass + return + for sub_path in list(path.iterdir()): + _recursive_rm(sub_path) + path.rmdir() \ No newline at end of file diff --git a/fastNLP/envs/env.py b/fastNLP/envs/env.py index 74d833e0..9cc05a02 100644 --- a/fastNLP/envs/env.py +++ b/fastNLP/envs/env.py @@ -22,7 +22,7 @@ FASTNLP_GLOBAL_RANK = "FASTNLP_GLOBAL_RANK" FASTNLP_LOG_LEVEL = "FASTNLP_LOG_LEVEL" -# todo 每一个分布式的 driver 都应当正确地设立该值;具体可见 ddp; +# 每一个分布式的 driver 都应当正确地设立该值;具体可见 ddp; # FASTNLP_LAUNCH_TIME 记录了当前 fastNLP 脚本启动的时间。 FASTNLP_LAUNCH_TIME = "FASTNLP_LAUNCH_TIME" @@ -42,7 +42,7 @@ USER_CUDA_VISIBLE_DEVICES = 'USER_CUDA_VISIBLE_DEVICES' # 用于在 torch.distributed.launch 时移除传入的 rank ,在 pytorch 中有使用。值的可选为 [0, 1] FASTNLP_REMOVE_LOCAL_RANK = 'FASTNLP_REMOVE_LOCAL_RANK' -# todo 注释 +# 检测到当前脚本是通过类似 python -m torch.launch 启动的话设置这个变量为1 FASTNLP_BACKEND_LAUNCH = "FASTNLP_BACKEND_LAUNCH" # fastNLP中用于关闭 fastNLP 1.barrier 与 2.gather/broadcast 。默认为 '0' 表示不关闭;为 '1' 表示 fastNLP 的 barrier 不执行; diff --git a/tests/core/callbacks/test_checkpoint_callback_torch.py b/tests/core/callbacks/test_checkpoint_callback_torch.py index 2de21825..60dcc862 100644 --- a/tests/core/callbacks/test_checkpoint_callback_torch.py +++ b/tests/core/callbacks/test_checkpoint_callback_torch.py @@ -11,7 +11,7 @@ from fastNLP.core.controllers.trainer import Trainer from fastNLP.envs import FASTNLP_LAUNCH_TIME, FASTNLP_DISTRIBUTED_CHECK from tests.helpers.utils import magic_argv_env_context -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from tests.helpers.models.torch_model import TorchNormalModel_Classification_1 from tests.helpers.datasets.torch_data import TorchArgMaxDataset from torchmetrics import Accuracy diff --git a/tests/core/callbacks/test_more_evaluate_callback.py b/tests/core/callbacks/test_more_evaluate_callback.py index 08c6f8e2..9c32c20b 100644 --- a/tests/core/callbacks/test_more_evaluate_callback.py +++ b/tests/core/callbacks/test_more_evaluate_callback.py @@ -20,7 +20,7 @@ from fastNLP.core.controllers.trainer import Trainer from fastNLP.envs import FASTNLP_LAUNCH_TIME, FASTNLP_DISTRIBUTED_CHECK from tests.helpers.utils import magic_argv_env_context -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from tests.helpers.models.torch_model import TorchNormalModel_Classification_1 from tests.helpers.datasets.torch_data import TorchArgMaxDataset from torchmetrics import Accuracy diff --git a/tests/core/collators/test_collator.py b/tests/core/collators/test_collator.py index ba1e7e08..65101321 100644 --- a/tests/core/collators/test_collator.py +++ b/tests/core/collators/test_collator.py @@ -83,7 +83,7 @@ class TestCollator: assert raw_pad_batch == collator(dict_batch) collator = Collator(backend='raw') raw_pad_lst = [['1', '2'], [['1'], ['2', '2']], [1, 2], [[1, 0], [2, 2]], [[[1, 0], [0, 0]], [[1, 0], [1, 2]]], - [1.1, 2.1], [[1.1], [2.1]], [True, False], [np.ones(1), np.ones(2)], [{'1': '1'}, {'2': '2'}], + [1.1, 2.1], [[1.1], [2.1]], [True, False], [[1, 0], [1, 1]], [{'1': '1'}, {'2': '2'}], [{'1'}, {'2'}]] findListDiff(raw_pad_lst, collator(list_batch)) @@ -194,7 +194,7 @@ class TestCollator: collator.set_ignore('_0', '_3', '_1') collator.set_pad('_4', pad_val=None) raw_pad_lst = [[1, 2], [[[1]], [[1], [1, 2]]], - [1.1, 2.1], [[1.1], [2.1]], [True, False], [np.ones(1), np.ones(2)], [{'1': '1'}, {'2': '2'}], + [1.1, 2.1], [[1.1], [2.1]], [True, False], [[1, 0], [1, 1]], [{'1': '1'}, {'2': '2'}], [{'1'}, {'2'}]] findListDiff(raw_pad_lst, collator(list_batch)) @@ -210,7 +210,7 @@ class TestCollator: collator.set_pad('_2', backend='numpy') collator.set_pad('_4', backend='numpy', pad_val=100) raw_pad_lst = [np.array([1, 2]), np.array([[[1, 100], [100, 100]], [[1, 100], [1, 2]]]), - [1.1, 2.1], [[1.1], [2.1]], [True, False], [np.ones(1), np.ones(2)], [{'1': '1'}, {'2': '2'}], + [1.1, 2.1], [[1.1], [2.1]], [True, False], [[1, 0], [1, 1]], [{'1': '1'}, {'2': '2'}], [{'1'}, {'2'}]] findListDiff(raw_pad_lst, collator(list_batch)) diff --git a/tests/core/controllers/test_trainer_wo_evaluator_torch.py b/tests/core/controllers/test_trainer_wo_evaluator_torch.py index 102ab310..e3d90e9b 100644 --- a/tests/core/controllers/test_trainer_wo_evaluator_torch.py +++ b/tests/core/controllers/test_trainer_wo_evaluator_torch.py @@ -13,7 +13,7 @@ from tests.helpers.datasets.torch_data import TorchNormalDataset_Classification from tests.helpers.callbacks.helper_callbacks import RecordLossCallback from tests.helpers.callbacks.helper_callbacks_torch import RecordAccumulationStepsCallback_Torch from tests.helpers.utils import magic_argv_env_context, Capturing -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.envs.imports import _NEED_IMPORT_TORCH if _NEED_IMPORT_TORCH: import torch.distributed as dist diff --git a/tests/core/drivers/paddle_driver/test_fleet.py b/tests/core/drivers/paddle_driver/test_fleet.py index a184bb11..3b3f15ec 100644 --- a/tests/core/drivers/paddle_driver/test_fleet.py +++ b/tests/core/drivers/paddle_driver/test_fleet.py @@ -12,7 +12,7 @@ from fastNLP.core.samplers import ( from tests.helpers.models.paddle_model import PaddleNormalModel_Classification_1 from tests.helpers.datasets.paddle_data import PaddleNormalDataset, PaddleRandomMaxDataset from tests.helpers.utils import magic_argv_env_context -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.envs.imports import _NEED_IMPORT_PADDLE if _NEED_IMPORT_PADDLE: import paddle diff --git a/tests/core/drivers/paddle_driver/test_single_device.py b/tests/core/drivers/paddle_driver/test_single_device.py index b8ccd802..ba243106 100644 --- a/tests/core/drivers/paddle_driver/test_single_device.py +++ b/tests/core/drivers/paddle_driver/test_single_device.py @@ -7,7 +7,7 @@ from tests.helpers.models.paddle_model import PaddleNormalModel_Classification_1 from tests.helpers.datasets.paddle_data import PaddleNormalDataset, PaddleRandomMaxDataset from tests.helpers.datasets.torch_data import TorchNormalDataset from tests.helpers.models.torch_model import TorchNormalModel_Classification_1 -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.envs.imports import _NEED_IMPORT_PADDLE, _NEED_IMPORT_TORCH if _NEED_IMPORT_PADDLE: import paddle diff --git a/tests/core/drivers/torch_driver/test_ddp.py b/tests/core/drivers/torch_driver/test_ddp.py index d6f0ee77..0e3f99ad 100644 --- a/tests/core/drivers/torch_driver/test_ddp.py +++ b/tests/core/drivers/torch_driver/test_ddp.py @@ -12,7 +12,7 @@ from fastNLP.core.samplers import ( from tests.helpers.models.torch_model import TorchNormalModel_Classification_1 from tests.helpers.datasets.torch_data import TorchNormalDataset, TorchArgMaxDataset from tests.helpers.utils import magic_argv_env_context -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.envs.imports import _NEED_IMPORT_TORCH if _NEED_IMPORT_TORCH: import torch diff --git a/tests/core/drivers/torch_driver/test_single_device.py b/tests/core/drivers/torch_driver/test_single_device.py index ef60e2b6..9115ed19 100644 --- a/tests/core/drivers/torch_driver/test_single_device.py +++ b/tests/core/drivers/torch_driver/test_single_device.py @@ -7,7 +7,7 @@ from tests.helpers.models.torch_model import TorchNormalModel_Classification_1 from tests.helpers.datasets.torch_data import TorchNormalDataset, TorchArgMaxDataset from tests.helpers.datasets.paddle_data import PaddleNormalDataset from tests.helpers.models.paddle_model import PaddleNormalModel_Classification_1 -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.envs.imports import _NEED_IMPORT_PADDLE, _NEED_IMPORT_TORCH if _NEED_IMPORT_TORCH: import torch diff --git a/tests/core/log/test_logger_torch.py b/tests/core/log/test_logger_torch.py index 13a758e9..7d45782c 100644 --- a/tests/core/log/test_logger_torch.py +++ b/tests/core/log/test_logger_torch.py @@ -7,7 +7,7 @@ import re import pytest from fastNLP.envs.env import FASTNLP_LAUNCH_TIME -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm from fastNLP.core.log.logger import logger from tests.helpers.utils import magic_argv_env_context, recover_logger diff --git a/tests/core/utils/test_cache_results.py b/tests/core/utils/test_cache_results.py index 77c618bb..efef9f10 100644 --- a/tests/core/utils/test_cache_results.py +++ b/tests/core/utils/test_cache_results.py @@ -6,7 +6,7 @@ import sys sys.path.append(os.path.join(os.path.dirname(__file__), '../../..')) from fastNLP.core.utils.cache_results import cache_results -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm def get_subprocess_results(cmd): diff --git a/tests/envs/test_set_backend.py b/tests/envs/test_set_backend.py index 170110ce..c45acd7b 100644 --- a/tests/envs/test_set_backend.py +++ b/tests/envs/test_set_backend.py @@ -3,7 +3,7 @@ import pytest from fastNLP.envs.set_backend import dump_fastnlp_backend from tests.helpers.utils import Capturing -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm def test_dump_fastnlp_envs(): diff --git a/tests/modules/mix_modules/_test_mix_module.py b/tests/modules/mix_modules/_test_mix_module.py index 700e0cfe..87206fd6 100644 --- a/tests/modules/mix_modules/_test_mix_module.py +++ b/tests/modules/mix_modules/_test_mix_module.py @@ -9,7 +9,7 @@ import numpy as np from fastNLP.modules.mix_modules.mix_module import MixModule from fastNLP.modules.mix_modules.utils import paddle2torch, torch2paddle -from fastNLP.core import rank_zero_rm +from fastNLP.envs.distributed import rank_zero_rm ############################################################################ From 54e266a267ff3d52a6b1452a77ae73de2c2f8a1e Mon Sep 17 00:00:00 2001 From: yh_cc Date: Tue, 3 May 2022 22:32:20 +0800 Subject: [PATCH 3/3] from fastNLP import Trainer --- fastNLP/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastNLP/__init__.py b/fastNLP/__init__.py index b856faff..915e382d 100644 --- a/fastNLP/__init__.py +++ b/fastNLP/__init__.py @@ -1,3 +1,3 @@ from fastNLP.envs import * -from fastNLP.core import Trainer, Evaluator \ No newline at end of file +from fastNLP.core import * \ No newline at end of file