- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个来自 spacy
的空白模型,在 config 文件
中我使用了小部件 Training Pipelines & Models使用此配置:
Language = Arabic
Components = ner
Hardware = CPU
Optimize for = accuracy
然后在 config-file
中我更改了:
[nlp]
lang = "ar"
到
[nlp]
lang = "fa"
因为没有为波斯语
预训练的GPU(transformer)
。
如您所知,accuracy
类型非常慢,我有 400,000 条记录。
这是我的配置文件
[paths]
train = null
dev = null
vectors = null
[system]
gpu_allocator = null
[nlp]
lang = "fa"
pipeline = ["tok2vec","ner"]
batch_size = 1000
[components]
[components.tok2vec]
factory = "tok2vec"
[components.tok2vec.model]
@architectures = "spacy.Tok2Vec.v2"
[components.tok2vec.model.embed]
@architectures = "spacy.MultiHashEmbed.v2"
width = ${components.tok2vec.model.encode.width}
attrs = ["ORTH", "SHAPE"]
rows = [5000, 2500]
include_static_vectors = true
[components.tok2vec.model.encode]
@architectures = "spacy.MaxoutWindowEncoder.v2"
width = 256
depth = 8
window_size = 1
maxout_pieces = 3
[components.ner]
factory = "ner"
[components.ner.model]
@architectures = "spacy.TransitionBasedParser.v2"
state_type = "ner"
extra_state_tokens = false
hidden_width = 64
maxout_pieces = 2
use_upper = true
nO = null
[components.ner.model.tok2vec]
@architectures = "spacy.Tok2VecListener.v1"
width = ${components.tok2vec.model.encode.width}
[corpora]
[corpora.train]
@readers = "spacy.Corpus.v1"
path = ${paths.train}
max_length = 0
[corpora.dev]
@readers = "spacy.Corpus.v1"
path = ${paths.dev}
max_length = 0
[training]
dev_corpus = "corpora.dev"
train_corpus = "corpora.train"
[training.optimizer]
@optimizers = "Adam.v1"
[training.batcher]
@batchers = "spacy.batch_by_words.v1"
discard_oversize = false
tolerance = 0.2
[training.batcher.size]
@schedules = "compounding.v1"
start = 100
stop = 1000
compound = 1.001
[initialize]
vectors = ${paths.vectors}
如何加快训练过程?
最佳答案
要加快训练速度,您有几种选择。
更改评估频率。它不在小部件生成的配置中,但有一个 eval_frequency
选项 - 如果您使用 fill-按照建议配置
。默认值比较低,求值慢。如果你有大量的训练数据,你应该增加这个值很多。
使用efficiency
预设而不是accuracy
。如果速度是个问题,那么您应该试试这个。对于您的管道,相关选项是是否包含静态向量,以及您的 tok2vec 的宽度或深度。请注意,仅此一项不会对速度产生太大影响,但由于它确实减少了内存使用,因此可以与下一个选项结合使用。
增加批处理大小。在训练中,处理一个批处理的时间相对恒定,因此更大的批处理意味着相同数据的更少批处理,这意味着更快的训练。您可以处理多少批处理取决于文档的大小和硬件。
使用较少的训练数据。我很少推荐这种做法,但如果您有 400,000 条记录,则不需要那么多就可以获得良好的 NER 模型。 (你有多少个类(class)?)从 10,000 个开始,看看你的模型表现如何,然后扩大规模,直到你得到你想要的准确性/速度权衡。这也将帮助您更快地确定您的数据是否存在某种问题。
有关更快推理(而非训练)的提示,请参阅 spaCy speed FAQ .
关于tensorflow - 如何在 NER 上使波斯语的 spacy 训练更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72969683/
我是一名优秀的程序员,十分优秀!