加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0313zz.cn/)- AI硬件、数据采集、AI开发硬件、建站、智能营销!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Linux深度学习环境搭建:从报错到运行的完整排障路径

发布时间:2026-10-28 08:12:27 所属栏目:Unix 来源:DaWei
导读:  我原以为装个CUDA就完事了,结果显卡驱动崩在凌晨三点十七分——群里老张发了个[裂开]表情包,我盯着终端里那行红色的nvidia-smi: command not found,手边烟灰缸已经堆了七截烟头,阳台那件灰衬衫还滴着水,隔壁装修的电

  我原以为装个CUDA就完事了,结果显卡驱动崩在凌晨三点十七分——群里老张发了个[裂开]表情包,我盯着终端里那行红色的nvidia-smi: command not found,手边烟灰缸已经堆了七截烟头,阳台那件灰衬衫还滴着水,隔壁装修的电钻声正一下一下凿着/dev/null。


  事情从2025年5月12号下午开始。客户催得紧,说模型跑不起来,收录掉了一半,索引量从三百七十二个词缩成一百零三个,快照倒退回四月十六号。我没回他,先 ssh 进服务器敲了句 nvidia-smi。空白。真空白,连“no devices found”都不给你。我查了一下收录——不对,是先查了一遍 /var/log/apt/history.log,再翻 ~/.bash_history 里上个月所有 apt install 记录,最后才想起来去 /proc/driver/nvidia/ 下看有没有 gpus 目录。没有。连目录都没有。


  第二天上午十点,运维小王蹲我工位边啃包子,说:“你上次 pip uninstall torch 那次,顺手把 libcudnn8 卸了。”我愣住。我说我哪敢动 libcudnn。他掏出手机念日志:“2025-04-28 16:39:12 root /usr/bin/apt-get remove python3-torch”——下面一行就是“Removing libcudnn8”。我敢打包票,那个 python3-torch 包的依赖树里根本没标 libcudnn8 是它儿子,apt 就是看名字像亲戚,顺手拉走的。这就是优胜劣汰:留下来的环境,全是被暴力删过三轮、重装过五次、重启时黑屏两次还硬顶着没换系统的幸存者。


  下午改 CUDA 版本。官方文档说支持 12.4,但 Ubuntu 22.04 内核 5.15.0-107,nvidia-driver-535 装不上,降级到 525 又和 PyTorch 2.3.0 的预编译 wheel 对不上劲。我在 GitHub issue 里翻到一个二〇二三年七月的回复:“This is not a bug, this is intentional friction.” 我截图发群里,配字:“不是bug,是故意设的绊马索。”老张回:“你信吗?”我不信。但我信那天雨下得特别黏,雨水贴在玻璃上往下滑得极慢,像模型收敛曲线卡在 0.0003 不动。


  第三天早上八点,我摸出笔记本,在虚拟机里重装系统,只装最小化镜像。装完第一件事:不碰 pip,不碰 conda,先 dpkg -l | grep nvidia。出来四行。我记下版本号。再 curl -O https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda_12.3.2_545.23.08_linux.run;chmod +x cuda_.run;sudo ./cuda_.run --silent --override;不勾驱动,只勾 toolkit 和 samples。跑完,nvcc -V。出来了。可等我 pip install torch==2.3.0+cu121 —— 又报错。这次是 libcusparse.so.12: cannot open shared object file。我打开 /usr/local/cuda-12.3/targets/x86_64-linux/lib/,里面只有 libcusparse.so.11。我骂了句脏话。客户微信弹出一条:“张工,今天能上线不?”我没回。我把那行命令复制粘贴进 history,删掉最后的 +cu121,改成 +cu123。pip install torch==2.3.0+cu123。安装过程安静得可怕。然后 python -c "import torch; print(torch.cuda.is_available())"。True。


  那一刻我坐在椅子上没动。窗外电钻停了。楼上小孩开始练琴,弹的是《天空之城》前六小节,反复重复,第四遍的时候左手错了一个音。我忽然想起2017年做站群那会儿,批量生成页面靠 Python + BeautifulSoup,跑着跑着内存爆掉,日志里满屏 malloc(): unaligned tcache chunk detected。我们当时不查内存泄漏,直接杀进程、删缓存、换服务器IP——因为算法还没识别出这是“站群”,只当是普通爬虫崩了。现在呢?现在你连 libcusparse.so 的软链接都打歪一格,PyTorch 就敢让你的 DataLoader 卡在 __getitem__ 第七次调用上,不报错,不超时,就挂着,像搜索引擎抓取时突然卡在 meta description 解析那一步,既不返回 404,也不更新快照,就晾着你。


文章配图,仅供参考

  我试过把错误日志丢进百度AI、通义千问、Kimi——全在教我“检查CUDA路径是否加入LD_LIBRARY_PATH”。它们不说那路径压根没生成,也不提 nvidia-modprobe 在某些内核下根本不触发模块加载。我最后是翻到一个俄语论坛的帖子,作者ID叫 “sasha_from_kazan_1992”,他说:“rm /usr/lib/x86_64-linux-gnu/libcusparse.so ; ln -s /usr/local/cuda-12.3/targets/x86_64-linux/lib/libcusparse.so.12 /usr/lib/x86_64-linux-gnu/libcusparse.so.12”。我照做了。模型跑起来了。收录没回来。但这不重要——这个我敢打包票:只要显卡还在跑,训练还在吐 loss,别的都是噪音。


  老张昨天问我:“你搭好了?”我说搭好了。他问:“模型效果咋样?”我说loss降得比友链掉得还稳。他笑了一声,语音里带咳嗽,说他上个月做的那个H5页面,首页TDK没动,就改了个JS加载顺序,百度快照直接跳回去年十月。我说:“那你下次deploy之前,先在终端里敲一遍 nvidia-smi,再敲 pip list | grep torch。”他说:“……我连GPU都没有。”


  所以到底是不是5月10号那次内核更新惹的祸?我说不准。是驱动太新?还是conda-forge里那个mamba update 把nvcc搞丢了?还是客户自己在requirements.txt里混写了torch和tensorflow的CUDA构建标签?谁知道。我现在每天晨会第一件事:ssh 上去,输三行:nvidia-smi;python -c "import torch; print(torch.version.cuda)";ls -l /usr/local/cuda/version.txt。其它的,先放着。


  明天先把手上那批页面删一半试试。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!