艾伦AI研究院发布AllenNLP:基于PyTorch的NLP工具包

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 人工智能实验室构建和维护,该项目也与华盛顿大学等机构共同合作。

 

《艾伦AI研究院发布AllenNLP:基于PyTorch的NLP工具包》

 

运行 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。

《艾伦AI研究院发布AllenNLP:基于PyTorch的NLP工具包》

 

模型

 

借助易于运行的基础设施,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。 《艾伦AI研究院发布AllenNLP:基于PyTorch的NLP工具包》

 

 

 

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

    原文作者:pytorch
    原文地址: https://www.cnblogs.com/DjangoBlog/p/7525372.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞