为灵活的研究和开发而设计的nlp库

transfer-nlp的Python项目详细描述


欢迎来到Transfer NLP库,这是一个建立在Pythorch之上的框架,其目标是逐步实现两种传输:

  • 代码的轻松传输:框架应该足够模块化,这样您就不必每次尝试新的体系结构/新的任务时都重新编写所有内容
  • 轻松转移学习:该框架应该能够轻松地与预先训练的模型交互并操纵它们,以便微调它们的某些部分。

您可以在这本colab笔记本上对高级api进行概述,它展示了如何在几个示例中使用框架。 这些笔记本上的所有例子都嵌入了Cell Tensorboard Training Monitoring!

作为预先训练的模型微调的一个例子,我们提供了一个关于BertClassifier微调的简短可执行教程,关于这个colab笔记本

设置您的环境

mkvirtualenv transfernlp
workon transfernlp

git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
  • 创建虚拟环境:mkvirtualenv yourenvname(使用mkvirtualenv或您选择的虚拟环境管理器)
  • 克隆存储库:git clone https://github.com/feedly/transfer nlp.git
  • 安装要求:pip install-r requirements.txt

该库位于pypi上,但不建议使用pip install transfer nlp

文档

API文档和库的概述可以在这里找到

库的高级别使用

您可以查看colab笔记本了解库的使用情况。

库的核心由一个实验构建器组成:定义实验所需的不同对象,配置加载程序以一种良好的方式构建它们:

from transfer_nlp.plugins.config import ExperimentConfig

# Launch an experiment
config_file  = {...}  # Dictionary config file, or str/Path to a json config file
experiment = ExperimentConfig(experiment=config_file)

# Interaact with the experiment's objects, e.g. launch a training job of a `trainer` object
experiment['trainer'].train()

# Another use of experiment object: use the `predictor` object for inference
input_json = {"inputs": [Some Examples]}
output_json = experiment['predictor'].json_to_json(input_json=input_json)

如何在图书馆进行实验?

对于可重复的研究和简单的消融研究,库强制使用实验配置文件。

在transfer nlp中,实验配置文件包含定义整个实验所需的所有信息。 在这里,您将插入实验将使用的不同组件的名称。 transfer nlp使用了控制模式的反转,它允许您定义任何类型的类,并且expericsconfig.from_json方法将创建一个措辞并相应地设置您的对象。

要在transfer nlp中使用您自己的类,您需要使用@register\u插件装饰器注册它们。这里不为每种组件(模型、数据加载器、矢量器、优化器等)使用不同的注册表,而只使用一个注册表,以便强制进行完全自定义。

目前,配置文件逻辑有三种组件:

  • 简单参数:这些是预先知道值的参数:
{"initial_learning_rate": 0.01,
"embedding_dim": 100,...}
  • 简单列表:类似于简单参数,但作为列表:
{"layers_dropout": [0.1, 0.2, 0.3], ...}
  • 复杂配置:这是库实例化对象的地方:每个对象都需要指定它的\u name名称(通过它注册的类的名称@register_plugindecorator)及其定义的参数。如果类具有默认参数,而配置文件不包含这些参数,则对象将被实例化为默认值。否则,参数必须出现在配置文件中。有时,在启动实验之前,初始化参数不可用。例如,假设您的模型对象需要一个词汇表大小作为init输入。这里的配置文件逻辑使处理这个问题变得容易,同时保持库代码的通用性。

您可以查看配置加载器可以生成的实验设置示例。 此外,我们还提供了可运行的实验,在实验/

使用管道

配置文件的目标是加载不同的对象并从中运行实验。

一个很常见的使用对象是Trainer,您将在实验期间运行它。我们在transfer-nlp.plugins.trainers.py中提供一个基本控制器。 这个基础培训师将以一个模型和一些数据作为输入,并运行一个完整的培训管道。我们利用pytorch ignite库来监控培训过程中的事件(记录一些指标、控制学习率、检查点模型等)。tensorboard日志也是一个选项,您必须在配置文件中指定一个tensorboard_logssimple parameters路径。然后在终端上运行tensorboard--logdir=path/to/logs,你就可以在训练时监视你的实验了! tensorboard附带了非常好的实用程序,可以跟踪模型权重、直方图、分布、可视化嵌入等的规范,因此我们建议您使用它。

松弛积分

在试验自己的模型/数据时,培训可能需要一些时间。要在培训结束或崩溃时获得通知,您可以使用huggingface上的人使用的简单库knockknockknockknockknockknockknockknockrel="nofollow",该库向您的运行函数添加了一个简单的装饰器,以通过slack、电子邮件等方式通知您。

要达到的一些目标:

  • 包括使用最先进的预培训模型的示例
  • 包括模型的语言属性
  • 对连续任务使用rl进行实验
  • 包括探测任务,尝试理解模型学习到的属性

确认

该图书馆的灵感来源于Delip Rao和Brian McMahan阅读的"自然语言处理与pytorch"。 在实验中的实验,词汇构建块和最近的嵌入是从书中提供的代码中获取或改编的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Esper中声明Classtype实例变量并调用实例方法时未调用java实例方法   java Android真的很慢   macos在Mac上用Java播放声音   java如何在springboot中生成clientid和clientsecret并存储在数据库中?   返回假条件的java方法   数组在Java中截断同步ArrayList的正确方法   java HashMap<Long,String>和HashMap<>之间有什么区别?   正在寻找允许按名称读取列的java CSV库   HQL Hibernate查询中的java左连接   java以编程方式添加可绘制图像的最佳方法是什么?   已使用NetworkImageView下载的安卓加载图像上的java截击不起作用   java CORBA通知订阅(错误:org.omg.CORBA.MARSHAL:vmcid:0x0次要代码:0已完成:否)   Java BufferedReader openvms   java是搜索字符串中的一个字母并在字母前加上“a”的最佳算法?   由于测试依赖关系,java Gradle Spring云流项目未生成   Java程序中的数组ArrayIndexOutOfBoundsException,用于检查double是否为负数   java Android/RxJava如何链接网络请求并在失败时重试   java告诉OpenEJB忽略MDB   java如何在不迁移的情况下在room数据库中添加表