我想在一个gpu上训练一个VGG模型,因为我有很多图像(137 099),我需要这个过程走得更快。
对于这一点,我有一个笔记本:我的GPU在一个集群(SLURM)上,在那里我通过带有VSCode的remote-ssh由ssh连接。
我正在使用一个conda环境env 2,Python 3.7.12,torch 1.8.1+ cu 101,torch.版本.cuda == 10.1
在我的第一间牢房里,我确实
import torch
print(torch.cuda.is_available())
DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
然后我得到
False
DEVICE = 'cpu'
看起来系统无法访问gpu,我的VGG的训练确实很慢。
然而,如果我在笔记本电脑上使用!nvidia-smi,我可以看到gpu(TITAN X Pascal)
现在,我用python文件test.py代替笔记本test.ipynb(仍在带有env 2的VSCode上)进行了同样的尝试。
torch.cuda.is_available() = True,
训练也会更快。
如果我用JupyterLab运行test.ipynb,我还可以得到
torch.cuda.is_available() = True,
所以看起来VSCode不能从笔记本(test.ipynb)访问gpu,但是可以从python文件(test.py)访问,即使我对这两个文件使用相同的python内核(env 2)。
有人知道它是从哪里来的吗?
备注:
print(sys.executable)
> /home/manon/.conda/envs/env2/bin/python
test.py和测试.ipynb文件都适用
1条答案
按热度按时间jjhzyzn01#
实际上我已经弄明白了。我首先要创建一个隧道,这样我就可以使用远程Jupyter服务器运行Jupyter内核的脚本。我用以下代码创建了这个隧道:
这个命令给了我一个URI:
您可以在本地主机上运行
然后,我单击VSCode状态栏中的“Jupyter Server:Local”按钮,选择了一个Jupyter远程服务器(您也可以使用“Jupyter:指定连接的本地或远程Jupyter服务器命令”)
并复制了先前在中获取的URI:“输入正在运行的Jupyter服务器的URI”。
在这之后,一切都很好