在雲端使用TensorFlow¶
在Colab中使用TensorFlow¶
Google Colab 是谷歌的免費線上互動式 Python 運行環境,且提供 GPU 支持,使得機器學習開發者們無需在自己的電腦上安裝環境,就能隨時隨地從雲端使用和運行自己的機器學習程式碼。
進入Colab(https://colab.research.google.com),新建一個Python3筆記本,界面如下:
如果需要使用 GPU,則點選上方 Edit “Notebook settings - 更改運行時類型”,在 “硬體加速器” 一項中選擇 “GPU”,如下圖所示:
我們在主界面輸入一行程式碼,例如 import tensorflow as tf
,然後按 ctrl + enter
執行代碼(如果直接按下 enter
是換行,可以一次輸入多行代碼並執行)。此時 Colab 會自動連接到雲端的執行環境,並將狀態顯示在右上角。
執行完後,點擊界面左上角的 “+ Code”,此時界面上會新增一個輸入框,我們輸入 tf.__version__
,再次按下 ctrl + enter
執行代碼,以查看 Colab 預設的 TensorFlow 版本,執行情況如下:
小技巧
Colab 支援程式碼提示功能,可以在輸入 tf.
後按下 tab
鍵,將會出現程式碼提示的下拉選單。
可見,到目前本文程式撰寫,Colab 中的 TensorFlow 預設版本是 2.2.0。在 Colab 中,可以使用 !pip install
或者 !apt-get install
來安裝 Colab 中尚未安裝的 Python 函式庫或 Linux 軟體套件。比如在這裡,我們希望使用 TensorFlow 2.2.0rc4 的版本,即點擊左上角的 “+ Code”,輸入:
!pip install tensorflow-gpu==2.0.0-beta1
按下 ctrl + enter
執行,結果如下:
能夠發現,Colab 提示我們重新運行環境以使用新安裝的 TensorFlow 版本。於是我們點擊運行框最下方的 Restart Runtime(或者選單 “Runtime - Restart Runtime”),然後再次導入 TensorFlow 並查看版本,結果如下:
我們可以使用 tf.test.is_gpu_available
函數來查看當前環境的 GPU 是否可用:
可見,我們成功在 Colab 中配置了 TensorFlow 2.0 環境並啟用了 GPU 支援。
你甚至可以透過 !nvidia-smi
指令查看目前的 GPU 資訊:
可見 GPU 的型號為 Tesla T4。
在Google Cloud Platform(GCP)中使用TensorFlow¶
Google Cloud Platform(GCP) 是 Google 的雲端計算服務。GCP 收費靈活,預設依照使用時間計費。也就是說,你可以快速建立一個支援 GPU 的實例,訓練一個模型,然後立即關閉(關機或刪除實例)。GCP 只收取在實例開啟時所產生的費用,關機時只收取資料存儲的費用,刪除後即不再繼續收費。
我們可以通過兩種方式在 GCP 中使用 TensorFlow:使用 Compute Engine 建立支援GPU 的實例,或使用 AI Platform 中的 Notebook 建立資源 GPU 的線上 JupyterLab 環境。
在 Compute Engine 建立支援 GPU 的實例並部署 TensorFlow¶
GCP 的 Compute Engine 類似於 AWS、阿里雲等,允許使用者快速建立自己的虛擬機實例。在 Compute Engine 中,可以很方便的建立具有 GPU 的虛擬機實例,只需要進入 Compute Engine 的 VM 實例(https://console.cloud.google.com/compute/instances),並在創建實例的時候選擇 GPU 類型和數量即可。
需要注意兩點:
只有特定區域的機房具有 GPU,且不同類型的 GPU 地區範圍也不同,可參考`GCP官方文件 <https://cloud.google.com/compute/docs/gpus>`_ 並選擇適合的地區建立實例;
預設情況下 GCP 帳號的 GPU 配額非常有限(可能是怕你付不起錢?)。你很可能需要在使用前申請提升自己帳號在特定地區的特定型號 GPU 的配額,可參考 GCP 官方文件:申請提升配額 ,GCP 會有工作人員手動處理申請,並給你的信箱發送信件通知,大約需要數小時至兩個工作日不等。
當建立好支援 GPU 的 GCP 虛擬機實例後,配置工作與在本機端大致相同。系統中預設並沒有 NVIDIA 顯卡驅動,依然需要自己安裝。
以下指令範例在 Tesla K80,Ubuntu 18.04 LTS 的 GCP 虛擬機實例中配置 NVIDIA 410 驅動、CUDA 10.0、cuDNN 7.6.0 以及 TensorFlow 2.0 beta 環境的過程:
sudo apt-get install build-essential # 安裝編譯環境
wget http://us.download.nvidia.com/tesla/410.104/NVIDIA-Linux-x86_64-410.104.run # 下載NVIDIA驅動
sudo bash NVIDIA-Linux-x86_64-410.104.run # 安裝驅動(一路Next)
# nvidia-smi # 查看虛擬機中的GPU型號
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh # 下載Miniconda
bash Miniconda3-latest-Linux-x86_64.sh # 安裝Miniconda(安裝完需要重啓終端)
conda create -n tf2.0-beta-gpu python=3.6
conda activate tf2.0-beta-gpu
conda install cudatoolkit=10.0
conda install cudnn=7.6.0
pip install tensorflow-gpu==2.0.0-beta1
輸入 nvidia-smi
會顯示:
~$ nvidia-smi
Fri Jul 12 10:30:37 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 63C P0 88W / 149W | 0MiB / 11441MiB | 100% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
使用 AI Platform 中的 Notebook 建立資源GPU 的線上 JupyterLab 環境¶
如果你不希望繁雜的設定,希望快速獲得一個能夠立即使用的線上互動式 Python 環境,可以使用 GCP 的 AI Platform 中的 Notebook。其預先安裝了 JupyterLab,可以理解為 Colab 的付費升級版,具備更多功能且限制較少。
進入 https://console.cloud.google.com/mlengine/notebooks ,點擊 “新建實例 - TensorFlow 2.0-With 1 NVIDIA Tesla K80”,界面如下:
也可以按下 “自定義” 來進一步設定實例,例如選擇區域、GPU 類型和個數,與創建 Compute Engine 實例類似。
提示
和 Compute Engine 實例一樣,你很可能需要在這裡選擇自己適合的區域,以及申請提升自己帳號在特定地區的特定型號 GPU 的配額。
建立完成後,點擊 “打開 JUPYTERLAB”,即可進入以下界面:
建立一個Python 3筆記本,測試TensorFlow環境:
我們還可以按下左上角的 “+” 號,新建一個終端: