gpt4 book ai didi

tensorflow - 如何在 NER 上使波斯语的 spacy 训练更快

转载 作者:行者123 更新时间:2023-12-05 03:21:30 29 4
gpt4 key购买 nike

我有一个来自 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com