一个基于PyTorch构建的Apache 2.0 NLP研究库,用于在各种语言任务上开发最先进的深度学习模型。
⚠️ 注意: AllenNLP库现在处于维护模式。这意味着我们不再添加新功能或升级依赖项。我们仍然会在2022年12月16日之前回应问题并解决出现的错误。如果你有任何疑虑或有兴趣继续维护AllenNLP,请在此仓库中创建一个问题。
AllenNLP取得了巨大成功,但随着该领域的快速发展,现在是时候专注于新的计划了。我们正在努力使AI2 Tango成为组织研究代码库的最佳方式。如果你是AllenNLP的活跃用户,以下是一些建议的替代方案:
- 如果你喜欢训练器、配置语言,或者只是想找到更好的实验管理方法,请查看AI2 Tango。
- 如果你喜欢AllenNLP的
modules
和nn
包,请查看delmaksym/allennlp-light。它甚至与AI2 Tango兼容! - 如果你喜欢AllenNLP的框架部分,请查看flair。它拥有多种最先进的NLP模型,并允许你轻松使用来自transformers的预训练嵌入。
- 如果你喜欢AllenNLP的指标包,请查看torchmetrics。它的API与AllenNLP相同,因此切换学习曲线应该很快。
- 如果你想进行文本向量化,请尝试transformers库。
- 如果你想维护AllenNLP的Fairness或Interpret组件,请联系我们。目前没有替代方案,所以我们正在寻找一个专职维护者。
- 如果你担心其他AllenNLP功能,请创建一个问题。也许我们可以找到另一种方式继续支持你的用例。
快速链接
- ↗️ 官网
- 🔦 指南
- 🖼 画廊
- 💻 演示
- 📓 文档 ( 最新 | 稳定 | 提交 )
- ⬆️ 从1.x到2.0的升级指南
- ❓ Stack Overflow
- ✋ 贡献指南
- 🤖 官方支持的模型
- ⚙️ 持续构建
- 🌙 夜间发布
本README中包含
使用库快速入门
如果你有兴趣使用AllenNLP进行模型开发,我们建议你查看AllenNLP指南,以获得对该库的全面介绍,然后再查看我们在GitHub Discussions上的更高级指南。
当你准备好开始你的项目时,我们创建了一些模板仓库,你可以用作起点:
- 如果你想使用
allennlp train
和配置文件来指定实验,请使用这个模板。我们推荐这种方法。 - 如果你更喜欢使用Python代码来配置你的实验并运行训练循环,请使用这个模板。在这种设置下,目前有一些事情会稍微难一些(加载已保存的模型和使用分布式训练),但除此之外,它与配置文件设置功能相当。
此外,还有外部教程:
- 使用Optuna进行AllenNLP的超参数优化
- 在AllenNLP中使用多GPU进行训练
- 在AllenNLP中使用更少内存进行大批量训练
- 如何将AllenNLP中的transformer权重和分词器上传到HuggingFace
以及其他在AI2 AllenNLP博客上的教程。
插件
AllenNLP支持动态加载“插件”。插件只是一个Python包,它提供自定义注册的类或附加的allennlp
子命令。
有一个开源插件的生态系统,其中一些由AI2的AllenNLP团队维护,另一些由更广泛的社区维护。
插件 | 维护者 | CLI | 描述 |
allennlp-models | AI2 | 否 | 一组最先进的模型集合
你可能还想安装
使用Docker安装Docker提供了一个虚拟机,设置好了一切可以运行AllenNLP的环境——无论你是要利用GPU还是只在CPU上运行。Docker提供了更多的隔离性和一致性,并且还使得将你的环境分发到计算集群变得更加容易。 AllenNLP提供了官方Docker镜像,其中安装了库及其所有依赖项。 一旦你安装了Docker,如果你有可用的GPU,你还应该安装NVIDIA Container Toolkit。 然后运行以下命令以获取一个可以在GPU上运行的环境:
你可以通过以下命令测试Docker环境:
如果你没有可用的GPU,只需省略 构建你自己的Docker镜像出于各种原因,你可能需要创建你自己的AllenNLP Docker镜像,例如,如果你需要不同版本的PyTorch。要这样做,只需从你的本地AllenNLP克隆的根目录运行 默认情况下,这会构建一个标记为 如果你想使用不同版本的Python或PyTorch,请将标志 构建镜像后,你应该能够通过运行
从源代码安装你还可以通过克隆我们的git仓库来安装AllenNLP:
创建一个Python 3.7或3.8的虚拟环境,并通过运行以下命令以
这会使 你可以通过 运行AllenNLP安装完AllenNLP后,你可以通过 你可以通过运行 问题我们欢迎大家提交功能请求、错误报告或一般性问题。作为一个有着自己内部目标的小团队,如果无法及时修复,我们可能会请求社区贡献。为了保持整洁,我们通常会关闭我们认为已解决的问题,但如果需要进一步讨论,请不要犹豫跟进。 贡献AI2的AllenNLP团队(@allenai)欢迎来自社区的贡献。
如果你是第一次贡献,我们建议你先阅读我们的CONTRIBUTING.md指南。
然后看看我们标有 如果你想贡献一个较大的功能,我们建议首先创建一个问题并提出设计方案供讨论。这样可以避免你花费大量时间在实现上,而早期就可以被指出的技术限制。小的贡献可以直接在拉取请求中完成。 拉取请求(PRs)必须经过一次批准审查且没有请求更改,才能被合并。由于AllenNLP主要由AI2驱动,我们保留拒绝或回退我们认为不合适的贡献的权利。 引用如果你在研究中使用了AllenNLP,请引用AllenNLP: A Deep Semantic Natural Language Processing Platform。
团队AllenNLP是由艾伦人工智能研究所(AI2)支持的开源项目。 AI2是一家非盈利研究所,其使命是通过高影响力的AI研究和工程为人类做出贡献。 要了解具体为这个代码库做出贡献的人员,请参见我们的贡献者页面。 |