NGC(NVIDIA GPU CLOUD)是NVIDIA開發的一套深度學習生態系統,方便您免費訪問深度學習軟體堆棧,建立適合深度學習的開發環境。本文以搭建TensorFlow深度學習架構為例,為您介紹如何在GPU執行個體上部署NGC環境以實現深度學習開發環境的預先安裝。
背景資訊
NGC網站提供了目前主流深度學習架構不同版本的鏡像,例如Caffe、Caffe2、CNTK、MxNet、TensorFlow、Theano、Torch,您可以選擇需要的鏡像部署NGC容器環境。本文以搭建TensorFlow深度學習架構為例。
阿里雲在雲市場鏡像中提供了針對NVIDIA Pascal GPU最佳化的NGC容器鏡像,建立GPU執行個體時選擇NGC容器鏡像,可以簡單快速地部署NGC容器環境,即時訪問最佳化後的深度學習架構,極大程度縮減產品開發以及業務部署時間,實現開發環境的預先安裝;同時該NGC容器鏡像支援調優後的演算法架構,並且阿里雲會對其持續更新。
使用限制
僅以下GPU執行個體規格類型系列支援部署NGC環境:
gn5i、gn6v、gn6i、gn6e、gn7i、gn7e、gn7s
ebmgn6i、ebmgn6v、ebmgn6e、ebmgn7i、ebmgn7e
更多資訊,請參見GPU計算型。
準備工作
在操作本文前,請您提前在NGC網站註冊自己的NGC帳號。
在部署NGC環境前,請提前擷取TensorFlow容器鏡像路徑。
登入NGC網站。
在搜尋地區輸入TensorFlow後,選擇並單擊TensorFlow。
在TensorFlow頁面,單擊Tags頁簽,複製對應版本的TensorFlow容器鏡像。
以下載TensorFlow
22.05-tf1-py3
鏡像為例,TensorFlow容器鏡像路徑為nvcr.io/nvidia/tensorflow:22.05-tf1-py3,該路徑用於後續在GPU執行個體中下載TensorFlow鏡像時使用。重要TensorFlow鏡像中的CUDA版本必須與GPU執行個體的驅動版本相匹配,否則會導致部署TensorFlow開發環境時失敗。關於TensorFlow鏡像版本、CUDA版本以及GPU執行個體的驅動版本對應匹配關係,請參見TensorFlow Release Notes。
操作步驟
本文以gn7i執行個體為例,為您示範建立GPU執行個體時部署NGC環境的操作步驟。
建立GPU執行個體。
具體操作,請參見自訂購買執行個體。主要配置參數說明如下:
配置參數
說明
地區
請根據GPU執行個體可購買地區,選擇相應地區。
您可以前往ECS執行個體可購買地區,查看GPU執行個體在各地區的可購情況。
執行個體
選擇執行個體規格,本樣本以gn7i為例。
鏡像
在雲市場鏡像頁簽下,單擊從雲市場擷取更多選擇(含作業系統)。
在彈出的鏡像市場頁面,輸入NVIDIA GPU Cloud Virtual Machine Image並單擊搜尋。
找到對應鏡像後並單擊選擇。
公網IP
選擇分配公網IPv4地址。
說明如果這裡沒有分配公網IP地址,則在GPU執行個體建立成功後,需要綁定EIP地址。具體操作,請參見綁定EIP。
安全性群組
選擇一個安全性群組。安全性群組裡必須開放TCP 22連接埠。如果您的執行個體需要支援HTTPS或DIGITS 6服務,必須開放TCP 443(用於HTTPS)或TCP 5000(用於DIGITS 6)連接埠。
選擇以下任一方式遠端連線GPU執行個體。
串連方式
操作指引
Workbench
VNC
執行
nvidia-smi
命令,查看當前GPU相關資訊。查看Driver Version為515.48.07,該GPU執行個體的驅動版本(515版本或更高版本)與
22.05-tf1-py3
版本的TensorFlow鏡像中的11.7版本CUDA相匹配。執行以下命令,下載對應版本的TensorFlow容器鏡像。
docker pull nvcr.io/nvidia/tensorflow:22.05-tf1-py3
重要下載TensorFlow容器鏡像可能需要較長時間,請您耐心等待。
執行以下命令,查看下載的TensorFlow容器鏡像資訊。
docker image ls
執行以下命令,運行容器完成TensorFlow開發環境的部署。
docker run --gpus all --rm -it nvcr.io/nvidia/tensorflow:22.05-tf1-py3
依次執行以下命令,簡單測試TensorFlow。
python
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') with tf.compat.v1.Session() as sess: result = sess.run(hello) print(result.decode())
如果TensorFlow正確載入了GPU裝置,會成功返回
Hello, TensorFlow!
字串,如下圖所示。儲存修改後的TensorFlow鏡像。
在GPU串連頁面,開啟一個新的遠端連線視窗。
執行以下命令,查詢容器ID(即
CONTAINER_ID
)。docker ps
執行以下命令,儲存修改後的TensorFlow鏡像。
# CONTAINER_ID請替換為通過docker ps命令查詢的容器ID,例如f76a5a4347d。 docker commit -m "commit docker" CONTAINER_ID nvcr.io/nvidia/tensorflow:20.01-tf1-py3
重要請您妥善儲存修改後的TensorFlow鏡像,否則會導致下次登入時配置丟失。