從零開始搭建基于linux(Ubuntu)深度學習伺服器
硬體裝置介紹(伺服器主機配置):CPU(inter i9 7900)、主機闆(華碩X299-A)、顯示卡(影馳1080ti 11G*2)、記憶體(金士頓16G)、硬碟(影馳240G固态+WD2T)、電源(長城1250W)。
第一步:制作Ubuntu server 16.04 U盤啟動盤
首先去官網下載下傳Ubuntu server 16.04的iOS檔案(網址:https://ubuntu.com/download/alternative-downloads),如下選擇Ubuntu16.04server(64bit),下下來是個ubuntu-16.04.6-server-amd64.iso.torrent檔案,用迅雷下載下傳。

然後制作Ubuntu server 16.04 U盤啟動盤,首先去這裡下在Rufus,連結位址:https://rufus.akeo.ie/,下載下傳完之後,插入要制作啟動盤的U盤,直接輕按兩下Rufus運作就行。運作界面如下:
選擇鏡像檔案,上一步下載下傳好的,其餘選項預設,點選開始。開始制作,完成後,為了保險本人把鏡像檔案再次放到U盤下。
第二步:給伺服器安裝Ubuntu server 16.04 系統
開機進入bios,F2或者del,看機子對應的主機闆是什麼。
按F8選擇啟動菜單,選擇剛剛制作好的U盤作為啟動盤
進入之後選擇 install Ubuntu
後面的操作可以參考這篇文章(https://blog.csdn.net/zhengchaooo/article/details/79500209)
選擇硬碟寫入的時候,選擇固态硬碟,盡量把系統分區做大,2T的機械硬碟可以挂載來實作資料存放。
2T機械硬碟的挂載:
1.檢視資訊
輸入sudo fdisk –l
由上圖所示,需要挂載的硬碟是 /dev/sda1
2.格式化機械硬碟
sudo mkfs.ext4 /dev/sda1
3.建立/home/data目錄(/home/data目錄為硬碟将挂載的地方)
sudo mkdir /home/data
4.挂載分區
sudo mount /dev/sda1 /home/data
5. 檢視磁盤分區的UUID
sudo blkid
6. 配置開機自動挂載
sudo vim /etc/fstab
按inset鍵 最後加入以下内容
# add mount disk
UUID=0e06d4ce-9b7d-4617-a7b6-b5b86cf4cbb9 /home/data ext4 defaults 0 0
7. 重新開機系統
sudo reboot 重新開機系統後輸入 df –h檢驗如下所示即成功
第三步 安裝顯示卡驅動以及可視化界面
- 首先要關閉 Ubuntu unity桌面環境預設的 lightdm 管理器,切換到tty (按快捷鍵 Ctrl + Alt + F2 就是切換到 tty2)
sudo service lightdm stop
2.解除安裝原有的N卡驅動(沒有的請忽略)
解除安裝apt方式安裝的n卡驅動
sudo apt remove --purge nvidia*
sudo apt autoremove
解除安裝用官網run方式安裝的n卡驅動
sudo nvidia-uninstall
3.安裝NVIDIA驅動
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt-get install prime-indicator #安裝雙顯示卡切換訓示器(可忽略)
檢視可安裝驅動版本
ubuntu-drivers devices
找後面有recommend的版本,我的是nvidia-430
sudo apt install nvidia-430
重新開機
這種方法相容性好,幫你禁用預設的 nouveau 開源驅動,避免和本閉源驅動沖突。
現在會存在循環登入的問題。我我采用用戶端安裝Git Bash,用openssh-server的方法解決。官網下載下傳Windows版(https://git-scm.com/downloads),安裝完打開Git Bash。
輸入ssh [email protected] , username為你在安裝系統是設定的使用者名,@後面的ip位址是你伺服器所在區域網路内的IP位址(連上路由器了),如何檢視呢。在你的電腦連上路由器所在區域網路,通過登入路由器的管理界面,本人所在實驗室的路由器登入位址為http://tplogin.cn/,進入點選裝置管理,點選伺服器名稱對應管理檢視IP位址。(通過管理者設定DHCP服務可以使伺服器使用永久ip,不會因為每次重新開機而重新整理)
4.驗證
查詢系統現在使用的驅動
sudo prime-select query
然後再把nvidia驅動設定為系統使用的顯示卡驅動
sudo prime-select nvidia
沒有報錯即表示顯示卡能夠正常運作了,順便檢視顯示卡資訊。
sudo nvidia-smi
如上則成功。
如果出現: NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.(核心版本高造成的,開機啟動換舊版本核心)
請檢視https://blog.csdn.net/qq_41870658/article/details/93330041
5.解決循環登入問題
不用預設的unity桌面,改成 gnome3。
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install gnome-shell ubuntu-gnome-desktop
此時選 gdm3
重新開機
進入圖形界面
确認 gnome 桌面運作沒有問題,就把 unity 桌面解除安裝掉
sudo apt-get remove unity lightdm ubuntu-desktop
第四步 伺服器安裝docker
- 用戶端安裝Gitbash 和filezilla
Gitbash下進入root:ssh [email protected]
2.安裝docker以及nvidia-docker
關閉docker
sudo systemctl stop docker
首先解除安裝舊版本docker
sudo apt-get remove docker docker-engine http://docker.io containerd runc
或者
sudo apt-get purge docker-ce
更新apt包索引
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
3.選擇國内的雲服務商,這裡選擇阿裡雲為例
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
或者
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
其他來源檢視(https://blog.csdn.net/BigData_Mining/article/details/87869147)
4.安裝所需要的包
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
5.添加使用 HTTPS 傳輸的軟體包以及 CA 證書
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
6.添加GPG密鑰
sudo apt-key adv --keyserver hkp://http://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
7.添加軟體源
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
或者
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable
8.添加成功後更新軟體包緩存
sudo apt-get update
或者apt-cache madison docker-ce
9.安裝docker
sudo apt install docker-ce=5:19.03.1~3-0~ubuntu-xenial(一定要安裝19.03版本,這個版本docker能夠共享主控端的nvidia驅動,無需在docker容器内再安裝)
10.啟動docker
sudo systemctl start docker
11.加入開機啟動
sudo systemctl enable docker
12.檢視安裝後資訊
sudo docker info
13.安裝nvidia-docker 看業務
sudo apt update
sudo apt install nvidia-docker2
如果失敗檢視(更新連結:https://github.com/NVIDIA/nvidia-docker/blob/master/README.md)或者直接如下操作
# Add the package repositories
$ 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.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
14.Docker免sudo
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
newgrp – docker
15.列出GPU裝置
docker run -it --rm --gpus all ubuntu nvidia-smi –L
安裝docker和nvidia-docker成功。
第五步 docker安裝鏡像以及添加使用者/
1、docker安裝Ubuntu鏡像
docker search ubuntu(如果擷取報錯response from daemon: Get https://index.docker.io/v1/search?q=centos&n=25: dial tcp: lookup http://index.docker.io on 222.88.88.88:53: read udp 192.168.1.101:56472->222.88.88.88:53: i/o timeout 原因是國外的源很慢通路有問題,建議更改國内的源)
docker pull ubuntu
docker images #列出鏡像
2、添加/删除使用者以及密碼
sudo useradd –d /home/data/username –m –s /bin/bash username(username為你想添加的使用者名,/home/data為我2T機械硬碟的挂載目錄,在此目錄下添加用友善資料的存儲和計算)
sudo passwd username(設定或者更改密碼)
删除使用者:sudo userdel –r username
3、為使用者建立docker容器器皿,并共享主機硬體
docker run -it --privileged=true --name username-v /home/data/username:/username ubuntu /bin/bas
4、将使用者添加到docker組
sudo adduser username docker
docker start username
docker stop username
Docker安裝完啟動時提示Failed to start docker.service: Unit docker.service is masked(檢視https://blog.csdn.net/u011403655/article/details/50524071)
docker的正常操作檢視(https://blog.csdn.net/weixin_44286547/article/details/88980211)
第六步 為使用者搭建深度學習環境
1、進入使用者
ssh [email protected]
進入docker容器器皿:docker start username(第一次和重新開機伺服器之後需要運作此指令)
docker exec –it username /bin/bash
退出ctl+D
2、anconda、tensorflow-gpu、keras安裝
apt-get install -y wget
安裝anaconda:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2018.12-Linux-x86_64.sh (用的是清華鏡像,一個字,快)
bash Anaconda3-2018.12-Linux-x86_64.sh
conda create –n tf python=3.6
source activate tf
conda install packagename(安裝所需的包package,如tensorflow、tensorflow-gpu、keras等)
若測試tensorflow出錯:不能建立session會話,則安裝低版本cuda
Anaconda search –t conda cuda rlcc/cudatookkit
3、将容器器皿儲存為一個新的鏡像
docker ps –a #檢視容器器皿位址
docker commit container_ID dockerimage #dockerimage為儲存的鏡像的名字, container_ID 為上述查詢到的容器器皿位址
4、儲存/加載鏡像
docker save container_ID > filename.tar
docker load < filename.tar
5、下回建立新的使用者可直接加載儲存好的鏡像
docker run -it --privileged=true --name username-v /home/data/username:/username dockerimage /bin/bash
PS:前端時間訓練VQA資料集,安裝了pytorch,不支援老版本的cuda故重新更新了主控端的nvidia驅動,導緻docker容器器皿下的使用者無法使用N卡加速,這是老版本的docker不支援使用者組跟主控端同步的驅動導緻的,索性重裝系統重新配置伺服器,現功能正常,又能愉快的深度學習了。第一次整理這麼長的内容,内容有些表達不完善還請見諒。