如何在Anaconda环境中运行sentence-transformers的all-mpnet-base-v2模型?
问题
我正尝试在Python 3.8的Anaconda环境中,使用sentence-transformers 1.2.1运行all-mpnet-base-v2模型。
最初使用以下代码加载模型:
bert_model = SentenceTransformer('all-mpnet-base-v2')
下载模型后出现错误:
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\SentenceTransformer.py", line 115, in __init__ module = module_class.load(os.path.join(model_path, module_config['path'])) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\models\Transformer.py", line 115, in load return Transformer(model_name_or_path=input_path, **config) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\models\Transformer.py", line 29, in __init__ config = AutoConfig.from_pretrained(model_name_or_path, **model_args, cache_dir=cache_dir) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\transformers\configuration_auto.py", line 275, in from_pretrained config_class = CONFIG_MAPPING[config_dict["model_type"]] KeyError: 'mpnet'
之后尝试使用完整标识加载模型:
bert_model = SentenceTransformer('sentence-transformers/all-mpnet-base-v2')
出现404下载错误及后续OSError:
Exception when trying to download http://sbert.net/models/sentence-transformers/all-mpnet-base-v2.zip. Response 404 SentenceTransformer-Model http://sbert.net/models/sentence-transformers/all-mpnet-base-v2.zip not found. Try to create it from scratch Try to create Transformer Model sentence-transformers/all-mpnet-base-v2 with mean pooling Traceback (most recent call last): File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\SentenceTransformer.py", line 79, in __init__ http_get(model_url, zip_save_path) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\util.py", line 242, in http_get req.raise_for_status() File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\requests\models.py", line 1021, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://public.ukp.informatik.tu-darmstadt.de/reimers/sentence-transformers/v0.2/sentence-transformers/all-mpnet-base-v2.zip During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\transformers\configuration_utils.py", line 353, in get_config_dict raise EnvironmentError OSError During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\SentenceTransformer.py", line 95, in __init__ transformer_model = Transformer(model_name_or_path) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\sentence_transformers\models\Transformer.py", line 29, in __init__ config = AutoConfig.from_pretrained(model_name_or_path, **model_args, cache_dir=cache_dir) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\transformers\configuration_auto.py", line 272, in from_pretrained config_dict, _ = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs) File "C:\Users\hoang\AppData\Local\R-MINI~1\envs\py38\lib\site-packages\transformers\configuration_utils.py", line 362, in get_config_dict raise EnvironmentError(msg) OSError: Can't load config for 'sentence-transformers/all-mpnet-base-v2'. Make sure that: - 'sentence-transformers/all-mpnet-base-v2' is a correct model identifier listed on 'https://huggingface.co/models' - or 'sentence-transformers/all-mpnet-base-v2' is the correct path to a directory containing a config.json file
解决方案
问题根源在于依赖库版本过旧:
KeyError: 'mpnet'是因为当前使用的transformers版本不支持MPNet模型,旧版本的CONFIG_MAPPING里没有mpnet的配置项。- 404错误是因为sentence-transformers 1.2.1版本太老,模型的官方下载路径已经变更,且对模型标识的处理逻辑不完善。
解决步骤如下:
- 升级依赖库到兼容版本
激活你的Anaconda环境后,运行以下命令升级:# 使用conda升级 conda install -c conda-forge transformers>=4.0 sentence-transformers>=2.0 # 或者用pip升级 pip install --upgrade transformers sentence-transformers - 重新加载模型
升级完成后,直接使用最初的代码即可正常加载模型:bert_model = SentenceTransformer('all-mpnet-base-v2')
如果因为环境限制无法升级大版本,可尝试手动下载模型到本地,再从本地路径加载:
- 手动下载all-mpnet-base-v2模型文件到本地目录
- 使用本地路径加载:
bert_model = SentenceTransformer('/path/to/local/all-mpnet-base-v2')
内容的提问来源于stack exchange,提问作者Hoang Cuong Nguyen
相关产品推荐
相关产品推荐

