[PYTHON] Créez votre propre PC pour un apprentissage en profondeur

Je laisserai un mémorandum de mon propre PC.

Enfin, je décrirai comment installer Ubuntu et créer un environnement d'apprentissage en profondeur avec docker.

table des matières

  1. Découvrez comment créer votre propre PC
  2. Assemblez le PC
  3. Construction de l'environnement

1. Découvrez comment créer votre propre PC

――Je me suis référé aux sites suivants.

Il semble qu'il vaut mieux décider des spécifications en fonction de l'application.

À la suite de l'examen, nous avons effectué la configuration suivante.

Ce que j'ai fait

** CPU ** [Core i7-9700K](https://www.amazon.co.jp/%E3%82%A4%E3%83%B3%E3%83%86%E3%83%AB-Corei7 -9700K-INTEL 300% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-Chipset% E3% 83% 9E% E3% 82% B6% E3% 83% BC% E3 % 83% 9C% E3% 83% BC% E3% 83% 89% E5% AF% BE% E5% BF% 9C-BX80684I79700K% E3% 80% 90BOX% E3% 80% 91 / dp / B07HHN6KBZ) 45000 yens ** GPU ** GeForce RTX2080Ti 11GB GamingPro OC 89 000 yens (utilisé) ** Carte mère ** [ASUS PRIME Z390-A](https://www.amazon.co.jp/Intel-LGA1151-%E3%83%9E%E3%82%B6%E3%83%BC%E3% 83% 9C% E3% 83% BC% E3% 83% 89-PRIME-Z390 / dp / B07HCY7K9L) 22000 yens ** Mémoire ** Kingston FURY RGB (DDR4 2666MHz 16GBx2) 20 000 yens ** Cas ** [O11 DYNAMIC WHITE](https://www.amazon.co.jp/DYNAMIC%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-ATX % E5% AF% BE% E5% BF% 9CPC% E3% 82% B1% E3% 83% BC% E3% 82% B9-% E5% BC% B7% E5% 8C% 96% E3% 82% AC% E3% 83% A9% E3% 82% B9% E3% 83% 91% E3% 83% 8D% E3% 83% AB-DYNAMIC-% E6% 97% A5% E6% 9C% AC% E6% AD% A3 % E8% A6% 8F% E4% BB% A3% E7% 90% 86% E5% BA% 97% E5% 93% 81 / dp / B07C88K4KP / ref = sr_1_8? __ mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & crid = 126X9EAEQS38A & mots-clés = pc% E3% 82% B1% E3% 83% BC% E3% 82% B9% 2Be-atx & qid = 1572082964 & s = ordinateurs & sprefix = PC% E3% 82% B1% E3% 83% BC% E3% 82% B9% 2Be% 2C ordinateurs% 2C234 & sr = 1-8 & th = 1) 14000 yens ** Alimentation ** [Corsair HX1000i](https://www.amazon.co.jp/Corsair-HX1000i-80PLUS-PLATINUM-CP-9020074-JP/dp/B00NV3NN1G/ref=sr_1_1?__mk_ja_JP=%E3%82 % AB% E3% 82% BF% E3% 82% AB% E3% 83% 8A & keywords = Corsair + HX1000i & linkCode = sl2 & linkId = 7e74aeede033623f3854a6a093ea43d9 & qid = 1572077086 & sr = 8-1) 25 000 yens ** SSD ** [SSD Intel 660P](https://www.amazon.co.jp/dp/B07GCL6BR4/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=jisakuhibi0b-22&linkId=fd963ff0cd812b7122e38caf_fd963ff0cd812b71264e38cJaf0cd812b71264e38cJaf6a558 ** HDD ** SEAGATE ST6000DM003 11 000 yens ** Ventilateur de refroidissement à eau simple ** [Novonest CC240RGB] (https://www.amazon.co.jp/gp/product/B07JFVV9VB/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1) 7 000 yens ** Carte LAN sans fil ** Ziyituod ZYT-WIE9260 4 000 yens ** Ventilateur de boîtier ** Ubanner RB001 4500 yens

** Total ** 254 500 yens

Je l'ai acheté à "Non!" Sans faire beaucoup de recherches préliminaires, mais j'aurais dû enquêter davantage ** comme décrit plus tard **.

D'autres choses que j'ai achetées

** Contrôleur de ventilateur RVB ** Fractal Design Adjust R1 3 000 yens

J'ai acheté une carte mère qui ne prend pas en charge la norme RVB adressable, mais j'ai fini par l'acheter parce que j'ai acheté un simple ventilateur refroidi à l'eau pour RVB adressable. (Attention à ne pas faire la même erreur ...)

** Graisse thermique ** ThermalGrizzly 750 yens

Points de considération / réflexion

--GPU recherche Titan RTX, Tesla V100, mais c'est cher et je n'ai pas l'impression qu'il est épuisé.

«Honnêtement, si vous ne faites que passer à l'apprentissage profond, vous devriez pouvoir le rendre moins cher **.

Et ainsi de suite, il semble que divers déchets puissent être sauvés.

2. Assemblez le PC

En lisant attentivement les instructions sur la carte mère, je l'ai assemblé en référence à here.

  1. Installez le CPU sur la carte mère
  2. Fixez le refroidisseur du processeur (simple refroidissement par eau cette fois) au mazabo
  3. Installation de la mémoire
  4. Installation du SSD
  5. Connectez l'alimentation et vérifiez le fonctionnement
  6. Fixez le mazabo au boîtier
  7. Fixez un ventilateur de refroidissement à eau au boîtier
  8. Installation du bloc d'alimentation
  9. Installation du disque dur
  10. Installation du GPU
  11. Installation de la carte LAN sans fil
  12. Installation du ventilateur du boîtier
  13. Câblage
  14. Mettez sous tension et vérifiez le fonctionnement (vérifiez que la température du processeur et la vitesse du ventilateur sont dans les valeurs normales)
  15. ** Satisfait de la belle LED, buvez de la bière et dormez **
pc_image

3. Construction de l'environnement

3.1 Installer Ubuntu 18.04.4 LTS

-Je l'ai installé en se référant à ici.

--Alors, connectez-le d'abord au terminal de Mazabo ou [Disable nouveau](https://qiita.com/k_ikasumipowder/items/5e88ec45f958c35e05ed#nouveau%E3%81%AE%E7%84%A1%E5 % 8A% B9% E5% 8C% 96).

3.2 Installation du pilote graphique

Si vous avez installé Ubuntu en japonais, changez le japonais comme les documents en anglais.

terminal


LANG=C xdg-user-dirs-gtk-update

Mettre à jour le package

terminal


sudo apt-get update
sudo apt-get upgrade

Sélectionnez et téléchargez le pilote correspondant à partir de Téléchargement du pilote NVIDIA

Installez ce dont vous avez besoin pour exécuter le fichier téléchargé


sudo apt-get install build-essential

Le pilote graphique peut planter lors de l'installation du pilote, donc juste au cas où, passez à CUI avec Ctrl + Alt + F1. (Il semble qu'il puisse être commuté par Ctrl + Alt + F2 etc. Si cela ne fonctionne toujours pas, essayez de changer la touche de fonction sur 3 ~ 12) À ce stade, spécifiez ** - no-opengl-files **, ** - no-libglx-indirect **, ** - dkms ** Si vous ne spécifiez pas --no yeah, vous serez coincé dans la boucle de connexion, et si vous n'avez pas assez de --dkms, le pilote nvidia sera désactivé à chaque redémarrage.

Exécutez le fichier téléchargé


chmod +x ./NVIDIA-Linux-x86_64-440.31.run
sudo ./NVIDIA-Linux-x86_64-440.31.run --no-opengl-files --no-libglx-indirect --dkms

Redémarrer


reboot

(Si le moniteur est connecté à la carte mère, connectez-le au terminal de Gravo.)

Vérification du fonctionnement du conducteur


nvidia-smi

Terminé lorsque les informations GPU sont affichées

3.3 Installation du docker

Installez selon Officiel. Depuis le 4 novembre 2019, les commandes suivantes ont été exécutées.

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 apt-key fingerprint 0EBFCD88
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

Paramètres pour exécuter la commande docker sans sudo

sudo groupadd docker
sudo gpasswd -a $USER docker
sudo service docker restart
reboot

3.4 Installation de nvidia-docker

Installez selon NVIDIA Container Toolkit.

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

Si vous pouvez voir les informations du GPU avec la commande suivante, cela réussit.

docker run --gpus all --rm nvidia/cuda nvidia-smi

3.5 Opération confirmée avec l'image du docker

Déplaçons image du docker officiel tensorflow.

docker pull tensorflow/tensorflow:1.14.0-gpu-py3-jupyter
docker run --gpus all -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:1.14.0-gpu-py3-jupyter

Lorsque jupyter démarre, connectez-vous à localhost: 8888 avec un navigateur

Vérifiez si vous pouvez voir le GPU depuis tensorflow

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices()) 

Si vous pouvez voir le GPU comme indiqué ci-dessous, vous avez réussi.

output


[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14740279898702566726
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 10721268506091676345
physical_device_desc: "device: XLA_GPU device"
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 16980550380766421160
physical_device_desc: "device: XLA_CPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 10512030106
locality {
  bus_id: 1
  links {
  }
}
incarnation: 10531017116676756003
physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5"
]

3.6 MNIST

Vous pouvez enfin aller au plus profond!

Tournons MNIST avec un simple CNN.

!pip install keras

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, MaxPooling2D, Conv2D
from keras.callbacks import TensorBoard

(X_train,y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train.reshape(60000,28,28,1).astype('float32')
X_test = X_test.reshape(10000,28,28,1).astype('float32')

X_train /= 255
X_test /= 255

n_classes = 10
y_train = keras.utils.to_categorical(y_train, n_classes)
y_test = keras.utils.to_categorical(y_test, n_classes)

model = Sequential()
model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=(28,28,1)) )
model.add(Conv2D(64, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.5))
model.add(Flatten())          
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(n_classes, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

import time
start = time.time()

model.fit(X_train, y_train, batch_size=128, epochs=15, verbose=1,
          validation_data=(X_test,y_test))

elapsed_time = time.time() - start
print ("elapsed_time:{0}".format(elapsed_time) + "[sec]")

output


elapsed_time:65.47733306884766[sec]

Le GPU de Google Colaboratory est attribué au hasard, mais lorsque j'ai soustrait P100, cela a pris 62 secondes.

C'est triste qu'un PC qui a utilisé plus de 200000 perd au profit du Colaboratory gratuit, mais il n'y a pas de limite de temps, la réponse est rapide et cela semble être un gros avantage de pouvoir se développer comme vous le souhaitez.

Recommended Posts

Créez votre propre PC pour un apprentissage en profondeur
Développez et gonflez votre propre ensemble de données Deep Learning
Apprentissage profond pour la formation composée?
[Python] Créez votre propre bot LINE
Créez votre propre manuel. [Linux] [homme]
Faites de l'art ASCII avec l'apprentissage en profondeur
Faites sourire les gens avec le Deep Learning
[AI] Apprentissage en profondeur pour le débruitage d'image
Introduction au Deep Learning (2) - Essayez votre propre régression non linéaire avec Chainer-
L'apprentissage en profondeur
[Apprentissage en profondeur] Détection de visage Nogisaka ~ Pour les débutants ~
À propos du traitement d'expansion des données pour l'apprentissage en profondeur
Mettez vos propres données d'image dans Deep Learning et jouez avec
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Lire et mettre en œuvre l'apprentissage résiduel profond pour la reconnaissance d'image
Créez rapidement votre propre module avec setuptools (python)
Apprentissage en profondeur Python
Apprentissage profond × Python
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Faites pour VB6.
python: utilisez votre propre classe pour numpy ndarray
J'ai installé le framework Deep Learning Chainer
Créez votre propre lecteur de musique avec Bottle0.13 + jPlayer2.5!
Créez votre propre Big Data en Python pour validation
Faire de l'application Python CUI une application pour Mac
Techniques pour comprendre la base des décisions d'apprentissage en profondeur
Essayez de mettre des LED dans votre propre PC (légèrement)
Apprendre en profondeur à l'expérience avec Python Chapitre 2 (Matériel pour une conférence ronde)
Personnalisez Jupyter Notebook: modifiez l'arrière-plan et les icônes
Une scène où le GPU est utile pour le deep learning?
Créez votre propre exception
Premier apprentissage profond ~ Lutte ~
Python: pratique du Deep Learning
Fonctions d'apprentissage en profondeur / d'activation
Apprentissage profond à partir de zéro
Deep learning 1 Pratique du deep learning
Renforcer l'apprentissage de la troisième ligne
Apprentissage profond / entropie croisée
Premier apprentissage profond ~ Préparation ~
Première solution d'apprentissage en profondeur ~
[AI] Apprentissage métrique profond
J'ai essayé le deep learning
Python: réglage du Deep Learning
Technologie d'apprentissage en profondeur à grande échelle
Essayez de faire une stratégie de blackjack en renforçant l'apprentissage (③ Renforcer l'apprentissage dans votre propre environnement OpenAI Gym))
Résumé de l'apprentissage RAPIDS
[Pour l'enregistrement] Système d'image Keras Partie 2: Laissez CNN juger en utilisant votre propre ensemble de données
Fonction d'apprentissage profond / softmax
Conseils pour gérer les entrées de longueur variable dans le cadre d'apprentissage en profondeur
Traduction japonaise du matériel pédagogique public du diplôme nano d'apprentissage profond
Créez un environnement pour "Deep Learning from scratch" avec Docker
Reconnaissez votre patron avec Deep Learning et masquez l'écran
Configurer AWS (Ubuntu 14.04) pour le Deep Learning (installer CUDA, cuDNN)
L'histoire d'un ingénieur directeur de 40 ans qui réussit "Deep Learning for ENGINEER"
Apprentissage par renforcement 23 Créez et utilisez votre propre module avec Colaboratory