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、ebmgn7ex、sccgn7ex
更多信息,請參見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 VM 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鏡像,否則會導致下次登錄時配置丟失。