From 6da627d4ceb2103046b374ca9c4d76d8e627469e Mon Sep 17 00:00:00 2001 From: lxr-tech <1838593642@qq.com> Date: Sat, 30 Apr 2022 23:29:12 +0800 Subject: [PATCH] modify-fastnlp_tutorial_0-lxr-220430 --- fastNLP/core/metrics/accuracy.py | 4 +- fastNLP/core/metrics/classify_f1_pre_rec_metric.py | 4 +- tutorials/fastnlp_tutorial_0.ipynb | 701 ++++++++------------- tutorials/figures/T0-fig-trainer-and-evaluator.png | Bin 0 -> 104863 bytes 4 files changed, 255 insertions(+), 454 deletions(-) create mode 100644 tutorials/figures/T0-fig-trainer-and-evaluator.png diff --git a/fastNLP/core/metrics/accuracy.py b/fastNLP/core/metrics/accuracy.py index d9ccb332..0869d8c8 100644 --- a/fastNLP/core/metrics/accuracy.py +++ b/fastNLP/core/metrics/accuracy.py @@ -28,7 +28,7 @@ class Accuracy(Metric): def get_metric(self) -> dict: r""" - get_metric 函数将根据 evaluate 函数累计的评价指标统计量来计算最终的评价结果. + get_metric 函数将根据 update 函数累计的评价指标统计量来计算最终的评价结果. :return dict evaluate_result: {"acc": float} """ @@ -37,7 +37,7 @@ class Accuracy(Metric): def update(self, pred, target, seq_len=None): r""" - evaluate函数将针对一个批次的预测结果做评价指标的累计 + update 函数将针对一个批次的预测结果做评价指标的累计 :param torch.Tensor pred: 预测的tensor, tensor的形状可以是torch.Size([B,]), torch.Size([B, n_classes]), torch.Size([B, max_len]), 或者torch.Size([B, max_len, n_classes]) diff --git a/fastNLP/core/metrics/classify_f1_pre_rec_metric.py b/fastNLP/core/metrics/classify_f1_pre_rec_metric.py index 2c71602d..8de007ce 100644 --- a/fastNLP/core/metrics/classify_f1_pre_rec_metric.py +++ b/fastNLP/core/metrics/classify_f1_pre_rec_metric.py @@ -56,7 +56,7 @@ class ClassifyFPreRecMetric(Metric): def get_metric(self) -> dict: r""" - get_metric函数将根据evaluate函数累计的评价指标统计量来计算最终的评价结果. + get_metric函数将根据update函数累计的评价指标统计量来计算最终的评价结果. :return dict evaluate_result: {"acc": float} """ @@ -117,7 +117,7 @@ class ClassifyFPreRecMetric(Metric): def update(self, pred, target, seq_len=None): r""" - evaluate函数将针对一个批次的预测结果做评价指标的累计 + update 函数将针对一个批次的预测结果做评价指标的累计 :param torch.Tensor pred: 预测的tensor, tensor的形状可以是torch.Size([B,]), torch.Size([B, n_classes]), torch.Size([B, max_len]), 或者torch.Size([B, max_len, n_classes]) diff --git a/tutorials/fastnlp_tutorial_0.ipynb b/tutorials/fastnlp_tutorial_0.ipynb index 01913ac0..28fcfddf 100644 --- a/tutorials/fastnlp_tutorial_0.ipynb +++ b/tutorials/fastnlp_tutorial_0.ipynb @@ -15,15 +15,15 @@ "\n", "    1.3   trainer 内部初始化 evaluater\n", "\n", - "  2   使用 trainer 训练模型\n", + "  2   使用 fastNLP 0.8 搭建 argmax 模型\n", "\n", - "    2.1   argmax 模型实例\n", + "    2.1   trainer_step 和 evaluator_step\n", "\n", - "    2.2   trainer 的参数匹配\n", + "    2.2   trainer 和 evaluator 的参数匹配\n", "\n", - "    2.3   trainer 的实际使用 \n", + "    2.3   一个实际案例:argmax 模型\n", "\n", - "  3   使用 evaluator 评测模型\n", + "  3   使用 fastNLP 0.8 训练 argmax 模型\n", " \n", "    3.1   trainer 外部初始化的 evaluator\n", "\n", @@ -50,21 +50,21 @@ "\n", "```python\n", "trainer = Trainer(\n", - " model=model,\n", - " train_dataloader=train_dataloader,\n", - " optimizers=optimizer,\n", + " model=model, # 模型基于 torch.nn.Module\n", + " train_dataloader=train_dataloader, # 加载模块基于 torch.utils.data.DataLoader \n", + " optimizers=optimizer, # 优化模块基于 torch.optim.*\n", "\t...\n", - "\tdriver=\"torch\",\n", - "\tdevice=0,\n", + "\tdriver=\"torch\", # 使用 pytorch 模块进行训练 \n", + "\tdevice='cuda', # 使用 GPU:0 显卡执行训练\n", "\t...\n", ")\n", "...\n", "evaluator = Evaluator(\n", - " model=model,\n", - " dataloaders=evaluate_dataloader,\n", - " metrics={'acc': Accuracy()} \n", + " model=model, # 模型基于 torch.nn.Module\n", + " dataloaders=evaluate_dataloader, # 加载模块基于 torch.utils.data.DataLoader\n", + " metrics={'acc': Accuracy()}, # 测评方法使用 fastNLP.core.metrics.Accuracy \n", " ...\n", - " driver=trainer.driver,\n", + " driver=trainer.driver, # 保持同 trainer 的 driver 一致\n", "\tdevice=None,\n", " ...\n", ")\n", @@ -88,7 +88,7 @@ "\n", "注:在同一脚本中,`Trainer`和`Evaluator`使用的`driver`应当保持一致\n", "\n", - "  一个不能违背的原则在于:**不要将多卡的`driver`前使用单卡的`driver`**(???),这样使用可能会带来很多意想不到的错误。" + "  一个不能违背的原则在于:**不要将多卡的`driver`前使用单卡的`driver`**(???),这样使用可能会带来很多意想不到的错误" ] }, { @@ -109,10 +109,10 @@ " optimizers=optimizer,\n", "\t...\n", "\tdriver=\"torch\",\n", - "\tdevice=0,\n", + "\tdevice='cuda',\n", "\t...\n", - " evaluate_dataloaders=evaluate_dataloader,\n", - " metrics={'acc': Accuracy()},\n", + " evaluate_dataloaders=evaluate_dataloader, # 传入参数 evaluator_dataloaders\n", + " metrics={'acc': Accuracy()}, # 传入参数 metrics\n", "\t...\n", ")\n", "```" @@ -123,7 +123,7 @@ "id": "0c9c7dda", "metadata": {}, "source": [ - "## 2. 使用 trainer 训练模型" + "## 2. argmax 模型的搭建实例" ] }, { @@ -131,71 +131,41 @@ "id": "524ac200", "metadata": {}, "source": [ - "### 2.1 argmax 模型实例\n", + "### 2.1 trainer_step 和 evaluator_step\n", "\n", - "本节将通过训练`argmax`模型,简单介绍如何`Trainer`模块的使用方式\n", + "在`fastNLP 0.8`中,使用`pytorch.nn.Module`搭建需要训练的模型,在搭建模型过程中,除了\n", "\n", - "  使用`pytorch`定义`argmax`模型,输入一组固定维度的向量,输出其中数值最大的数的索引\n", - "\n", - "  除了添加`pytorch`要求的`forward`方法外,还需要添加 **`train_step`** 和 **`evaluate_step`** 这两个方法" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5314482b", - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [], - "source": [ - "import torch\n", - "import torch.nn as nn\n", - "\n", - "class ArgMaxModel(nn.Module):\n", - " def __init__(self, num_labels, feature_dimension):\n", - " super(ArgMaxModel, self).__init__()\n", - " self.num_labels = num_labels\n", - "\n", - " self.linear1 = nn.Linear(in_features=feature_dimension, out_features=10)\n", - " self.ac1 = nn.ReLU()\n", - " self.linear2 = nn.Linear(in_features=10, out_features=10)\n", - " self.ac2 = nn.ReLU()\n", - " self.output = nn.Linear(in_features=10, out_features=num_labels)\n", - " self.loss_fn = nn.CrossEntropyLoss()\n", + "  添加`pytorch`要求的`forward`方法外,还需要添加 **`train_step`** 和 **`evaluate_step`** 这两个方法\n", + "***\n", + "```python\n", + "class Model(torch.nn.Module):\n", + " def __init__(self):\n", + " super(Model, self).__init__()\n", + " self.loss_fn = torch.nn.CrossEntropyLoss()\n", + " pass\n", "\n", " def forward(self, x):\n", - " x = self.ac1(self.linear1(x))\n", - " x = self.ac2(self.linear2(x))\n", - " x = self.output(x)\n", - " return x\n", + " pass\n", "\n", " def train_step(self, x, y):\n", - " x = self(x)\n", - " return {\"loss\": self.loss_fn(x, y)}\n", + " pred = self(x)\n", + " return {\"loss\": self.loss_fn(pred, y)}\n", "\n", " def evaluate_step(self, x, y):\n", - " x = self(x)\n", - " x = torch.max(x, dim=-1)[1]\n", - " return {\"pred\": x, \"target\": y}" - ] - }, - { - "cell_type": "markdown", - "id": "ca897322", - "metadata": {}, - "source": [ + " pred = self(x)\n", + " pred = torch.max(pred, dim=-1)[1]\n", + " return {\"pred\": pred, \"target\": y}\n", + "```\n", + "***\n", "在`fastNLP 0.8`中,**函数`train_step`是`Trainer`中参数`train_fn`的默认值**\n", "\n", - "  由于,在`Trainer`训练时,**`Trainer`通过参数`_train_fn_`对应的模型方法获得当前数据批次的损失值**\n", + "  由于,在`Trainer`训练时,**`Trainer`通过参数`train_fn`对应的模型方法获得当前数据批次的损失值**\n", "\n", "  因此,在`Trainer`训练时,`Trainer`首先会寻找模型是否定义了`train_step`这一方法\n", "\n", "    如果没有找到,那么`Trainer`会默认使用模型的`forward`函数来进行训练的前向传播过程\n", "\n", - "注:在`fastNLP 0.8`中,`Trainer`要求模型通过`train_step`来返回一个字典,将损失值作为`loss`的键值\n", + "注:在`fastNLP 0.8`中,**`Trainer`要求模型通过`train_step`来返回一个字典**,**满足如`{\"loss\": loss}`的形式**\n", "\n", "  此外,这里也可以通过传入`Trainer`的参数`output_mapping`来实现高度化的定制,具体请见这一note(???)\n", "\n", @@ -205,7 +175,11 @@ "\n", "  从用户角度,模型通过`evaluate_step`方法来返回一个字典,内容与传入`Evaluator`的`metrics`一致\n", "\n", - "" + "  从模块角度,该字典的键值和`metric`中的`update`函数的签名一致,这样的机制在传参时被称为“**参数匹配**”\n", + "\n", + "***\n", + "\n", + "![fastNLP 0.8 中,Trainer 和 Evaluator 的关系图](./figures/T0-fig-trainer-and-evaluator.png)" ] }, { @@ -213,13 +187,52 @@ "id": "fb3272eb", "metadata": {}, "source": [ - "### 2.2 trainer 的参数匹配\n", + "### 2.2 trainer 和 evaluator 的参数匹配\n", + "\n", + "在`fastNLP 0.8`中,参数匹配涉及到两个方面,分别是在\n", + "\n", + "  一方面,**在模型的前向传播中**,**`dataloader`向`train_step`或`evaluate_step`函数传递`batch`**\n", + "\n", + "  另方面,**在模型的评测过程中**,**`evaluate_dataloader`向`metric`的`update`函数传递`batch`**\n", "\n", - "`fastNLP 0.8`中的参数匹配涉及到两个方面,一是在模型训练或者评测的前向传播过程中,如果从`dataloader`中出来一个`batch`的数据是一个字典,那么我们会查看模型的`train_step`和`evaluate_step`方法的参数签名,然后对于每一个参数,我们会根据其名字从 batch 这一字典中选择出对应的数据传入进去。例如在接下来的定义`Dataset`的部分,注意`ArgMaxDatset`的`__getitem__`方法,您可以通过在`Trainer`和`Evaluator`中设置参数 `model_wo_auto_param_call`来关闭这一行为。当您关闭了这一行为后,我们会将`batch`直接传给您的`train_step`、`evaluate_step`或者 `forward`函数。\n", + "对于前者,在`Trainer`和`Evaluator`中的参数`model_wo_auto_param_call`被设置为`False`时\n", "\n", - "二是在传入`Trainer`或者`Evaluator metrics`后,我们会在需要评测的时间点主动调用`metrics`来对`evaluate_dataloaders`进行评测,这一功能主要就是通过对`metrics`的`update`方法和一个`batch`的数据进行参数评测实现的。首先需要明确的是一个 metric 的计算通常分为 `update` 和 `get_metric`两步,其中`update`表示更新一个`batch`的评测数据,`get_metric` 表示根据已经得到的评测数据计算出最终的评测值,例如对于 `Accuracy`来说,其在`update`的时候会更新一个`batch`计算正确的数量 right_num 和计算错误的数量 total_num,最终在 `get_metric` 时返回评测值`right_num / total_num`。\n", + "    **`fastNLP 0.8`要求`dataloader`生成的每个`batch`**,**满足如`{\"x\": x, \"y\": y}`的形式**\n", + "\n", + "  同时,`fastNLP 0.8`会查看模型的`train_step`和`evaluate_step`方法的参数签名,并为对应参数传入对应数值\n", + "\n", + "    **字典形式的定义**,**对应在`Dataset`定义的`__getitem__`方法中**,例如下方的`ArgMaxDatset`\n", + "\n", + "  而在`Trainer`和`Evaluator`中的参数`model_wo_auto_param_call`被设置为`True`时\n", + "\n", + "    `fastNLP 0.8`会将`batch`直接传给模型的`train_step`、`evaluate_step`或`forward`函数\n", + "***\n", + "```python\n", + "class Dataset(torch.utils.data.Dataset):\n", + " def __init__(self, x, y):\n", + " self.x = x\n", + " self.y = y\n", + "\n", + " def __len__(self):\n", + " return len(self.x)\n", + "\n", + " def __getitem__(self, item):\n", + " return {\"x\": self.x[item], \"y\": self.y[item]}\n", + "```\n", + "***\n", + "对于后者,首先要明确,在`Trainer`和`Evaluator`中,`metrics`的计算分为`update`和`get_metric`两步\n", "\n", - "因为`fastNLP 0.8`的`metrics`是自动计算的(只需要传给`Trainer`或者`Evaluator`),因此其一定依赖于参数匹配。对于从`evaluate_dataloader`中生成的一个`batch`的数据,我们会查看传给 `Trainer`(最终是传给`Evaluator`)和`Evaluator`的每一个`metric`,然后查看其`update`函数的函数签名,然后根据每一个参数的名字从`batch`字典中选择出对应的数据传入进去。" + "    **`update`函数**,**针对一个`batch`的预测结果**,计算其累计的评价指标\n", + "\n", + "    **`get_metric`函数**,**统计`update`函数累计的评价指标**,来计算最终的评价结果\n", + "\n", + "  例如对于`Accuracy`来说,`update`函数会更新一个`batch`的正例数量`right_num`和负例数量`total_num`\n", + "\n", + "    而`get_metric`函数则会返回所有`batch`的评测值`right_num / total_num`\n", + "\n", + "  在此基础上,**`fastNLP 0.8`要求`evaluate_dataloader`生成的每个`batch`传递给对应的`metric`**\n", + "\n", + "    **以`{\"pred\": y_pred, \"target\": y_true}`的形式**,对应其`update`函数的函数签名" ] }, { @@ -227,9 +240,65 @@ "id": "f62b7bb1", "metadata": {}, "source": [ - "### 2.3 trainer的实际使用\n", + "### 2.3 一个实际案例:argmax 模型\n", "\n", - "接下来我们创建用于训练的 dataset,其接受三个参数:数据维度、数据量和随机数种子,生成指定数量的维度为 `feature_dimension` 向量,而每一个向量的标签就是该向量中最大值的索引。" + "下文将通过训练`argmax`模型,简单介绍如何`Trainer`模块的使用方式\n", + "\n", + "  首先,使用`pytorch.nn.Module`定义`argmax`模型,目标是输入一组固定维度的向量,输出其中数值最大的数的索引" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5314482b", + "metadata": { + "pycharm": { + "is_executing": false + } + }, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "\n", + "class ArgMaxModel(nn.Module):\n", + " def __init__(self, num_labels, feature_dimension):\n", + " super(ArgMaxModel, self).__init__()\n", + " self.num_labels = num_labels\n", + "\n", + " self.linear1 = nn.Linear(in_features=feature_dimension, out_features=10)\n", + " self.ac1 = nn.ReLU()\n", + " self.linear2 = nn.Linear(in_features=10, out_features=10)\n", + " self.ac2 = nn.ReLU()\n", + " self.output = nn.Linear(in_features=10, out_features=num_labels)\n", + " self.loss_fn = nn.CrossEntropyLoss()\n", + "\n", + " def forward(self, x):\n", + " pred = self.ac1(self.linear1(x))\n", + " pred = self.ac2(self.linear2(pred))\n", + " pred = self.output(pred)\n", + " return pred\n", + "\n", + " def train_step(self, x, y):\n", + " pred = self(x)\n", + " return {\"loss\": self.loss_fn(pred, y)}\n", + "\n", + " def evaluate_step(self, x, y):\n", + " pred = self(x)\n", + " pred = torch.max(pred, dim=-1)[1]\n", + " return {\"pred\": pred, \"target\": y}" + ] + }, + { + "cell_type": "markdown", + "id": "71f3fa6b", + "metadata": {}, + "source": [ + "  接着,使用`torch.utils.data.Dataset`定义`ArgMaxDataset`数据集\n", + "\n", + "    数据集包含三个参数:维度`feature_dimension`、数据量`data_num`和随机种子`seed`\n", + "\n", + "    数据及初始化是,自动生成指定维度的向量,并为每个向量标注出其中最大值的索引作为预测标签" ] }, { @@ -245,7 +314,7 @@ "source": [ "from torch.utils.data import Dataset\n", "\n", - "class ArgMaxDatset(Dataset):\n", + "class ArgMaxDataset(Dataset):\n", " def __init__(self, feature_dimension, data_num=1000, seed=0):\n", " self.num_labels = feature_dimension\n", " self.feature_dimension = feature_dimension\n", @@ -269,7 +338,9 @@ "id": "2cb96332", "metadata": {}, "source": [ - "现在准备好数据和模型。" + "  然后,根据`ArgMaxModel`类初始化模型实例,保持输入维度`feature_dimension`和输出标签数量`num_labels`一致\n", + "\n", + "    再根据`ArgMaxDataset`类初始化两个数据集实例,分别用来模型测试和模型评测,数据量各1000笔" ] }, { @@ -283,16 +354,10 @@ }, "outputs": [], "source": [ - "from torch.utils.data import DataLoader\n", - "\n", - "train_dataset = ArgMaxDatset(feature_dimension=10, data_num=1000)\n", - "evaluate_dataset = ArgMaxDatset(feature_dimension=10, data_num=100)\n", - "\n", - "train_dataloader = DataLoader(train_dataset, batch_size=8, shuffle=True)\n", - "evaluate_dataloader = DataLoader(evaluate_dataset, batch_size=8)\n", + "model = ArgMaxModel(num_labels=10, feature_dimension=10)\n", "\n", - "# num_labels 设置为 10,与 feature_dimension 保持一致,因为我们是预测十个位置中哪一个的概率最大。\n", - "model = ArgMaxModel(num_labels=10, feature_dimension=10)" + "train_dataset = ArgMaxDataset(feature_dimension=10, data_num=1000)\n", + "evaluate_dataset = ArgMaxDataset(feature_dimension=10, data_num=100)" ] }, { @@ -300,12 +365,33 @@ "id": "4e7d25ee", "metadata": {}, "source": [ - "将优化器也定义好。" + "  此外,使用`torch.utils.data.DataLoader`初始化两个数据加载模块,批量大小同为8,分别用于训练和测评" ] }, { "cell_type": "code", "execution_count": 4, + "id": "363b5b09", + "metadata": {}, + "outputs": [], + "source": [ + "from torch.utils.data import DataLoader\n", + "\n", + "train_dataloader = DataLoader(train_dataset, batch_size=8, shuffle=True)\n", + "evaluate_dataloader = DataLoader(evaluate_dataset, batch_size=8)" + ] + }, + { + "cell_type": "markdown", + "id": "c8d4443f", + "metadata": {}, + "source": [ + "  最后,使用`torch.optim.SGD`初始化一个优化模块,基于随机梯度下降法" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "id": "dc28a2d9", "metadata": { "pycharm": { @@ -321,15 +407,33 @@ }, { "cell_type": "markdown", - "id": "4f1fba81", + "id": "eb8ca6cf", + "metadata": {}, + "source": [ + "## 3. 使用 fastNLP 0.8 训练 argmax 模型\n", + "\n", + "### 3.1 trainer 外部初始化的 evaluator" + ] + }, + { + "cell_type": "markdown", + "id": "55145553", "metadata": {}, "source": [ - "现在万事俱备,开始使用 Trainer 进行训练!" + "通过从`fastNLP`库中导入`Trainer`类,初始化`trainer`实例,对模型进行训练\n", + "\n", + "  需要导入预先定义好的模型`model`、对应的数据加载模块`train_dataloader`、优化模块`optimizer`\n", + "\n", + "  通过`progress_bar`设定进度条格式,默认为`\"auto\"`,此外还有`\"rich\"`、`\"raw\"`和`None`\n", + "\n", + "    但对于`\"auto\"`和`\"rich\"`格式,训练结束后进度条会不显示(???)\n", + "\n", + "  通过`n_epochs`设定优化迭代轮数,默认为20;全部`Trainer`的全部变量与函数可以通过`dir(trainer)`查询" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "b51b7a2d", "metadata": { "pycharm": { @@ -349,167 +453,20 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "['__annotations__',\n", - " '__class__',\n", - " '__delattr__',\n", - " '__dict__',\n", - " '__dir__',\n", - " '__doc__',\n", - " '__eq__',\n", - " '__format__',\n", - " '__ge__',\n", - " '__getattribute__',\n", - " '__gt__',\n", - " '__hash__',\n", - " '__init__',\n", - " '__init_subclass__',\n", - " '__le__',\n", - " '__lt__',\n", - " '__module__',\n", - " '__ne__',\n", - " '__new__',\n", - " '__reduce__',\n", - " '__reduce_ex__',\n", - " '__repr__',\n", - " '__setattr__',\n", - " '__sizeof__',\n", - " '__str__',\n", - " '__subclasshook__',\n", - " '__weakref__',\n", - " '_check_callback_called_legality',\n", - " '_check_train_batch_loop_legality',\n", - " '_custom_callbacks',\n", - " '_driver',\n", - " '_evaluate_dataloaders',\n", - " '_fetch_matched_fn_callbacks',\n", - " '_set_num_eval_batch_per_dl',\n", - " '_train_batch_loop',\n", - " '_train_dataloader',\n", - " '_train_step',\n", - " '_train_step_signature_fn',\n", - " 'accumulation_steps',\n", - " 'add_callback_fn',\n", - " 'backward',\n", - " 'batch_idx_in_epoch',\n", - " 'batch_step_fn',\n", - " 'callback_manager',\n", - " 'check_batch_step_fn',\n", - " 'cur_epoch_idx',\n", - " 'data_device',\n", - " 'dataloader',\n", - " 'device',\n", - " 'driver',\n", - " 'driver_name',\n", - " 'epoch_validate',\n", - " 'evaluate_batch_step_fn',\n", - " 'evaluate_dataloaders',\n", - " 'evaluate_every',\n", - " 'evaluate_fn',\n", - " 'evaluator',\n", - " 'extract_loss_from_outputs',\n", - " 'fp16',\n", - " 'get_no_sync_context',\n", - " 'global_forward_batches',\n", - " 'has_checked_train_batch_loop',\n", - " 'input_mapping',\n", - " 'kwargs',\n", - " 'larger_better',\n", - " 'load',\n", - " 'load_model',\n", - " 'marker',\n", - " 'metrics',\n", - " 'model',\n", - " 'model_device',\n", - " 'monitor',\n", - " 'move_data_to_device',\n", - " 'n_epochs',\n", - " 'num_batches_per_epoch',\n", - " 'on',\n", - " 'on_after_backward',\n", - " 'on_after_optimizers_step',\n", - " 'on_after_trainer_initialized',\n", - " 'on_after_zero_grad',\n", - " 'on_before_backward',\n", - " 'on_before_optimizers_step',\n", - " 'on_before_zero_grad',\n", - " 'on_exception',\n", - " 'on_fetch_data_begin',\n", - " 'on_fetch_data_end',\n", - " 'on_load_checkpoint',\n", - " 'on_load_model',\n", - " 'on_sanity_check_begin',\n", - " 'on_sanity_check_end',\n", - " 'on_save_checkpoint',\n", - " 'on_save_model',\n", - " 'on_train_batch_begin',\n", - " 'on_train_batch_end',\n", - " 'on_train_begin',\n", - " 'on_train_end',\n", - " 'on_train_epoch_begin',\n", - " 'on_train_epoch_end',\n", - " 'on_validate_begin',\n", - " 'on_validate_end',\n", - " 'optimizers',\n", - " 'output_mapping',\n", - " 'run',\n", - " 'save',\n", - " 'save_model',\n", - " 'set_grad_to_none',\n", - " 'state',\n", - " 'step',\n", - " 'step_validate',\n", - " 'total_batches',\n", - " 'train_batch_loop',\n", - " 'train_dataloader',\n", - " 'train_fn',\n", - " 'train_step',\n", - " 'trainer_state',\n", - " 'zero_grad']" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "from fastNLP import Trainer\n", "\n", - "# 定义一个 Trainer\n", "trainer = Trainer(\n", " model=model,\n", - " driver=\"torch\", # 使用 pytorch 进行训练\n", - " device=0, # 使用 GPU:0\n", + " driver=\"torch\",\n", + " device='cuda',\n", " train_dataloader=train_dataloader,\n", " optimizers=optimizer,\n", - " n_epochs=10, # 训练 40 个 epoch\n", - " progress_bar=\"rich\"\n", - ")\n", - "dir(trainer)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f8fe9c32", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "FullArgSpec(args=['self', 'num_train_batch_per_epoch', 'num_eval_batch_per_dl', 'num_eval_sanity_batch', 'resume_from', 'resume_training', 'catch_KeyboardInterrupt'], varargs=None, varkw=None, defaults=(-1, -1, 2, None, True, None), kwonlyargs=[], kwonlydefaults=None, annotations={'num_train_batch_per_epoch': , 'num_eval_batch_per_dl': , 'num_eval_sanity_batch': , 'resume_from': , 'resume_training': })\n" - ] - } - ], - "source": [ - "import inspect \n", - "\n", - "print(inspect.getfullargspec(trainer.run))" + " n_epochs=10, # 设定迭代轮数 \n", + " progress_bar=\"auto\" # 设定进度条格式\n", + ")" ] }, { @@ -517,16 +474,20 @@ "id": "6e202d6e", "metadata": {}, "source": [ - "没有问题,那么开始真正的训练!" + "通过使用`Trainer`类的`run`函数,进行训练\n", + "\n", + "  其中,可以通过参数`num_train_batch_per_epoch`决定每个`epoch`运行多少个`batch`后停止,默认全部\n", + "\n", + "  此外,可以通过`inspect.getfullargspec(trainer.run)`查询`run`函数的全部参数列表" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "ba047ead", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [ @@ -587,27 +548,25 @@ }, { "cell_type": "markdown", - "id": "eb8ca6cf", - "metadata": {}, - "source": [ - "## 3. 使用 evaluator 评测模型" - ] - }, - { - "cell_type": "markdown", "id": "c16c5fa4", "metadata": {}, "source": [ - "模型训练好了我们开始使用 Evaluator 进行评测,查看效果怎么样吧。" + "通过从`fastNLP`库中导入`Evaluator`类,初始化`evaluator`实例,对模型进行评测\n", + "\n", + "  需要导入预先定义好的模型`model`、对应的数据加载模块`evaluate_dataloader`\n", + "\n", + "  需要注意的是评测方法`metrics`,设定为形如`{'acc': fastNLP.core.metrics.Accuracy()}`的字典\n", + "\n", + "  类似地,也可以通过`progress_bar`限定进度条格式,默认为`\"auto\"`" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "1c6b6b36", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [], @@ -617,100 +576,32 @@ "\n", "evaluator = Evaluator(\n", " model=model,\n", - " driver=trainer.driver, # 使用 trainer 已经启动的 driver;\n", + " driver=trainer.driver, # 需要使用 trainer 已经启动的 driver\n", " device=None,\n", " dataloaders=evaluate_dataloader,\n", - " metrics={'acc': Accuracy()} # 注意这里一定得是一个字典;\n", + " metrics={'acc': Accuracy()} # 需要严格使用此种形式的字典\n", ")" ] }, { - "cell_type": "code", - "execution_count": 11, - "id": "257061df", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['__annotations__',\n", - " '__class__',\n", - " '__delattr__',\n", - " '__dict__',\n", - " '__dir__',\n", - " '__doc__',\n", - " '__eq__',\n", - " '__format__',\n", - " '__ge__',\n", - " '__getattribute__',\n", - " '__gt__',\n", - " '__hash__',\n", - " '__init__',\n", - " '__init_subclass__',\n", - " '__le__',\n", - " '__lt__',\n", - " '__module__',\n", - " '__ne__',\n", - " '__new__',\n", - " '__reduce__',\n", - " '__reduce_ex__',\n", - " '__repr__',\n", - " '__setattr__',\n", - " '__sizeof__',\n", - " '__str__',\n", - " '__subclasshook__',\n", - " '__weakref__',\n", - " '_dist_sampler',\n", - " '_evaluate_batch_loop',\n", - " '_evaluate_step',\n", - " '_evaluate_step_signature_fn',\n", - " '_metric_wrapper',\n", - " '_metrics',\n", - " 'dataloaders',\n", - " 'device',\n", - " 'driver',\n", - " 'evaluate_batch_loop',\n", - " 'evaluate_batch_step_fn',\n", - " 'evaluate_fn',\n", - " 'evaluate_step',\n", - " 'finally_progress_bar',\n", - " 'get_dataloader_metric',\n", - " 'input_mapping',\n", - " 'metrics',\n", - " 'metrics_wrapper',\n", - " 'model',\n", - " 'model_use_eval_mode',\n", - " 'move_data_to_device',\n", - " 'output_mapping',\n", - " 'progress_bar',\n", - " 'remove_progress_bar',\n", - " 'reset',\n", - " 'run',\n", - " 'separator',\n", - " 'start_progress_bar',\n", - " 'update',\n", - " 'update_progress_bar',\n", - " 'verbose']" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "8157bb9b", + "metadata": {}, "source": [ - "dir(evaluator)" + "通过使用`Evaluator`类的`run`函数,进行训练\n", + "\n", + "  其中,可以通过参数`num_eval_batch_per_dl`决定每个`evaluate_dataloader`运行多少个`batch`停止,默认全部\n", + "\n", + "  最终,输出形如`{'acc#acc': acc}`的字典,中间的进度条会在运行结束后丢弃掉(???)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "id": "f7cb0165", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [ @@ -750,11 +641,11 @@ { "data": { "text/html": [ - "
{'acc#acc': 0.3}\n",
+       "
{'acc#acc': 0.43}\n",
        "
\n" ], "text/plain": [ - "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.3\u001b[0m\u001b[1m}\u001b[0m\n" + "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.43\u001b[0m\u001b[1m}\u001b[0m\n" ] }, "metadata": {}, @@ -763,10 +654,10 @@ { "data": { "text/plain": [ - "{'acc#acc': 0.3}" + "{'acc#acc': 0.43}" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -780,39 +671,37 @@ "id": "dd9f68fa", "metadata": {}, "source": [ - "## 4. 在 trainer 中加入 metric 来自动评测;" - ] - }, - { - "cell_type": "markdown", - "id": "ca97c9a4", - "metadata": {}, - "source": [ - "现在我们尝试在训练过程中进行评测。" + "### 3.2 trainer 内部初始化的 evaluator \n", + "\n", + "通过在初始化`trainer`实例时加入`evaluate_dataloaders`和`metrics`,可以实现在训练过程中进行评测\n", + "\n", + "  通过`progress_bar`同时设定训练和评估进度条格式,训练结束后进度条会不显示(???)\n", + "\n", + "  **通过`evaluate_every`设定评估频率**,可以为负数、正数或者函数:\n", + "\n", + "    **为负数时**,**表示每隔几个`epoch`评估一次**;**为正数时**,**则表示每隔几个`batch`评估一次**" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "183c7d19", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [], "source": [ - "# 重新定义一个 Trainer\n", - "\n", "trainer = Trainer(\n", " model=model,\n", - " driver=trainer.driver, # 因为我们是在同一脚本中,因此这里的 driver 同样需要重用;\n", + " driver=trainer.driver, # 因为是在同个脚本中,这里的 driver 同样需要重用\n", " train_dataloader=train_dataloader,\n", " evaluate_dataloaders=evaluate_dataloader,\n", " metrics={'acc': Accuracy()},\n", " optimizers=optimizer,\n", - " n_epochs=10, # 训练 40 个 epoch;\n", - " evaluate_every=-1, # 表示每一个 epoch 的结束会进行 evaluate;\n", + " n_epochs=10, \n", + " evaluate_every=-1, # 表示每个 epoch 的结束进行评估\n", ")" ] }, @@ -821,16 +710,18 @@ "id": "714cc404", "metadata": {}, "source": [ - "再次训练。" + "通过使用`Trainer`类的`run`函数,进行训练\n", + "\n", + "  还可以通过参数`num_eval_sanity_batch`决定每次训练前运行多少个`evaluate_batch`进行评测,默认为2" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "2e4daa2c", "metadata": { "pycharm": { - "is_executing": false + "is_executing": true } }, "outputs": [ @@ -884,96 +775,6 @@ "source": [ "trainer.run()" ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "eabda5eb", - "metadata": {}, - "outputs": [], - "source": [ - "evaluator = Evaluator(\n", - " model=model,\n", - " driver=trainer.driver, # 使用 trainer 已经启动的 driver;\n", - " dataloaders=evaluate_dataloader,\n", - " metrics={'acc': Accuracy()} # 注意这里一定得是一个字典;\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "a310d157", - "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" - }, - { - "data": { - "text/html": [ - "
{'acc#acc': 0.5}\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[1m{\u001b[0m\u001b[32m'acc#acc'\u001b[0m: \u001b[1;36m0.5\u001b[0m\u001b[1m}\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "{'acc#acc': 0.5}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "evaluator.run()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f1ef78f0", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/tutorials/figures/T0-fig-trainer-and-evaluator.png b/tutorials/figures/T0-fig-trainer-and-evaluator.png new file mode 100644 index 0000000000000000000000000000000000000000..a98ab83b48b29a07ba450f077a95fc5fcf5a8659 GIT binary patch literal 104863 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

)Ut(#cynndrF9dRWi7i(G$BOl03;BZNHAX{D*D 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

C78*Y5(&IuDOvm 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