You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spacy 3.1执行spacy train命令时触发KeyError: 'train'错误的求助

解决spaCy训练DistilBERT自定义模型时的KeyError: 'train'问题

我帮你排查了这个问题,核心原因出在你的config.cfg配置里的训练语料库指向错误,导致spaCy找不到对应的配置项。

错误原因分析

看你提供的config.cfg里的[training]部分:

[training]
accumulate_gradient = 3
dev_corpus = "dev.spacy"
train_corpus = "train.spacy"
# ...其他配置

这里的dev_corpus和train_corpus应该指向你在[corpora]部分定义的语料库key,也就是"corpora.dev"和"corpora.train",而不是直接写文件名。spaCy在初始化时会去读取corpora下的配置来加载数据,你直接写文件名的话,它会误以为要找一个叫train的顶层配置项,所以抛出了KeyError: 'train'。

另外还有个小细节:你的[nlp]部分设置的lang = "it"(意大利语),但你用的是IMDB英文数据,后续训练可能会有tokenizer匹配问题,建议改成lang = "en"。

修复步骤

  1. 修改config.cfg里的[training]部分,修正语料库指向:
[training]
accumulate_gradient = 3
dev_corpus = "corpora.dev"
train_corpus = "corpora.train"
seed = ${system.seed}
gpu_allocator = ${system.gpu_allocator}
dropout = 0.1
patience = 1600
max_epochs = 0
max_steps = 20000
eval_frequency = 200
frozen_components = []
annotating_components = []
before_to_disk = null
  1. (可选但推荐)修改[nlp]里的语言设置:
[nlp]
lang = "en"
pipeline = ["transformer","textcat"]
batch_size = 128
disabled = []
before_creation = null
after_creation = null
after_pipeline_creation = null
tokenizer = {"@tokenizers":"spacy.Tokenizer.v1"}

额外检查

你的数据转换代码是没问题的,已经正确生成了train.spacy和dev.spacy文件,修改完配置后重新运行训练命令应该就能正常初始化 pipeline 了。

内容的提问来源于stack exchange,提问作者Nazareno De Francesco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:42:26