Les instances de GPU AWS sont basées sur HVM. HVM est une abréviation de Hardware Virtual Machine. En d'autres termes, les instances de GPU AWS ne sont pas connectées à des GPU physiques, mais à des GPU virtuels. (Je pense, mais veuillez signaler si vous faites une erreur.)
Créez une instance dans l'est des États-Unis moins cher (nord de la Virginie). ** 0,65 $ de l'heure. ** (au 23 septembre 2015) C'est plus cher que les micro-instances qui l'entourent, alors n'oubliez pas de le supprimer lorsque vous avez terminé! !!
Créez une instance en suivant cette procédure.
Après la création, vous pouvez vérifier si le GPU est connecté et si le pilote est installé avec la commande suivante.
nvidia-smi -q | head
(Vous pouvez tous les afficher, mais vous pouvez voir la version du pilote et le nombre de connexions dans les 10 premières lignes.)
L'AMI créée contient python et pip depuis le début, installez donc les packages nécessaires pour chainer. (Si vous avez besoin de sudo de temps en temps, ajoutez-le comme il convient.)
pip install numpy
pip install chainer
Le paramètre PATH pour utiliser CUDA à partir du chaîneur est le suivant pour l'AMI créée cette fois.
export PATH=/opt/nvidia/cuda/bin:$PATH
export LD_LIBRARY_PATH=/opt/nvidia/cuda/lib64:$LD_LIBRARY_PATH
S'il n'y a pas d'erreur avec la commande suivante, tout va bien.
import chainer
from chainer import cuda
cuda.check_cuda_available()
cuda.get_device(0).use()
Exécutez StyleNet, qui est le sujet de cet article, sur une instance GPU.
Installez Git et téléchargez style-gogh. Téléchargez également le modèle caffe de NIN. Renommé le fichier caffemodel en ***. Caffemodel.
sudo yum install git
git clone https://github.com/mattya/chainer-gogh
wget https://www.dropbox.com/s/0cidxafrb2wuwxw/nin_imagenet.caffemodel?dl=1
mv nin_imagenet.caffemodel?dl=1 nin_imagenet.caffemodel
Et si vous exécutez la commande suivante, cela fonctionnera. Je voulais afficher le temps de calcul, donc je l'ai modifié pour que le temps de calcul soit affiché en sortie sur la console pour chaque génération. Le dernier nombre dans la sortie de la console est le temps écoulé depuis l'exécution du script. (Les quatre autres nombres sont, dans l'ordre, le nombre de générations, le numéro du calque qui a été produit, l'écart par rapport à l'image de contenu et l'écart par rapport à l'image de style) Pour plus d'informations, veuillez lire le commentaire et le code.
load model... nin_imagenet.caffemodel
('image resized to: ', (1, 3, 435, 435))
('image resized to: ', (1, 3, 435, 428))
0 0 0.0 131.536987305 100.341277122
0 1 0.0 16.9276828766 101.161045074
0 2 5.29387950897 0.132858499885 101.5359869
0 3 0.530761241913 0.00741795729846 102.120722055
1 0 0.0 123.52784729 178.474854946
1 1 0.0 15.2022619247 179.293597937
1 2 5.03846788406 0.123586334288 179.670742035
1 3 0.470058709383 0.00525630777702 180.251745939
2 0 0.0 110.198478699 255.28085494
2 1 0.0 12.6540279388 256.074426889
2 2 4.90201044083 0.113212890923 256.448594093
2 3 0.431303560734 0.00383871118538 257.029608965
3 0 0.0 92.4355773926 332.629327059
3 1 0.0 10.1973600388 333.420332909
3 2 4.86908721924 0.108661472797 333.790095091
3 3 0.409945964813 0.00298984581605 334.37262392
4 0 0.0 72.380569458 410.049565077
4 1 0.0 9.32985496521 410.848016024
4 2 4.92668151855 0.117410235107 411.218291044
4 3 0.398817956448 0.00246199313551 411.802879095
5 0 0.0 53.6025543213 486.892725945
5 1 0.0 11.4278764725 487.710140944
5 2 5.04112100601 0.141176745296 488.083660126
5 3 0.39475902915 0.00214517721906 488.664105892
Il faut environ 80 secondes pour transformer une génération.
load model... nin_imagenet.caffemodel
('image resized to: ', (1, 3, 435, 435))
('image resized to: ', (1, 3, 435, 428))
0 0 0.0 131.557006836 22.7398509979
0 1 0.0 16.9326477051 22.7434000969
0 2 5.2936425209 0.13280403614 22.7467870712
0 3 0.529067575932 0.00738066714257 22.7503979206
1 0 0.0 123.602386475 41.3092479706
1 1 0.0 15.211555481 41.3119618893
1 2 5.04172039032 0.123632088304 41.3146359921
1 3 0.469296246767 0.00526729598641 41.3175621033
2 0 0.0 110.336387634 41.394990921
2 1 0.0 12.6709651947 41.3977220058
2 2 4.90853118896 0.113566093147 41.4003748894
2 3 0.43169811368 0.00389048201032 41.4033150673
3 0 0.0 92.6167144775 41.4806849957
3 1 0.0 10.2161283493 41.4833440781
3 2 4.87660598755 0.109313540161 41.4860169888
3 3 0.41028663516 0.00304215308279 41.4892690182
4 0 0.0 72.5410461426 41.566724062
4 1 0.0 9.3198633194 41.5694000721
4 2 4.93378400803 0.118150554597 41.5720379353
4 3 0.399007946253 0.0025086470414 41.5749340057
5 0 0.0 53.6465911865 41.6522700787
5 1 0.0 11.3575658798 41.6549448967
5 2 5.0474896431 0.141661688685 41.6576039791
5 3 0.394712120295 0.00219127023593 41.6604459286
** Environ 0,1 seconde pour activer une génération. Explosion du GPU **
Cette fois, je voulais vérifier la procédure de création d'une instance AWS et la comparaison de vitesse entre le CPU et le GPU, donc StyleNet ne s'est formé qu'une dizaine de fois, mais étant donné qu'il s'entraîne 5000 fois, CPU ・ ・ ・ 80 * 5000 = 40 000 [s] ≒ environ 4,6 jours GPU ・ ・ ・ 0,1 * 5000 = 500 [s] Et le temps change tellement. En pensant normalement, les gens disent souvent qu'ils n'utilisent pas de GPU. GPGPU J'étudierai plus.
http://qiita.com/pyr_revs/items/e1545e6f464b712517ed http://yamakatu.github.io/blog/2014/07/05/gpgpu/ http://www.gdep.jp/page/view/248
Recommended Posts