这个专栏记录我学习/科研过程中遇到的一些小问题以及解决方案,一些问题可能比较蠢请见谅。自用,仅供参考。
------------------------------------------------------------------------------------
tmux出现“lost server”
用CUDA进行模型训练的时候,发现GPU的可用内存溢出,内存全部分配了出去,被PyTorch占用的最多。在网上搜罗了一些解决方案也没有解决,最后求助学长,学长给的意见是“查进程号,kill掉”。(下面附上了该问题的解决方法)
接着,我用ps显示出了所有进程ps aux | less
,找到了一些正在运行的进程,其中就包含了一些tmux的相关进程(因为不知道这东西不能删,我以为跟tmux kill-session
差不多)。删完之后,我就发现tmux打不开了,凡是涉及tmux的操作指令,都会输出“lost server”。
知乎、CSDN等我没有找到类似的问题,但是在GitHub等外网讨论平台上,出现这个问题的频率比较高。下面我放一些可能对这个问题有帮助的答复(不过与我的情况不同,很多人是刚安装好就出现了lost server问题,我是自己作死)和链接。
链接(2016年,不过他提到的思路跟最后解决问题的方法很像)
链接(这里提出了一个更详细的解决思路,和解决方案的第二条指令相似)
我花了将近3个小时来解决这个问题(我写完这篇记录博客已经3点了),查遍了每个地方,每一种解决方案我都尝试了一下。最后这段指令解决了问题:
pkill tmux
rm -r /tmp/tmux-`id -u`
输入这段指令后,vscode重新加载了一下扩展包(虽然我不知道跟这段指令有没有关系,但是在它加载期间键入tmux仍然报lost server),接着就能正常使用tmux了。
两段指令中,第一段按名称“tmux”终止掉tmux相关的所有进程(这一段我没运行因为权限不够),pkill指令相关介绍见 链接1 链接2 。
第二行指令中的rm -r
递归地删除目录及其内容,后面的部分是一个路径,id -u
这一部分会被当前用户的用户ID替代,因此这一行指令删除了/tmp/tmux-<user-id>
这一目录下的所有内容。
这样一来,Tmux就会重启,这个问题就解决了。
所以折腾了三个小时,该解决的问题还是一个都没解决。: (
-------------------------PS:显存溢出问题的解决-------------------------
- 模型占用显存真的太大了,显卡受不了。建议采用降低batch_size、降低模型通道数、简化模型等方式降低占用显存;
- 有可能是上一次运行的代码没有完全kill掉或卡住,占用了显存。使用
gpustat
查看显存占用情况,再使用ps aux | grep <user-id>
搜索本ID下正在运行的进程,找到上一次运行的进程,记住PID,使用kill <pid>
终止进程; - 也有可能是其他用户占用了显存,使用
gpustat
同样可以看到。