很长一段时间以来,我一直在尝试了解如何系统地让 Spacy 尽可能快地运行,如果可能的话,我希望这篇文章成为维基风格的公共帖子。
以下是我目前所知道的,每个点都有一些附属问题:
1. 空间将在更快的硬件上运行得更快。例如,尝试使用具有更多 CPU 核心或更多 RAM/主内存的计算机。
我不知道的是:
Doc )更多地依赖于 CPU 而非 RAM,为什么?Doc 一系列算术计算(神经网络的编译二进制文件)吗?CPU 核心越多,一次可以完成的计算就越多,因此速度就越快?这是否意味着增加 RAM 不会使这个过程更快?2. 您可以通过删除不需要的组件来使 Spacy 运行得更快,例如通过 nlp = spacy.load("en_core_web_sm", disable=['tagger', 'ner', 'lemmatizer', 'textcat'])
import spacy稍微慢一些。如果您还没有加载语言模型,那么除了向命名空间添加函数之外,这里加载的最重要的东西是什么?是否可以只加载您需要的部分模块?3. 您可以通过使用某些选项来使其运行得更快,从而使其运行得更快。
nlp.pipe、n_process、batch_size和的多重处理joblib,但那是针对多个文档的,而我现在只处理单个文档。4. 您可以通过最大限度地减少 Spacy 执行相同操作的次数来使其更快。
您可以让 Spacy 在服务器上保持活动状态,并在需要时向其传递处理命令
您可以序列化 a 以稍后重新加载它,并且可以使用或Doc 进一步排除不需要的属性 doc.to_bytes(exclude=["tensor"])doc.to_array([LOWER, POS, ENT_TYPE, IS_ALPHA])
5.还有什么吗?