為了不用搭環(huán)境去使用GPU服務畅形,然鵝太費錢了养距,每一分鐘都在燒錢,扛不住了束亏,決定自己搭環(huán)境吧铃在,畢竟有GPU可用。
1. 服務器上已有的環(huán)境就是docker集群碍遍,所以很簡單定铜,pull一個pytorch的鏡像就可以開始啦
去官網(wǎng)找合適的pytorch鏡像版本,服務器上cuda是11.0的怕敬,但官網(wǎng)上面沒有該版本揣炕,我選擇了10.1版本的。
docker pull pytorch/pytorch:1.3-cuda10.1-cudnn7-devel东跪,如果權限不夠需要加sudo
(有博客說要和cuda版本一致畸陡,否則docker run會報錯,我是沒辦法虽填,只能一試丁恭,發(fā)現(xiàn)可以run。)
耐心等待就好斋日。
2. 使用docker images查看牲览,看看鏡像倉庫里是不是有了我們剛剛拉取的鏡像
pytorch/pytorch是鏡像名稱, 1.3-coda10.1-cudnn7-devel是標簽恶守, fe0f6ec79dbf是鏡像id
3. 使用該鏡像創(chuàng)建運行一個容器:sudo docker run -t -i pytorch/pytorch:1.3-cuda10.1-cudnn7-devel /bin/bash
如果想在一開始就設置容器在后臺運行第献,那么需要在-it后面加-d,會返回容器ID
如果想要使用gpu加速兔港, 將docker run改成docker-nvidia run即可庸毫。
參數(shù)說明:
? ? -i: 交互式操作。
? ??-t: 終端衫樊。
? ??pytorch/pytorch:1.3-cuda10.1-cudnn7-devel: 這是指用 pytorch:1.3-cuda10.1-cudnn7-devel 版本鏡像為基礎來啟動容器飒赃。
? ??/bin/bash:放在鏡像名后的是命令,這里我們希望有個交互式 Shell,因此用的是 /bin/bash盒揉。
@后面的0d10ba3b0aaf就是啟動的容器id
4. 常用命令
?docker exit:退出容器(即使run的時候規(guī)定了-d后臺運行晋被,一樣會結(jié)束)
Ctrl + P + Q:退出容器保持后臺運行
docker ps:查看已有容器 (docker ps -n 1:可以看到剛剛操作的容器,做一個篩選)
因為run的時候沒有規(guī)定容器的命名刚盈,所以想辦法改一下這個容器的這些屬性羡洛。
首先看到容器有ID和名字,但都有點難記藕漱,所以還是自己給它命名一個好記欲侮。
docker rename old_name? new_name :重命名容器
docker start:啟動已被停止的容器
docker stop:停止運行中的容器
docker restart:重啟容器
docker?exec?-it ContainerName /bin/bash:再次進入一個正在運行的容器,使用docker exit也不會真的結(jié)束肋联。
docker?exec?-u 0 -it ContainerName /bin/bash:?以root身份進入容器
docker attach 容器名或id:從后臺進入正在運行的容器
docker cp 本地路徑 容器ID:容器路徑:拷貝本地文件到容器
5. 把數(shù)據(jù)都拷貝完了之后威蕉,就可以使用python xx.py開始跑代碼啦,缺什么包就pip安裝橄仍,優(yōu)先使用國內(nèi)源韧涨。
pip in install xx -i https://pypi/tuna/tsinghua.edu.cn/simple
如果要指定GPU有好幾種方法:
(1)CUDA_VISIBLE_DEVICES = 1 python xx.py (命令行)
(2)os.environ['CUDA_VISIBLE_DEVICES'] = '1' (代碼里)
(3)net = Net.cuda(1) (代碼里,沒試過)
(4)net = torch.nn.DataParallel(model, device_ids=[1]) (代碼里侮繁,沒試過)
推薦一款全能終端神器:MobaXterm虑粥,上傳下載刪除文件很快,對界面用戶非常友好宪哩,還特別可愛娩贷!待機時間長了會有可達鴨飛出來!