【玩轉騰訊雲】GPU雲伺服器(開發篇)
- 2020 年 4 月 5 日
- 筆記
在騰訊雲伺服器上寫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安裝方式:
sudo apt install python3-pip sudo pip3 install numpy torch torchvision
驗證安裝可用以下命令,將列印PyTorch版本:1.4.0。
python3 -c "import torch; print(torch.__version__)"
通過本地PyCharm創建PyTorch示例
到了第三個示例,相信你已經很熟悉套路了,還是選擇已有的遠端解釋器、定義遠端項目目錄等常規操作。

接下來簡單地驗證一下PyTorch模組的使用:創建一個隨機數張量,以及驗證CUDA的啟用。

可以看到,基於PyCharm的Remote Interpreter,遠程開發調試基於PyTorch的網路模型也如同本地一樣的暢快。
0x04 Jupyter Notebook安裝&遠程示例
Jupyter簡介及伺服器端安裝
首先,伺服器端安裝Jupyter
sudo pip3 install jupyterlab
啟動Jupyter服務
# 設置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開發調試了,是不是感覺很酷?
其實,在雲伺服器上開發還有很多方法,本教程不過冰山一角。歡迎關注本帳號,並期待後續更新。
雲伺服器貌似在「天邊遠端」看不見摸不著,然而確是當下及未來最高效可靠、最方便靈活、最經濟實惠的計算資源管理和使用方式,讓我們一起擁抱這個令人興奮的變革,一路感受雲端的精彩吧。