我已经从这里的变换器仓库下载了HuggingFace的BERT模型,并希望通过使用这里在“命名实体识别”部分提到的run_ner.py脚本,在自定义的NER标签上训练模型。
我在代码中定义了模型(”bert-base-german-cased”)、数据目录(”Data/sentence_data.txt”)和标签(”Data/labels.txt”)作为默认值。
现在我在命令行中使用以下输入:
python run_ner.py --output_dir="Models" --num_train_epochs=3 --logging_steps=100 --do_train --do_eval --do_predict
但它所做的只是告诉我:
在初始化BertForTokenClassification时,来自bert-base-german-cased模型检查点的某些权重未被使用:['cls.predictions.bias', 'cls.predictions.transform.dense.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.transform.LayerNorm.bias', 'cls.predictions.decoder.weight', 'cls.seq_relationship.weight', 'cls.seq_relationship.bias']- 如果您是从在另一任务或使用另一架构上训练的模型检查点初始化BertForTokenClassification,这是预期的(例如,从BertForPretraining模型初始化BertForSequenceClassification模型)。- 如果您是从您期望完全相同的模型检查点初始化BertForTokenClassification,这是未预期的(从BertForSequenceClassification模型初始化BertForSequenceClassification模型)。来自bert-base-german-cased模型检查点的BertForTokenClassification的某些权重未初始化,并且是新初始化的:['classifier.weight', 'classifier.bias']您可能需要在这个下游任务上训练这个模型,以便能够使用它进行预测和推理。
之后它就停止了,并没有结束脚本,而是简单地等待。
有谁知道这里可能是什么问题吗?我是否遗漏了某个参数?
我的sentence_data.txt以CoNLL格式看起来像这样(小片段):
Strafverfahren Ogegen O; Owegen ODiebstahls Ohat Odas OAmtsgericht OrtLeipzig Ort- OStrafrichter O
而我在labels.txt中定义的标签是这样的:
"Date", "Delikt", "Strafe_Tatbestand", "Schadensbetrag", "Geständnis_ja", "Vorstrafe_ja", "Vorstrafe_nein", "Ort","Strafe_Gesamtfreiheitsstrafe_Dauer", "Strafe_Gesamtsatz_Dauer", "Strafe_Gesamtsatz_Betrag"
回答:
发现了问题所在。它与CUDA驱动程序与已安装的pytorch版本不兼容有关。
对于使用Nvidia GPU并遇到相同问题的人:进入Nvidia控制面板 -> 帮助 -> 系统信息 -> 组件,有一个名为“NVCUDA.DLL”的设置,名称列中有驱动程序编号。在pytorch.org的安装构建器中选择相应的CUDA版本应该能解决问题。
另外,变换器仓库中有一个很好的Readme,解释了使用CLI命令训练BERT模型的所有步骤,在这里查看。