
欢迎来到Transfer NLP库,这是一个建立在Pytorch顶部的框架,以促进NLP中可重复的实验和转移学习
您可以在此COLAB笔记本上概述高级API,其中显示了如何在几个示例中使用该框架。这些笔记本上的所有基于DL的示例都嵌入了电池内张板训练监视!
对于预先训练的模型登录的示例,我们在此COLAB笔记本上提供了关于BertClassifier Finetuning的简短可执行教程
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
将转移NLP用作库:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
或者
pip install git+https://github.com/feedly/transfer-nlp.git
要在新版本之前获得最新状态。
将转移NLP与相关的示例使用:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
可以在此处找到API文档和库的概述
库的核心是由实验构建器制成的:您定义了实验所需的不同对象,并且配置加载器以一种很好的方式构建它们。为了可重现的研究和易于消融研究,库将使用配置文件进行实验。由于人们对构成一个好的实验文件具有不同的口味,因此该库允许以几种格式定义实验:
在Transfer-NLP中,实验配置文件包含所有必要的信息,以完全定义实验。在这里,您将插入实验将使用的不同组件的名称以及要使用的超参数。 Transfer-NLP利用控制模式的反转,该反转使您可以定义可能需要的任何类 /方法 /函数, ExperimentConfig类将创建一个字典并相应地对象进行构成。
要在Transfer-NLP中使用自己的类,您需要使用@register_plugin Decorator注册它们。与其为每种组件(模型,数据加载程序,矢量化器,优化器,...)使用不同的注册表,不如在此使用一个注册表,以实施总体自定义。
如果您仅将传输NLP用作DEV依赖项,则可能只想声明使用它,并在您要在实验运行时间内使用的对象上调用register_plugin() 。
这是如何在yaml文件中定义实验的示例:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
任何对象都可以通过类,方法或函数定义,给定一个_name参数,然后是其自己的参数。然后使用ExperimentConfig(experiment=experiment_path_or_dict)
一些考虑:
可以在实验文件中跳过默认参数。
如果在不同位置使用对象,则可以使用$符号来参考它,例如,在此处, trainer对象使用其他地方实例化的data_loader 。不需要对象的订购。
对于路径,您可能需要使用环境变量,以便其他机器也可以运行实验。在上一个示例中,您将运行EG ExperimentConfig(experiment=yaml_path, HOME=Path.home())来实例化实验,并通过机器家居路径替换$HOME 。
配置实例允许使用嵌套dict / list的任何复杂设置
您可以查看测试以获取配置加载程序可以构建的实验设置的示例。另外,我们在experiments/中提供可运行的实验。
对于深度学习实验,我们在transfer_nlp.plugins.trainers.py中提供了BaseIgniteTrainer 。这位基本培训师将采用模型和一些数据作为输入,并运行整个培训管道。我们利用Pytorch-Ingiente库在培训期间监视事件(记录一些指标,操纵学习率,检查点模型等)。张板日志也包括在选项中,您必须在配置文件中指定tensorboard_logs简单参数路径。然后只需运行tensorboard --logdir=path/to/logs ,您可以在训练时监视实验! Tensorboard配备非常好的实用程序,可以跟踪模型权重,直方图,分布,可视化嵌入等规范,因此我们真的建议使用它。

我们提供了一个SingleTaskTrainer结构师类,您可以将其用于处理一项任务的任何监督设置。我们正在研究MultiTaskTrainer任务类别类,以处理多任务设置,以及用于大型模型登录设置的SingleTaskFineTuner 。
以下是一些用于转移NLP的用例:
ExperimentRunner类允许依次运行您的实验集并生成个性化报告(您只需要在自定义ReporterABC类中实现report方法)Module实现,并让培训师处理培训部分(同时仍通过实验文件控制大多数培训参数)在尝试自己的模型 /数据时,培训可能需要一些时间。为了在训练完成或崩溃时通知,您可以使用Huggingface的人们使用简单的库敲击,该库为您的跑步功能添加了一个简单的装饰器,以通过Slack,Ed-Mail,ETC通知您。
图书馆的灵感来自Delip Rao和Brian McMahan的“与Pytorch的自然语言处理”的启发。在experiments中,词汇构建块和最近邻居的嵌入方式是根据书中提供的代码进行的。