【玩转腾讯云】GPU云服务器(开发篇)

2020-04-05 22:27:27 浏览数 (1)

在腾讯云服务器上写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命令,增量上传非常方便。
代码语言:txt复制
# 如 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/

0 人点赞