搭配Sentence-transformers环境ImportError: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found
时间: 2023-10-24 09:32:37 浏览: 481
您遇到的错误是由于您的系统中缺少 GLIBC_2.29 库导致的。GLIBC(GNU C Library)是用于Linux系统的标准C库之一,它提供了许多系统函数供应用程序调用。
GLIBC 2.29 版本是在较新的Linux发行版中引入的,如果您的系统上安装的GLIBC版本低于2.29,那么在导入 Sentence-transformers 环境时会出现该错误。
解决这个问题的方法是更新您的GLIBC库版本。但请注意,更新GLIBC版本可能会对系统造成不可预料的风险,因此在执行此操作之前,请确保您对此有足够的了解,并备份重要数据。
如果您使用的是Ubuntu操作系统,可以尝试以下步骤更新GLIBC版本:
1. 添加一个PPA存储库:
```
$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
```
2. 更新软件包列表:
```
$ sudo apt-get update
```
3. 安装GLIBC 2.29:
```
$ sudo apt-get install libc6=2.29-0ubuntu2
```
如果您使用的是其他Linux发行版,请根据您的系统和包管理器进行适当的操作。请注意,不同的发行版可能具有不同的命令和软件包名称。
如果您不确定如何操作或担心可能的风险,请咨询系统管理员或寻求专业的技术支持。
相关问题
python web_demo.py Explicitly passing a `revision` is encouraged when loading a model with custom code to ensure no malicious code has been contributed in a newer revision. Traceback (most recent call last): File "/home/nano/THUDM/ChatGLM-6B/web_demo.py", line 5, in <module> tokenizer = AutoTokenizer.from_pretrained("/home/nano/THUDM/chatglm-6b", trust_remote_code=True) File "/home/nano/.local/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 679, in from_pretrained return tokenizer_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs) File "/home/nano/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py", line 1804, in from_pretrained return cls._from_pretrained( File "/home/nano/.local/lib/python3.10/site-packages/transformers/tokenization_utils_base.py", line 1958, in _from_pretrained tokenizer = cls(*init_inputs, **init_kwargs) File "/home/nano/.cache/huggingface/modules/transformers_modules/chatglm-6b/tokenization_chatglm.py", line 221, in __init__ self.sp_tokenizer = SPTokenizer(vocab_file, num_image_tokens=num_image_tokens) File "/home/nano/.cache/huggingface/modules/transformers_modules/chatglm-6b/tokenization_chatglm.py", line 64, in __init__ self.text_tokenizer = TextTokenizer(vocab_file) File "/home/nano/.cache/huggingface/modules/transformers_modules/chatglm-6b/tokenization_chatglm.py", line 22, in __init__ self.sp.Load(model_path) File "/home/nano/.local/lib/python3.10/site-packages/sentencepiece/__init__.py", line 905, in Load return self.LoadFromFile(model_file) File "/home/nano/.local/lib/python3.10/site-packages/sentencepiece/__init__.py", line 310, in LoadFromFile return _sentencepiece.SentencePieceProcessor_LoadFromFile(self, arg) RuntimeError: Internal: src/sentencepiece_processor.cc(1101) [model_proto->ParseFromArray(serialized.data(), serialized.size())]什么错误
根据您提供的错误信息,看起来是加载模型时出现了一些问题。具体来说,这个错误是由于加载了一个具有自定义代码的模型,并且在加载时没有明确指定修订版本。为了确保没有恶意代码被贡献到较新的修订版本中,建议显式地传递一个`revision`参数。
您可以尝试以下解决方法:
在`web_demo.py`文件中,将以下代码行:
```python
tokenizer = AutoTokenizer.from_pretrained("/home/nano/THUDM/chatglm-6b", trust_remote_code=True)
```
替换为:
```python
tokenizer = AutoTokenizer.from_pretrained("/home/nano/THUDM/chatglm-6b", trust_remote_code=True, revision="main")
```
这样会明确指定修订版本为"main",以避免加载模型时出现安全问题。请确保您已经下载了正确的模型文件并将路径指向正确的位置。
如果问题仍然存在,请提供更多详细信息,以便我能够更好地帮助您解决问题。
Cannot determine model snapshot path: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /sentence-transformers/all-MiniLM-L6-v2/resolve/c9745ed1d9f207416be6d2e6f8de32d1f16199bf/onnx/model_qint8_avx512_vnn
### Hugging Face模型加载失败的原因分析
当尝试加载 `sentence-transformers` 的预训练模型时,可能会遇到诸如 `MaxRetryError` 或者 `HTTPSConnectionPool` 错误的情况。这些错误通常表明网络连接存在问题或者本地环境配置不当。
#### 可能原因及解决方案
1. **网络问题**
如果出现类似于 `MaxRetryError: HTTPSConnectionPool(host='huggingface.co', port=443)` 的错误,则可能是由于无法访问 Hugging Face 的服务器引起的。可以考虑通过代理设置解决问题[^1]。
```python
import os
os.environ['HTTP_PROXY'] = 'http://your-proxy-url:port'
os.environ['HTTPS_PROXY'] = 'https://your-proxy-url:port'
```
2. **缓存文件损坏**
当前环境中可能已经存在部分下载但未完成的模型文件,这可能导致加载失败。可以通过清除缓存目录并重新下载模型来修复此问题。
```python
from sentence_transformers import SentenceTransformer
cache_dir = "/path/to/cache"
model_name = "all-MiniLM-L6-v2"
try:
model = SentenceTransformer(model_name, device="cuda", cache_folder=cache_dir)
except Exception as e:
print(f"Exception occurred: {e}")
# 清除缓存后再试一次
import shutil
shutil.rmtree(cache_dir, ignore_errors=True)
model = SentenceTransformer(model_name, device="cuda", cache_folder=cache_dir)
```
3. **硬件加速支持不足**
使用 GPU 加载模型时如果设备不支持某些优化指令集(如 AVX512-VNNI),则可能出现兼容性问题。此时可以选择禁用特定优化功能或将模型转换为 ONNX 格式以提高性能和兼容性。
#### 转换为ONNX格式
将 PyTorch 模型导出为 ONNX 并用于推理能够有效减少对高级 CPU/GPU 特性的依赖:
```bash
python -m transformers.onnx --model=all-MiniLM-L6-v2 ./onnx_output/
```
随后利用 ONNX Runtime 进行部署:
```python
import onnxruntime as ort
session = ort.InferenceSession("./onnx_output/model.onnx")
input_ids = ... # 输入数据准备
outputs = session.run(None, {"input_ids": input_ids})
```
4. **内存不足**
若运行过程中提示 CUDA out of memory,则需调整 batch size 或降低精度至 FP16 来节省显存空间:
```python
model = SentenceTransformer("all-MiniLM-L6-v2", device="cuda").half()
```
### 总结
上述方法涵盖了从基础网络配置到复杂硬件适配等多个层面的技术手段,适用于大多数因外部条件引发的 Hugging Face 模型加载异常情况。
阅读全文
相关推荐















