FLKAutoLayoFLKAutoLayo07-18 01:31

Pycharm远程连接GPU服务器

工欲善其事,必先利其器。
很多童鞋都是在本地编写和调试代码,然后再将代码通过某种方式传到服务器上,用vim修修改改然后运行。先不说本地和服务器手工维护和同步两份代码劳心劳肺,若不是对vim编辑文件得心应手也自然会费时费力。因此,强烈推荐写python的同学用pycharm远程链接远程服务器,下面具体讲讲如何连接。

首先,说明,想要pycharm链接远程服务器,必须是professional版本的pycharm!
然后,说明,pycharm也可以链接服务器上的虚拟环境的!

一、配置链接远程服务器

1.配置服务器IP,地址

如下图,点击configuration
image_1d1d0ec0lnes1b6v18gh1fqb1o6f9.png-260.3kB

点击“+”,新建sftp
image_1d1d0hmibpcm1o02bps1sb8vgrm.png-23.3kB

填写相关内容
image_1d1d0msepaar1jcf1fq01pgc171i13.png-104.2kB

2. 配置mapping:本地与远程的路径

点击右边的mapping,填写期望同步的本地路径与远程服务器路径
image_1d1d0p47vqii11pr188811l41nm41g.png-74.7kB

然后点击ok即可。

3 查看同步的文件

以上,Deployment的配置就完成了。这个配置完成了之后,其实是相当于配置了一个ftp工具可以连接到服务器上,从而可以查看和修改服务器上的文件。你可以通过Tools > Deplotment > Browse Remote Host来打开相应的RemoteHost面板,这个面板显示的就是服务器上的文件,显示的范围是你在Deployment中的Connection选项卡下配置的Root path路径下的文件及文件夹。

打开远程面板:
image_1d1d10ighuc51pif1tud3f0ujc1t.png-224.3kB

右边就会出现菜单栏,可查看远程文件:
image_1d1d134suvaj1mer1po12mbp672a.png-152.7kB

你可以直接在RemoteHost面板里双击某个文件并且直接进行编辑。双击某个文件后你可以看到编辑区域的顶部有一个横条,并且横条的右边有三各按钮,分别是比较,撤销和上传操作。你在这里面编辑文件之后,可以直接点击上传按钮,就会提交到服务器了。

二、配置远程python解释器

点击project interpreter, 点击右边的按钮,并选择“add"
image_1d1d1b2p7113pnns1n5p1jgcl2f37.png-136.1kB

选择SSH interpreter, 并同理填写服务器的ip和账号名称
image_1d1d1divk1edrbmgc3p1tmu6p73k.png-68.2kB

点击next,填写密码,填写python路径,注意服务器上有可能有很多Python,这里要填写你要用的那个,若是想链接虚拟环境,则填写虚拟环境中的python路径,可以去服务器上命令行执行”which python"查看路径。
image_1d1d2hk1a1q3n1k9qiad38kam362.png-12.4kB

三、配置cuda

如果要运行GPU程序,则需要配置环境变量:CUDA路径,如下图点击
image_1d1d24ud215qav2bmi6llj14hd41.png-143.2kB

点击enviroment variable后面的小图标
image_1d1d26bkc1f823p3ho9hjm17hv4e.png-174.3kB

输入cuda的路径
image_1d1d27l109hn1d5h54h1bg41oqv4r.png-49.2kB
cuda的配置信息可以到服务器上找,在终端执行"cat .bashrc"命令,将文件中cuda的配置进行复制即可。

好了,大功告成。

三、调试与测试

现在来测试一下。
在Pycharm中新建一个文件test.py,写入tensorflow代码:

import tensorflow as tf
import os

os.environ["CUDA_VISIBLE_DEVICES"] = '5'

# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)

# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

# Runs the op.
print(sess.run(c))

右击,选择upload to,文件即同步到服务器中了
image_1d1d2c9od1j531rnilllhvh1pr858.png-427.4kB

然后点击运行test.py,从后台打印的信息可见,已经成功运行在了服务器上。
image_1d1d2eaeepdq1pfj18mjbir1uf55l.png-413.6kB

在这个过程中,也可以发现,经过这样的配置,我们的代码现在一共有三个版本:一个是本地代码,一个是服务器上的代码,还有一个是RemoteHost面板中的代码(这个地方的代码如果直接编辑了,其实也可以提交到服务器,但是不能直接运行)

所以,如果通过上面的配置进行远程调试的话,我认为大致流程应该是下面这样:

在RemoteHost面板中,选中想要修改的代码,然后右键点击Download from here将内容下载至本地(这个本地是你在配置Deployment时设置的本地文件夹)。
在本地(这个本地是你在配置Deployment时设置的本地文件夹)修改你的代码,修改完成后在编辑区域或者文件名上右键,选择upload to…来提交到服务器。
在提交之后,你可以像普通调用本地解释器一样的直接运行本地的这个文件(但其实运行的是服务器的文件)
在这里,虽然RemoteHost里的文件可以直接编辑,但是并不建议这么做,因为这里编辑之后并不能直接运行。


参考资料:https://www.cnblogs.com/xiongmao-cpp/p/7856596.html

程序之家二维码

小额赞赏

000
评论