加载预训练Tokenizer与Seq2Seq模型报错:重复文件名sentencepiece_model.proto
解决protobuf重复文件(sentencepiece_model.proto)错误的方案
以下是针对加载ozcangundes/mt5-small-turkish-summarization模型时出现的duplicate file name (sentencepiece_model.proto)错误的可行解决方法:
清理重复的proto文件
检查Python环境的site-packages目录,查找是否存在多份sentencepiece_model.proto文件(可能同时存在于sentencepiece包和transformers相关的依赖目录中)。删除重复的文件,建议保留sentencepiece官方包目录下的那份。手动重置protobuf描述符池
在加载模型前替换默认的protobuf描述符池,避免重复注册:from google.protobuf.descriptor_pool import DescriptorPool import google.protobuf.message # 临时替换默认描述符池 original_pool = google.protobuf.message._message.default_pool google.protobuf.message._message.default_pool = DescriptorPool() # 加载tokenizer和模型 from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokenizer = AutoTokenizer.from_pretrained("ozcangundes/mt5-small-turkish-summarization") model = AutoModelForSeq2SeqLM.from_pretrained("ozcangundes/mt5-small-turkish-summarization") # 恢复原描述符池(如需后续使用其他protobuf相关功能) google.protobuf.message._message.default_pool = original_pool重装兼容版本的依赖
完全卸载冲突的依赖后,安装经过验证的兼容版本组合:pip uninstall -y protobuf sentencepiece transformers pip install protobuf==3.20.3 sentencepiece==0.1.99 transformers==4.30.2使用虚拟环境隔离依赖
创建全新虚拟环境,避免全局环境的依赖冲突:# 创建虚拟环境 python -m venv mt5_env # Linux/macOS激活环境 source mt5_env/bin/activate # Windows激活环境 # mt5_env\Scripts\activate # 安装所需依赖 pip install transformers sentencepiece protobuf
内容的提问来源于stack exchange,提问作者Salihcan
相关产品推荐
相关产品推荐

