ibcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12

ImportError: /home/xxx/anaconda3/envs/glm-4-demo/lib/python3.12/site-packages/torch/lib/../../nvidia/cusparse/lib/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12

最近在Ubuntu上运行Glm4的大模型,总是报以上错误。

和通义千问沟通:

python vllmGlm4.py Traceback (most recent call last):

File "/server/repo/GLM-4/basic_demo/moda/vllmGlm4.py", line 1, in <module> from transformers import AutoTokenizer

File "/home/xxx/anaconda3/envs/glm-4-demo/lib/python3.12/site-packages/transformers/__init__.py", line 26, in <module> from . import dependency_versions_check

File "/home/xxx/anaconda3/envs/glm-4-demo/lib/python3.12/site-packages/transformers/dependency_versions_check.py", line 16, in <module> from .utils.versions import require_version, require_version_core

File "/home/xxx/anaconda3/envs/glm-4-demo/lib/python3.12/site-packages/transformers/utils/__init__.py", line 27, in <module> from .chat_template_utils import DocstringParsingException, TypeHintParsingException, get_json_schema

File "/home/xxx/anaconda3/envs/glm-4-demo/lib/python3.12/site-packages/transformers/utils/chat_template_utils.py", line 39, in <module> from torch import Tensor

File "/home/xxx/anaconda3/envs/glm-4-demo/li

### 解决 PyTorch 导入时出现的 `ImportError` 问题 当遇到类似于 `ImportError: /path/to/libcusparse.so.12: undefined symbol: __nvJitLinkComplete_12_4, version libnvJitLink.so.12` 的错误时,通常表明 CUDA 或 cuSPARSE 库版本不兼容或缺失必要的符号链接[^2]。 #### 错误分析 此错误的核心在于 `libcusparse.so.12` 中缺少符号 `_nvJitLinkComplete_12_4`。这可能是由于以下几个原因之一引起的: - 安装的 NVIDIA 驱动程序版本过旧,无法支持所需的 CUDA 功能。 - 使用的 PyTorch 版本与当前安装的 CUDA 工具链不匹配。 - Conda 环境中的依赖项冲突,可能是因为手动修改了环境变量或库路径。 --- ### 解决方案 #### 方法一:验证并更新驱动程序和 CUDA 工具链 确保系统的 NVIDIA 驱动程序是最新的,并且能够支持所使用的 CUDA 版本。可以通过以下命令检查驱动版本: ```bash nvidia-smi ``` 如果显示的驱动版本低于所需版本,则需要升级到最新版驱动程序。此外,确认已安装的 CUDA 工具链是否满足 PyTorch 要求。例如,对于 PyTorch 2.x,默认情况下需要 CUDA 11.8 或更高版本[^4]。 #### 方法二:重新创建 Conda 环境 Conda 环境可能存在依赖冲突,建议删除现有环境并重新创建一个新的环境。以下是具体操作步骤: 1. 删除现有的 Conda 环境: ```bash conda remove --name your_env_name --all ``` 2. 创建新环境并指定 Python 和 PyTorch 版本: ```bash conda create -n new_env python=3.10 conda activate new_env conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia ``` 通过上述方法可以确保环境中所有的依赖都来自官方渠道,减少潜在冲突的可能性。 #### 方法三:修复动态链接器配置 有时,系统级的动态链接器缓存可能导致加载错误的共享对象文件。执行以下命令刷新缓存: ```bash sudo ldconfig ``` 另外,检查是否存在多个版本的 `libcusparse.so` 文件。如果有重复版本,可能会导致加载错误的库。运行以下命令定位所有相关文件: ```bash find /usr/local/cuda* -name "libcusparse.so.*" ``` 如有必要,移除多余的副本或将正确的路径优先添加至 `LD_LIBRARY_PATH` 环境变量中。 #### 方法四:降级 Python 版本 Python 3.12 是较新的发行版,在某些情况下可能尚未完全适配于特定框架(如 PyTorch)。尝试切换回更稳定的 Python 3.10 或 3.9 可能会解决问题。 --- ### 示例代码片段 以下是一个简单的测试脚本,用于验证 PyTorch 是否正常工作: ```python import torch print(f"Torch Version: {torch.__version__}") if torch.cuda.is_available(): print("CUDA is available!") else: print("CUDA is NOT available.") ``` 将其保存为 `test_torch.py` 并运行以检测问题是否解决。 --- ### 总结 通过对驱动程序、CUDA 工具链以及 Conda 环境的调整,大多数因未定义符号引发的 `ImportError` 问题都可以得到妥善处理。务必保持软件栈的一致性和兼容性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值