gpt4 book ai didi

python - 如何在 AllenNLP 中加载微调的 sciBERT 模型?

转载 作者:行者123 更新时间:2023-12-03 16:47:36 30 4
gpt4 key购买 nike

我已经在 SciIE 数据集上微调了 SciBERT 模型。存储库使用 AllenNLP 来微调模型。训练执行如下:

python -m allennlp.run train $CONFIG_FILE  --include-package scibert -s "$@" 
成功训练后,我有一个 model.tar.gz 文件作为输出,其中包含 weights.th、config.json 和词汇文件夹。我试图将它加载到 allenlp 预测器中:
from allennlp.predictors.predictor import Predictor
predictor = Predictor.from_path("model.tar.gz")
但我收到以下错误:

ConfigurationError: bert-pretrained not in acceptable choices fordataset_reader.token_indexers.bert.type: ['single_id', 'characters','elmo_characters', 'spacy', 'pretrained_transformer','pretrained_transformer_mismatched']. You should either use the--include-package flag to make sure the correct module is loaded, or use a fully qualified class name in your config file like {"model":"my_module.models.MyModel"} to have it imported automatically.


我从未与 allenNLP 合作过,所以我不知道该怎么做。
作为引用,这是描述 token 索引器的配置的一部分
"token_indexers": {
"bert": {
"type": "bert-pretrained",
"do_lowercase": "false",
"pretrained_model": "/home/tomaz/neo4j/scibert/model/vocab.txt",
"use_starting_offsets": true
}
}
我正在使用 allenlp 版本
名称: allennlp
版本:1.2.1
编辑:
我想我已经取得了很大的进步,我必须使用用于训练模型的相同版本,并且我可以像这样导入模块:
from allennlp.predictors.predictor import Predictor
from scibert.models.bert_crf_tagger import *
from scibert.models.bert_text_classifier import *
from scibert.models.dummy_seq2seq import *
from scibert.dataset_readers.classification_dataset_reader import *

predictor = Predictor.from_path("scibert_ner/model.tar.gz")
dataset_reader="classification_dataset_reader")
predictor.predict(
sentence="Did Uriah honestly think he could beat The Legend of Zelda in under three hours?"
)
现在我得到一个错误:

No default predictor for model type bert_crf_tagger.\nPlease specify apredictor explicitly


我知道我可以使用 predictor_name明确指定一个预测器,但我不知道选择哪个名称会起作用

最佳答案

我见过很多人有这个问题。在浏览存储库代码后,我发现这是运行预测的最简单方法:

python -m allennlp.run predict /path/to/saved_model/model.tar.gz /path/to/test.txt\
--include-package scibert --use-dataset-reader\
--output-file /path/to/where/you/want/predict.txt\
--predictor sentence-tagger --batch-size 16
我添加了什么?预测器 sentence-tagger .浏览存储库后,您会发现注册的预测器是 sentence-tagger .虽然 DEFAUL_DICT的标记器包含 sentence_tagger .很多困惑,对吧?告诉我!
这个答案也使您免于编写 predictor .

关于python - 如何在 AllenNLP 中加载微调的 sciBERT 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64864557/

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