目录
1.指定gpu训练
情况描述: 服务器上有两个gpu显卡,我想同时跑两个深度学习网络, 第一个代码用gpu0,一个用gpu1.
参考链接:https://www.cnblogs.com/darkknightzh/p/6836568.html
1.1 .解决方法
1.1.1 从终端直接指定(推荐使用,简单方便)
直接在终端输入 CUDA_VISIBLE_DEVICES=2 python train.py
CUDA_VISIBLE_DEVICES从0开始, 有两张的话,就是0和1.
后面直接接运行的命令
example:
1.1.2 python代码中设定:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "2"
见网址:http://www.cnblogs.com/darkknightzh/p/6591923.html
1.1.3. 使用函数 set_device
import torch torch.cuda.set_device(id)
该函数见 pytorch-master\torch\cuda\__init__.py。
不过官方建议使用CUDA_VISIBLE_DEVICES,不建议使用 set_device 函数。
解决办法
1.2.查看是否运行成功
在终端输入 nvidia-smi查看gpu使用情况,可以看到我的两张卡都已经用起来啦
2. 使用tmux在ssh断开后继续运行程序
用笔记本连接服务器的时候,经常会因为网不好,给我训练着训练着就断开,很容易就前功尽弃,所以了师傅就给我科普了这个用法 ,放上链接 https://blog.csdn.net/qq_38649880/article/details/88770009
2.1 安装tmux
sudo apt install tmux
2.2 新建会话
tmux首先有一个回话的概念,类似于一个工作空间的感觉,就是你运行tmux的时候就是先建立一个会话,然后在会话里面运行。
输入下面的命令建立一个会话。
tmux new -s uav
new
就是新建一个会话的意思,-s
就是会话的简写,后面是会话的名字。
2.3 会话中执行程序
进入了一个不一样的命令行界面(如下图),这个界面和正常的终端环境没有任何区别,唯一不一样的地方就是,这个终端里面运行的所有程序,只要你不关电,程序就会一直运行,而且你当你ssh断开再重新连上的时候会接着以前的地方。
在新会话中输入执行命令,开始执行(最好是先验证一下程序还有没有错误,再放在终端上)
2.4 查看查看当前存在的会话
用下面的命令可以查看当前存在的会话
欧,有三个
2.4 进入指定会话中
进入到gpu1会话中。我们现在重新连接一下。
-
刚刚我们新建了一个名为uav的会话,可以我们发现它还在。我们现在重新连接一下。
tmux a -t gpu1
- 我们又连接到了刚才断开的地方,界面没有一点变化。是已经运行完的界面
-
2.5 退出当前界面进入正常模式
- 如果我们想要退出tmux环境到正常的终端环境的话我们只需要依次输入Ctrl + B
然后再按一下D,在tmux里面Ctrl + B是一个前缀键,要先按这个组合才可以激活tmux的快捷键。 -
2.6 删除当前会话
- ctrl +B +&