為深度學習項目建立一個良好的環境不是一件容易的任務。因為需要處理的事情太多了:庫必須匹配特定的版本,整個環境需要可以復制到其他機器上,所有東西都需要能夠機器中的所有驅動程序通信。這意味著你需要為你的NVIDIA GPU安裝特定的驅動程序,并且CUDA庫必須與你的驅動程序和你想要使用的框架兼容。
隨著容器徹底改變了軟件開發的世界,現在它們也可以幫助數據科學家構建更健壯的環境。
有一件事是肯定的:數據科學可以從軟件開發領域學到一些東西。
NVIDIA NGC是一個軟件中心,提供gpu優化框架、預訓練模型和工具包來培訓和部署生產中的AI。它是一個容器注冊中心,包含訓練模型所需的所有工具:無論您使用的是caffee2、Pytorch、Tensorflow、Keras、Julia還是其他工具都沒有關系。
在NGC目錄中有大量可生產的容器,你只需要選擇你自己想用的。
Nvidia NGC不僅是一個容器注冊中心,它還內置了許多功能,可以幫助您的組織將模型帶到生產環境中。
從頭開始
讓我們從一臺配備了GPU的linux機器開始(GPU不是強制性的,但如果你想訓練模型,強烈建議使用GPU)。我在Ubuntu 20.04 LTS和18.04 LTS上測試了這個功能,但是可以很容易地適應其他Linux發行版。
我們需要做什么?
步驟很簡單,我們只需要安裝NVIDIA驅動程序和Docker。然后我們下載我們想要的docker鏡像并開始工作!
第一步:在Ubuntu 20.04上安裝NVIDIA驅動程序
注意:如果你使用的是另一個Ubuntu版本,請確保你修改了相應的腳本。此外,如果啟用了Secure Boot,這種方法也不起作用。
sudo apt install linux-headers-$(uname -r)
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv?-?fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt update
sudo apt -y install cuda
使用nvidia-smi命令驗證安裝。你應該看到這樣的東西。
第二步:在Ubuntu 20.04中安裝Docker
#!/bin/sh
#Set up the repository
sudo apt-get update
sudo apt-get install -y
apt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common
# Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# set up the stable repository
sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# Substitute ubuntu with your username
sudo usermod -aG docker ubuntu
注意:你需要注銷和登錄,以在沒有sudo權限的情況下使用docker命令。
第三步:讓Docker與NVIDIA driver通信
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey |
sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list |
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt-get install -y docker nvidia-container-toolkit
我們現在想測試Docker是否能夠與NVIDIA驅動程序通信。要做到這一點,只需運行以下命令,您應該會看到與步驟1類似的結果。
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
注意:我在不同的云主機提供商上試驗過,根據操作系統、虛擬機類型和gpu,此時可能需要重啟。因此,如果出現錯誤,請嘗試sudo reboot并再次執行上述命令。正常的話應該看到nvidia-smi結果。
第四步:讓我們獲取鏡像并運行它!
#Download NGC Tensorflow 2 Image
docker pull nvcr.io/nvidia/tensorflow:20.12-tf2-py3
# create local_dir folder mounted at /container_dir in the container
mkdir /home/ubuntu/local_dir
docker run --gpus all --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 -it --rm -v /home/ubuntu/local_dir:/container_dir nvcr.io/nvidia/tensorflow:20.10-tf2-py3
注意:flags - shm-size=1g - ulimit memlock=-1 - ulimit stack=67108864是必要的,為了避免操作系統限制資源分配給Docker容器。
我們現在進入了容器,讓我們看看是否一切正常。
正如你從圖片中看到的,GPU是可用的,tensorflow可以使用它。
最后:訪問docker環境
當您斷開與機器的連接時,您將注意到您已經不在容器內了。
要再次連接,你需要使用docker ps找到正在運行的容器的container_ id,然后:
docker exec -it <containerid> /bin/bash</containerid>
最后總結
在本教程中,我們發現使用NVIDIA NGC的圖像創建一個具有所有庫和工具的生產就緒環境是多么容易。
我們看到了配置Docker使其與NVIDIA驅動程序和所需框架通信是多么容易。
我們在5分鐘內完成了所有這些工作
作者:Roberto Di Bella
deeohub翻譯組