為深度學(xué)習(xí)項(xiàng)目建立一個良好的環(huán)境不是一件容易的任務(wù)。因?yàn)樾枰幚淼氖虑樘嗔?庫必須匹配特定的版本,整個環(huán)境需要可以復(fù)制到其他機(jī)器上,所有東西都需要能夠機(jī)器中的所有驅(qū)動程序通信。這意味著你需要為你的NVIDIA GPU安裝特定的驅(qū)動程序,并且CUDA庫必須與你的驅(qū)動程序和你想要使用的框架兼容。 隨著容器徹底改變了軟件開發(fā)的世界,現(xiàn)在它們也可以幫助數(shù)據(jù)科學(xué)家構(gòu)建更健壯的環(huán)境。 有一件事是肯定的:數(shù)據(jù)科學(xué)可以從軟件開發(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機(jī)器開始(GPU不是強(qiáng)制性的,但如果你想訓(xùn)練模型,強(qiáng)烈建議使用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./compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pinsudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600sudo apt-key adv?-?fetch-keys https://developer.download./compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pubsudo add-apt-repository 'deb https://developer.download./compute/cuda/repos/ubuntu2004/x86_64/ /'sudo apt updatesudo apt -y install cuda 使用nvidia-smi命令驗(yàn)證安裝。你應(yīng)該看到這樣的東西。 第二步:在Ubuntu 20.04中安裝Docker
注意:你需要注銷和登錄,以在沒有sudo權(quán)限的情況下使用docker命令。 第三步:讓Docker與NVIDIA driver通信 curl -s -L https://nvidia./nvidia-docker/gpgkey | \sudo apt-key add -curl -s -L https://nvidia./nvidia-docker/ubuntu16.04/amd64/nvidia-docker.list | \sudo tee /etc/apt/sources.list.d/nvidia-docker.listsudo apt updatesudo apt-get install -y docker nvidia-container-toolkit 我們現(xiàn)在想測試Docker是否能夠與NVIDIA驅(qū)動程序通信。要做到這一點(diǎn),只需運(yùn)行以下命令,您應(yīng)該會看到與步驟1類似的結(jié)果。
注意:我在不同的云主機(jī)提供商上試驗(yàn)過,根據(jù)操作系統(tǒng)、虛擬機(jī)類型和gpu,此時可能需要重啟。因此,如果出現(xiàn)錯誤,請嘗試sudo reboot并再次執(zhí)行上述命令。正常的話應(yīng)該看到nvidia-smi結(jié)果。 第四步:讓我們獲取鏡像并運(yùn)行它! #Download NGC Tensorflow 2 Imagedocker pull nvcr.io/nvidia/tensorflow:20.12-tf2-py3# create local_dir folder mounted at /container_dir in the containermkdir /home/ubuntu/local_dirdocker 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)在進(jìn)入了容器,讓我們看看是否一切正常。 正如你從圖片中看到的,GPU是可用的,tensorflow可以使用它。 最后:訪問docker環(huán)境 當(dāng)您斷開與機(jī)器的連接時,您將注意到您已經(jīng)不在容器內(nèi)了。 要再次連接,你需要使用docker ps找到正在運(yùn)行的容器的container_ id,然后:
最后總結(jié)在本教程中,我們發(fā)現(xiàn)使用NVIDIA NGC的圖像創(chuàng)建一個具有所有庫和工具的生產(chǎn)就緒環(huán)境是多么容易。 我們看到了配置Docker使其與NVIDIA驅(qū)動程序和所需框架通信是多么容易。 我們在5分鐘內(nèi)完成了所有這些工作 |
|