小编Jul*_* H.的帖子

Spacy 优化清单?

很长一段时间以来,我一直在尝试了解如何系统地让 Spacy 尽可能快地运行,如果可能的话,我希望这篇文章成为维基风格的公共帖子。

以下是我目前所知道的,每个点都有一些附属问题:

1. 空间将在更快的硬件上运行得更快。例如,尝试使用具有更多 CPU 核心或更多 RAM/主内存的计算机。

我不知道的是:

  • Spacy 执行的哪些具体方面(尤其是实例化对象的主要方面 Doc )更多地依赖于 CPU 而非 RAM,为什么?
  • 对象的实例化是 Doc 一系列算术计算(神经网络的编译二进制文件)吗?CPU 核心越多,一次可以完成的计算就越多,因此速度就越快?这是否意味着增加 RAM 不会使这个过程更快?
  • 对于 Spacy 来说,除了内核之外,CPU 或 GPU 是否还有其他方面值得关注,从而使一款芯片优于另一款芯片?有人提到“超线程”。
  • 是否有相对于输入字符串长度的每个管道组件(例如解析器)的时间的标准数学估计?像解析器一样,秒=输入中的字符数?/ CPU 核心数

2. 您可以通过删除不需要的组件来使 Spacy 运行得更快,例如通过 nlp = spacy.load("en_core_web_sm", disable=['tagger', 'ner', 'lemmatizer', 'textcat'])

  • 仅加载 Spacy 模块本身会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.还有什么吗?

optimization nlp micro-optimization spacy

7
推荐指数
1
解决办法
1983
查看次数

标签 统计

micro-optimization ×1

nlp ×1

optimization ×1

spacy ×1