炼丹中的一些小问题及解答(持续更新)

Q1:使用nvidia-smi看不到任务进程,想要结束某个进程怎么办?

可以使用一下来查看进程,使用通道过滤,选择python的程序。之后使用 kill -9 ID,即可杀掉程序。

ps aux|grep root|grep python

批量打印进程ID可以使用如下指令,在后面加上|sh即可全部杀死。不过要小心哦。

ps aux|grep root|grep python|grep -v grep| awk '{print "kill -9 "$2}'
ps aux|grep root|grep python|grep -v grep| awk '{print "kill -9 "$2}'|sh

Q2:出现报错 RuntimeError: DataLoader worker (pid 27097) is killed by signal: Killed. 或者Killed

RuntimeError: DataLoader worker (pid 27097) is killed by signal: Killed.

Killed

这种报错是因为内存给小了,原来内存也是会影响DataLoader的,需要调小num_workers,或者加大内存。

Q3:直接使用python train.py 跑代码必须SSH一直连接这服务器,这时候如果出现网络波动或者网络断连就会直接把程序给杀掉。

1、使用.sh文件进行调用可以进行解决,但是有些服务器并不会给你执行sh文件的权限。

2、此时可以使用一些小工具。这里请教了kunyang,发现tmux是一个很好用的工具,以下是一些常用指令,可能可以帮助到大家。

首先是安装,使用apt-get install tmux即可完成安装。

  • 创建一个新的会话(session),-s 后面是该会话的名字。
    tmux new -s mytmux
  • 使用ctrl+B组合键可以发出一些指令,按完ctrl+B后
     按C,可以在新建一个窗口,在最下面可以看到所有的窗口。
     按0 1 2 进行窗口切换,星号在哪个窗口代表现在调用的哪个。
     按D,退出到命令行,还可以回来
  • 查看现有的tmux
    tmux ls
  • 回到之前的tmux
    tmux a -t mytmux
  • 关闭某个不相应的窗口
    tmux kill-window -t 6
  • 彻底关闭窗口,会让你二次确认
    ctrl+B & 

这样就就再也不怕断网之类的事情发生了。

Q4:校园Linux登录校园网

curl 'http://10.10.43.3' --data "DDDDD=student_id&upass=password&0MKKey="

Q5:关于cudnn,对cudnn的解释网上已经有很多了。基本上就是说默认是False,如果网络的输入数据维度或类型上变化不大设置成True,在一起开始会花费一些时间而后面会降低时间,提高速度。但我想说的是,我使用这行代码后跑程序需要的显存出现了波动。之前跑程序我需要18G的显存,但使用这行后一开始只需要16G,之后又需要20G。具体原理不太清楚。

torch.backends.cudnn.benchmark = True

Q6:关于保存和加载模型。

我们可以使用torch.save来保存模型。而在加载时不能直接使用torch.load()来使用,torch.load()仅读取了模型参数。应该先使用自己定义得方法,或者其它的办法先读取到基本模型架构,再使用load_state_dict来加载参数。

torch.save(net.state_dict(), './model.pth')


net=load_model()
net.load_state_dict(torch.load(args.resume))

Q7:出现报错 Process finished with exit code 137, 程序退出

大概率是因为内存不足报的错误,我是在存储一个中间结果时报错的,每一轮循环我都让一个tensor变得更大,以至于最后出现了137错误。这个Killed错误类似,因此我进行了分阶段的保存避免了报错,或者在申请服务器资源时多申请写内存也可以解决。

你可能感兴趣的:(深度学习,神经网络,linux,运维,服务器)