SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Equipe IBM : Régis Cely, Samir Attmani, Thibaud Besson, Philippe Brogi
Proof of Concept Cloud PowerAI avec IBM Spectrum LSF
Bois-Colombes le 21 juin 2018
Exec Summary
Profil Applicatif
ArchitectureHW & SW
Migration des jeux d’essais (donnéeset programmes)versPower
Résultats obtenus
Spécificitéstechniquesà souligner
Architecturepréconiséepar IBM suite à l’étude de sizing
Profil Applicatif
Jeux d’essais envoyé par une école d’ingénieursFrançaise comprenant:
• un workloadlight MNIST sur frameworkPytorch
• un worloadmiddle : word language sur frameworkPytorch
• des applicationsmaisons horsframework
L’écolea fournil’ensembledes donnéesetdes codesdes jeux d’essais.
Architecture HW & SW chez IBM à Bois-Colombes
Stack Logiciel sur AC922 :
RedHat 7.5
PowerAI 1.5.1 (free)
LSF 10.1.0.3 (community edition / free)
Gcc 4.8.5
POWER9 AC922 / SMT 4
Frontal LSF
VM POWER8 S822L sur KVM
LSF Master/Client
jobs submission
RTM
(Add-on LSF)
cluster monitoring
/home/
/usr/share/lsf
9.128.137 .18
.190
etud1/
etud2/
etud3/
proftp/
prof/
NFSNFS
LSF Compute node
gpu1gpu0
10.10.8
.190
OpenBMC
Migration des jeux d’essais (donnéeset programmes)versPower
Résultats obtenus
Set-up du serveur AC922 avec 2 GPU :
• Installation RedHat 7.5
• Drivers Cuda
• Cuda Toolkit
• Environnement Anaconda 5.1 avec Python 2.7 & 3.5
• Installation LSF 10.1.0.3
Recompilation :
• Pytorch sur Power
• Du code maison (impératif de respecter les conventions des codes retour d’erreur)
Portabilité du code sur la technologie Power :
• Aucune erreur lors des compilations & Editions de lien
• Aucune erreur au runtime
• Aucune ligne de code modifiée
Résultats obtenus
Il est à noter que tous les jobs sont soumis aumêmeinstant,ce quin’est pas représentatif d’unLab de
l’école d’ingénieurs qui devrait lisser la chargemachine.
Pytorch MNIST:
1.Profiling unitaire de l’application Pytorch MNIST / Peu de GPU utilisée et peu de mémoire consommée sur les GPU
Low GPU memory usage 1 026MiB / 15 360MiB
Low GPU utilization ~ 7%
Elapsed time on V100 GPU 2min 15sec
2.Tests de la workload Pytorch MNIST sur GPU en mode partagé (limitation à 8 processes en // par GPU pour éviter
des erreurs Out Of Memory)
16 jobs soumis sur 2 GPUs / Elapsed : 2min 53sec (aucun job pending)
80 jobs soumis sur les 2 GPUs / Elapsed : 13min 22sec (gestion de file d’attente par LSF)
Résultats obtenus
Résultats obtenus
Word Language :
1.Profiling unitaire de l’application Word Language
Low GPU memory usage 1 490MiB / 15 360MiB
Medium+ GPU utilization ~ 68%
Elapsed time on V100 GPU 4min 22 sec
2.Tests de la workload Word Language sur GPU en mode partagé (limitation à 4 processes en // )
4 jobs soumis sur 2 GPUs / Elapsed : 6min 58sec
16 jobs soumis sur les 2 GPUs / Elapsed : 57min 42sec (gestion de file d’attente par LSF: 16 jobs running en //)
3.Tests de la workload Word Language sur GPU en mode partagé (4 jobs running à l’instant t / LSF management)
16 jobs soumis sur les 2 GPUs / Elapsed : 27min 47sec (gestion de file d’attente par LSF : 4 jobs running en //)
Avec 4 GPU on divisera ce temps par 2 soit : 13min 53 sec (gestion de file d’attente par LSF : 8 jobs running en //)
Et pour 64 jobs ce temps sera multiplié par 4 sur 4 GPU, à savoir : 56min.
Code maison :
Temps de traitement inférieur à 3 secondes pour l’ensemble des jobs (perceptron, logistic regression, ada boost)
Résultats obtenus
Spécificités techniques à souligner (1/3)
Gestions des GPUs par LSF : 2 modes de réservation (shared ou dedicated)
Shared : virtualisation de GPU
Permet de partager le GPU entre plusieurs processus. Attention cependant à l’utilisation mémoire du GPU.
A partir de LSF 10.1.0.6 (mai 2018), il est possible de définir la mémoire GPU que l’on souhaite réserver dans les
paramètres du JOB LSF.
Ex: #BSUB -gpu "num=1:mode=shared:mps=no:j_exclusive=no:gmem=1000M”
Pas testé dans le cadre du PoC mais validé sur le cluster à Montpellier
Dedicated : 1 GPU par processus/job
A noter, sur les applications maison, il est impératif de respecter les standards sur les codes retour :
EXIT_SUCCESS = 0
EXIT_FAILURE > 0
LSF est sensible au code retour d’une application et update le statut du job (ERROR or DONE) en fonction du code retour de l’application.
De plus il est possible de resoumettre un job automatiquement en fonction de son code retour.
Spécificités techniques à souligner (2/3)
Compilation de pytorchsur ppc64le
Install cmake version 3 and use alternatives to register both cmake and cmake3 configuration
$ yum install –y cmake3
$ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake 10 
--slave /usr/local/bin/ctest ctest /usr/bin/ctest 
--slave /usr/local/bin/cpack cpack /usr/bin/cpack 
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake 
--family cmake
$ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 
--slave /usr/local/bin/ctest ctest /usr/bin/ctest3 
--slave /usr/local/bin/cpack cpack /usr/bin/cpack3 
--slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 
--family cmake
Spécificités techniques à souligner (3/3)
Source NCCL (for Pytorch, we use the nccl provided by powerAI package)
$ source /opt/DL/nccl/bin/nccl-activate
$ export NCCL_ROOT_DIR=/opt/DL/nccl
$ export NCCL_LIB_DIR=/opt/DL/nccl/lib
$ export NCCL_INCLUDE_DIR=/opt/DL/nccl/include
Start the compilation
$ git clone --recursive https://github.com/pytorch/pytorch
$ cd pytorch
$ python setup.py install OR python setup.py bdist_wheel to generate whl package
(if whl package was generated, install it with pip install command)
Test the stack
$ python
>>> import torch
>>> torch.__version__
'0.5.0a0+c446269'
Architecture préconisée par IBM suite à l’étude de sizing (1/2)
Un frontal de connexion est nécessaire, il servira de nœud maître à LSF, il
hébergera le portail (LSF Application Center) et le monitoring (LSF Explorer à la
place de RTM) :
- Un serveur LC922 un socket 16 CPU 128 GB 2U
- PCIe3 LP 2-port 32Gb Fibre Channel Adapter
- Disques : 8 x Hdd 3.82 To en RAID5 avec spare : 23 466 GB
Speed gain 7x read speed, no write speed gain
Fault tolerance 1-drive failure
POWER9 AC922 / SMT 4
Nœud de calcul
(Compute Node)
LC922
Frontal LSF
Master Node LSF
(App Center & Explorer)
Stack Logiciel sur AC922 :
RedHat 7.5
PowerAI 1.5.1 (free)
LSF 10.1.0.6 Standard Edition
Une licence LSF suite : 1 cluster , 2 nodes & 80 users simultanés)
Stack Logiciel sur L922 : RedHat 7.5
Licensing model – IBM SpectrumLSF Suites
Suite for Enterprise
Suite for HPC
Suite for Workgroups
Ansible+RPM
Installer
SCF-CE
Application
Center
Standard
Edition
Explorer
Process
Manager
Data Manager
License
Scheduler
Enterprise
Scalability
Resource
Connector
LSF Standard Edition
Spectrum MPI
(Power & x86)
Platform MPI
(x86)
MultiCluster (Send only)
RTM Data Collectors*
Full MultiCluster
Enabled
Architecture préconisée par IBM suite à l’étude de sizing (2/2)
Hors considération dePRA,IBMproposeun serveur AC922 uniquepour le calcul
avec :
- 2 sockets de 16 cœurs P9 chacune @ 3,13 GHz
- 4 GPU Nvidia V100 32 GB
- 256 GB de mémoire
- 2 SATA/SSD de 960 GB chacun
- RedHat 7.5 avec Gcc 4.8.5
- PowerAI 1.5.1 (free) avec LMS & DDL
- LSF 10.1.0.6 StandardEdition (interfacegraphique, gestion allocation mémoire GPU par
process, upgrade fixpacket ajout de fonctionnalités)
- PCIe2 LP 4-Port (10Gb + 1GbE)
Eléments techniques détaillés
Tâchesréalisées
Versionsinstallées
Lancementjob ligne de commande
Surveillancedesjobs sur le frontal
SurveillancedesGPU sur le serveur AC922
Soumission massive de jobs
Surveillancesdes files d’attente de jobs
RTM – Report,Track & Monitor
Environnementutilisateur
Tâches réalisées
l lsf-frontal
Ø création VMRedHat 7.4, config réseau
Ø installation LSF
Ø partage réseau NFS /homeet /usr/share/lsf
Ø installation RTM
Ø compilation python 3.5,pytorch,partagépar condadans /home
l AC922
Ø installation RHEL 7.5 ALT ppc64le
Ø installation PowerAI
Ø installation python
Ø compilation nmon pour informationsGPU
Versions installées
PowerAI : version 1.5.1
$ lsid
IBM Spectrum LSF Community Edition 10.1.0.3, Feb 01 2018
$ python --version
Python 2.7.14 :: Anaconda, Inc.
$ source activate py35 && python --version
Python 3.5.5 :: Anaconda, Inc.
$ pip list | grep torch
torch 0.5.0a0+0a5fe55
torchvision 0.2.1
Lancement job ligne de commande
l créer un job contenant
Ø les instructionsLSF
Ø la commandelançantla tâche
$ cat pytorch_mnist.job
#BSUB -gpu "num=1:mode=shared:mps=no:j_exclusive=no"
cd /home/regis/xxxxxx-Lab-Etudiant/Pytorch/mnist/
python /home/regis/xxxxxx-Lab-Etudiant/Pytorch/mnist/main.py
l bsub lance le job
$ bsub < pytorch_mnist.job
Job <414> is submitted to default queue <normal>.
Surveillance des jobs sur le frontal
$ bjobs
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
413 regis RUN normal lsf-frontal ac922-1.sho *t/main.py Jun 19 14:40
414 regis RUN normal lsf-frontal ac922-1.sho *t/main.py Jun 19 14:49
Surveillance des GPU sur l’AC922
$ ssh root@9.128.137.190 'nvidia-smi'
root@9.128.137.190's password:
Tue Jun 19 14:57:34 2018
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26 Driver Version: 396.26 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM2... On | 00000004:04:00.0 Off | 0 |
| N/A 33C P0 76W / 300W | 6714MiB / 15360MiB | 65% Default |
+-------------------------------+----------------------+----------------------+
| 1 Tesla V100-SXM2... On | 00000035:03:00.0 Off | 0 |
| N/A 33C P0 80W / 300W | 6646MiB / 15360MiB | 82% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 86127 C python 1010MiB |
| 0 86178 C python 942MiB |
| 0 86225 C python 942MiB |
| 0 86262 C python 942MiB |
| 0 86284 C python 942MiB |
| 0 86341 C python 942MiB |
| 0 86394 C python 942MiB |
| 1 86115 C python 942MiB |
| 1 86177 C python 942MiB |
| 1 86181 C python 942MiB |
| 1 86224 C python 942MiB |
| 1 86268 C python 942MiB |
| 1 86337 C python 942MiB |
| 1 86386 C python 942MiB |
+-----------------------------------------------------------------------------+
Soumission massive de jobs
$ for i in `seq 1 20`;
> do
> bsub < pytorch3_mnist.job
> done
$ for i in `seq 1 10`; do bsub < pytorch3_mnist.job; done
Surveillances des files d’attente de jobs
$ bqueues
QUEUE_NAME PRIO STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SUSP
admin 50 Open:Active - - - - 0 0 0 0
owners 43 Open:Active - - - - 0 0 0 0
priority 43 Open:Active - - - - 0 0 0 0
night 40 Open:Inact - - - - 0 0 0 0
short 35 Open:Active - - - - 0 0 0 0
normal 30 Open:Active - - - - 110 78 32 0
interactive 30 Open:Active - - - - 0 0 0 0
idle 20 Open:Active - - - - 0 0 0 0
RTM – Report, Track & Monitor
Installé sur lsf-frontal, port:80
Environnement utilisateur
l Création des utilisateurs sur le frontal
- useradd thibaud ; passwd thibaud ; id thibaud
l Création de l’utilisateur sur l’AC922. Le faire dans la suite, pour qu’il ait le meme USERID.
- useradd -u 1003 thibaud
l Installation Anaconda et configuration d’une installation python 3.5 par utilisateur
- wget https://repo.continuum.io/archive/Anaconda2-5.1.0-Linux-ppc64le.sh
- bash Anaconda2-5.1.0-Linux-ppc64le.sh
- conda create -n py35 python=3.5 anaconda
# To activate this environment, use:
# > source activate py35
#
# To deactivate an active environment, use:
# > source deactivate
l Installation pytorch
Ø pip install /deep_learning_frameworks/torch-0.5.0a0+0a5fe55-cp27-cp27mu-linux_ppc64le.whl

Contenu connexe

Tendances

Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston PostOpenStack Korea Community
 

Tendances (6)

Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
Ccna4
Ccna4Ccna4
Ccna4
 
Eigrp ccna v5
Eigrp ccna v5 Eigrp ccna v5
Eigrp ccna v5
 
E4 pt act_7_5_1
E4 pt act_7_5_1E4 pt act_7_5_1
E4 pt act_7_5_1
 
Cours eigrp
Cours eigrpCours eigrp
Cours eigrp
 
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
[2017년 5월 정기세미나] Network with OpenStack - OpenStack Summit Boston Post
 

Similaire à Sizing PoC LSF & PowerAI for Engineers schools workloads

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+Jl Salvat
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimiséeSilicon Comté
 
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis GroupIBM France Lab
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosSaid Benaissa
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linuxembedded-linux-bdx
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solutionCynapsys It Hotspot
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel librePierre Ficheux
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfInes Ben Hassine
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitWassim Smati
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!David Caramelo
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !Carles Sistare
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)Fourat Zouari
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 

Similaire à Sizing PoC LSF & PowerAI for Engineers schools workloads (20)

OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
 
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+Objets connectés WLAN et ESP32  ou WPAN et bananapi et nrf24-l01+
Objets connectés WLAN et ESP32 ou WPAN et bananapi et nrf24-l01+
 
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
Retour d'expérience :  gérer des flux vidéos multiples de manière optimiséeRetour d'expérience :  gérer des flux vidéos multiples de manière optimisée
Retour d'expérience : gérer des flux vidéos multiples de manière optimisée
 
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group20190520  - IBM Cloud Paris-Saclay Meetup - Hardis Group
20190520 - IBM Cloud Paris-Saclay Meetup - Hardis Group
 
chapitre-2.pptx.pdf
chapitre-2.pptx.pdfchapitre-2.pptx.pdf
chapitre-2.pptx.pdf
 
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et rosTp2: Installation d'une couche d’abstraction entre un robot physique et ros
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
 
Solutions temps réel sous linux
Solutions temps réel sous linuxSolutions temps réel sous linux
Solutions temps réel sous linux
 
Presentaion fpga µc µp quelles est la solution
Presentaion  fpga µc µp quelles est la solutionPresentaion  fpga µc µp quelles est la solution
Presentaion fpga µc µp quelles est la solution
 
Démo puppet et état du projet
Démo puppet et état du projetDémo puppet et état du projet
Démo puppet et état du projet
 
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libreEtat de l'art des systèmes embarqués, utilisation du logiciel libre
Etat de l'art des systèmes embarqués, utilisation du logiciel libre
 
TD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdfTD_complet_reseau__CISCO__Packet Tracer.pdf
TD_complet_reseau__CISCO__Packet Tracer.pdf
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
Altera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kitAltera nios ii embedded evaluation kit
Altera nios ii embedded evaluation kit
 
gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!gRPC, échange à haute fréquence!
gRPC, échange à haute fréquence!
 
gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !gRPC, ECHANGES A HAUTE FREQUENCE !
gRPC, ECHANGES A HAUTE FREQUENCE !
 
JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)JBoss clustering et tuning (lab 3/3)
JBoss clustering et tuning (lab 3/3)
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Ocs
OcsOcs
Ocs
 

Sizing PoC LSF & PowerAI for Engineers schools workloads

  • 1. Equipe IBM : Régis Cely, Samir Attmani, Thibaud Besson, Philippe Brogi Proof of Concept Cloud PowerAI avec IBM Spectrum LSF Bois-Colombes le 21 juin 2018
  • 2. Exec Summary Profil Applicatif ArchitectureHW & SW Migration des jeux d’essais (donnéeset programmes)versPower Résultats obtenus Spécificitéstechniquesà souligner Architecturepréconiséepar IBM suite à l’étude de sizing
  • 3. Profil Applicatif Jeux d’essais envoyé par une école d’ingénieursFrançaise comprenant: • un workloadlight MNIST sur frameworkPytorch • un worloadmiddle : word language sur frameworkPytorch • des applicationsmaisons horsframework L’écolea fournil’ensembledes donnéesetdes codesdes jeux d’essais.
  • 4. Architecture HW & SW chez IBM à Bois-Colombes Stack Logiciel sur AC922 : RedHat 7.5 PowerAI 1.5.1 (free) LSF 10.1.0.3 (community edition / free) Gcc 4.8.5 POWER9 AC922 / SMT 4 Frontal LSF VM POWER8 S822L sur KVM LSF Master/Client jobs submission RTM (Add-on LSF) cluster monitoring /home/ /usr/share/lsf 9.128.137 .18 .190 etud1/ etud2/ etud3/ proftp/ prof/ NFSNFS LSF Compute node gpu1gpu0 10.10.8 .190 OpenBMC
  • 5. Migration des jeux d’essais (donnéeset programmes)versPower Résultats obtenus Set-up du serveur AC922 avec 2 GPU : • Installation RedHat 7.5 • Drivers Cuda • Cuda Toolkit • Environnement Anaconda 5.1 avec Python 2.7 & 3.5 • Installation LSF 10.1.0.3 Recompilation : • Pytorch sur Power • Du code maison (impératif de respecter les conventions des codes retour d’erreur) Portabilité du code sur la technologie Power : • Aucune erreur lors des compilations & Editions de lien • Aucune erreur au runtime • Aucune ligne de code modifiée
  • 6. Résultats obtenus Il est à noter que tous les jobs sont soumis aumêmeinstant,ce quin’est pas représentatif d’unLab de l’école d’ingénieurs qui devrait lisser la chargemachine. Pytorch MNIST: 1.Profiling unitaire de l’application Pytorch MNIST / Peu de GPU utilisée et peu de mémoire consommée sur les GPU Low GPU memory usage 1 026MiB / 15 360MiB Low GPU utilization ~ 7% Elapsed time on V100 GPU 2min 15sec 2.Tests de la workload Pytorch MNIST sur GPU en mode partagé (limitation à 8 processes en // par GPU pour éviter des erreurs Out Of Memory) 16 jobs soumis sur 2 GPUs / Elapsed : 2min 53sec (aucun job pending) 80 jobs soumis sur les 2 GPUs / Elapsed : 13min 22sec (gestion de file d’attente par LSF) Résultats obtenus
  • 7. Résultats obtenus Word Language : 1.Profiling unitaire de l’application Word Language Low GPU memory usage 1 490MiB / 15 360MiB Medium+ GPU utilization ~ 68% Elapsed time on V100 GPU 4min 22 sec 2.Tests de la workload Word Language sur GPU en mode partagé (limitation à 4 processes en // ) 4 jobs soumis sur 2 GPUs / Elapsed : 6min 58sec 16 jobs soumis sur les 2 GPUs / Elapsed : 57min 42sec (gestion de file d’attente par LSF: 16 jobs running en //) 3.Tests de la workload Word Language sur GPU en mode partagé (4 jobs running à l’instant t / LSF management) 16 jobs soumis sur les 2 GPUs / Elapsed : 27min 47sec (gestion de file d’attente par LSF : 4 jobs running en //) Avec 4 GPU on divisera ce temps par 2 soit : 13min 53 sec (gestion de file d’attente par LSF : 8 jobs running en //) Et pour 64 jobs ce temps sera multiplié par 4 sur 4 GPU, à savoir : 56min. Code maison : Temps de traitement inférieur à 3 secondes pour l’ensemble des jobs (perceptron, logistic regression, ada boost) Résultats obtenus
  • 8. Spécificités techniques à souligner (1/3) Gestions des GPUs par LSF : 2 modes de réservation (shared ou dedicated) Shared : virtualisation de GPU Permet de partager le GPU entre plusieurs processus. Attention cependant à l’utilisation mémoire du GPU. A partir de LSF 10.1.0.6 (mai 2018), il est possible de définir la mémoire GPU que l’on souhaite réserver dans les paramètres du JOB LSF. Ex: #BSUB -gpu "num=1:mode=shared:mps=no:j_exclusive=no:gmem=1000M” Pas testé dans le cadre du PoC mais validé sur le cluster à Montpellier Dedicated : 1 GPU par processus/job A noter, sur les applications maison, il est impératif de respecter les standards sur les codes retour : EXIT_SUCCESS = 0 EXIT_FAILURE > 0 LSF est sensible au code retour d’une application et update le statut du job (ERROR or DONE) en fonction du code retour de l’application. De plus il est possible de resoumettre un job automatiquement en fonction de son code retour.
  • 9. Spécificités techniques à souligner (2/3) Compilation de pytorchsur ppc64le Install cmake version 3 and use alternatives to register both cmake and cmake3 configuration $ yum install –y cmake3 $ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake 10 --slave /usr/local/bin/ctest ctest /usr/bin/ctest --slave /usr/local/bin/cpack cpack /usr/bin/cpack --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake --family cmake $ sudo alternatives --install /usr/local/bin/cmake cmake /usr/bin/cmake3 20 --slave /usr/local/bin/ctest ctest /usr/bin/ctest3 --slave /usr/local/bin/cpack cpack /usr/bin/cpack3 --slave /usr/local/bin/ccmake ccmake /usr/bin/ccmake3 --family cmake
  • 10. Spécificités techniques à souligner (3/3) Source NCCL (for Pytorch, we use the nccl provided by powerAI package) $ source /opt/DL/nccl/bin/nccl-activate $ export NCCL_ROOT_DIR=/opt/DL/nccl $ export NCCL_LIB_DIR=/opt/DL/nccl/lib $ export NCCL_INCLUDE_DIR=/opt/DL/nccl/include Start the compilation $ git clone --recursive https://github.com/pytorch/pytorch $ cd pytorch $ python setup.py install OR python setup.py bdist_wheel to generate whl package (if whl package was generated, install it with pip install command) Test the stack $ python >>> import torch >>> torch.__version__ '0.5.0a0+c446269'
  • 11. Architecture préconisée par IBM suite à l’étude de sizing (1/2) Un frontal de connexion est nécessaire, il servira de nœud maître à LSF, il hébergera le portail (LSF Application Center) et le monitoring (LSF Explorer à la place de RTM) : - Un serveur LC922 un socket 16 CPU 128 GB 2U - PCIe3 LP 2-port 32Gb Fibre Channel Adapter - Disques : 8 x Hdd 3.82 To en RAID5 avec spare : 23 466 GB Speed gain 7x read speed, no write speed gain Fault tolerance 1-drive failure POWER9 AC922 / SMT 4 Nœud de calcul (Compute Node) LC922 Frontal LSF Master Node LSF (App Center & Explorer) Stack Logiciel sur AC922 : RedHat 7.5 PowerAI 1.5.1 (free) LSF 10.1.0.6 Standard Edition Une licence LSF suite : 1 cluster , 2 nodes & 80 users simultanés) Stack Logiciel sur L922 : RedHat 7.5 Licensing model – IBM SpectrumLSF Suites Suite for Enterprise Suite for HPC Suite for Workgroups Ansible+RPM Installer SCF-CE Application Center Standard Edition Explorer Process Manager Data Manager License Scheduler Enterprise Scalability Resource Connector LSF Standard Edition Spectrum MPI (Power & x86) Platform MPI (x86) MultiCluster (Send only) RTM Data Collectors* Full MultiCluster Enabled
  • 12. Architecture préconisée par IBM suite à l’étude de sizing (2/2) Hors considération dePRA,IBMproposeun serveur AC922 uniquepour le calcul avec : - 2 sockets de 16 cœurs P9 chacune @ 3,13 GHz - 4 GPU Nvidia V100 32 GB - 256 GB de mémoire - 2 SATA/SSD de 960 GB chacun - RedHat 7.5 avec Gcc 4.8.5 - PowerAI 1.5.1 (free) avec LMS & DDL - LSF 10.1.0.6 StandardEdition (interfacegraphique, gestion allocation mémoire GPU par process, upgrade fixpacket ajout de fonctionnalités) - PCIe2 LP 4-Port (10Gb + 1GbE)
  • 13. Eléments techniques détaillés Tâchesréalisées Versionsinstallées Lancementjob ligne de commande Surveillancedesjobs sur le frontal SurveillancedesGPU sur le serveur AC922 Soumission massive de jobs Surveillancesdes files d’attente de jobs RTM – Report,Track & Monitor Environnementutilisateur
  • 14. Tâches réalisées l lsf-frontal Ø création VMRedHat 7.4, config réseau Ø installation LSF Ø partage réseau NFS /homeet /usr/share/lsf Ø installation RTM Ø compilation python 3.5,pytorch,partagépar condadans /home l AC922 Ø installation RHEL 7.5 ALT ppc64le Ø installation PowerAI Ø installation python Ø compilation nmon pour informationsGPU
  • 15. Versions installées PowerAI : version 1.5.1 $ lsid IBM Spectrum LSF Community Edition 10.1.0.3, Feb 01 2018 $ python --version Python 2.7.14 :: Anaconda, Inc. $ source activate py35 && python --version Python 3.5.5 :: Anaconda, Inc. $ pip list | grep torch torch 0.5.0a0+0a5fe55 torchvision 0.2.1
  • 16. Lancement job ligne de commande l créer un job contenant Ø les instructionsLSF Ø la commandelançantla tâche $ cat pytorch_mnist.job #BSUB -gpu "num=1:mode=shared:mps=no:j_exclusive=no" cd /home/regis/xxxxxx-Lab-Etudiant/Pytorch/mnist/ python /home/regis/xxxxxx-Lab-Etudiant/Pytorch/mnist/main.py l bsub lance le job $ bsub < pytorch_mnist.job Job <414> is submitted to default queue <normal>.
  • 17. Surveillance des jobs sur le frontal $ bjobs JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME 413 regis RUN normal lsf-frontal ac922-1.sho *t/main.py Jun 19 14:40 414 regis RUN normal lsf-frontal ac922-1.sho *t/main.py Jun 19 14:49
  • 18. Surveillance des GPU sur l’AC922 $ ssh root@9.128.137.190 'nvidia-smi' root@9.128.137.190's password: Tue Jun 19 14:57:34 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 396.26 Driver Version: 396.26 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... On | 00000004:04:00.0 Off | 0 | | N/A 33C P0 76W / 300W | 6714MiB / 15360MiB | 65% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM2... On | 00000035:03:00.0 Off | 0 | | N/A 33C P0 80W / 300W | 6646MiB / 15360MiB | 82% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 86127 C python 1010MiB | | 0 86178 C python 942MiB | | 0 86225 C python 942MiB | | 0 86262 C python 942MiB | | 0 86284 C python 942MiB | | 0 86341 C python 942MiB | | 0 86394 C python 942MiB | | 1 86115 C python 942MiB | | 1 86177 C python 942MiB | | 1 86181 C python 942MiB | | 1 86224 C python 942MiB | | 1 86268 C python 942MiB | | 1 86337 C python 942MiB | | 1 86386 C python 942MiB | +-----------------------------------------------------------------------------+
  • 19. Soumission massive de jobs $ for i in `seq 1 20`; > do > bsub < pytorch3_mnist.job > done $ for i in `seq 1 10`; do bsub < pytorch3_mnist.job; done
  • 20. Surveillances des files d’attente de jobs $ bqueues QUEUE_NAME PRIO STATUS MAX JL/U JL/P JL/H NJOBS PEND RUN SUSP admin 50 Open:Active - - - - 0 0 0 0 owners 43 Open:Active - - - - 0 0 0 0 priority 43 Open:Active - - - - 0 0 0 0 night 40 Open:Inact - - - - 0 0 0 0 short 35 Open:Active - - - - 0 0 0 0 normal 30 Open:Active - - - - 110 78 32 0 interactive 30 Open:Active - - - - 0 0 0 0 idle 20 Open:Active - - - - 0 0 0 0
  • 21. RTM – Report, Track & Monitor Installé sur lsf-frontal, port:80
  • 22. Environnement utilisateur l Création des utilisateurs sur le frontal - useradd thibaud ; passwd thibaud ; id thibaud l Création de l’utilisateur sur l’AC922. Le faire dans la suite, pour qu’il ait le meme USERID. - useradd -u 1003 thibaud l Installation Anaconda et configuration d’une installation python 3.5 par utilisateur - wget https://repo.continuum.io/archive/Anaconda2-5.1.0-Linux-ppc64le.sh - bash Anaconda2-5.1.0-Linux-ppc64le.sh - conda create -n py35 python=3.5 anaconda # To activate this environment, use: # > source activate py35 # # To deactivate an active environment, use: # > source deactivate l Installation pytorch Ø pip install /deep_learning_frameworks/torch-0.5.0a0+0a5fe55-cp27-cp27mu-linux_ppc64le.whl