事情本身不复杂,线索都在日志里。用 4bit 量化加载模型时报 RuntimeError: No GPU found 或 Cannot find libbitsandbytes_cuda118.so,机器上显卡和驱动都正常。
第一反应是「库文件存在但动态链接路径里找不到」,验证下来不成立。
排查方向其实有限,先把可能性排一排。安装的是 CPU 版本轮子,缺少 CUDA 动态库。少数情况下是bitsandbytes 版本与本机 CUDA 版本不匹配。
还有一种情况,Windows 环境下部分版本支持不完整。
第一件事是确认安装版本与库文件位置
python -c "import bitsandbytes as bnb;print(bnb.__version__, bnb.__file__)"
再往下按 CUDA 版本重装匹配的版本
pip install bitsandbytes==0.43.1 --upgrade
然后把库目录加入动态链接搜索路径
$env:LD_LIBRARY_PATH='C:\Python\Lib\site-packages\bitsandbytes\lib'
末了用最小脚本验证 4bit 加载
python -c "import torch,bitsandbytes as b;print(b.functional.has_cuda)"
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
恢复的判定其实很直接。has_cuda 返回 True,模型能以 4bit 方式加载,显存占用约为半精度版本的四分之一,训练也能正常开始。
补一句。这套库对平台很敏感,Windows 上部分版本功能残缺,实在装不上时换 Linux 容器往往比继续折腾依赖更快。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。