指定GPU训练:服务器双显卡同时跑两个深度学习网络的解决方法
目录

1.指定GPU训练
情况描述:服务器上有两块GPU显卡。我想同时运行两个深度学习网络。第一个代码使用 gpu0,另一个代码使用 gpu1。
参考链接:
1.1.解决方案1.1.1 直接从终端指定(推荐,简单方便)
直接在终端输入 CUDA_VISIBLE_DEVICES=2 python train.py
CUDA_VISIBLE_DEVICES从0开始,如果有两个就是0和1。
然后直接连接运行命令
例子:
1.1.2 python代码中的设置:
import os os.environ["CUDA_VISIBLE_DEVICES"] = "2"
参见网址:
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、ssh断线后使用tmux继续运行程序
当我使用笔记本电脑连接服务器时,经常会因为网络状况不佳而断开连接。我很容易前功尽弃,所以师傅教我怎么用,放个链接。
2.1 安装tmux
sudo apt安装tmux
2.2 创建新会话
首先,tmux有会话的概念,类似于工作空间的感觉。运行 tmux 时,首先建立一个会话,然后在会话中运行它。
输入以下命令建立会话。
tmux new -s uav
new表示创建一个新的会话,-s是session的缩写,后面跟会话的名称。
2.3 在会话中执行程序
进入不同的命令行界面(如下图),这个界面和正常的终端环境没有什么区别。唯一的区别是,只要不关闭电源,该终端中运行的所有程序都会继续运行。运行,您将继续在 ssh 断开连接并重新连接时的位置。
在新的会话中输入执行命令开始执行(放在终端上之前最好先验证一下程序没有错误)
2.4 查看当前存在的会话
使用以下命令查看当前存在的会话
哦,有三个
2.4 进入指定会话
进入 gpu1 会话。我们现在重新连接吧。