https://www.jiqizhixin.com/articles/2017-09-09-5

AllenNLP 可以让你轻松地设计和评估几乎所有 NLP 问题上最新的深度学习模型,并同基础设施一起让这些模型自由运行在云端和你的笔记本电脑上。

链接:http://allennlp.org (http://allennlp.org/)

GitHub:https://github.com/allenai/allennlp

Allen NLP 是一个基于 Apache 2.0 的 NLP 研究库,构建于 PyTorch 之上,可为开发者提供语言任务中的各种业内最佳训练模型。

快速开始

最快启用 AllenNLP 的方法是使用 Docker。如果你安装了 Docker(https://docs.docker.com/engine/installation/),你只需运行 docker run -it --rm allennlp/allennlp 来载入 AllenNLP,这样它就可以在 CPU 与 GPU 上运行了。随后,你就可以:

  • 通过 allennlp/run bulk 运行示例句子
  • 通过 allennlp/run serve 启动 web 服务来托管模型
  • 通过 python 从 Python 解释器与 AllenNLP 之间交互编码

AllenNLP 简介

AllenNLP 构建于 PyTorch 之上,它的设计遵循以下原则:

  • 超模块化和轻量化。你可以使用自己喜欢的组件与 PyTorch 无缝连接。
  • 经过广泛测试,易于扩展。测试覆盖率超过 90%,示例模型为你提供了很好的模板。
  • 真正的填充和覆盖,让你可以毫无痛苦地轻松实现正确的模型。
  • 易于实验。可以通过符合 json 规范的全面记录重现实验过程。

AllenNLP 包含的高质量模型有 Semantic Role Labelling、Question and Answering (BiDAF)、Entailment(可分注意力)等等。

AllenNLP 主要由 Allen 人工智能实验室构建和维护,该项目也与华盛顿大学等机构共同合作。

运行 AllenNLP

设置 CONDA 开发环境

Conda 可为特定版本的 Python 设置所有为运行 AllenNLP 的依赖环境。

1.下载与安装 Conda

2.将你的目录指向 AllenNLP 的克隆

  1. cd allennlp

3. 构建一个 Python 3.6 上的 Conda 环境

  1. conda create -n allennlp python=3.6

4.现在激活 Conda 环境。你需要激活需要使用 AllenNLP 的每个终端中的 Conda 环境。

  1. source activate allennlp

5. 安装所需的依赖环境。

  1. INSTALL_TEST_REQUIREMENTS="true" ./scripts/install_requirements.sh

6.访问 http://pytorch.org/,安装相关的 pytorch 包。

7.为重复实验设置 PYTHONHASHSEED。你可能会在.bashrc 中需要这样做。

  1. export PYTHONHASHSEED=2157

现在,你应该可以用 pytest -v 来测试安装结果了。

构建 Docker 开发环境

Docker 为虚拟机提供了运行 AllenNLP 的所有设置,无论你想在 GPU 还是 CPU 上运行都很简单。Docker 可以提供更多的隔离和一致性,也可以轻松地把你设置的环境分发到计算机集群中去。

下载预构建的 Docker 图

运行预构建的 Docker 环境非常简单。AllenNLP 配置了 Docker Cloud 用于在主分支每次更新时构建新图。下载链接:https://hub.docker.com/r/allennlp/

  1. docker pull allennlp/allennlp:latest

构建一个 Docker 图

以下是创建在 CPU 或 GPU 上运行的 Docker 环境的方法。以下命令可能会需要一些时间来运行,它会完全构建运行 AllenNLP 所需的环境。

  1. docker build --tag allennlp/allennlp .

你现在可以通过运行 docker images allennlp 来观察图了。

  1. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  2. allennlp/allennlp            latest              b66aee6cb593        5 minutes ago       2.38GB

运行 Docker 图

你可以使用 docker run --rm -it allennlp/allennlp 来运行图。--rm 标记清理图,-it 可以使会话交互,以便使用 Docker 镜像启动的 bash shell。

Docker 环境使用 Conda 来安装 Python 并自动进入 Conda 环境「allennlp」。你可以通过运行 pytest -v 来测试安装结果。

设置 Kubernetes 开发环境

Kubernetes 可将你的 Docker 图部署到云端,这样就可以在 AWS 上拥有可重现的开发环境。

  1. 设置 kubectl 连接到你的 Kubernetes 集群中。
  2. 运行 kubectl create -f /path/to/kubernetes-dev-environment.yaml。这会在集群上创建一个「job」,随后可以使用 bash 连接。请注意,你将使用将推送的最后一个 Docker 文件,因此源代码可能与本地内容不符。
  3. 检索使用 kubectl describe job <JOBNAME> --namespace=allennlp 创建的 pod 名称。pod 名称将会是你的 job 名之后加上一些其他字符。
  4. 使用 kubectl exec -it <PODNAME> bash 获取容器内的 shell。
  5. 完成后,不要忘记使用 kubectl delete -f /path/to/kubernetes-dev-environment.yaml 来关闭 job。

模型

借助易于运行的基础设施,AllenNLP 在合理的运行时间内展现了强大性能。

机器理解

机器理解(MC)模型通过选择证据文本中的答案范围回答自然语言问题。AllenNLP MC 模型是 BiDAF 或者双向注意力流的再实现 (参见 Seo et al, 2017),后者是一个广泛应用的 MC 基线并在 SQuAD 数据集上获得了几近当前最佳的精确度。AllenNLP BIDAF 模型在 SQuAD 开发套件上实现了 68.7 的 EM 得分,略高于原始 BIDAF 系统 67.7 的分值,尽管后者也在 10x 的提速上做了训练(p2.xlarge 上 4 个小时)。

语义角色标注

语义角色标注(SRL)模型恢复了语句的潜在谓词参数结构。SRL 构建了回答语义基本问题的表征,包括「谁」对「谁」做了「什么」等等。AllenNLP SRL 模型是深度 BiLSTM 模型 (He et al, 2017) 的再实现,它非常匹配已公开的模型,在 CoNLL 2012 取得了 78.9 的 F1 分数。

文本蕴涵

文本蕴涵(TE)模型使用一对语句预测第一句中的事实是否蕴含着第二句的事实。AllenNLP TE 模型是可分解式注意力模型的再实现(Parikh et al, 2017),后者是一个广泛使用的 TE 基线,它相对简单,并在 SNLI 数据集取得了几近当前最佳的性能。AllenNLP TE 模型在 SNLI 测试数据集上的精确度高达 84.7,相比之下原始系统的分值是 86.3。 

声明:本文由机器之心编译出品,原文来自AllenNLP,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。

艾伦AI研究院发布AllenNLP:基于PyTorch的NLP工具包的更多相关文章

  1. JeecgBoot 2.1.1 代码生成器AI版本发布,基于SpringBoot+AntDesign的JAVA快速开发平台

    此版本重点升级了 Online 代码生成器,支持更多的控件生成,所见即所得,极大的提高开发效率:同时做了数据库兼容专项工作,让 Online 开发兼容更多数据库:Mysql.SqlServer.Ora ...

  2. 基于 PyTorch 和神经网络给 GirlFriend 制作漫画风头像

    摘要:本文中我们介绍的 AnimeGAN 就是 GitHub 上一款爆火的二次元漫画风格迁移工具,可以实现快速的动画风格迁移. 本文分享自华为云社区<AnimeGANv2 照片动漫化:如何基于 ...

  3. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型

    原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...

  4. 实践torch.fx第一篇——基于Pytorch的模型优化量化神器

    第一篇--什么是torch.fx 今天聊一下比较重要的torch.fx,也趁着这次机会把之前的torch.fx笔记整理下,笔记大概拆成三份,分别对应三篇: 什么是torch.fx 基于torch.fx ...

  5. 【转】发布一个基于NGUI编写的UI框架

    发布一个基于NGUI编写的UI框架 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面 ...

  6. 基于pytorch实现HighWay Networks之Highway Networks详解

    (一)简述---承接上文---基于pytorch实现HighWay Networks之Train Deep Networks 上文已经介绍过Highway Netwotrks提出的目的就是解决深层神经 ...

  7. 基于pytorch的电影推荐系统

    本文介绍一个基于pytorch的电影推荐系统. 代码移植自https://github.com/chengstone/movie_recommender. 原作者用了tf1.0实现了这个基于movie ...

  8. 基于Pytorch的简单小案例

    神经网络的理论知识不是本文讨论的重点,假设读者们都是已经了解RNN的基本概念,并希望能用一些框架做一些简单的实现.这里推荐神经网络必读书目:邱锡鹏<神经网络与深度学习>.本文基于Pytor ...

  9. 使用LabVIEW实现基于pytorch的DeepLabv3图像语义分割

    前言 今天我们一起来看一下如何使用LabVIEW实现语义分割. 一.什么是语义分割 图像语义分割(semantic segmentation),从字面意思上理解就是让计算机根据图像的语义来进行分割,例 ...

随机推荐

  1. Code Forces 698A Vacations

    题目描述 Vasya has nn days of vacations! So he decided to improve his IT skills and do sport. Vasya know ...

  2. ==与equals与hashCode的区别联系。

    前言:对于引用类型的变量,它涉及到两块内存,一块是堆中的内存,用于存放new出来的对象(就是对象的具体内容):另一块是栈内存,用来存放变量在堆内存中的地址. 1,“==” 判断两个变量是否是同一个变量 ...

  3. Gson通过借助TypeToken获取泛型参数的类型的方法(转)

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  4. HDU 3979 Monster (贪心排序)

    Monster Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. Synchronize Ultimate

    支持多种服务器和主流云网盘进行同步 http://www.icecoldapps.com/ Unlock Code : xda201506 Unlock Code : icecoldapps20150 ...

  6. bitnami下mysql配置-包含phpMyAdmin配置

    mysql开启远程访问: 默认情况下mysql的绑定ip是bind-address=127.0.0.1 找到my.cnf bitnami@linux:~$ sudo find / -name my.c ...

  7. 在 DELPHI 中 procedure 型变量与 method 型变量的区别

    Procedure型变量: 在DELPHI中,函数.过程的地址可以赋给一个特殊类型的变量,变量可用如下方式声明: var p : procedure(num:integer); //过程 或: var ...

  8. having只用来在group by之后,having不可单独用,必须和group by用。having只能对group by的结果进行操作

    having只能对group by的结果进行操作 having只能对group by的结果进行操作 having只能对group by的结果进行操作 having只用来在group by之后,havi ...

  9. 犯罪心理第八季/全集Criminal Minds迅雷下载

    本季Criminal Minds Season 8(2012)看点:新季预告一名犯人突发急病,他被送上救护车,救护车在途中发生车祸.犯人对押送他的警官痛下毒手,BAU小组成员再次聚集起来.BAU开始分 ...

  10. XCode的The argument is invalid

      google查了一下,没找到解决的方法.有一篇blog应该有写怎么解决,可惜是wordpress.com的站点,打不开,网页快照也看不了-   后来回忆了一下操作步骤,只是添加了cocos2dx的 ...