色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

個人深度學習工作站配置詳細操作流程

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:稚暉 ? 2021-01-03 09:30 ? 次閱讀

前言

工作原因一直想配置一臺自己的深度學習工作站服務器,之前自己看完paper想做一些實驗或者復現模型的時候只能用自己的日常PC來跑很麻煩...一方面電腦得裝雙系統,干活的時候就不能用作其他用途了;另一方面,即使是沒有使用流程的問題,GTX1080的性能也還是弱了一些,更何況我用的是一個A4迷你機箱,長時間高負載的訓練任務也不太可靠。

以前在公司的時候還可以用公司的DGX訓練集群做一些實驗,但是我現在的開發環境已經切換到了昇騰的NPU架構芯片之上了,昇騰平臺算力方面雖然是比肩甚至可以超越英偉達,但是目前暫時很多學術界的生態都還是基于GPU服務器的(主要是指開源代碼),且我們這兒昇騰服務器對個人也不好買(且買不起),所以有一臺這樣的GPU工作站還是會方便一些。

那么本文是我在組裝工作站過程中記錄的詳細操作流程,供有類似需求的同學參考~

1. 硬件

1.1 工作站配置選型

配件全家福

服務器的配置以個人使用性價比為主,同時考慮到以后的擴展性像是主板和機箱這些配件配置設置一些冗余。首先是CPU平臺的選擇,雖然AMD這兩年實在是香,但是作為生產力工具考慮到軟件庫的兼容性問題,還是決定選擇intel平臺里十代X系列CPU+X299主板,算是比較穩的方案,而且某東上CPU搭配主板套裝一起買也性價比也很高。GPU方面今年的30系顯卡都比較良心,使用兩塊3080或者一塊3090都是很給力的,24G的顯存也已經跟TITAN RTX持平了(價格卻只要一半)...這里考慮到主板上只能插兩塊PCIEx16的卡,為了以后可能的提升性能還需要再加一塊卡,所以3090是最佳選擇。

最后選定的配置如下:

  • CPU:i9-10920X
  • 顯卡GPU:七彩虹RTX3090 Advance
  • 內存:芝奇幻光戟16G x 4共64G
  • 主板:華碩X299-DELUXE PRIME
  • 固態硬盤:1TB西數NVME SSD + 1TB三星870QVO SATA SSD
  • 機械硬盤:希捷EXOS 12TB氦氣盤
  • 電源:海盜船AX1200i 1200W模組電源
  • 散熱器:海盜船H100X240水冷 + 若干120機箱風扇
  • 機箱:海盜船AIR540 E-ATX機箱

其中硬盤的設計是這樣的:1T的NVME固態做系統盤,12T的機械盤作為數據集倉庫,另外一個1T SATA固態作為訓練時的數據集緩存,因為IO讀寫速度也是會影響訓練效率的,所以相比于直接從機械盤里面讀取數據,加一塊SSD做cache效果會好很多。

1.2 電腦組裝

總之就是快樂的玩具拼裝過程~

機箱尺寸比較大,預留的空間非常足所以不會出現像是在裝A4機箱時那種考驗走線和裝配順序的技巧問題;而且服務器嘛,安靜地塞在某個角落就好了,也不用過于考慮什么美觀問題,所以走線就很隨意了:

這個機箱設計還是很科學的,預留了足夠多的擴展接口比如:2個 3.5寸可快拆盤位、5個2.5寸可快拆盤位、光驅位(用不到,后期改造了)、前后頂部一堆風扇位等等。線材基本都可以塞到機箱的另一個側面,前面板安裝了三個進風風扇,背部安裝了一個出風風扇,水冷的冷排和風扇在頂端。

這里值得一提的是,正面的光驅位屬于用不上的老古董,所以我改造了一下準備裝一個小型的LCD屏幕上去,這樣偶爾需要進圖形桌面或者BIOS界面的時候,就不用再抱個顯示器插在機箱上了;此外以后也可以寫個軟件把這個屏幕作為系統狀態監視器來使用~

↑ 后面會3D打印一個外殼把屏幕固定住。

這個屏幕也是我前陣子剛設計的,項目已經開源了叫做PocketLCD,感興趣的可以去倉庫看看:

https://github.com/peng-zhihui/PocketLCDgithub.com

2. 系統篇

系統選擇DL開發里面最常用的Ubuntu,最新的穩定版本是20.04,安裝過程需要準備一個U盤作為系統啟動盤。

2.1 安裝Ubuntu 20.04系統

  1. 在官網下載Ubuntu鏡像:Ubuntu 20.04.1 LTS (Focal Fossa)(http://releases.ubuntu.com/20.04/),選擇Desktop Image版本,得到.iso的鏡像文件。
  2. Windows下使用UltraISO工具打開.iso鏡像文件,并將其寫入到一個U盤,得到系統啟動盤:
e34c8734-4690-11eb-8b86-12bb97331649.jpg
  1. 將U盤插到服務器上,開機按del鍵(具體什么鍵跟主板型號有關)選擇啟動項進入臨時的Ubuntu系統,在圖形界面中選擇Install Ubuntu,所有配置都可以使用默認的,改一下用戶名和密碼即可。這里建議使用英文作為默認語言,省得給自己日后開發找麻煩哈。

安裝過程中會聯網下載一些軟件包更新,可以直接點skip掉,在安裝好系統之后再手動更新也是一樣的。

  1. 進入系統后設置一下root賬戶密碼:
sudo passwd root

2.2 配置國內鏡像軟件源

為了提升后續安裝軟件時的幸福感,第一步當然先要替換一下軟件源。

  1. 備份原來的源:
cp /etc/apt/sources.list /etc/apt/sources.list.bak

2. 將源的內容設置為阿里云鏡像:

sudo vim /etc/apt/sources.list

內容改為:

 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
 deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
 deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

3. 更新軟件列表:

sudo apt update
sudo apt upgrade

也可以去網上搜其他鏡像,在我這邊經測試阿里云是最快的。另外也可以在圖形桌面環境下打開Software & Updates軟件,在里面也有網速測試并選擇最佳源的功能。

2.3 安裝Pythonpip

  1. Ubuntu系統默認自帶python,有版本需求的話也可以自己安裝一下(不安裝也行因為后面會安裝conda環境):
sudo apt install python3
sudo apt install python3-pip

2. 不管是不是自己安裝的python,替換python的pip源建議是一定操作一下的,pip安裝速度會快很多:

cd ~
mkdir .pip

直接新建并編輯pip.conf:

sudo vim ~/.pip/pip.conf

改為以下內容(這里用的清華源,也可以試一下阿里、豆瓣等源):

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ 
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

3. 更改默認python版本,python目錄默認鏈接的是python2,而現在基本都是用python3開發了,每次都輸入python3很麻煩所以這里直接更換默認的python命令鏈接。

把原來的python軟鏈接刪掉:

sudo rm /usr/bin/python

新建一個軟鏈接:

sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip

現在輸入python就會進入python3環境了。

2.4 配置SSH & 遠程桌面

純凈安裝的系統里面默認沒有開啟SSH,我們手動安裝一下。

  1. 安裝ssh:
sudo apt install ssh

會自動安裝好很多依賴包并啟動服務,完成之后用XShell等軟件就可以SSH登錄服務器了。

2. 安裝xrdp

Xrdp 是一個微軟遠程桌面協議(RDP)的開源實現,它允許我們通過圖形界面控制遠程系統。這里使用RDP而不是VNC作為遠程桌面,是因為Windows自帶的遠程桌面連接軟件就可以連接很方便,另外RDP在Windows下的體驗非常好,包括速度很快(因為壓縮方案做得比較好),可以直接在主機和遠程桌面之間復制粘貼等等。

有的Xwindow軟件是不太兼容xrdp的(比如ubuntu 18.04的默認桌面),但是ubuntu 20.04使用的Gnome是完全ok的。

安裝過程如下:

sudo apt install xrdp

安裝完成xrdp 服務將會自動啟動,可以輸入下面的命令驗證它:

sudo systemctl status xrdp

默認情況下,xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它僅僅對ssl-cert用戶組成員可讀,所以需要運行下面的命令,將xrdp用戶添加到這個用戶組:

sudo adduser xrdp ssl-cert  
sudo systemctl restart xrdp

然后使用Windows自帶的遠程桌面軟件連接服務器IP地址或者域名就行了。

2.5 安裝frp進行內網穿透

前面介紹的SSH和遠程桌面都是需要在局域網下通過IP地址進行連接的,而我們配置一臺服務器最重要的訴求,應該是可以隨時隨地去訪問服務器。

那在家里面,網絡運營商提供的網絡服務通過路由器路由到各個設備,此時路由器會同時具備內網地址(路由器之內,局域網,LAN,也就是192.168.x.x)和外網地址(路由器之外,互聯網,WAN)。但是其實這個WAN口的IP并不是真正的“公網IP”,而是經過了多層的NAT轉換之后的地址,外網的設備是不能通過這個地址訪問到路由器的。這個問題的原因是ipv4地址池緊張,如果運營商給每家的路由器都安排一個公網ip的話,那ip地址早就不夠用了呀。

因此為了能讓外網訪問到我們局域網內的設備,就需要跟中國電信等運營商申請公網ip(現在能申請到的概率也已經不大了,而且即使申請到也不是所有端口都可以使用的),或者我們自己動手做一些操作來達到同樣的目的。

有幾種方法:

  • 可以直接用類似花生殼(https://hsk.oray.com/)這樣的DDNS服務平臺做轉發實現內網穿透,優點是比較簡單穩定,缺點是需要持續付費,而且速度和延遲效果一般,而且每加一個端口都要額外付費。
  • 也可以像我一樣使用frp之類的軟件做反向代理來實現內網穿透,這個方案也是需要你有一臺帶公網IP的云服務器的,優點就是完全可控,自己想配置多少個端口的穿透都可以,速度跟你的云服務器帶寬有關。

為什么需要多個端口?是因為不同應用占用的端口不同,比如我們的SSH走的是22號端口,而遠程桌面的rdp走的是3389號端口,如果需要自建Web服務的話則是走80/443端口、想把工作站作為上外網的代理服務器的話會需要1080端口等等...所以用上面第二個方案顯然會方便很多,而且云服務器也不貴,我在騰訊云上購買一年只要200左右。

下面介紹如何安裝配置frp:

frp分為frps(server)和frpc(client)兩個包 ,其中前者安裝到我們的云服務器上,后者安裝在需要被外網訪問到的各個設備上,這里就是指我們的深度學習工作站。

云服務器端:

https://github.com/fatedier/frp/releases下載適合你服務器系統的frp軟件,我這里是用的是騰訊云64位Ubuntu16.04所以選擇frp_0.34.3_linux_amd64.tar.gz(https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz),下好之后解壓:

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

我們需要編輯的文件是frps.ini :

內容改為:

 [common]
 bind_port = 7000 # frp服務的端口號,可以自己定
 dashboard_port = 7500 # frp的web界面的端口號
 dashboard_user = user # web界面的登陸賬戶,自己修改
 dashboard_pwd = pass # web界面的登陸密碼,自己修改
 authentication_method = token
 token = xxxxx # frp客戶端連接時的密碼,自己修改

保存配置后,使用該命令啟動:

 ./frps -c ./frps.ini

在瀏覽器輸入 [云服務器的公網ip]:7500 即可訪問到 frp的web管理界面。

注意,可能需要去云服務器控制臺配置安全組規則 開放以上涉及到的端口,否則無法訪問。

本地的深度學習服務器端:

  1. 下載相應版本的frpc軟件包(跟剛剛一樣的):Releases · fatedier/frp (github.com)(https://github.com/fatedier/frp/releases),這里選amd64的,下好之后解壓到一個臨時文件夾。
  2. 修改frpc.ini配置文件,內容如下:
 [common]
 server_addr = xx.xx.xx.xx # 你的云服務器的公網ip
 authentication_method = token
 token = xxxxx # 剛剛配置的frp連接密碼 
 server_port = 7000 # 剛剛配置的frp服務端口
 
 [Fusion-ssh]
 type = tcp
 local_ip = 127.0.0.1
 local_port = 22
 remote_port = 20022
 
 [Fusion-rdp]
 type = tcp
 local_ip = 127.0.0.1
 local_port = 3389
 remote_port = 23389

通過上面的腳本就可以把對于云服務器特定端口的訪問給重定向到本地服務器的某個端口了,簡單地講就是:假如我用SSH客戶端訪問 [云服務器ip]:20022,就可以經過反向代理直接訪問到[本地的訓練服務器ip]:22;同理需要連接遠程桌面的話,只需要訪問[云服務器ip]:23389就可以了。

當然你也可以修改腳本添加更多映射~

3. 添加開機自動啟動的腳本,新建一個文件內容如下:

文件名/etc/systemd/system/frpc.service,注意修改其中的路徑:

 [Fusion]
 Description=Frp Server Daemon
 After=syslog.target network.target
 Wants=network.target
 
 [Service]
 Type=simple
 ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini # 修改為你的frp實際安裝目錄
 ExecStop=/usr/bin/killall frpc
 #啟動失敗1分鐘后再次啟動
 RestartSec=1min
 KillMode=control-group
 #重啟控制:總是重啟
 Restart=always
 
 [Install]
 WantedBy=multi-user.target

然后執行以下命令啟用腳本:

sudo systemctl enable frpc.service
sudo systemctl start frpc.service

通過下面的命令查看服務狀態,如果是running的話就說明可以了:

sudo systemctl status frpc.service

這里順便提一下,按照習慣一般把上面的frp軟件解壓防止在/usr/local/bin目錄下。Linux 的軟件安裝目錄是也是有講究的,理解這一點,在對系統管理是有益的

  • /usr:系統級的目錄,可以理解為C:/Windows/
  • /usr/lib:可以理解為C:/Windows/System32
  • /usr/local:用戶級的程序目錄,可以理解為C:/Progrem Files/,用戶自己編譯的軟件默認會安裝到這個目錄下
  • /opt:用戶級的程序目錄,可以理解為D:/Software,opt有可選的意思,這里可以用于放置第三方大型軟件(或游戲),當你不需要時,直接rm -rf掉即可。在硬盤容量不夠時,也可將/opt單獨掛載到其他磁盤上使用

源碼放哪里?

  • /usr/src:系統級的源碼目錄
  • /usr/local/src:用戶級的源碼目錄。

2.6 安裝SAMBA服務

如果能把服務器上的磁盤直接掛載到我們使用的Windows個人PC上是不是很爽?

如開頭的視頻里面演示的,可以通過建立局域網SAMBA服務來實現這個效果:

  1. 安裝sambasamba-common-bin
sudo apt-get install samba samba-common-bin
  1. 配置/etc/samba/smb.conf文件
sudo nano /etc/samba/smb.conf

在最后一行后面加入:

# 共享文件夾顯示的名稱
[home]
# 說明信息
comment = Fusion WorkStation Storage
# 可以訪問的用戶
valid users = pengzhihui,root
# 共享文件的路徑
path = /home/pengzhihui/
# 可被其他人看到資源名稱(非內容)
browseable = yes
# 可寫
writable = yes
# 新建文件的權限為 664
create mask = 0664
# 新建目錄的權限為 775
directory mask = 0775

可以把配置文件中你不需要的分享名稱刪除,例如 [homes], [printers] 等。

運行這個命令測試一下配置文件是否有錯誤,根據提示做相應修改:testparm

3. 添加登陸賬戶并創建密碼

必須是 linux 已存在的用戶:

sudo smbpasswd -a pi

然后重啟服務即可:

sudo /etc/init.d/samba-ad-dc restart

接下來可以在Windows的網絡中發現設備了:

e42192b2-4690-11eb-8b86-12bb97331649.jpg

但是可能會出現無法點開的情況,這里需要在Windows的憑據管理器中添加賬戶信息(開始菜單里搜索憑據管理器即可打開),點擊添加Windows憑據,輸入你的服務器名稱和賬戶密碼:

e465ea20-4690-11eb-8b86-12bb97331649.jpg

接下來就可以點進去看到服務器上的文件了。為了更加方便地進行文件交互,我們添加對應的磁盤到Windows資源管理器的此電腦中:

e4b122c4-4690-11eb-8b86-12bb97331649.jpg

選擇剛剛服務器的網絡路徑即可添加:

e50f9eda-4690-11eb-8b86-12bb97331649.jpg

3. DL開發環境配置篇

配置這臺服務器的主要作用就是做深度學習訓練,所以GPU相關的驅動和環境時肯定要安排好的,網上資料很多很雜,這里梳理出了最便捷可靠的安裝方法供大家參考~

3.1 安裝Nvidia顯卡驅動

最簡單的方式是通過系統的軟件與更新來安裝:

  1. 進入系統的圖形桌面,打開Software & Updates軟件,可以看到標簽欄有一個Additional Drivers
e58fe2e8-4690-11eb-8b86-12bb97331649.jpg

選擇第一個安裝Nvidia官方驅動(第二個是開源驅動)即可,根據網絡情況稍等大概十分鐘,安裝完重啟服務器。

  1. 重啟完之后更新一下軟件:
sudo apt update
sudo apt upgrade

這里會連帶Nvidia的驅動一起升級一遍,更新到最新的驅動;更新完可能會出現nvidia-smi命令報錯,再重啟一下就解決了。

3.2 安裝CUDA

如果之前安裝了舊版本的cuda和cudnn的話,需要先卸載后再安裝:

 sudo apt-get remove --purge nvidia*

然后按照前面的方法重新安裝顯卡驅動,安裝好了之后開始安裝CUDA:

  1. 去官網下載cuda安裝包CUDA Toolkit 11.0 Download | NVIDIA Developer(https://developer.nvidia.com/cuda-11.0-download-archive),相關選項如下(根據實際情況選擇):
e5b85214-4690-11eb-8b86-12bb97331649.jpg
  1. 運行下面的命令進行安裝:
chmod +x cuda_11.0.2_450.51.05_linux.run
sudo sh ./cuda_11.0.2_450.51.05_linux.run

可能會報一個警告:

e8f6f61a-4690-11eb-8b86-12bb97331649.jpg

前面已經卸載過舊版本了直接Continue就好。然后根據提示選擇安裝選項,注意不要勾選第一個安裝顯卡驅動的,因為之前已經安裝過了。安裝完成后提示

e9255014-4690-11eb-8b86-12bb97331649.jpg

3. 根據上圖提示需要配置環境變量:

nano  ~/.bashrc

在文件最后加入以下語句:

export CUDA_HOME=/usr/local/cuda-11.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}

然后使其生效:

source ~/.bashrc

4. 可以使用命令nvcc -V查看安裝的版本信息:

e95171bc-4690-11eb-8b86-12bb97331649.jpg

也可以編譯一個程序測試安裝是否成功,執行以下幾條命令:

cd ~/Softwares/cuda/NVIDIA_CUDA-11.0_Samples/1_Utilities/deviceQuery
 make
./deviceQuery

正常的話會有相應輸出,打印顯卡的信息。

3.3 安裝CuDNN

進入到CUDNN的下載官網:cuDNN Download | NVIDIA Developer(https://developer.nvidia.com/rdp/cudnn-download),然點擊Download開始選擇下載版本,當然在下載之前還有登錄,選擇版本界面如下:

e984d8f4-4690-11eb-8b86-12bb97331649.jpg

我們選擇和之前cuda版本對應的cudnn版本:

e9b0083a-4690-11eb-8b86-12bb97331649.jpg

下載之后是一個壓縮包,對它進行解壓,命令如下:

 tar -xzvf cudnn-11.0-linux-x64-v8.0.5.39.tgz

使用以下兩條命令復制這些文件到CUDA目錄下:

 sudo cp cuda/lib64/* /usr/local/cuda-11.0/lib64/
 sudo cp cuda/include/* /usr/local/cuda-11.0/include/

拷貝完成之后,可以使用以下命令查看CUDNN的版本信息:

 cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

可以看到版本信息如下,為8.0.5

e9ddd152-4690-11eb-8b86-12bb97331649.jpg

3.4 安裝Conda環境

不同的訓練框架和版本可能會需要不同的python版本相對應,而且有的包比如numpy也對版本有要求,所以比較優雅的方法是給每個配置建立一個虛擬的python環境,在需要的時候可以隨時切換,而不需要的時候也能刪除不浪費磁盤資源,那在這方面conda是做得最好的。

下面介紹怎么安裝conda:

  1. 在Anaconda官網下載Linux安裝包:Anaconda | Individual Edition (https://www.anaconda.com/products/individual)
  2. 運行下面的命令安裝:
chmod +x Anaconda3-2020.11-Linux-x86_64.sh

./Anaconda3-2020.11-Linux-x86_64.sh

一路按ENTER確認,然后根據提示輸入yes,這里我為了目錄整潔不安裝在默認路徑,設置為下面的路徑:/home/pengzhihui/Softwares/anaconda

然后會詢問你是否要初始化conda,輸入yes確認,重開終端窗口之后,就可以看到conda環境可用了(base代表默認環境):

ea009fb6-4690-11eb-8b86-12bb97331649.jpg

conda的使用方法網上搜一下有很多,這里就不贅述了。

3.5 安裝Nvidia-Docker

Docker也是虛擬化環境的神器,前面說的conda雖然可以提供python的虛擬環境并方便地切換,但是有的時候我們的開發環境并不只是用到python,比如有的native庫需要對應gcc版本的編譯環境,或者進行交叉編譯時安裝很多工具鏈等等。如果這些操作都在服務器本地上進行,那時間久了就會讓服務器的文件系統非常雜亂,而且還會遇到各種軟件版本沖突問題。

Docker就可以很好地解決這些問題,它其實可以理解為就是一個非常輕量化的虛擬機,我們可以在宿主服務器上新建很多個這種被稱為容器的虛擬機,然后在里面配置我們的開發環境,且這些配置好的環境是可以打包成鏡像的,方便隨時做分享和重用;不需要的時候,我們直接刪除容器就好了,其資源是和我們的服務器宿主機完全隔離的。

Docker的具體使用可以自己搜索一下很多教程,這里主要介紹如何把GPU暴露給Docker的容器(因為大家都知道像是VMware這種虛擬機里面都是無法共享宿主機的GPU的),是通過nvidia-docker實現的。

以前為了配置nvidia-docker,需要安裝完docker之后再安裝單獨的nvidia docker2,而現在只需要安裝nvidia container toolkit即可,更加方便了。

  1. docker安裝 官網上有詳細的介紹:Install Docker Engine on Ubuntudocs.docker.com(https://docs.docker.com/engine/install/ubuntu/) 或者運行下面的命令安裝:
sudo apt-get update
sudo apt-get install docker.io
systemctl start docker
systemctl enable docker

可以運行這條命令檢查是否安裝成功:

docker version

2. 安裝NVIDIA Container Toolkit

ea3de9b6-4690-11eb-8b86-12bb97331649.png

官網安裝步驟:NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs (github.com) (https://github.com/NVIDIA/nvidia-docker) 或者直接運行下面的命令:

 ##首先要確保已經安裝了nvidia driver
 # 2. 添加源
 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
 
 # 2. 安裝并重啟
 sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
 sudo systemctl restart docker

安裝完成后可以新建一個容器測試一下:

sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:11.1-base

其中最后的參數nvidia/cuda:11.1-base 是Nvidia官方的鏡像,需要根據工作站主機中實際安裝的cuda版本進行修改,版本可以用nvcc -V查看。

進入容器之后可以跑一下nvidia-smi命令看看:

eaa1e678-4690-11eb-8b86-12bb97331649.jpg

現在可以在docker里面正常使用GPU啦~

3.6 測試

這里通過一個簡單的python腳本測試一下GPU訓練是否一切正常,跑一個DL里面的Hello World程序,通過兩種方法測試:本地conda和docker虛擬機。

以后的開發過程中一般還是使用Docker的方式來進行更為優雅。

1. 本地Conda環境方式:

先用conda新建一個python3.8+pytorch1.7+cuda11.0的虛擬環境:

 conda create --name python_38-pytorch_1.7.0 python=3.8

創建完成后進入環境:

 conda activate python_38-pytorch_1.7.0

檢查一下是否切換到所需環境了:

 which pip

如果看到使用的確實是我們設置的環境目錄中的pip的話說明就ok。

接下來在環境中安裝pytorch,可以參考官網的安裝命令:Start Locally | PyTorch(https://pytorch.org/get-started/locally/)

eadb5cc8-4690-11eb-8b86-12bb97331649.jpg

輸入以下命令進行安裝:

 pip install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

環境配置就完成了,下面新建一個簡單的測試腳本驗證功能,新建mnist_train.py,內容如下:

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torchvision import datasets, transforms


class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.conv2_drop = nn.Dropout2d()
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)


def forward(self, x):
    x = F.relu(F.max_pool2d(self.conv1(x), 2))
    x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
    x = x.view(-1, 320)
    x = F.relu(self.fc1(x))
    x = F.dropout(x, training=self.training)
    x = self.fc2(x)
    return F.log_softmax(x, dim=1)


def train(model, device, train_loader, optimizer, epoch):
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device), target.to(device)
        optimizer.zero_grad()
        output = model(data)
        loss = F.nll_loss(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 10 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]	Loss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                       100. * batch_idx / len(train_loader), loss.item()))


def main():
    cudnn.benchmark = True
    torch.manual_seed(1)
    device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
    print("Using device: {}".format(device))
    kwargs = {'num_workers': 1, 'pin_memory': True}
    train_loader = torch.utils.data.DataLoader(
        datasets.MNIST('./data', train=True, download=True,
                       transform=transforms.Compose([
                           transforms.ToTensor(),
                           transforms.Normalize((0.1307,), (0.3081,))
                       ])),
        batch_size=64, shuffle=True, **kwargs)


model = Net().to(device)
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

for epoch in range(1, 11):
    train(model, device, train_loader, optimizer, epoch)

if __name__ == '__main__':
    main()

運行腳本,正常的話就可以看到訓練輸出了:

eb1a19d6-4690-11eb-8b86-12bb97331649.jpg

2. Docker環境方式:

首先還是新建一個Docker鏡像,運行下面的命令:

 sudo docker run  -it  --name train_mnist 
 -v /etc/timezone:/etc/timezone 
 -v /etc/localtime:/etc/localtime 
 -v /home/pengzhihui/WorkSpace/_share:/home/workspace/_share  
 --gpus all nvidia/cuda:11.1-base

就進入到了帶gpu的ubuntu20.04容器中,效果可以參考文章開頭的視頻。按照前面的配置方法同樣配置好pytorch和其他軟件包,然后運行同樣的腳本,也可以得到上述輸出,說明gpu在docker中正常工作。

4. 工作站維護篇

4.1 工作站系統備份還原

1. 備份

由于Linux本身萬物皆文件的設計理念,加上root用戶對幾乎全部的系統文件都有訪問和更改的權限,因此Linux系統的備份和還原其實非常簡單,我們直接打包整個根文件系統就可以了。

我們可以使用tar命令來打包并壓縮文件系統,不過這里在打包的過程中需要排除一些不需要文件,或者與新系統文件沖突的文件,包括/tmp/proc/lost+found 等目錄。

找一個你想保存備份文件的目錄,運行下面的命令:

tar -cvpzf ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot  --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /

我們會得到一個名為backup.tgz的壓縮文件,這個文件包含我們需要備份的系統的全部內容。

2. 還原

如果系統沒有出問題可以正常啟動的話,那直接在剛剛的壓縮包找找到想還原的文件替換就好了。而如果系統無法啟動了,或者說想換一塊硬盤克隆一樣的系統,那么可以按一下步驟操作:

  • 重裝干凈的Ubuntu系統。跟上面介紹的一樣,使用U盤給目標磁盤重裝一個干凈的系統,這一步是為了省去自己分配存儲空間和掛載的麻煩,如果你會自己配置的話那也可以不做這一步。
  • 再次使用U盤進入系統,這次選擇try ubuntu without installing,然后可以看到掛載好的剛剛安裝了干凈系統的另一個盤,我們在這里對盤里的根文件系統進行一些文件的提取:
sudo su

# 在tryUbuntu根目錄下有media文件夾,里面是U盤文件夾和新安裝的系統文件夾,在在里分別用(U盤)和(UBUNTU)表示
cd /media/(U盤)
mount -o remount rw ./
 
# 將新系統根目錄下/boot/grub/grub.cfg文件備份到U盤中
sudo cp /media/(Ubuntu)/boot/grub/grub.cfg ./    
 
# 將新系統根目錄下/etc/fstab文件備份到U盤中,fstab是與系統開機掛載有關的文件,grub.cfg是與開機引導有關的文件,所以這一步至關重要
sudo cp /media/(UBUNTU)/etc/fstab ./
 
# 這一步刪除新裝ubuntu全部的系統文件,有用的fstab及grub.cfg已經備份
cd /media/(UBUNTU)
sudo rm -rf ./*
 
# 將U盤中backup.tgz復制到該目錄下并解壓縮
cp /media/(U盤)/backup.tgz ./
sudo tar xvpfz backup.tgz ./
 
# 創建打包系統時排除的文件
sudo mkdir proc lost+found mnt sys media

這一步完成后,在用我們在新系統中備份的fatabgrub.cfg 文件去替換壓縮包中解壓出來的同名文件,sudo reboot重啟后就發現系統已經恢復到備份時的狀態,包括各種框架,環境,系統設置~

以上,后面有更新的話還會繼續補充,希望對大家有幫助~

責任編輯:xj

原文標題:保姆級教程:個人深度學習工作站配置指南

文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PC
    PC
    +關注

    關注

    9

    文章

    2076

    瀏覽量

    154147
  • 服務器
    +關注

    關注

    12

    文章

    9123

    瀏覽量

    85328
  • 深度學習
    +關注

    關注

    73

    文章

    5500

    瀏覽量

    121113

原文標題:保姆級教程:個人深度學習工作站配置指南

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    中科馭數獲批設立博士后科研工作站

    中科馭數獲批準設立博士后科研工作站,近日在北京市人力資源和社會保障局主辦的博士后人才培養工作會議上,中科馭數獲得由人力資源和社會保障部、全國博士后管委會聯合授予的博士后科研工作站牌匾。
    的頭像 發表于 12-19 17:15 ?229次閱讀

    海積信息榮獲上海市優秀專家工作站稱號

    近日,2024年上海市院士(專家)工作站(服務中心)績效評估結果揭曉,上海海積信息科技股份有限公司憑借卓越的產品創新、高效的團隊建設及顯著的項目推進成果,榮獲“上海市優秀專家工作站”稱號。
    的頭像 發表于 12-19 11:43 ?167次閱讀

    中科慧眼獲批北京市博士后科研工作站

    近日,中科慧眼作為專注于智能駕駛及智能底盤技術的高科技企業,成功獲批設立北京市博士后科研工作站
    的頭像 發表于 12-13 14:48 ?135次閱讀

    云知聲榮獲上海市優秀專家工作站稱號

    近日,2024年上海市院士(專家)工作站(服務中心)績效評估結果揭曉。云知聲(上海)智能科技有限公司(以下簡稱“云知聲”)憑借其在人工智能技術研發、創新成果應用及高層次人才引進與培養等方面的杰出表現,榮獲“上海市優秀專家工作站”稱號。
    的頭像 發表于 12-13 14:27 ?210次閱讀

    思嵐科技獲批建立2024年度院士(專家)工作站

    近日,上海市科學技術協會正式發布了《關于批準建立2024年度第五批次院士(專家)工作站的通知》,上海思嵐科技有限公司憑借在科技創新領域的突出表現,成功獲批成為院士(專家)工作站建站單位,上海交通大學研究員裴凌教授作為首席專家進站指導!
    的頭像 發表于 12-12 16:09 ?163次閱讀

    主線科技獲批國家級博士后科研工作站

    近日,北京市人力資源和社會保障局發布通知,為提高創新能力,推動產學研深度融合,經專家評議、市人力資源社會保障局核準主線科技設立國家級博士后科研工作站
    的頭像 發表于 12-09 10:25 ?157次閱讀

    PyTorch深度學習開發環境搭建指南

    PyTorch作為一種流行的深度學習框架,其開發環境的搭建對于深度學習研究者和開發者來說至關重要。在Windows操作系統上搭建PyTorc
    的頭像 發表于 07-16 18:29 ?999次閱讀

    如何將工作站模式和啟用的DHCP默認保存在閃存中?

    你好 我希望將工作站模式和啟用的DHCP默認保存在閃存中(初始條件)。
    發表于 07-16 08:30

    集特龍芯雙路工作站

    ? 這款擁有堅硬外殼、穩重顏色、沉穩氣質的工作站,,為集特公司最新研發的龍芯雙路工作站。采用1.0厚鍍鋅板,高級工業深咖噴漆,整機尺寸高470MM、寬210MM、深465MM,前面板為開關鍵,2個
    的頭像 發表于 07-02 13:37 ?322次閱讀
    集特龍芯雙路<b class='flag-5'>工作站</b>

    江西景旺獲批設立國家級博士后科研工作站

    6月26日,江西省人社廳官方網站公布了最新獲批博士后科研工作站的企業名單,江西景旺經過一系列嚴格審批流程,包括公司自助申報、吉安市人社局初審推薦、江西省人社廳復審以及全國博士后管理委員會的批準,成功
    的頭像 發表于 06-28 11:51 ?505次閱讀

    技嘉推出全新AMD Radeon PRO W7000系列工作站顯卡

    產品分別為Radeon PRO W7900 Dual Slot AI TOP 48G和Radeon PRO W7800 AI TOP 32G,它們不僅針對工作站場景進行了深度優化,更在AI計算方面展現了出色的實力。
    的頭像 發表于 06-22 11:51 ?1171次閱讀

    寧暢推出首款專業級AI桌面工作站W350 G50

    寧暢近日推出了其首款專業級AI桌面工作站W350 G50,此舉標志著智算中心的概念已延伸至桌面端。這款工作站集成了NVIDIA RTX? Ada架構GPU,為用戶提供了強大的計算能力。
    的頭像 發表于 06-06 09:25 ?713次閱讀

    FENDER 推出TONE MASTER? PRO 綜合音箱模擬工作站

    設計緊湊、功能卓越的多重效果和數字音箱模擬工作站能精確地呈現模擬音效,擁有 8 核 CPU、USB 接口及更多配置,兼具高品質與多功能,持續引領行業創新 上海2024年5月10日?/美通社
    的頭像 發表于 05-10 15:12 ?583次閱讀
    FENDER 推出TONE MASTER? PRO 綜合音箱模擬<b class='flag-5'>工作站</b>

    焊接機器人工作站由哪些部分構成?各有什么作用?

    焊接機器人工作站是現代工業自動化生產中的重要組成部分,它通過將機器人與先進的焊接技術相結合,提高了生產效率、質量和安全性。一個典型的焊接機器人工作站由多個部分組成,每個部分都有著獨特的功能,共同協作
    的頭像 發表于 01-30 15:21 ?707次閱讀

    全面解析CPU和工作站的大比拼

    配備第13代酷睿移動CPU的戴爾Precision 5680。在當今的工作站市場中,移動工作站的出貨量超過固定工作站約 45%–55%,這與 2010 年代形成鮮明對比,當時固定工作站
    發表于 01-16 11:46 ?1270次閱讀
    全面解析CPU和<b class='flag-5'>工作站</b>的大比拼
    主站蜘蛛池模板: 亚洲国产在线2o20| 小夫妻天天恶战| 小草视频免费观看在线| 亚洲人成色777777老人头| 69xx欧美| 国产成人一区免费观看| 久久精品电影久久电影大全| 人妻熟女斩五十路0930| 亚洲人女同志video| 99视频这里只有精品国产| 国产欧美一区二区精品久久久| 两个奶头被吃得又翘又痛| 四虎永久免费网址| 1a级毛片免费观看| 国产乱辈通伦影片在线播放亚洲 | 国产在线亚洲精品观看不卡| 美女的让男人桶爽网站| 无码成A毛片免费| 91嫩草私人成人亚洲影院| 国产无遮挡色视频免费观看性色| 蜜芽亚洲欧美一区二区电影| 迅雷成人论坛| 凹凸精品视频分类视频| 久久国产高清视频| 双性精跪趴灌满h室友4p| 97超级碰久久久久香蕉人人| 果冻传媒色AV国产播放| 日本男女动态图| 116美女写真午夜电影z| 国产一区二区三区在线看片| 24小时日本在线| 国产午夜精品美女免费大片| 热99re久久精品国产首页| 诱人的秘书BD在线观看| 国产三级精品三级在线观看| 青青草原国产在线| 18 japanese宾馆直播| 黑丝袜论坛| 午夜无码片在线观看影院| 成人小视频在线免费观看| 男男h开荤粗肉h文1v1|