
RuntimeError: Configured ROCm binary not found at /opt/app-root/lib64/python3.12/site-packages/bitsandbytes/libbitsandbytes_rocm84.so
快速结论:该报错通常发生在 ROCm 系统上(如 RHEL 9.6、ROCm 7.14、GPU MI350P)安装 bitsandbytes 后导入时,优先排查 bitsandbytes 版本是否低于 0.50.0。该版本之前只预编译了 ROCm 8.4 的二进制文件,与 ROCm 7.14 系统不匹配。
问题场景
用户在 RHEL 9.6 系统上使用 Python 3.12.9、ROCm 7.14 和 MI350P 显卡,通过 Hermatic build(网络隔离)安装 bitsandbytes 0.49.2 后,执行 python -c 'import bitsandbytes' 时触发报错。环境中未安装 ROCm 8.4。
报错原文
bitsandbytes library load error: Configured ROCm binary not found at /opt/app-root/lib64/python3.12/site-packages/bitsandbytes/libbitsandbytes_rocm84.so
Traceback (most recent call last):
File "/opt/app-root/lib64/python3.12/site-packages/bitsandbytes/cextension.py", line 320, in <module>
lib = get_native_library()
^^^^^^^^^^^^^^^^^^^^
File "/opt/app-root/lib64/python3.12/site-packages/bitsandbytes/cextension.py", line 288, in get_native_library
raise RuntimeError(f"Configured {BNB_BACKEND} binary not found at {cuda_binary_path}")
RuntimeError: Configured ROCm binary not found at /opt/app-root/lib64/python3.12/site-packages/bitsandbytes/libbitsandbytes_rocm84.so
原因分析
bitsandbytes 0.49.2 仅预编译了 ROCm 8.4 的二进制文件 libbitsandbytes_rocm84.so,但用户系统上实际运行的 ROCm 版本为 7.14。bitsandbytes 没有检测可用 ROCm 版本并加载对应二进制(如 7.2 或 7.14),而是直接尝试加载 ROCm 8.4 二进制,导致找不到文件。
可能原因:bitsandbytes 版本过旧,未包含对 ROCm 7.14 的预编译支持,且缺乏版本检测和自动降级机制。
环境排查
- 确认 Python 版本:3.12.9
- 确认 ROCm 版本:7.14(可通过
rocm-smi或hipconfig --version验证) - 确认 bitsandbytes 版本:0.49.2
- 确认操作系统:RHEL 9.6
- 确认 GPU 型号:MI350P
- 检查是否通过网络隔离构建(Hermatic build),该模式可能影响二进制文件来源
解决步骤
- 升级 bitsandbytes 到 v0.50.0 或更高版本:该版本包含对 ROCm 7.14 的预编译二进制,并通过 PR #1889、#1980、#2007 引入了版本检测和自动备用机制,当找不到特化版本时会尝试加载 ROCm 7.2 构建。
- 注意:v0.50.0 尚未发布到 PyPI 时,可以从 continuous-release_main 页面获取从主分支构建的 wheel 文件进行安装。
- 降级备选(不推荐):手动安装与 ROCm 7.14 兼容的早期 bitsandbytes 版本,但可能缺少所需功能。
验证方法
成功安装 v0.50.0 或主分支构建后,再次运行 python -c 'import bitsandbytes'。如果不再抛出 RuntimeError 且无错误输出,则问题已解决。也可尝试调用 bitsandbytes 的量化功能进行功能验证。



