一直没有使用Pycharm来写代码的习惯,以往都是习惯了用Sublime Text来写代码,然后通过Transmit (FTP工具)上传到服务器上,在使用SecureCRT运行脚本。
为方便通过断点来参看数据并调试代码,遂考虑使用Pycharm来远程调用云服务器GPU来调试本地代码,一是因为本地Mac本显卡实在无力运行此高计算量的程序,二是怕自己的本本爆掉。
Pycharm有以下几个便利之处:(也是在不断折腾中发现的,🤦♂️)
- 一款专注于Python开发的IDE
- 远程链接服务器并调用GPU等资源
- 可以SSH链接到服务器终端
- 十分方便对服务器上的程序绘图进行显示
新建项目
通过SFTP链接服务器
点击
Configuration
进入Deployment
,并新建SFTP
Root path,我填写的是:/root/wangcong
点击Mapping,填写期望同步的本地路径与服务器路径
Deployment path,我填写的是:
/
尤其要注意服务器映射的目录路径!:实际路径 = Root path + Deployment path
在上方菜单栏进入
Tools
—>Browse Remote Host
来打开相应的RemoteHost
面板。这个面板显示的就是服务器上的文件,显示的范围就是步骤2中
Deployment path
路径下的文件及文件夹。可以直接在
RemoteHost
面板里双击某个文件并且直接进行编辑。双击某个文件后你可以看到编辑区域的顶部有一个横条,并且横条的右边有三各按钮,分别是比较、撤销和上传操作。在这里面编辑文件之后,可以直接点击上传按钮,就会提交到服务器了。
更改Python解释器为云服务器上的Python解释器
进入
Preference
,点击Project Interpreter
,选择Add
进入
SSH Interpreter
进行设置
注意,有时候会出现Next
无法点击的情况。点击
Create copy of this deployment server in IDE settings
后,即可选中Next
按钮。Python解释器路径,一般设置默认
设置服务器GPU环境变量
一次设置,永久有效!
在终端上执行cat .bashrc
命令,查询服务器中设置的CUDA环境变量。
1 | #export PATH=/usr/local/cuda-10.0/bin:$PATH |
我仅仅设置了这两条,设置PATH
会报错。
点击
Edit Configurations
点击
Templates
,设置Python脚本模板的Environment Variables
若已有运行过的文件,在完成上面两步后,记得清空Python下所有已经运行的文件,重新运行程序
测试
在Pycharm IDE的右下角的Project Interpreter
选为远程SSH的Python解释器。
新建脚本文件
testGPU.py 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#!/usr/bin/python
# -*- coding: UTF-8 -*-
# @Time : 2019-12-16 17:49
# @Author : WangCong
import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0'
# 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))运行脚本测试
通过Pycharm绘图
启用 SSH X11 转发以便使得Pycharm能够进行绘图(Plot),打开配置文件/etc/ssh/sshd_config
1 | # X11Forwarding yes |
找到上面的代码,并取消注释。
SSH远程链接
通过Pycharm可以建立服务器SSH远程链接,在上方菜单栏点击Tools
—> Start SSH seesion
即可远程连接到服务器。
若远程Terminal出现乱码:进入Perferrnces
点击Tools
—> SSH Terminal
,在Default encoding
选项中选择utf-8即可解决。
需要注意的问题
报错
ImportError: libcublas.so.: cannot open shared object file: No such file or directory
在脚本文件的
Environment Variables
中,配置CUDA参数上文中的新建项目路径与Mapping中的本地路径等路径要一一对应,服务器中的路径也要一一对应。
在Pycharm IDE的右下角的
Project Interpreter
应选为远程的Python解释器。
参考文献:
https://stackoverflow.com/questions/37933890/tensorflow-gpu-setup-error-with-cuda-on-pycharm