Bert模型之unable to parse config.json as a URL or as a local path错误解决方案

简介: Bert模型之unable to parse config.json as a URL or as a local path错误解决方案

一、点击下面的链接从Kaggle网站下载Bert模型权重文件,注意:下载之前需要在Kaggle网站注册账户和登录才能进行文件下载,下载需要五分钟左右,请耐心等候。

Kaggle官方网站:点击打开torch_bert_weights网站

二、下载完成之后,进行压缩包解压到自己熟悉的文件路径,再对解压后的文件夹的内容进行优化调整文件。

三、若没有基于Pytorch安装Bert模型配置运行环境,则可以点击下面的链接打开文章进行安装,若没有下载和配置Jupyter Notebook可以同上。

四、在jupyter notebook中运行下面代码出现问题,报ValueError: unable to parse F:/modelfile/Bert/bert-base-uncased/config.json as a URL or as a local path错误,注意:下面代码中的文件路径根据自己下载解压的文件路径对应更改。

from transformers import BertTokenizer, BertModel, BertForMaskedLM
import numpy as np
import torch
# 加载bert的分词器
tokenizer = BertTokenizer.from_pretrained('F:/modelfile/Bert/bert-base-uncased-vocab.txt')
# 加载bert模型,这个路径文件夹下有bert配置文件和bert模型权重文件
bert = BertModel.from_pretrained('F:/modelfile/Bert/bert-base-uncased/')
ValueError                                Traceback (most recent call last)
D:\Anaconda\lib\site-packages\transformers\configuration_utils.py in _get_config_dict(cls, pretrained_model_name_or_path, **kwargs)
    603                 use_auth_token=use_auth_token,
--> 604                 user_agent=user_agent,
    605             )
D:\Anaconda\lib\site-packages\transformers\utils\hub.py in cached_path(url_or_filename, cache_dir, force_download, proxies, resume_download, user_agent, extract_compressed_file, force_extract, use_auth_token, local_files_only)
    299         # Something unknown
--> 300         raise ValueError(f"unable to parse {url_or_filename} as a URL or as a local path")
    301 
ValueError: unable to parse F:/modelfile/Bert/bert-base-uncased/config.json as a URL or as a local path
During handling of the above exception, another exception occurred:
OSError                                   Traceback (most recent call last)
<ipython-input-10-0dc95b15dc3c> in <module>()
      5 tokenizer = BertTokenizer.from_pretrained('F:/modelfile/Bert/bert-base-uncased-vocab.txt')
      6 # 加载bert模型,这个路径文件夹下有bert_config.json配置文件和model.bin模型权重文件
----> 7 bert = BertModel.from_pretrained('F:/modelfile/Bert/bert-base-uncased/')
D:\Anaconda\lib\site-packages\transformers\modeling_utils.py in from_pretrained(cls, pretrained_model_name_or_path, *model_args, **kwargs)
   1593                 _from_auto=from_auto_class,
   1594                 _from_pipeline=from_pipeline,
-> 1595                 **kwargs,
   1596             )
   1597         else:
D:\Anaconda\lib\site-packages\transformers\configuration_utils.py in from_pretrained(cls, pretrained_model_name_or_path, **kwargs)
    519         assert unused_kwargs == {"foo": False}
    520         ```"""
--> 521         config_dict, kwargs = cls.get_config_dict(pretrained_model_name_or_path, **kwargs)
    522         if "model_type" in config_dict and hasattr(cls, "model_type") and config_dict["model_type"] != cls.model_type:
    523             logger.warning(
D:\Anaconda\lib\site-packages\transformers\configuration_utils.py in get_config_dict(cls, pretrained_model_name_or_path, **kwargs)
    546         original_kwargs = copy.deepcopy(kwargs)
    547         # Get config dict associated with the base config file
--> 548         config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
    549 
    550         # That config file may point us toward another config file to use.
D:\Anaconda\lib\site-packages\transformers\configuration_utils.py in _get_config_dict(cls, pretrained_model_name_or_path, **kwargs)
    628         except ValueError:
    629             raise EnvironmentError(
--> 630                 f"We couldn't connect to '{HUGGINGFACE_CO_RESOLVE_ENDPOINT}' to load this model, couldn't find it in the cached "
    631                 f"files and it looks like {pretrained_model_name_or_path} is not the path to a directory containing a "
    632                 "{configuration_file} file.\nCheckout your internet connection or see how to run the library in "
OSError: We couldn't connect to 'https://huggingface.co' to load this model, couldn't find it in the cached files and it looks like F:/modelfile/Bert/bert-base-uncased/ is not the path to a directory containing a {configuration_file} file.
Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'.

五、上面出现的错误翻译成中文是“数值误差:无法分析F:/modelfile/Bert/Bert base uncased/config.json作为URL或本地路径”,可以看出BertModel.from_pretrained方法是默认分析获取config.json文件的内容,但是根据博主自己提供的文件路径只有bert_config.json文件没有config.json文件,那么要么更改from_pretrained方法的源代码,要么更改文件名称。博主建议直接更改文件名称,将bert_config.json改成config.json。

六、重新在jupyter notebook重新运行之前的代码发现能够正常运行,只是有警告产生。

D:\Anaconda\lib\site-packages\transformers\tokenization_utils_base.py:1656: FutureWarning: Calling BertTokenizer.from_pretrained() with the path to a single file or url is deprecated and won't be possible anymore in v5. Use a model identifier or the path to a directory instead.
  FutureWarning,
Some weights of the model checkpoint at F:/modelfile/Bert/bert-base-uncased/ were not used when initializing BertModel: ['cls.predictions.transform.LayerNorm.weight', 'cls.predictions.decoder.weight', 'cls.predictions.transform.dense.bias', 'cls.predictions.transform.dense.weight', 'cls.seq_relationship.bias', 'cls.seq_relationship.weight', 'cls.predictions.bias', 'cls.predictions.transform.LayerNorm.bias']
- This IS expected if you are initializing BertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).
- This IS NOT expected if you are initializing BertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).

七、警告虽不影响程序正常运行,但是毕竟不怎么好看,可以加入下面的代码对警告进行忽略不显示,再次在jupyter notebook中运行之后就警告就会忽略消失。

from transformers import logging
logging.set_verbosity_error()
import warnings
# D:\Anaconda\lib\site-packages\transformers\tokenization_utils_base.py:1656:下面的代码module和lineno对应上的错误
warnings.filterwarnings("ignore", category=FutureWarning, module="transformers", lineno=1656)


相关文章
|
1月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
69 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
1月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
29天前
|
机器学习/深度学习 自然语言处理 算法
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
[大语言模型-工程实践] 手把手教你-基于BERT模型提取商品标题关键词及优化改进
86 0
|
2月前
|
搜索推荐 算法
模型小,还高效!港大最新推荐系统EasyRec:零样本文本推荐能力超越OpenAI、Bert
【9月更文挑战第21天】香港大学研究者开发了一种名为EasyRec的新推荐系统,利用语言模型的强大文本理解和生成能力,解决了传统推荐算法在零样本学习场景中的局限。EasyRec通过文本-行为对齐框架,结合对比学习和协同语言模型调优,提升了推荐准确性。实验表明,EasyRec在多个真实世界数据集上的表现优于现有模型,但其性能依赖高质量文本数据且计算复杂度较高。论文详见:http://arxiv.org/abs/2408.08821
58 7
|
2月前
|
XML JSON JavaScript
JSON对象的stringify()和parse()方法使用
本文阐述了JSON对象的`stringify()`和`parse()`方法的用法,包括如何将JavaScript对象转换为JSON字符串,以及如何将JSON字符串解析回JavaScript对象,并讨论了转换过程中需要注意的事项。
JSON对象的stringify()和parse()方法使用
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
【AI大模型】BERT模型:揭秘LLM主要类别架构(上)
|
3月前
|
JSON C语言 数据格式
Python导出隐马尔科夫模型参数到JSON文件C语言读取
Python导出隐马尔科夫模型参数到JSON文件C语言读取
26 1
|
3月前
|
JSON 前端开发 JavaScript
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
这篇文章讨论了前端Vue应用向后端Spring Boot服务传输数据时发生的类型不匹配问题,即后端期望接收的字段类型为`int`,而前端实际传输的类型为`Boolean`,导致无法反序列化的问题,并提供了问题的诊断和解决方案。
JSON parse error: Cannot deserialize value of type `java.lang.Integer` from Boolean value
|
3月前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
64 1
|
3月前
|
算法 异构计算
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决
自研分布式训练框架EPL问题之帮助加速Bert Large模型的训练如何解决