Ich habe viele Male einen PC für tiefes Lernen eingerichtet, aber ich habe vergessen, es zu tun, und ich habe vergessen, es wiederholt zu tun. Ich bin mir sicher, dass ich immer und immer wieder das Gleiche tun werde, also habe ich beschlossen, mir in Zukunft eine Arbeitsnotiz zu hinterlassen.
Dieser Artikel enthält einen Hinweis zum schnellsten Setup eines Linux-Computers mit einer GPU für vertiefendes Lernen. Mein Ziel ist
--Erstellen einer Umgebung ohne NVIDIA Docker (Anaconda, PyTorch, TensorFlow) --NVIDIA Docker-Setup
Es gibt zwei. Natürlich spielt es keine Rolle, welche.
Außerdem ist es in der Universität installiert und leider heutzutage eine Proxy-Umgebung. Die folgende Erklärung zeigt die Proxy-Einstellungen an mehreren Stellen. Wenn Sie jedoch ein glücklicher Leser sind, der keinen Proxy benötigt, können Sie ihn überspringen.
Diesmal von SyCom. RTX 2080 Ti 2-teiliges Stichmodell. Natürlich gibt es kein Betriebssystem. Ich bedauere, vergessen zu haben, das optische Laufwerk zu entfernen.
Da es sich um Deep Learning handelt, ist das Betriebssystem Ubuntu. Ich habe bisher die Desktop-Version verwendet, aber die Server-Version ist möglicherweise schneller zu installieren, da ich keinen separaten Desktop benötige. Also werde ich dieses Mal die Serverversion verwenden.
Dieses Mal installieren wir anstelle der neuesten Version 20.04 von Ubuntu die tote Version 18.04, also aus den früheren Versionen auf der Seite Alternative Downloads 18.04 Wählen Sie eine aus Gehen Sie zur Bildseite.
Da es sich bei der CPU um Intel Core i7 handelt, wählen Sie Installationsabbild für 64-Bit-PC-Server (AMD64). Und herunterladen.
Wie das geht, erfahren Sie im Ubuntu-Tutorial Erstellen eines bootfähigen USB-Sticks unter Ubuntu. Als ich darüber nachdachte, gab es einen süchtig machenden Punkt.
Da ich ein Mac bin, starten Sie nach dem Formatieren des USB-Speichers mit dem Festplatten-Dienstprogramm Etcher und wählen Sie das oben heruntergeladene Ubuntu-ISO-Image aus. Wenn Sie "Flash!" Drücken ...
Gumu.
Ich konnte nicht anders, also beschloss ich, das Bild mit dd auf einen USB-Speicher zu kopieren, obwohl es etwas schwierig war. Überprüfen Sie die "diskutil list" auf den richtigen Pfad zu Ihrem USB-Speichergerät, bevor Sie die folgenden Schritte ausführen! In meinem Fall war es / dev / disk2, aber ich weiß nicht, ob ich eriskDisk lösche, ohne es sorgfältig zu prüfen und wichtige Daten zu verlieren.
sudo diskutil eraseDisk FAT32 NAME MBRFormat /dev/disk2
diskutil unmountdisk /dev/disk2
sudo dd if=$HOME/Downloads/ubuntu-18.04.5-live-server-amd64.iso \
of=/dev/rdisk2 bs=2m conv=sync
Wenn die Ausführung abgeschlossen ist, ärgert Sie das Festplatten-Dienstprogramm, dass Sie es nicht lesen können, aber Sie müssen sich keine Sorgen machen, da es natürlich ist, dass Sie es nicht lesen können.
Schließen Sie das Netzkabel und das Netzwerkkabel an den PC an und schalten Sie das Gerät mit eingestecktem USB-Speicher ein. Drücken Sie F11 oder etwas anderes, um das Startmenü aufzurufen und von der Installations-CD im USB-Speicher zu starten. In meinem Fall habe ich ohne Erlaubnis vom USB-Speicher gebootet, während ich verwirrt war, und das Ergebnis war in Ordnung.
Nach dem Start ist es fast wie in [Ubuntu 18.04 LTS Server] Install beschrieben. Wenn Sie die IP-Adresse festlegen möchten, können Sie [Nächster Abschnitt] überspringen (ändern Sie die IP-Adresse in Fest), indem Sie sie hier festlegen. Wenn Sie den Proxy hier festlegen, wird er in dem Zustand installiert, in dem die Proxy-Einstellung von apt abgeschlossen wurde, sodass dies einfach ist. Wenn Sie OpenSSH hier einfügen, ist es außerdem praktisch, danach remote arbeiten zu können.
Die Installation war in 50 Sekunden abgeschlossen!
Finden Sie die von DHCP zugewiesene IP-Adresse heraus. Wenn Sie es nicht wissen, melden Sie sich über die Konsole an und führen Sie "ip addr" aus, um nach einer Ethernet-ähnlichen Schnittstelle zu suchen.
Führen Sie "ssh (IP-Adresse) -l (erstellter Benutzername)" von einem anderen Computer im Netzwerk aus, um sich remote anzumelden. Führen Sie "ip addr" aus, um den Namen der Schnittstelle zu ermitteln und zu notieren. Es sollte einen Namen wie eth0 oder en0 haben. Das Folgende ist, wenn der Name der Schnittstelle eno1 ist.
Sichern Sie die Originaldatei unter / etc / netplan und erstellen Sie mit einem Editor eine Datei mit dem Namen 01-netcfg.yaml. Ich habe vi benutzt. Im folgenden Beispiel lautet die diesem Computer zugewiesene Adresse 192.168.1.18, die Netzmaske 24-Bit, die IP-Adresse des Standardrouters 192.168.1.3 und der DNS-Server 192.168.1.83.
cd /etc/netplan
sudo mv 00-installer-config.yaml 00-installer-config.yaml.org
sudo vi 01-netcfg.yaml
01-netcfg.yaml
network:
ethernets:
eno1:
dhcp4: no
addresses: [192.168.1.18/24]
gateway4: 192.168.1.3
nameservers:
addresses: [192.168.1.83]
dhcp6: no
version: 2
Führen Sie nach dem Speichern der Datei "sudo netplan apply" aus. Wenn Sie sich remote angemeldet haben, können Sie es derzeit nicht bedienen. Melden Sie sich daher erneut mit ssh 192.168.1.18
an.
Sobald Sie dies getan haben, können Sie das Display und die Tastatur entfernen.
Der Proxyserver wird zum Zeitpunkt der Installation angegeben, Umgebungsvariablen müssen jedoch separat festgelegt werden. Öffnen Sie die Datei / etc / environment in einem Editor und fügen Sie Folgendes hinzu:
/etc/environment
HTTP_PROXY=http://Proxy-Server-Adresse:Hafen/
HTTPS_PROXY=http://Proxy-Server-Adresse:Hafen/
FTP_PROXY=http://Proxy-Server-Adresse:Hafen/
ALL_PROXY=http://Proxy-Server-Adresse:Hafen/
http_proxy=http://Proxy-Server-Adresse:Hafen/
https_proxy=http://Proxy-Server-Adresse:Hafen/
ftp_proxy=http://Proxy-Server-Adresse:Hafen/
Melden Sie sich erneut an, um die obigen Einstellungen wiederzugeben.
[Was ist jetzt mit NVIDIA Docker los? (Version 19.11) Bonusartikel](https://qiita.com/ksasaki/items/b20a785e1a0f610efa08#Bonus-nvidia-Install Treiber).
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.0.3/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.3-450.51.06-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-0-local_11.0.3-450.51.06-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda-drivers
Nach der Installation als "sudo reboot" neu starten.
Melden Sie sich erneut an und führen Sie "nvidia-smi" aus, um dies zu überprüfen.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... On | 00000000:01:00.0 Off | N/A |
| 32% 42C P8 22W / 250W | 1MiB / 11011MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 GeForce RTX 208... On | 00000000:02:00.0 Off | N/A |
| 31% 39C P8 21W / 250W | 1MiB / 11019MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
Wenn Sie Anaconda verwenden möchten, müssen Sie Anaconda nicht in Ihr System aufnehmen. Miniconda geht es gut. Weil niemand Anaconda aktualisiert, das auf dem System installiert ist → niemand verwendet es.
Im Folgenden werden wir Miniconda auf dem System installieren, dies dient jedoch nur zum Erstellen Ihrer eigenen Umgebung mit dem Befehl conda.
Sie müssen die Miniconda nicht separat in das System einbauen, sondern können sie bei sich zu Hause unterbringen.
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sudo sh Miniconda3-latest-Linux-x86_64.sh -p /usr/local/miniconda3 -s -b
Wenn Sie dies tun, werden Sie in Schwierigkeiten geraten, da der Eigentümer des .conda-Verzeichnisses unter Ihrer Startseite root ist. Gehen Sie also wie folgt vor, um es in Ihr Verzeichnis zu ändern:
sudo chown -R $USER ~/.conda
Jeder Benutzer fügt der Einstellungsdatei direkt unter seinem Zuhause Folgendes hinzu. Jetzt können Sie den Befehl conda verwenden.
.bash_profile
. /usr/local/miniconda3/etc/profile.d/conda.sh
Wenn Sie [PyTorch](Erstellen einer # PyTorch-Umgebung) oder [TensorFlow](Erstellen einer # TensorFlow-Umgebung) verwenden können, können Sie diesen Abschnitt überspringen und ihn entsprechend in das Jupyter-Notizbuch einfügen.
Erstellen Sie mit dem Befehl conda Ihre eigene Anaconda-Umgebung. Ich habe es myanaconda genannt.
conda create -n myanaconda python=3.6 anaconda
Sobald Sie eine Anaconda-Umgebung haben, aktivieren Sie diese.
conda activate myanaconda
Jetzt, da ich in meiner eigenen Umgebung bin, kann ich mit der Pip-Installation machen, was ich will.
Befolgen Sie die Schritte unter Schnellstart vor Ort in Offiziell. Es ist nicht erforderlich, CUDA oder cuDNN im Voraus zu installieren.
Erstellen Sie mit dem Befehl conda Ihre eigene PyTorch-Umgebung. Ich nannte es mytorch.
conda create -n mytorch pytorch torchvision cudatoolkit=10.2 -c pytorch
Wenn Sie eine neue Umgebung haben, aktivieren Sie diese.
conda activate mytorch
Versuchen Sie zum Testen, Deep Convolution Generative Adversarial Networks (https://github.com/pytorch/examples/tree/master/dcgan) auszuführen.
git clone https://github.com/pytorch/examples.git
cd examples/dcgan
pip install -r requirements.txt
python main.py --dataset cifar10 --dataroot /var/tmp/cifar10 --cuda
Wenn Sie gerne viele seltsame Bilder sehen, sind Sie fertig.
Dieser Abschnitt enthält den Inhalt von Tensorflow-GPU-Installation leicht gemacht: Verwenden Sie Conda anstelle von Pip. Es ist nicht erforderlich, CUDA oder cuDNN im Voraus zu installieren.
Erstellen Sie mit dem Befehl conda Ihre eigene TensorFlow-Umgebung. Dies ist eine Testumgebung für TensorFlow 2, daher habe ich sie tf2 genannt.
conda create -n tf2 tensorflow-gpu
Wenn Sie eine neue Umgebung haben, aktivieren Sie diese.
conda activate tf2
Führen Sie zum Testen [TensorFlow 2.0 Tutorial 01: Grundlegende Bildklassifizierung] aus (https://lambdalabs.com/blog/tensorflow-2-0-tutorial-01-image-classification-basics/).
git clone https://github.com/lambdal/TensorFlow2-tutorial.git
cd TensorFlow2-tutorial/01-basic-image-classification/
python resnet_cifar.py
Öffnen Sie ein anderes Terminal, melden Sie sich remote mit ssh an und überprüfen Sie die GPU-Nutzung mit nvidia-smi -l. Es scheint, dass TensorFlow 2 alle GPUs gleichzeitig verwenden kann! Oh! Es fühlt sich gut an.
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06 Driver Version: 450.51.06 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... On | 00000000:01:00.0 Off | N/A |
| 40% 75C P2 218W / 250W | 10952MiB / 11011MiB | 75% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 GeForce RTX 208... On | 00000000:02:00.0 Off | N/A |
| 38% 70C P2 216W / 250W | 10960MiB / 11019MiB | 77% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 4977 C python 10949MiB |
| 1 N/A N/A 4977 C python 10957MiB |
+-----------------------------------------------------------------------------+
Dieser Abschnitt basierte im Allgemeinen auf [Installieren von NVIDIA Docker (neueste Version)](https://qiita.com/ksasaki/items/b20a785e1a0f610efa08#nvidia-docker-Wie installiere ich die neueste Version)?
Folgen Sie hier.
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Die Methode wird in Control Docker mit systemd beschrieben.
Führen Sie die folgenden Schritte aus, um ein Verzeichnis mit dem Namen docker.service.d unter / etc / systemd / system / und eine Datei mit dem Namen http-proxy.conf darunter zu erstellen.
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf
http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://Proxy-Server-Adresse:Hafen/" "HTTPS_PROXY=http://Proxy-Server-Adresse:Hafen/" "NO_PROXY=localhost,127.0.0.1,.lab"
Starten Sie Docker neu, damit die Einstellungen wirksam werden.
sudo systemctl daemon-reload
sudo systemctl restart docker
Laden Sie bisher das Hallo-Welt-Image von Docker Hub herunter und führen Sie es aus.
sudo docker run hello-world
Wenn Sie eine solche Nachricht erhalten, ist dies in Ordnung.
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-docker2
sudo systemctl restart docker
Befolgen Sie die Anleitung, um Folgendes zu tun: Es ist in Ordnung, wenn die Ausgabe von nvidia-smi ausgegeben wird.
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
sudo usermod -aG docker `whoami`
Testen Sie, ob Sie den Docker-Befehl nach einmaligem Neustart mit "sudo reboot" als Nicht-Root ausführen können.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Versuchen Sie, [Tacotron 2 und WaveGlow v1.10 für PyTorch] auszuführen (https://github.com/NVIDIA/DeepLearningExamples/tree/master/PyTorch/SpeechSynthesis/Tacotron2).
git clone https://github.com/NVIDIA/DeepLearningExamples.git
cd DeepLearningExamples/PyTorch/SpeechSynthesis/Tacotron2
bash scripts/prepare_dataset.sh
bash scripts/docker/build.sh
Rufen Sie die Docker-Umgebung mit dem folgenden Befehl auf.
bash scripts/docker/interactive.sh
Vorverarbeitung
bash scripts/prepare_mels.sh
Der Rest lernt, aber in meiner Umgebung wird es aufgrund des Mangels an GPU-Speicher fallen, also habe ich den Ort umgeschrieben, um die Stapelgröße von scripts / train_tacotron2.sh auf -bs 32
anzugeben.
bash scripts/train_tacotron2.sh
Es braucht Zeit, also hörte ich nach ungefähr 100 Epochen mit Strg + C auf.
Synthesetest. Ich habe WaveGlow nicht als Modell trainiert, sondern das trainierte heruntergeladen und verwendet. Der folgende Befehl erstellt ein synthetisches Audio audio_0_.wav unter Ausgabe.
python inference.py --tacotron2 output/checkpoint_Tacotron2_last.pt --waveglow waveglow_1076430_14000_amp --wn-channels 256 -o output/ -i phrases/phrase.txt --fp16
Es stellt sich heraus, dass für die Einrichtung eines PCs für Deep Learning keine Installation von CUDA oder cuDNN erforderlich ist. Die Umgebung für Deep Learning kann von jedem Benutzer in seiner eigenen Conda-Umgebung vorbereitet oder Docker verwendet werden. Wenn umgekehrt CUDA oder cuDNN im System installiert sind, wird der Betrieb aufgrund von Versionsproblemen schwierig. Ich fühle mich so viel besser.
Recommended Posts