Uncategorized

[Tutorial Tingkat Nanny]Panduan Konfigurasi Personal Deep Learning Workstation

More from Author Kadek Dwi here: https://eternallifesecrets.com/author/kadek-dwi/

0. Kata Pengantar

Saya selalu ingin mengkonfigurasi server workstation deep learning saya sendiri untuk alasan pekerjaan. Ketika saya membaca makalah dan ingin melakukan beberapa eksperimen atau mereproduksi model sebelumnya, saya hanya dapat menggunakan PC harian saya untuk menjalankan, yang sangat merepotkan … Di satu sisi, komputer harus dilengkapi dengan sistem ganda. , Tidak dapat digunakan untuk keperluan lain saat bekerja; sebaliknya, meskipun tidak ada proses penggunaan, performa GTX1080 masih agak lemah, belum lagi saya menggunakan case mini A4, yang bebannya tinggi dalam waktu lama. Tugas pelatihan juga tidak terlalu bisa diandalkan.

Ketika saya masih di perusahaan, saya juga dapat menggunakan kelompok pelatihan DGX perusahaan untuk melakukan beberapa eksperimen, tetapi lingkungan pengembangan saya saat ini telah dialihkan ke chip arsitektur NPU dari Shengteng. Meskipun daya komputasi platform Shengteng sebanding atau bahkan melampaui Nvidia, Namun, untuk saat ini, banyak ekosistem akademisi masih berbasis server GPU (terutama mengacu pada kode sumber terbuka), dan server Ascend kami tidak mudah dibeli untuk individu (dan tidak mampu), jadi masih ada stasiun kerja GPU seperti ini. Mudah.

Maka artikel ini adalah detail proses operasi yang saya catat selama proses perakitan workstation, untuk referensi siswa berkebutuhan serupa ~

Pertama, mari kita lihat video dari efek akhir setelah konfigurasi:

1. Perangkat Keras

1.1 Pemilihan konfigurasi workstation

Aksesoris potret keluarga

Konfigurasi server terutama hemat biaya untuk penggunaan pribadi, dan beberapa redundansi disiapkan dalam konfigurasi aksesori seperti motherboard dan rangka dengan pertimbangan skalabilitas di masa mendatang. Yang pertama adalah pilihan platform CPU. Meskipun AMD benar-benar harum dalam dua tahun terakhir, sebagai alat produktivitas, mengingat kompatibilitas pustaka perangkat lunak, telah memutuskan untuk memilih motherboard CPU + X299 seri X generasi kesepuluh dalam platform intel. Ini adalah solusi yang relatif stabil. Selain itu, CPU Dongshang tertentu juga sangat hemat biaya untuk dibeli dengan kit motherboard. Dari segi GPU, tahun ini kartu grafis 30 seri lebih teliti, menggunakan dua 3080 atau satu 3090 sangat bertenaga, memori video 24G juga sudah sama dengan TITAN RTX (harga hanya setengah) … disini mengingat motherboard hanya bisa Masukkan dua kartu PCIEx16, untuk meningkatkan kinerja di masa mendatang, Anda perlu menambahkan kartu lain, jadi 3090 adalah pilihan terbaik.

Konfigurasi terakhir yang dipilih adalah sebagai berikut:

  • CPU: I9-10920X
  • GPU grafis: Warna-warni RTX3090 Muka
  • RAM: Zhi Fantasy Light Halberd 16G x 4 total 64G
  • Motherboard: ASUS X299-DELUXE PRIME
  • SSD: 1TB Western Digital NVME SSD + 1TB Samsung 870QVO SATA SSD
  • Hard disk mekanis: Disk Helium Seagate EXOS 12TB
  • Sumber Daya listrik: Catu daya modul Corsair AX1200i 1200W
  • pendingin: Pendingin air Corsair H100X240 + beberapa 120 kipas chassis
  • Kasus: Casing Corsair AIR540 E-ATX

Desain hard disk adalah sebagai berikut: 1T NVME solid state digunakan sebagai disk sistem, 12T mechanical disk digunakan sebagai gudang kumpulan data, dan solid state 1T SATA lainnya digunakan sebagai cache kumpulan data selama pelatihan, karena kecepatan baca dan tulis IO juga akan mempengaruhi efisiensi pelatihan. Jadi dibandingkan dengan membaca data langsung dari disk mekanis, menambahkan SSD untuk efek cache akan jauh lebih baik.

1.2 Perakitan komputer

Singkatnya, ini adalah proses perakitan mainan yang menyenangkan ~

Ukuran casing relatif besar, dan ruang yang dicadangkan sangat mencukupi, sehingga tidak akan ada masalah teknis seperti pengujian kabel dan urutan perakitan saat memasang casing A4; dan server, sebaiknya dimasukkan secara diam-diam di sudut. Jangan terlalu khawatir tentang estetika, jadi kabelnya sangat acak:

Desain sasis masih sangat ilmiah, dan cukup banyak antarmuka ekspansi yang disediakan, seperti: 2 ruang disk lepas cepat 3,5 inci, ruang disk lepas cepat 5 inci, ruang drive optik (tidak digunakan, dimodifikasi nanti), Tumpukan posisi kipas di depan dan belakang atas, dll. Pada dasarnya, kabel dapat dimasukkan ke sisi lain casing.Tiga kipas saluran masuk udara dipasang di panel depan, satu kipas saluran keluar udara dipasang di bagian belakang, dan baris dingin dan kipas pendingin air ada di bagian atas.

Perlu disebutkan di sini bahwa drive optik depan adalah barang antik tua yang tidak dapat digunakan, jadi saya memodifikasinya dan bersiap untuk memasang layar LCD kecil, sehingga kadang-kadang ketika saya perlu masuk ke desktop grafis atau antarmuka BIOS, saya tidak perlu memegang monitor. Itu dicolokkan ke kasing; selain itu, Anda dapat menulis perangkat lunak untuk menggunakan layar ini sebagai monitor status sistem di masa mendatang ~

↑ Casing akan dicetak 3D untuk memperbaiki layar.

Layar ini juga saya desain beberapa waktu lalu, dan proyek ini disebut open sourcePocketLCDBagi yang berminat bisa ke gudang untuk melihat-lihat:

github.com/peng-zhihui/

2. Sistem

Sistem memilih Ubuntu, yang paling umum digunakan dalam pengembangan DL, dan versi stabil terbaru adalah 20.04. Proses instalasi memerlukan disk U sebagai disk startup sistem.

2.1 Instal sistem Ubuntu 20.04

  1. Download image Ubuntu di website resmi: Ubuntu 20.04.1 LTS (Focal Fossa), pilihGambar DesktopVersi, dapatkan file gambar .iso.
  2. Gunakan alat UltraISO untuk membuka file image .iso di bawah Windows dan tulis ke disk U untuk mendapatkan disk boot sistem:

3. Masukkan disk U ke server, dan tekandel键(Kunci spesifik terkait dengan model motherboard) Pilih item startup untuk masuk ke sistem Ubuntu sementara, dan pilih di antarmuka grafisInstal Ubuntu, Semua konfigurasi dapat menggunakan default, cukup ubah nama pengguna dan kata sandi. Dianjurkan untuk menggunakan bahasa Inggris sebagai bahasa default, untuk menghindari masalah bagi pengembangan di masa mendatang.

Selama proses instalasi, beberapa pembaruan paket perangkat lunak akan diunduh secara online, Anda dapat mengklik lewati secara langsung, lalu perbarui secara manual setelah sistem diinstal.

4. Setelah memasuki sistem, setel kata sandi akun root:

sudo passwd root

5. Pada saat yang sama, untuk menghindari memasukkan kata sandi setiap kali sudo, konfigurasikan di sinivisudo

sudo visudo

Tambahkan kalimat di akhir file (ubah menjadi nama pengguna Anda):

pengzhihui ALL=(ALL) NOPASSWD: ALL

2.2 Konfigurasi sumber perangkat lunak cermin domestik

Untuk meningkatkan kebahagiaan dari instalasi perangkat lunak selanjutnya, langkah pertama tentu saja adalah mengganti sumber perangkat lunak.

  1. Cadangkan sumber asli:
cp /etc/apt/sources.list /etc/apt/sources.list.bak

2. Setel konten sumber sebagai gambar Alibaba Cloud:

sudo vim /etc/apt/sources.list

Konten diubah menjadi:

 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. Perbarui daftar perangkat lunak:

sudo apt update
sudo apt upgrade

Anda juga dapat mencari gambar lain di Internet. Saya telah menguji Alibaba Cloud sebagai yang tercepat.Itu juga dapat dibuka di lingkungan desktop grafisSoftware & UpdatesPerangkat lunak ini juga memiliki fungsi untuk menguji kecepatan jaringan dan memilih sumber terbaik.

2.3 Instal Python dan pip

  1. Sistem Ubuntu hadir dengan python secara default, Anda dapat menginstalnya sendiri jika Anda memiliki persyaratan versi (Anda tidak perlu menginstalnya karena lingkungan conda akan diinstal nanti):
sudo apt install python3
sudo apt install python3-pip

2. Terlepas dari apakah Anda menginstal python sendiri, saran sumber pip untuk mengganti python adalah melakukannya.Kecepatan instalasi pip akan jauh lebih cepat:

cd ~
mkdir .pip

Buat dan edit pip.conf secara langsung:

sudo vim ~/.pip/pip.conf

Ubah ke konten berikut (sumber Tsinghua digunakan di sini, Anda juga dapat mencoba Ali, Douban dan sumber lainnya):

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

3. Ubah versi default python Direktori python ditautkan ke python2 secara default, tetapi sekarang pada dasarnya dikembangkan dengan python3. Sulit untuk memasukkan python3 setiap saat, jadi di sini kami langsung mengubah tautan perintah python default.

Hapus soft link python asli:

sudo rm /usr/bin/python

Buat tautan lunak baru:

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

Sekarang masukkan python untuk masuk ke lingkungan python3.

2.4 Konfigurasi SSH & Remote Desktop

SSH tidak dihidupkan secara default dalam sistem instalasi murni, mari kita instal secara manual.

  1. Instal ssh:
sudo apt install ssh

Banyak paket ketergantungan akan diinstal secara otomatis dan layanan akan dimulai. Setelah selesai, Anda dapat masuk ke server dengan SSH menggunakan perangkat lunak seperti XShell.

2. Instal xrdp

Xrdp adalah implementasi open source dari Microsoft’s Remote Desktop Protocol (RDP), yang memungkinkan kita untuk mengontrol sistem jarak jauh melalui antarmuka grafis. RDP digunakan di sini daripada VNC sebagai remote desktop karena software koneksi remote desktop yang disertakan dengan Windows dapat dihubungkan dengan sangat nyaman.Selain itu, pengalaman RDP di bawah Windows sangat bagus, termasuk kecepatan yang cepat (karena skema kompresi lebih baik), Anda dapat menyalin dan menempel langsung antara host dan desktop jarak jauh, dll.

Beberapa perangkat lunak Xwindow tidak kompatibel dengan xrdp (seperti desktop default ubuntu 18.04), tetapi Gnome yang digunakan oleh ubuntu 20.04 sepenuhnya baik-baik saja.

Proses instalasi adalah sebagai berikut:

sudo apt install xrdp 

Layanan xrdp akan dimulai secara otomatis setelah instalasi, Anda dapat memasukkan perintah berikut untuk memverifikasinya:

sudo systemctl status xrdp

Secara default, xrdp menggunakan/etc/ssl/private/ssl-cert-snakeoil.key, Ini hanya dapat dibaca oleh grup pengguna ssl-cert, jadi Anda perlu menjalankan perintah berikut untuk menambahkan pengguna xrdp ke grup pengguna ini:

sudo adduser xrdp ssl-cert  
sudo systemctl restart xrdp

Kemudian gunakan perangkat lunak desktop jarak jauh yang disertakan dengan Windows untuk menyambung ke alamat IP atau nama domain server.

2.5 Pasang frp untuk penetrasi intranet

SSH dan desktop jarak jauh yang dijelaskan sebelumnya harus terhubung melalui alamat IP di bawah LAN, dan persyaratan terpenting bagi kami untuk mengkonfigurasi server, itu harus memungkinkanKapanpun dimanapunPergi ke server.

Di rumah, layanan jaringan yang disediakan oleh operator jaringan dirutekan ke setiap perangkat melalui router. Saat ini, router akan memiliki alamat jaringan internal (di dalam router, jaringan area lokal, LAN, yaitu 192.168.xx) dan alamat jaringan eksternal (di luar router). , Internet, WAN). Namun pada kenyataannya, IP dari port WAN ini bukanlah “IP publik” yang sebenarnya, dan alamat setelah terjemahan NAT multi-layer, peralatan jaringan eksternal tidak dapat mengakses router melalui alamat ini. Alasan untuk masalah ini adalah kumpulan alamat IPv4 yang sempit, Jika operator mengatur IP jaringan publik untuk setiap router, maka alamat IP tidak akan cukup.

Oleh karena itu, untuk mengizinkan jaringan eksternal mengakses peralatan di jaringan area lokal kita, kita perlu mengajukan ip jaringan publik dengan operator seperti China Telecom (sekarang kemungkinan untuk dapat menerapkan tidak besar, dan bahkan jika aplikasi diterapkan, tidak semua port dapat digunakan. ), atau kami dapat melakukan beberapa operasi sendiri untuk mencapai tujuan yang sama.

Ada beberapa cara:

  • Anda bisa langsung menggunakan platform layanan DDNS seperti Peanut Shell untuk melakukan penerusan untuk mencapai penetrasi intranet. Keuntungannya relatif sederhana dan stabil, tetapi kerugiannya adalah memerlukan pembayaran terus menerus, dan kecepatan serta efek penundaannya rata-rata, dan setiap port tambahan memerlukan biaya tambahan.
  • Anda juga dapat menggunakan perangkat lunak seperti frp sebagai proxy terbalik untuk mencapai penetrasi intranet seperti saya. Solusi ini juga mengharuskan Anda memiliki server cloud dengan IP publik. Keuntungannya adalah dapat dikontrol sepenuhnya. Berapa banyak port yang ingin Anda konfigurasi Penetrasi baik-baik saja, dan kecepatannya terkait dengan bandwidth server cloud Anda.

Mengapa saya membutuhkan banyak port? Itu karena aplikasi yang berbeda menempati port yang berbeda.Misalnya, SSH kami menggunakan port 22, sedangkan remote desktop rdp menggunakan port 3389. Jika Anda perlu membangun layanan Web Anda sendiri, Anda menggunakan port 80/443 dan ingin menggunakan workstation. Sebagai server proxy di Internet, Anda akan membutuhkan 1080 port dan seterusnya … Jadi jelas solusi kedua di atas akan jauh lebih nyaman, dan server cloud tidak mahal, saya hanya membeli sekitar 200 setahun di Tencent Cloud.

Berikut ini menjelaskan cara menginstal dan mengkonfigurasi frp:

Frp dibagi menjadi dua paket, frps (server) dan frpc (klien). Yang pertama diinstal di server cloud kami, dan yang terakhir diinstal pada berbagai perangkat yang perlu diakses dari jaringan eksternal. Ini mengacu pada workstation deep learning kami.

Sisi server cloud:

Buka di sini untuk mengunduh perangkat lunak frp yang sesuai untuk sistem server Anda. Saya menggunakan Tencent Cloud 64-bit Ubuntu16.04, jadi saya memilih frp_0.34.3_linux_amd64.tar.gz. Setelah mengunduhnya, unzip:

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

File yang perlu kita edit adalah frps.ini:

Konten diubah menjadi:

 [common]
 bind_port = 7000 # frp服务的端口号,可以自己定
 dashboard_port = 7500 # frp的web界面的端口号
 dashboard_user = user # web界面的登陆账户,自己修改
 dashboard_pwd = pass # web界面的登陆密码,自己修改
 authentication_method = token
 token = xxxxx # frp客户端连接时的密码,自己修改

Setelah menyimpan konfigurasi, gunakan perintah ini untuk memulai:

 ./frps -c ./frps.ini

Ketik di browser [云服务器的公网ip]:7500 Anda dapat mengakses antarmuka manajemen web frp.

Perhatikan bahwa Anda mungkin perlu membuka konsol server cloud untuk mengonfigurasi aturan grup keamanan untuk membuka port yang disebutkan di atas, jika tidak, Anda tidak akan dapat mengakses.

Server pembelajaran dalam lokal:

  1. Unduh versi yang sesuai dari paket perangkat lunak frpc (sama seperti sebelumnya): Rilis · fatedier / frp (github.com), pilih amd64 di sini, dan unzip ke folder sementara setelah mengunduhnya.
  2. Ubah file konfigurasi frpc.ini, isinya sebagai berikut:
 [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

Melalui skrip di atas, akses ke port tertentu dari server cloud dapat dialihkan ke port tertentu dari server lokal. Sederhananya: jika saya menggunakan klien SSH untuk mengakses [云服务器ip]:20022, Anda dapat mengakses langsung melalui proxy terbalik[本地的训练服务器ip]:22; Demikian pula, jika Anda perlu terhubung ke desktop jarak jauh, Anda hanya perlu mengakses[云服务器ip]:23389Itu dia.

Tentu saja, Anda juga dapat memodifikasi skrip untuk menambahkan lebih banyak pemetaan ~

3. Tambahkan skrip yang secara otomatis dimulai setelah booting, dan buat file baru dengan konten berikut:

nama file/etc/systemd/system/frpc.service, Perhatikan untuk mengubah jalur:

 [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

Kemudian jalankan perintah berikut untuk mengaktifkan skrip:

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

Gunakan perintah berikut untuk melihat status layanan, jika sedang berjalan, akan baik-baik saja:

sudo systemctl status frpc.service

Ngomong-ngomong, menurut kebiasaan, dekompresi perangkat lunak frp di atas untuk mencegahnya/usr/local/binDi bawah isinya. Direktori penginstalan perangkat lunak Linux juga khusus memahaminya, karena ini bermanfaat bagi manajemen sistem.

  • /usr: Direktori tingkat sistem, dapat dipahami sebagaiC:/Windows/
  • /usr/lib: Dapat dipahami sebagaiC:/Windows/System32
  • /usr/local: Direktori program tingkat pengguna, yang dapat dipahami sebagaiC:/Progrem Files/, Perangkat lunak yang dikompilasi oleh pengguna akan diinstal di direktori ini secara default
  • /opt: Direktori program tingkat pengguna, yang dapat dipahami sebagaiD:/Software, Opt berarti opsional, dapat digunakan untuk menempatkan perangkat lunak (atau game) pihak ketiga besar, saat Anda tidak membutuhkannya, secara langsungrm -rfJatuhkan saja.Bila kapasitas hard disk tidak mencukupi, Anda juga bisa/optPasang secara terpisah ke disk lain untuk digunakan

Dimana kode sumbernya?

  • /usr/src: Direktori kode sumber tingkat sistem
  • /usr/local/src: Direktori kode sumber tingkat pengguna.

2.6 Instal layanan SAMBA

Bukankah lebih bagus jika kita bisa langsung me-mount disk di server ke PC pribadi Windows yang kita gunakan?

Seperti yang ditunjukkan dalam video di awal, efek ini dapat dicapai dengan membuat layanan SAMBA LAN:

  1. instalasisamba dengansamba-common-bin
sudo apt-get install samba samba-common-bin
  1. Konfigurasikan file /etc/samba/smb.conf
sudo nano /etc/samba/smb.conf

Tambahkan setelah baris terakhir:

# 共享文件夹显示的名称
[home]
# 说明信息
comment = Fusion WorkStation Storage
# 可以访问的用户
valid users = pengzhihui,root
# 共享文件的路径
path = /home/pengzhihui/
# 可被其他人看到资源名称(非内容)
browseable = yes
# 可写
writable = yes
# 新建文件的权限为 664
create mask = 0664
# 新建目录的权限为 775
directory mask = 0775

Anda dapat menghapus nama berbagi yang tidak Anda perlukan di file konfigurasi, misalnya [homes], [printers] Tunggu.

Jalankan perintah ini untuk menguji apakah ada kesalahan dalam file konfigurasi, dan buat modifikasi yang sesuai sesuai dengan petunjuknya:testparm

3. Tambahkan akun login dan buat kata sandi

Harus pengguna linux yang sudah ada:

sudo smbpasswd -a pi

Kemudian restart layanan:

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

Kemudian Anda dapat menemukan perangkat di jaringan Windows:

Namun, mungkin ada situasi di mana Anda tidak dapat mengklik untuk membuka. Di sini Anda perlu menambahkan informasi akun di manajer kredensial Windows (cari manajer kredensial di menu mulai untuk membuka), klik Tambahkan kredensial Windows, dan masukkan nama server dan sandi akun Anda:

Kemudian Anda dapat mengklik untuk melihat file di server. Untuk membuat interaksi file lebih nyaman, kami menambahkan disk yang sesuai ke komputer ini di Windows Explorer:

Pilih jalur jaringan server sekarang untuk menambahkan:

3. Konfigurasi Lingkungan Pengembangan DL

Fungsi utama konfigurasi server ini adalah untuk melakukan pelatihan deep learning, sehingga driver dan lingkungan terkait GPU harus diatur. Ada banyak materi online yang rumit. Berikut metode instalasi yang paling nyaman dan andal untuk referensi Anda ~

3.1 Instal driver grafis Nvidia

Cara termudah adalah menginstal melalui perangkat lunak dan pembaruan sistem:

  1. Buka desktop grafis sistem dan bukaSoftware & UpdatesSoftware, Anda dapat melihat bahwa ada fileAdditional Drivers

Pilih yang pertama untuk menginstal driver Nvidia resmi (yang kedua adalah driver open source), tunggu sekitar sepuluh menit sesuai dengan situasi jaringan, dan restart server setelah instalasi.

  1. Perbarui perangkat lunak setelah memulai ulang:
sudo apt update
sudo apt upgrade

Di sini akan ditingkatkan dengan driver Nvidia, perbarui ke driver terbaru; setelah pembaruan, perintah nvidia-smi mungkin melaporkan kesalahan, dan memulai ulang untuk menyelesaikannya.

3.2 Instal CUDA

Jika Anda telah menginstal versi lama cuda dan cudnn sebelumnya, Anda harus menghapusnya sebelum menginstal:

 sudo apt-get remove --purge nvidia*

kemudianInstal ulang driver grafis sesuai dengan metode sebelumnyaSetelah penginstalan selesai, mulailah menginstal CUDA:

  1. Buka situs web resmi untuk mengunduh paket instalasi cuda: CUDA Toolkit 11.0 Unduh | Pengembang NVIDIA, opsi yang relevan adalah sebagai berikut (pilih sesuai dengan situasi aktual):
  1. Jalankan perintah berikut untuk menginstal:
chmod +x cuda_11.0.2_450.51.05_linux.run
sudo sh ./cuda_11.0.2_450.51.05_linux.run

Peringatan mungkin dilaporkan:

Versi lama telah dihapus sebelumnya, lanjutkan saja. Kemudian pilih opsi penginstalan sesuai petunjuknya, dan hati-hati jangan sampai memeriksa terlebih dahulu untuk menginstal driver kartu grafis, karena sudah diinstal sebelumnya.Prompt setelah instalasi

2. Menurut gambar di atas, Anda perlu mengkonfigurasi variabel lingkungan:

nano  ~/.bashrc

Tambahkan pernyataan berikut di akhir file:

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

Kemudian buat itu efektif:

source ~/.bashrc

3. Anda dapat menggunakan perintahnvcc -VLihat informasi versi yang diinstal:

Anda juga dapat mengompilasi program untuk menguji apakah penginstalan berhasil, jalankan perintah berikut:

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

Jika normal, akan ada output yang sesuai dan mencetak informasi dari kartu grafis.

3.3 Pasang CuDNN

Masuk ke situs download resmi CUDNN: cuDNN Download | NVIDIA Developer, dan klik Download untuk mulai memilih versi download. Tentu saja, Anda masih harus login sebelum mendownload. Antarmuka pilihannya adalah sebagai berikut:

Kami memilih versi cudnn sesuai dengan versi cuda sebelumnya:

Setelah mengunduh adalah paket terkompresi, dekompresi, perintahnya adalah sebagai berikut:

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

Gunakan dua perintah berikut untuk menyalin file-file ini ke direktori CUDA:

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

Setelah penyalinan selesai, Anda dapat menggunakan perintah berikut untuk melihat informasi versi CUDNN:

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

Anda dapat melihat informasi versi sebagai berikut,8.0.5

3.4 Memasang Lingkungan Conda

Kerangka dan versi pelatihan yang berbeda mungkin memerlukan versi python yang berbeda, dan beberapa paket seperti numpy juga memiliki persyaratan untuk versi tersebut, jadi cara yang lebih elegan adalah dengan membuatnya untuk setiap konfigurasiLingkungan python virtual, Anda dapat beralih kapan saja saat Anda membutuhkannya, dan Anda dapat menghapusnya saat Anda tidak membutuhkannya tanpa membuang sumber daya disk. Conda adalah yang terbaik dalam hal ini.

Berikut cara memasang conda:

  1. Unduh paket instalasi Linux di situs resmi Anaconda: Anaconda | Edisi Individual
  2. Jalankan perintah berikut untuk menginstal:
chmod +x Anaconda3-2020.11-Linux-x86_64.sh

./Anaconda3-2020.11-Linux-x86_64.sh

Tekan ENTER sepenuhnya untuk mengonfirmasi, lalu masukkan yes sesuai dengan prompt. Di sini saya tidak menginstal di jalur default demi direktori yang bersih, dan mengaturnya ke jalur berikut:/home/pengzhihui/Softwares/anaconda

Kemudian Anda akan ditanya apakah Anda ingin menginisialisasi conda. Masukkan yes untuk mengonfirmasi. Setelah membuka kembali jendela terminal, Anda dapat melihat bahwa lingkungan conda tersedia (basis mewakili lingkungan default):

Ada banyak penelusuran online tentang cara menggunakan conda, jadi saya tidak akan membahas detailnya di sini.

3.5 Instal Nvidia-Docker

Docker juga merupakan artefak dari lingkungan virtualisasi Meskipun konda yang disebutkan di atas dapat menyediakan lingkungan virtual python dan beralih dengan mudah, terkadang lingkungan pengembangan kita tidak hanya menggunakan python. Misalnya, beberapa pustaka asli perlu dikompilasi sesuai dengan versi gcc. Lingkungan, atau pasang banyak rantai alat saat melakukan kompilasi silang. Jika operasi ini dilakukan secara lokal di server, sistem file server akan menjadi sangat berantakan seiring waktu, dan berbagai konflik versi perangkat lunak juga akan ditemui.

Docker dapat mengatasi masalah ini dengan sangat baik, sebenarnya dapat dipahami sebagai mesin virtual yang sangat ringan.Kita dapat membuat banyak yang baru di server host.容器Mesin virtual, dan kemudian konfigurasikan lingkungan pengembangan kami di dalam, dan lingkungan yang dikonfigurasi ini dapat dikemas ke dalam镜像Ya, akan lebih mudah untuk berbagi dan menggunakan kembali kapan saja; jika tidak diperlukan, kami hanya menghapus penampung secara langsung, dan sumber dayanya sepenuhnya diisolasi dari host server kami.

Untuk penggunaan khusus Docker, Anda dapat mencari sendiri banyak tutorial. Di sini kami terutama memperkenalkan cara mengekspos GPU ke container Docker (karena semua orang tahu bahwa mesin virtual seperti VMware tidak dapat membagikan GPU host).nvidia-dockerTercapai.

Dulu, untuk mengkonfigurasi nvidia-docker, Anda perlu menginstal nvidia docker2 terpisah setelah menginstal docker, tetapi sekarang Anda hanya perlu menginstal toolkit container nvidia, yang lebih nyaman.

  1. Ada pengenalan mendetail di situs resmi penginstalan buruh pelabuhan: Instal Mesin Docker di Ubuntudocs.docker.com atau jalankan perintah berikut untuk menginstal:
sudo apt-get update
sudo apt-get install docker.io
systemctl start docker
systemctl enable docker

Anda dapat menjalankan perintah ini untuk memeriksa apakah penginstalan berhasil:

docker version

2. Pasang NVIDIA Container Toolkit

Langkah-langkah penginstalan situs web resmi: NVIDIA / nvidia-docker: Buat dan jalankan kontainer Docker yang memanfaatkan GPU NVIDIA (github.com) Atau langsung jalankan perintah berikut:

 ##首先要确保已经安装了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

Setelah penginstalan selesai, Anda dapat membuat container baru untuk diuji:

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

Parameter terakhirnvidia/cuda:11.1-base Ini adalah gambar resmi Nvidia dan perlu dimodifikasi sesuai dengan versi cuda yang sebenarnya diinstal di host workstation. Versi tersebut dapat digunakannvcc -VMelihat.

Anda dapat menjalankannya setelah memasuki wadahnvidia-smiTampilan perintah:

Sekarang Anda dapat menggunakan GPU secara normal di buruh pelabuhan ~

3.6 Pengujian

Berikut ini skrip python sederhana untuk menguji apakah semuanya normal untuk pelatihan GPU, menjalankan program Hello World di DL, dan menguji melalui dua metode: mesin virtual conda lokal dan buruh pelabuhan.

Dalam proses pengembangan di masa mendatang, biasanya lebih elegan menggunakan Docker.

1. Mode lingkungan Conda Lokal:

Pertama gunakan conda untuk membuat lingkungan virtual python3.8 + pytorch1.7 + cuda11.0:

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

Masuk ke lingkungan setelah pembuatan:

 conda activate python_38-pytorch_1.7.0

Periksa apakah Anda telah beralih ke lingkungan yang diperlukan:

 which pip

Jika Anda melihat bahwa pip di direktori lingkungan yang kita setel memang digunakan, maka tidak apa-apa.

Selanjutnya, instal pytorch di lingkungan, Anda dapat merujuk ke perintah instalasi di situs web resmi: Mulai Secara Lokal | PyTorch

Masukkan perintah berikut untuk menginstal:

 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

Konfigurasi lingkungan selesai. Sekarang buat skrip pengujian sederhana untuk memverifikasi fungsi, buat yang barumnist_train.py, Isinya adalah sebagai berikut:

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}%)]tLoss: {:.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()

Jalankan scriptnya, jika sudah normal maka output trainingnya bisa dilihat:

2. Mode lingkungan Docker:

Pertama, buat image Docker baru dan jalankan perintah berikut:

 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

Anda masuk ke kontainer ubuntu20.04 dengan gpu, efeknya bisa merujuk ke video di awal artikel. Ikuti metode konfigurasi sebelumnya untuk mengkonfigurasi pytorch dan paket perangkat lunak lainnya, dan kemudian menjalankan skrip yang sama, Anda juga bisa mendapatkan output di atas, yang menunjukkan bahwa gpu bekerja secara normal di buruh pelabuhan.

4. Pemeliharaan Stasiun Kerja

4.1 Pencadangan dan pemulihan sistem workstation

  1. Cadangan

Karena filosofi desain Linux itu sendiri bahwa semuanya adalah file, dan pengguna root memiliki akses dan mengubah izin ke hampir semua file sistem, backup dan restorasi sistem Linux sebenarnya sangat sederhana.Kita dapat langsung mengemas seluruh sistem file root.

Kita dapat menggunakan perintah tar untuk memaketkan dan mengompres sistem file, tetapi di sini kita perlu mengecualikan beberapa file yang tidak perlu atau file yang konflik dengan file sistem baru selama proses pengemasan, termasuk/tmp/proc/lost+found Dan direktori lainnya.

Temukan direktori tempat Anda ingin menyimpan file cadangan dan jalankan perintah berikut:

tar -cvpzf [email protected]`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot  --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /

Kami akan mendapatkan file bernamabackup.tgzFile ini berisi semua konten sistem yang perlu kami cadangkan.

2. Pulihkan

Jika sistem dapat memulai secara normal tanpa masalah, cukup temukan file yang ingin Anda pulihkan dan ganti langsung dalam paket terkompresi sekarang. Jika sistem gagal untuk memulai, atau jika Anda ingin mengubah hard disk untuk mengkloning sistem yang sama, Anda dapat mengikuti langkah-langkah di bawah ini:

  • Instal ulang sistem Ubuntu yang bersih. Seperti disebutkan di atas, gunakan flash drive USB untuk menginstal ulang sistem yang bersih pada disk target. Langkah ini untuk menghindari masalah dalam mengalokasikan ruang penyimpanan dan pemasangan. Jika Anda dapat mengkonfigurasinya sendiri, Anda dapat melewati langkah ini.
  • Gunakan disk U lagi untuk masuk ke sistem, kali ini pilihtry ubuntu without installing, Dan kemudian Anda dapat melihat disk lain yang baru saja menginstal sistem yang bersih. Di sini kami mengekstrak beberapa file dari sistem file root di disk:
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

Setelah langkah ini selesai, kami menggunakan cadangan di sistem barufatabdangrub.cfg File untuk mengganti file dengan nama yang sama yang diekstrak dari paket terkompresi,sudo rebootSetelah memulai ulang, saya menemukan bahwa sistem telah dipulihkan ke keadaan saat dicadangkan, termasuk berbagai kerangka kerja, lingkungan, dan pengaturan sistem ~

Diatas akan saya tambah terus jika ada update nanti, semoga bisa membantu semuanya ~

Sumber: Zhihu www.zhihu.com

Penulis: Chih-hui

[Zhihu Daily]Pilihan puluhan juta pengguna, jadilah yang terbaru di lingkaran pertemanan dan bagikan keuntungan besar.klik untuk mengunduh
.

Article written by:

Halo, saya Kadek Dwi, saya bekerja untuk Rahasia Hidup Abadi sebagai Penulis sekarang, saya suka menulis. Inquiries: [email protected]

Leave a Reply

Your email address will not be published. Required fields are marked *

back to top