【玩轉騰訊雲】GPU雲伺服器(開發篇)

在騰訊雲伺服器上寫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開發調試了,是不是感覺很酷?

其實,在雲伺服器上開發還有很多方法,本教程不過冰山一角。歡迎關注本帳號,並期待後續更新。

雲伺服器貌似在「天邊遠端」看不見摸不著,然而確是當下及未來最高效可靠、最方便靈活、最經濟實惠的計算資源管理和使用方式,讓我們一起擁抱這個令人興奮的變革,一路感受雲端的精彩吧。

0x07 參考資料