日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

Docker教程-深度学习环境配置

發(fā)布時間:2024/4/11 pytorch 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker教程-深度学习环境配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在知乎上刷到一篇文章,標(biāo)題很有意思叫《Docker,救你于「深度學(xué)習(xí)環(huán)境配置」的苦?!?#xff0c;感興趣的可以去搜一下。那篇文章主要針對的是一個目前深度學(xué)習(xí)研究者的痛點:深度學(xué)習(xí)環(huán)境的配置。我在之前的開過一個Docker 系列專欄,但是沒有涉及到深度學(xué)習(xí)配置這方面,本文就是補足這樣一個點。

簡介

之所以對引言中那篇文章有感而發(fā),是因為我在實際工程中就遇到了這樣的問題,cuda 版本、cudnn 版本、深度學(xué)習(xí)框架(PyTorch 或者 Tensorflow)版本難以控制,盡管現(xiàn)在可以通過 conda 進行環(huán)境隔離,但是 conda 相對還是依托于系統(tǒng)環(huán)境的,有沒有一種方式可以確保在每個人不同的軟硬件環(huán)境下環(huán)境配置流程不出錯,甚至,我可以把整個環(huán)境打包分享出去呢?有,這就是 Docker,用戶可以將自己配置好的環(huán)境打包為鏡像,然后使用別人的鏡像直接進入別人配置好的環(huán)境中,我們要做的,就是提供硬件的支持。 這類似于虛擬機,但是目前的虛擬機是不支持 GPU 資源的模擬,而且比起虛擬機動輒幾個小時的裝系統(tǒng)過程,Docker 環(huán)境配置迅速且非常輕量,占用存儲空間很小。最后說明,本文教程只針對 Ubuntu 系統(tǒng),其他 Linux 發(fā)行版大同小異。

Docker 安裝

參考官方的文檔里的操作步驟即可,鏈接給出,這里建議是 LTS 版本的系統(tǒng),我這里推薦官方倉庫的安裝,所以下面的命令也是這種安裝方式。

卸載舊版本

sudo apt-get remove docker docker-engine docker.io containerd runc

設(shè)置官方源(注意多行命令)

sudo apt-get updatesudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88

輸出如下圖則表示添加 key 成功。

添加穩(wěn)定版?zhèn)}庫

sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"

安裝 docker

sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.iosudo docker run hello-world

如果,非管理員權(quán)限的普通用戶想要使用 Docker,使用下面的命令將其添加到 docker 組即可(這個用戶組安裝時自動創(chuàng)建)。

sudo usermod -aG docker username

測試 docker 安裝

我將普通用戶添加到 docker 中,執(zhí)行docker run hello-world,結(jié)果如下代表安裝成功(第一次執(zhí)行會下載鏡像,請自行查看如何配置國內(nèi)源加速)。

安裝 nvidia-docker

docker 默認是不支持在容器內(nèi) GPU 加速的,NVIDIA 官方做了個工具箱來支持容器內(nèi) GPU 加速運算,這大大方便了深度學(xué)習(xí)開發(fā)者。安裝該庫要求比較嚴格,首先必須安裝了足夠新的版本的 NVIDIA 顯卡驅(qū)動和 Docker,可以不安裝 CUDA,然后 nvidia-docker 的版本要高度適配,這里推薦按照官方教程進行安裝,命令下面我也給出。

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.listcurl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.listsudo apt-get updatesudo apt-get install -y nvidia-docker2sudo systemctl restart docker

這時,不出意外就安裝成功了,我們使用命令sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi來測試是否成功,成功安裝的顯示如下。

當(dāng)然你也可以交互式執(zhí)行下圖的操作,注意必須添加選項–gpus 來指定使用的 GPU,all 指的是全部 GPU。。

鏡像使用

鏡像拉取

我這邊分別推薦兩個不錯的國內(nèi)外鏡像源,前者為deepo后者為cuda。

cuda 是 nvidia 開發(fā)制作的使用 cuda 的鏡像,支持不同版本的 cuda,分三個 tag 類型,分別是 base(只包含 cuda)、runtime(包含常用 cuda 數(shù)學(xué)庫)、devel(包含源碼文件和開發(fā)工具,適用于深度學(xué)習(xí)開發(fā)者)。我想要支持 cuda10 的 Ubuntu16 可以執(zhí)行docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04。

deepo 是國內(nèi)開發(fā)者制作的深度學(xué)習(xí)鏡像,包含流行的深度學(xué)習(xí)框架,通過docker pull ufoym/deepo就可以拉取標(biāo)準(zhǔn)的 deepo 鏡像,其中包含了幾乎所有的主流深度學(xué)習(xí)框架,非常龐大。我們可以通過 tag 來拉取特殊框架定制版的鏡像,例如,我想獲取 PyTorch 框架的鏡像,只需要輸入docker pull ufoym/deepo:pytorch-py36-cu100即可,下圖是目前支持的 tag 名。

我這邊出于速度考慮,推薦使用 deepo,它是很全的一個鏡像庫,而且支持 Jupyter,如果你是 Jupyter 的喜好者,通過docker pull ufoym/deepo:all-jupyter和docker run --runtime=nvidia -it -p 8888:8888 --ipc=host ufoym/deepo:all-jupyter jupyter notebook --no-browser --ip=0.0.0.0 --allow-root --NotebookApp.token= --notebook-dir='/root'命令就可以通過主機的 8888 端口訪問 docker 容器的 8888 端口的 Jupyter 服務(wù)了。

如果你是國內(nèi)用戶,docker 拉取默認是 docker hub 地址的,還是比較慢的,建議前面加上國內(nèi)托管庫,deepo 都支持,例如docker pull registry.docker-cn.com/ufoym/deepo

容器使用

擁有鏡像之后就是容器的創(chuàng)建和使用了,這部分我就不多贅述,詳細可以查看我此前教程,我這邊以交互模式測試一下 deepo 的 PyTorch 的可用性,如下圖,可以看到,我們可以使用主機的 4 個 GPU。

鏡像導(dǎo)出

一般鏡像的導(dǎo)出分為兩種思路:Dockerfile 和鏡像打包。

前者是將配置方式導(dǎo)出,這要求用戶手寫一個 Dockerfile 文件(一般你會在開源項目的根目錄中發(fā)現(xiàn)這個文件),然后 docker 會根據(jù)這個文件自動構(gòu)建鏡像并進行相應(yīng)的操作。這種方式的好處是輕量方便,只需要共享一個 Dockerfile 文本文件即可,壞處就是別人用的時候還要去下載鏡像進行一系列自動配置,耗時比較長。關(guān)于 Dockerfile 的語法內(nèi)容比較多,本文不多提及。

后者則比較粗暴,首先我們必須明確,鏡像是只讀的,容器是鏡像的一個運行時狀態(tài),這個狀態(tài)一旦關(guān)閉,就會恢復(fù)為鏡像本來的樣子。我們想要保存的肯定是修改后的容器,因此需要將其先提交為一個新的鏡像。例如,我在上面示例的 PyTorch 鏡像生成的容器家目錄新建了一個名為zc.txt的文本文件,我希望別人也能使用我的鏡像生成的容器中有這個更改。

首先,通過docker ps -a查看容器,找到我修改后的容器,記住其CONTAINER ID,然后通過docker commit -m "鏡像說明" -a "作者名,最好同docker hub用戶名" 容器id 作者名/鏡像名:tag命令提交鏡像。操作示例如下圖。

接著,我們通過docker images查看到了新生成的鏡像,此時從這個鏡像生成容器就會看到我們上面修改后添加的zc.txt文件,我這里不演示了,我們通過docker save -o 文件路徑及文件名 鏡像名將鏡像保存為本地文件,同樣導(dǎo)入本地文件為鏡像的命令是docker load -i 文件路徑及文件名。

下面演示我將測試用鏡像導(dǎo)出后刪除,然后導(dǎo)入運行,整個過程我均進行了標(biāo)注,應(yīng)該是很清晰的。

補充說明

本文簡單介紹了如何在 Ubuntu 下進行 Docker 深度學(xué)習(xí)環(huán)境的配置、導(dǎo)出等常用操作,其他使用 Pycharm 或者 VScode 等遠程連接 Docker 環(huán)境網(wǎng)上有不少介紹,我在后續(xù)有空的話也會補充。本文沒有過多涉及 Docker 的基礎(chǔ)概念和命令,這部分前置知識請查看我之前的教程。最后,本文如果對你有所幫助,歡迎點贊、收藏加關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的Docker教程-深度学习环境配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。