在腾讯云服务器上写Python,看这一篇就足够了!
在上一篇中大家已经熟悉了GPU服务器创建及初始化步骤,那么接下来该如何具体远程开发?如何调试代码、同步数据呢?
本教程将继续从实践出发,讲解基于腾讯云GPU服务器打造远程Python开发环境。开发者们完全可以在“本地开发一致的体验”和“服务器端更高质量资源”这二者之间,做到最佳的结合,享受专注开发的乐趣。
0x00 准备工作
本文假定读者同学们有以下基础&准备:
- 有一台可以ssh登陆的腾讯云实例 (选购传送门,按量计费更灵活哦)
- 了解Python基础
- 了解PyCharm/Jupyter等常用Python开发工具
本地环境
Ubuntu 18.04 笔记本,PyCharm(2019.3.4, Linux版本)。
注意,本地不需要以下工具:PyTorch/JupyterLab甚至Python3解释器。
服务器环境
GPU计算型GN7实例一台,具体型号为GN7.5XLARGE80。已经安装GPU驱动以及CUDA-Toolkit/CUDNN,服务器Python3.6.9。
让我们开始,远程掌控一切吧~
0x01 PyCharm示例:远程开发
创建指定远端解释器的项目
让我们从0开始:
选择创建解释器,即点击那个“三个点”的按钮
选择SSH解释器,设置登陆服务器IP和用户名
输入云服务器密码
接下来,PyCharm会验证服务器登陆,(第一次设置还会有添加footprint的提示),然后就可以添加解释器了:
注意:明确用python3!
回到项目界面,可以看到远端解释器已经自动选择上了,这里我们输入远端项目的路径,就是想把项目放在云服务器的那个目录,这里我们指定在/home/ubuntu/code/remote_demo_1目录下。PyCharm会通过SFTP协议同步本地和远端的目录内容。
代码执行验证
下面我们创建一个main.py文件,看看会发生什么?
编辑完成后,PyCharm会自动同步本地文件(main.py)到服务器端目录。我们可以通过右侧的RemoteHost查看服务器端的文件,右下角也会显示当前项目的解释器是远端的Python解释器。
执行这个main.py文件,(绿色Run按钮或这Ctrl Shift F10),可以看到执行结果,结果正确打印了服务器的信息。
至此,示例一结束。
中场休息
- Tips 1:如何用PyCharm里集成的终端连接远端服务器?
默认Terminal里仍然是本地(Local)的,可以通过菜单栏 -> Tools -> Start SSH session...启动直接指定远端服务器Terminal;也可以在设置里通过Tools -> SSH Terminal设置默认的终端。达到类似的效果
- Tips 2:代码同步通过PyCharm比较容易,如何传数据等大文件呢?,推荐使用rsync命令,增量上传非常方便。
# 如 rsync -avtP ~/data ubuntu@your-server-ip:~/
# 可将用户主目录下的data目录上传至云服务器下的ubuntu用户的主目录下
0x02 PyCharm示例:远程调试
我们再创建第二个远端执行的项目,顺便体验下远程调试的过程。
由于我们之前已经创建过远端解释器了,这次在创建项目时只需指定选择已有的解释器就可以。同样地,设置远端项目目录路径。
这会我们简单编辑一个示例代码hanoi.py,不过不同于直接执行,我们试玩下用PyCharm单步调试~
左键点击函数左侧即设置断点,然后点击Debug图标(或Shifit F9)启动调试,F7单步执行。效果如图所示:
左侧显示的函数的调用栈帧信息,右侧函数命名变量的当前值显示。另外,上图中还设置了观察变量(step),可以方便查看其实时变化。
到这里相信你已可以看出,PyCharm远程项目调试和本地调试几乎没有任何区别。
0x03 PyTorch安装&示例验证
PyTorch简介及服务器端安装
首先需要在GPU服务器实例(注意不是本地)上安装PyTorch,目前官方最新的是1.4版本。这里选择官方的pip安装方式:
代码语言:txt复制sudo apt install python3-pip
sudo pip3 install numpy torch torchvision
验证安装可用以下命令,将打印PyTorch版本:1.4.0。
代码语言:txt复制python3 -c "import torch; print(torch.__version__)"
通过本地PyCharm创建PyTorch示例
到了第三个示例,相信你已经很熟悉套路了,还是选择已有的远端解释器、定义远端项目目录等常规操作。
接下来简单地验证一下PyTorch模块的使用:创建一个随机数张量,以及验证CUDA的启用。
可以看到,基于PyCharm的Remote Interpreter,远程开发调试基于PyTorch的网络模型也如同本地一样的畅快。
0x04 Jupyter Notebook安装&远程示例
Jupyter简介及服务器端安装
首先,服务器端安装Jupyter
代码语言:txt复制sudo pip3 install jupyterlab
启动Jupyter服务
代码语言:txt复制# 设置jupyter web的密码
jupyter-notebook password
# 创建jupyter工作目录
mkdir ~/jupyter_workspace
# 启动jupyter (两次ctrl c停止服务)
jupyter-notebook --no-browser --ip=0.0.0.0 --port=8887 ~/jupyter_workspace
启动jupyter时,记得一定加上参数--no-browser
来禁用自动打开浏览器,以及参数--ip=0.0.0.0
使得服务可以对外。注意,为了让公网可以访问,需要服务器实例设置相应的安全组规则,本例中即入站规则的加入TCP:8887。
本地访问云服务器的Jupyter服务
打开本地浏览器访问http://服务器的公网IP:端口访问,会跳转到登陆页,如图:
输入之前设的密码,就是熟悉的Jupyter Notebooke管理页面了,创建ipynb文件尽情玩耍吧
0x05 Jupyter Notebook结合PyCharm使用
有小伙伴问我:“还要开浏览器好麻烦,能不能在PyCharm里直接玩Jupyter Notebook?”
你还可以再懒一点么?不过它们真的可以在一起。
服务器端的jupyterlab安装还是必须的,参考上一节。
在PyCharm的设置(settings)里添加jupyter服务地址:
虽然这里貌似无需输入登陆密码。但当我们创建完notebook,第一次Shift Enter执行时,就会提示输密码了。
然后就是熟悉的味道了:
在PyCharm里创建Jupyter Notebook更方便,因为这样ipynb文件可以在PyCharm项目下统一管理,还是很推荐的。
0x06 小结
本教程到此,你已经可以仅凭本地的PyCharm,完成基于腾讯云GPU服务器的远程Python开发调试了,是不是感觉很酷?
其实,在云服务器上开发还有很多方法,本教程不过冰山一角。欢迎关注本账号,并期待后续更新。
云服务器貌似在“天边远端”看不见摸不着,然而确是当下及未来最高效可靠、最方便灵活、最经济实惠的计算资源管理和使用方式,让我们一起拥抱这个令人兴奋的变革,一路感受云端的精彩吧。
0x07 参考资料
- https://www.jetbrains.com
- https://pytorch.org/
- https://jupyter.org/