[PYTHON] (Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960

introduction

Je me suis souvenu que mon propre PC de bureau, que j'utilisais rarement récemment, avait un GPU (GeForce GTX 960) fabriqué par NVIDIA, j'ai donc pensé à créer un environnement où l'apprentissage en profondeur peut être fait en l'utilisant. .. Malgré le GPU que j'ai acheté il y a 5 ans, la vitesse de traitement était extrêmement rapide et j'ai été surpris de la beauté du GPU (rires). msi GeForce GTX960 Gaming 2G MGSV

environnement

Les choses nécessaires

Confirmation de version

Pour utiliser Tensorflow / Keras dans un environnement GPU, vous devez faire correspondre chacune des exigences ci-dessus avec la version correspondante. Il existe une table correspondante sur le site Tensorflow, alors assurez-vous de la vérifier. En gros, je pense que vous devez installer la version correspondante en fonction de la version de Tensorflow. Si, pour une raison quelconque, vous ne spécifiez pas la version, la dernière version est OK. Au moment de la publication (2020/03/21), 2.0.0 est la dernière version, nous allons donc la construire avec 2.0.0. matching_table.png

Créer un environnement Conda et installer Tensorflow-gpu

Si la version CPU et la version GPU de Tensorflow sont mélangées, il semble que la version CPU soit automatiquement sélectionnée, alors créez un nouvel environnement.

cmd


> conda create -n tf200gpu Python=3.6.4

Une fois créé, activez l'environnement et installez Tensorflow-gpu.

cmd


> conda activate tf200gpu
(tf200gpu)> pip install tensorflow-gpu==2.0.0

↓ Si vous obtenez cette erreur, reportez-vous à l'article suivant

ERROR: cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

Une fois l'installation terminée, vérifiez ce qui suit avec pip list. (Même si vous exécutez import tensorflow``` en Python à ce stade, une erreur se produira car CUDA / cuDNN n'est pas inclus.)

Installation de Keras

Je pense que Keras peut être installé sans aucun problème. La version 2.3.1 est incluse dans mon environnement.

cmd


(tf200gpu)> pip install keras

Comme avec Tensorflow, vérifiez si l'installation est effectuée avec pip list```.

Installation de Visual Studio C ++ 2017

Obtenez et installez Visual Studio qui correspond à votre version de Tensorflow à partir du site de téléchargement Microsoft (https://visualstudio.microsoft.com/en/vs/older-downloads/). Cette fois, ce sera 2017, alors installez Visual Studio Community 2017. Cochez «Développement de bureau à l'aide de charges de travail C ++» lors de l'installation. visualstudio.png

(Cela prend un certain temps ...)

Installez le pilote NVIDIA

Sélectionnez le produit sur site de téléchargement NVIDIA et obtenez le programme d'installation. Pour les autres cartes graphiques, changez en conséquence. nvidia_driver.png Si vous ne faites rien de spécial et continuez d'appuyer sur "Suivant", l'installation devrait être terminée sans problème.

Installation de CUDA

CUDA est une plate-forme de calcul parallèle à usage général pour les GPU développés et fournis par NVIDIA. Obtenez et installez le programme d'installation à partir du site de téléchargement de CUDA Toolkit (https://developer.nvidia.com/cuda-toolkit-archive). Vous devez créer un compte gratuit pour obtenir l'installateur, alors faites un gâchis. Cette fois, installez `` CUDA Toolkit 10.0 ''. Sélectionnez le type et la version du système d'exploitation, puis sélectionnez exe (réseau). (Sélectionnez local lors de l'installation sur un PC qui ne peut pas se connecter à Internet) cudatoolkit.png

Après le téléchargement, démarrez le programme d'installation et appuyez et maintenez "Suivant" comme pilote pour installer.

Installation de cuDNN

Ensuite, installez cuDNN, une bibliothèque pour le Deep Learning publiée par NVIDA. Vous aurez également besoin d'un compte ici, veuillez donc vous connecter avec le compte que vous avez créé lorsque vous étiez chez CUDA. Cette fois, récupérez 7.4.2 pour CUDA 10 '' sur [site de téléchargement cuDNN](https://developer.nvidia.com/rdp/cudnn-download). Si vous cochez «J'accepte les termes du contrat de licence du logiciel cuDNN», plusieurs options vous seront proposées. Si vous ne trouvez pas la version souhaitée, cliquez sur "Versions cuDNN archivées" dans le cadre rouge pour voir les versions précédentes. ![cudnn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542930/6989f125-76ce-93de-a343-32362d760b02.png) Lorsque vous décompressez le zip téléchargé, vous trouverez trois dossiers, bin, include et lib, et un fichier texte appelé NVIDIA_SLA_cuDNN_Support.txt. Ouvrez C: \ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v.10.0 '' dans l'Explorateur Windows, et il y a des dossiers bin, include, lib de la même manière, donc dans le dossier téléchargé L'installation est terminée en copiant et en collant le contenu dans des dossiers portant le même nom. Des privilèges d'administrateur peuvent vous être demandés, veuillez donc les autoriser.

Vérifiez si le GPU est reconnu

Ceci termine le système d'installation. Pour voir si le GPU est correctement reconnu, essayez ce qui suit à l'invite de commande:

cmd


(tf200gpu)> python -c "from tensorflow.python.client import device_lib;print(device_lib.list_local_devices())"

Il est reconnu correctement ...! !! checkgpu.png

Faisons le!

Ensuite, j'ai essayé de m'entraîner en utilisant Tensorflow-gpu ... mais cela a été bloqué par l'erreur suivante.

tensorflow.python.framework.errors_impl.UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

Quand j'ai évoqué cet article, ni cudatooklit ni cudnn n'apparaissaient sur la liste des condas ... Donc, quand j'ai essayé conda install cudnn '', les candidats sont sortis, donc je vais l'installer. Au fait, il semble que vous puissiez installer à la fois cudatoolkit et cudnn avec `` conda install cudnn```. Installé ci-dessus:

J'ai de nouveau exécuté le code d'apprentissage et cela a bien fonctionné sur le GPU! !!

J'ai installé CUDA et cuDNN deux fois, donc je ne suis pas sûr que ce soit la bonne méthode (et la version est différente), mais cela fonctionne pour le moment (rires). Je mettrai à jour l'article si j'ai des problèmes à l'avenir ou trouverai la bonne manière! (Si vous êtes familier avec cela, veuillez nous le faire savoir dans les commentaires ~ (´; ω; `))

résultat

Mesurons avec le code Python suivant pour l'apprentissage effectué par un certain programme de formation en ligne. Il s'agit du code d'apprentissage du programme de reconnaissance d'image qui classe l'image d'entrée en trois classes à l'aide de CNN. En tant que données d'image pour l'entraînement, chargez celle enregistrée à l'avance au format .npy. J'ai essayé de former 157 images de 50 x 50 pixels (à mi-chemin), taille de lot 32, époque 100 ...

Processor Time
CPU 0:01:22.239975
GPU 0:00:15.542190

Le GPU est environ 5,4 fois plus rapide. (À propos, le processeur installé est Intel Core i5-6600K à 3,5 GHz)

train.py


import keras
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.utils import np_utils
import numpy as np
import datetime

classes = ["class1", "class2", "class3"]
num_classes = len(classes)
image_size = 50

def main():
    X_train, X_test, y_train, y_test = np.load("./data.npy", allow_pickle=True)
    X_train = X_train.astype("float") / 256
    X_test = X_test.astype("float") / 256
    y_train = np_utils.to_categorical(y_train, num_classes)
    y_test = np_utils.to_categorical(y_test, num_classes)

    model = model_train(X_train, y_train)
    model_eval(model, X_test, y_test)

def model_train(X, y):
    model = Sequential()
    model.add(Conv2D(32, (3, 3), padding='same', input_shape=X.shape[1:]))
    model.add(Activation('relu'))
    model.add(Conv2D(32, (3, 3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))
    
    model.add(Conv2D(64, (3, 3), padding='same'))
    model.add(Activation('relu'))
    model.add(Conv2D(64, (3, 3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(512))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(3))
    model.add(Activation('softmax'))

    opt = keras.optimizers.adam(lr=0.0001, decay=1e-6)
    
    model.compile(
        loss='categorical_crossentropy',
        optimizer=opt,
        metrics=['accuracy']
    )

    model.fit(X, y, batch_size=32, epochs=100)

    return model

def model_eval(model, X, y):
    scores = model.evaluate(X, y, verbose=1)
    print('Test Loss: ', scores[0])
    print('Test Accuracy: ', scores[1])

if __name__ == "__main__":
    start_time = datetime.datetime.now()
    main()
    end_time = datetime.datetime.now()
    print("Time: " + str(end_time - start_time))

Recommended Posts

(Maintenant) Construisez un environnement GPU Deep Learning avec GeForce GTX 960
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Créer un environnement d'apprentissage automatique
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
Créez un environnement d'apprentissage automatique scikit-learn avec VirtualBox et Ubuntu
Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Créez un environnement d'API rapide avec docker-compose
[Linux] Créer un environnement Jenkins avec Docker
Créez un environnement virtuel pour python avec pyenv
Créez un environnement Python moderne avec Neovim
Construction d'environnement AI / Machine Learning avec Python
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Créez rapidement un environnement python pour le Deep Learning / Data Science (Windows)
Créez un environnement d'apprentissage pour le «Deep learning from scratch» avec Cloud9 (jupyter miniconda python3)
Création d'un environnement d'apprentissage automatique avec le serveur Tellus GPU (Sakura High-Power Computing)
Créer un environnement de développement de langage C avec un conteneur
Créez un environnement WardPress sur AWS avec Pulumi
Créez un environnement python avec ansible sur centos6
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de construction python3 avec Sublime Text3
Créez un environnement Django avec Vagrant en 5 minutes
[Memo] Créez un environnement virtuel avec Pyenv + anaconda
Créez un environnement virtuel avec pyenv et venv
Créer un environnement de développement Django à l'aide de Doker Toolbox
Construire un environnement Python avec OSX Elcapitan
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'exécution python avec VS Code
Créez un environnement python pour apprendre la théorie et la mise en œuvre de l'apprentissage profond
Une histoire de prédiction du taux de change avec Deep Learning
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement de développement avec Poetry Django Docker Pycharm
Une scène où le GPU est utile pour le deep learning?
Construire un environnement Django pour Win10 (avec espace virtuel)
Créez un environnement d'apprentissage automatique à partir de zéro avec Winsows 10
Windows10 (x64) Créer nativement un environnement d'apprentissage automatique
Construire un environnement de calcul numérique avec pyenv et miniconda3
Créez un "bot qui vous informe des actrices audiovisuelles aux visages similaires" grâce à l'apprentissage en profondeur
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV
Créez un environnement d'analyse de données avec Kedro + MLflow + Github Actions
Créer un environnement d'étude d'apprentissage automatique Python avec macOS Sierra
Créer un environnement d'apprentissage automatique sur Mac (pyenv, deeplearning, opencv)
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Deep Learning Gaiden ~ Programmation GPU ~
Créer des pipelies Azure avec Azure DevOps dans un environnement auto-hébergé Linux
Créez un environnement de développement Go avec les conteneurs distants de VS Code
Créez un environnement pour "Deep Learning from scratch" avec Docker
Créer un environnement LAMP [CentOS 7]
Apprentissage profond du noyau avec Pyro
Essayez le Deep Learning avec FPGA
Créer un environnement python3 avec ubuntu 16.04
Construire un environnement python avec direnv
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) avec PyCharm
Créez un environnement de développement confortable avec VSCode x Remote Development x Pipenv
Comment créer un environnement de développement de la série Python2.7 avec Vagrant
Créer un environnement python avec pyenv (OS X El Capitan 10.11.3)
Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)
Créer une application Todo avec Django ① Créer un environnement avec Docker