如何使用 GPU 训练 spaCy 实体 link 模型?
How can I train spaCy entity link model using GPU?
当我按照文档 wiki_entity_linking 训练 spaCy 实体链接模型时,我发现该模型是使用 cpu 训练的。训练 epoch 需要很长时间。
(环境中 2 个 epoch 大约 3 天:16x cpu, 64GB mem)
命令是:
python wikidata_train_entity_linker.py -t 50000 -d 10000 -o xxx
。所以我的问题是我该怎么做才能在训练阶段使用 GPU。
在初始化 NLP 模型之前,您需要重构代码以使用 spacy.require_gpu() - 有关详细信息,请参阅文档:https://spacy.io/api/top-level#spacy.require_gpu
在执行此操作之前,我会确保您的任务在所有核心上都是 运行。如果您不是 运行 在所有内核上,您可以使用 joblib 对您的作业进行多处理小批量分区:
partitions = minibatch(texts, size=batch_size)
executor = Parallel(n_jobs=n_jobs, backend="multiprocessing", prefer="processes")
do = delayed(partial(transform_texts, nlp))
tasks = (do(i, batch, output_dir) for i, batch in enumerate(partitions))
executor(tasks)
有关更多信息,请参阅文档中的 joblib 多处理 NER 训练示例:https://spacy.io/usage/examples#multi-processing
当我按照文档 wiki_entity_linking 训练 spaCy 实体链接模型时,我发现该模型是使用 cpu 训练的。训练 epoch 需要很长时间。 (环境中 2 个 epoch 大约 3 天:16x cpu, 64GB mem)
命令是:
python wikidata_train_entity_linker.py -t 50000 -d 10000 -o xxx
。所以我的问题是我该怎么做才能在训练阶段使用 GPU。
在初始化 NLP 模型之前,您需要重构代码以使用 spacy.require_gpu() - 有关详细信息,请参阅文档:https://spacy.io/api/top-level#spacy.require_gpu
在执行此操作之前,我会确保您的任务在所有核心上都是 运行。如果您不是 运行 在所有内核上,您可以使用 joblib 对您的作业进行多处理小批量分区:
partitions = minibatch(texts, size=batch_size)
executor = Parallel(n_jobs=n_jobs, backend="multiprocessing", prefer="processes")
do = delayed(partial(transform_texts, nlp))
tasks = (do(i, batch, output_dir) for i, batch in enumerate(partitions))
executor(tasks)
有关更多信息,请参阅文档中的 joblib 多处理 NER 训练示例:https://spacy.io/usage/examples#multi-processing