加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0712zz.com/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

Linux深度学习环境搭建:10年后端站长排错实录

发布时间:2026-11-03 14:22:19 所属栏目:Unix 来源:DaWei
导读:  去年六月份,守门多年的安全老邵蹲我服务器机柜旁边啃冷掉的肉夹馍,酱汁滴在防火墙策略表打印纸上,他拿袖子抹了两下,纸就皱了。我说你别擦,这表我刚改过三遍,擦糊了更没法看——结果他抬手把整张纸揉成团扔进废纸篓,说“

  去年六月份,守门多年的安全老邵蹲我服务器机柜旁边啃冷掉的肉夹馍,酱汁滴在防火墙策略表打印纸上,他拿袖子抹了两下,纸就皱了。我说你别擦,这表我刚改过三遍,擦糊了更没法看——结果他抬手把整张纸揉成团扔进废纸篓,说“你环境搭不起来,不是因为 CUDA 版本不对”。


  我原以为是 nvidia-driver 和 kernel header 对不上,结果查到凌晨两点,发现是 initramfs 里没挂载 /dev/nvidiactl,而 systemd-logind 正好在启动时试图读它,卡住 18 秒后超时,整个 loginctl session list 全空。这事儿我没敢跟老邵讲,怕他笑出声来——但上周运维小张真笑了,他笑着往我桌上放了杯枸杞茶,杯底压着一张便签:“你重启时按 Esc 看 dmesg,第三行就写着 failed to open nvidiactl”。我信了,真看了,第三行确实是。可第四行写着 “fbcon: Taking over console”,第五行是 “systemd[1]: Started Getty on tty1.” ——它早起来了,只是没告诉你。


  那天机房空调坏了,嗡嗡响得像台报废的 Tesla V100 风扇,一整个下午都在抖。我盯着 nvidia-smi 的输出发呆,它刷出来又消失,刷出来又消失,最后停在 “No devices were found” 上,定格了整整四分半钟。隔壁风控组老马推门进来借网线,顺手把我显示器调亮了 30%,说我“黑屏太伤眼”。我没反驳,但顺手把 ~/.bash_history 里删掉了三行 rm -rf /usr/local/cuda。这个我敢打包票——删的是带 --force 的那三条,不是误操作,是清醒着删的。


  WAF 误拦真用户那次,客服电话被打爆,我们仨蹲在 IDC 过道里听录音。老邵边听边抠指甲缝里的灰,听出第 7 通电话里客户喊的是“你们后台报错显示 invalid csrf token”,但 WAF 日志里压根没过 csrf 字段。我当场去查 nginx conf,发现 upstream_pass 被注释了——是三个月前上线 AB 测试时手动加的,忘了取消注释。这事跟深度学习环境没关系,但我记下来了,因为第二天我就在 /etc/apt/sources.list.d/nvidia-ml.list 里看见同样一行被注释掉的 deb-src,也是三个月前加的。谁干的?我说不准。反正 deb-src 从来没人用,也没人删。


  GPU 监控告警阈值设成 92% 利用率,我调低到 88%;三天后老邵把它改成 85%,说“你们训练脚本跑得太疯,再高一点调度器就自己杀进程”。结果第五天早上,监控钉钉消息弹出一条:“/dev/nvidia0 utilization dropped to 3% for >120s”,点进去一看,是某模型 infer 脚本刚跑完就直接 exit(0),连 context.close() 都没调。我截图发群里,运维小张回了个“?”;老邵回了个“……”;过了十八秒,他补了一句:“你训练用的是 PyTorch 1.13.1?那个版本里 torch.cuda.empty_cache() 在 fork 进程后根本不清显存。” 我愣住了,因为我的确 fork 了两个 subprocess 做数据校验。但我说不准这个 bug 是不是真存在——文档里写的是 fixed in 1.14,可 patch commit hash 我没背过,也不打算去翻。


  最邪门的是那块 P40 卡。插槽换过三次,驱动重装七次,BIOS 设置全开,PCIe Speed 强制锁定 Gen3,还是间歇性 dropout:nvidia-smi 显示 “N/A”、“GPU access blocked by secure boot”、“Inforom version mismatch”,轮着来。最后是清洁工阿姨打扫机柜时说了一句:“这块板子背面,烫手。” 我摸了一下——真烫。拆下来发现散热片螺丝松了两颗,其中一颗垫片没了,另一颗拧到了底却没咬住牙纹。我把垫片找回来塞回去,螺丝拧了半圈就紧了。这事儿跟深度学习没半毛钱关系,但老邵现在每次巡检都先摸卡背。


  哦对,那天窗外在下雨,雨点砸在机房玻璃上像敲 ICMP 包,噼啪、噼啪、停三秒、再噼啪。老邵接了个电话,声音压得很低,只听见他重复两次“嗯…不是我们的漏洞…溯源还没闭环…” 挂了以后他盯着我电脑右下角的系统时间看了三秒,说:“你 docker run 的时候,–shm-size 设了多少?” 我张了张嘴,没答上来。他摇摇头走了,留下半块肉夹馍和一句:“CUDA IPC 跨容器共享,你 shm 太小,它连 cudaIpcOpenMemHandle 都卡死。”


  我现在每次搭环境前先干两件事:第一,cat /proc/cpuinfo | grep “model name” 看是不是真 Intel,第二,把 root 密码换成 32 位 UUID 加两个 emoji(????‍♂️????),然后 sudo -i 摁到底。别的不敢说,但这招防了八次“有人顺手改了我的 LD_LIBRARY_PATH”。至于深度学习框架——TensorFlow 我已经三年没碰了;PyTorch 我只用 conda install,绝不用 pip;JAX?那玩意儿我在测试机上跑了三天没装成功,中间重装过两次 kernel,最后一次成功是因为我忘了拔掉 USB 3.0 扩展坞。优胜劣汰?嗯。但淘汰的往往不是技术,是耐心、是交接清单、是那个说“应该没问题”的语气。


文章配图,仅供参考

  明天还得去三号机房——他们新上了一套国产芯片训练平台,文档只有 pdf 和微信语音转文字记录。我已经让小张把会议室白板擦干净了,准备画拓扑图。不过我打算先泡杯浓茶,把昨天剩的半盒牛奶倒进杯子里搅匀,再坐那儿看十分钟窗外。雨好像还没停。

(编辑:站长网)

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