5分鐘搭建強大又好用的深度學習環(huán)境
為深度學習項目建立一個良好的環(huán)境不是一件容易的任務(wù)。因為需要處理的事情太多了:庫必須匹配特定的版本,整個環(huán)境需要可以復(fù)制到其他機器上,所有東西都需要能夠機器中的所有驅(qū)動程序通信。這意味著你需要為你的NVIDIA GPU安裝特定的驅(qū)動程序,并且CUDA庫必須與你的驅(qū)動程序和你想要使用的框架兼容。
隨著容器徹底改變了軟件開發(fā)的世界,現(xiàn)在它們也可以幫助數(shù)據(jù)科學家構(gòu)建更健壯的環(huán)境。
有一件事是肯定的:數(shù)據(jù)科學可以從軟件開發(fā)領(lǐng)域?qū)W到一些東西。
NVIDIA NGC是一個軟件中心,提供gpu優(yōu)化框架、預(yù)訓(xùn)練模型和工具包來培訓(xùn)和部署生產(chǎn)中的AI。它是一個容器注冊中心,包含訓(xùn)練模型所需的所有工具:無論您使用的是caffee2、Pytorch、Tensorflow、Keras、Julia還是其他工具都沒有關(guān)系。
在NGC目錄中有大量可生產(chǎn)的容器,你只需要選擇你自己想用的。
Nvidia NGC不僅是一個容器注冊中心,它還內(nèi)置了許多功能,可以幫助您的組織將模型帶到生產(chǎn)環(huán)境中。
從頭開始
讓我們從一臺配備了GPU的Linux機器開始(GPU不是強制性的,但如果你想訓(xùn)練模型,強烈建議使用GPU)。我在Ubuntu 20.04 LTS和18.04 LTS上測試了這個功能,但是可以很容易地適應(yīng)其他Linux發(fā)行版。
我們需要做什么?
步驟很簡單,我們只需要安裝NVIDIA驅(qū)動程序和Docker。然后我們下載我們想要的docker鏡像并開始工作!
第一步:在Ubuntu 20.04上安裝NVIDIA驅(qū)動程序
注意:如果你使用的是另一個Ubuntu版本,請確保你修改了相應(yīng)的腳本。此外,如果啟用了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命令驗證安裝。你應(yīng)該看到這樣的東西。

第二步:在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權(quán)限的情況下使用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
我們現(xiàn)在想測試Docker是否能夠與NVIDIA驅(qū)動程序通信。要做到這一點,只需運行以下命令,您應(yīng)該會看到與步驟1類似的結(jié)果。
- sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
注意:我在不同的云主機提供商上試驗過,根據(jù)操作系統(tǒng)、虛擬機類型和gpu,此時可能需要重啟。因此,如果出現(xiàn)錯誤,請嘗試sudo reboot并再次執(zhí)行上述命令。正常的話應(yīng)該看到nvidia-smi結(jié)果。
第四步:讓我們獲取鏡像并運行它!
- #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是必要的,為了避免操作系統(tǒng)限制資源分配給Docker容器。
我們現(xiàn)在進入了容器,讓我們看看是否一切正常。
正如你從圖片中看到的,GPU是可用的,tensorflow可以使用它。

最后:訪問docker環(huán)境
當您斷開與機器的連接時,您將注意到您已經(jīng)不在容器內(nèi)了。
要再次連接,你需要使用docker ps找到正在運行的容器的container_ id,然后:
- docker exec -it <containerid> /bin/bash</containerid>
最后總結(jié)
在本教程中,我們發(fā)現(xiàn)使用NVIDIA NGC的圖像創(chuàng)建一個具有所有庫和工具的生產(chǎn)就緒環(huán)境是多么容易。
我們看到了配置Docker使其與NVIDIA驅(qū)動程序和所需框架通信是多么容易。
我們在5分鐘內(nèi)完成了所有這些工作