Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Implementaci´on de un m´odulo para el entrenamiento yevaluaci´on de redes neuronales mediante GPUsAdri´an PalaciosUniversi...
Introducci´on• Las redes neuronales artificiales son un modelo matem´aticoutilizado en diversas ´areas por su capacidad de ...
Forma matricial del algoritmo BPEn un dise˜no est´andar, la red tendr´ıa el siguiente aspecto para redescon conexiones tod...
Aportaciones1. Redise˜no del algoritmo BP para ejecutarse en CPU: Se hamejorado e implementado el dise˜no de redes neurona...
Aportaci´on 1: Dise˜no del BP• El BP de April ha sufrido cambios desde 2005 para cumplir nuevosrequisitos: Redise˜no aprov...
Aportaci´on 2: El modo bunchDise˜no de la red sin bunch:ioi+1oo+1ssDise˜no de la red con bunch (b muestras):bioi+1bobo+1ss...
Bibliotecas de ´algebra linealLa API de BLAS declara un conjunto de funciones aplicables sobrevectores y matrices.´Esta se...
Implementaciones de la API de BLASLas bibliotecas que implementan esta API aceleran la ejecuci´on deeste tipo de operacion...
Aportaci´on 3: Implementaci´on con CUDALas GPUs son procesadores SIMD con unos300 n´ucleos (comparado con los 8 de unaCPU)...
Bloques de memoria y wrappersHemos dise˜nado una clase pararepresentar memoria compartida entreCPU y GPU: El bloque de mem...
Aportaci´on 4: Experimentaci´onCorrecci´on: La correcci´on de todas las versiones ha sido validadamediante la resoluci´on ...
Experimentaci´on: Rendimiento (Tarea)La tarea MNIST es una tarea de clasificaci´on de d´ıgitos manuscritosformada a partir ...
Experimentaci´on: Rendimiento (Parte 1)Objetivo: Buscar un conjunto de par´ametros cuyo resultadorepresente un buen compro...
Experimentaci´on: Rendimiento (Parte 1)Errores de validaci´on respecto al valor bunch para todas las builds:11.522.533.541...
Experimentaci´on: Rendimiento (Parte 1)Tiempos por ´epoca respecto al valor bunch para todas las builds:00.511.522.533.541...
Experimentaci´on: Rendimiento (Parte 2)Objetivo: Encontrar un n´umero de neuronas en las capas ocultas quedisminuya el err...
Experimentaci´on: Rendimiento (Parte 2)Errores de clasificaci´on del conjunto de validaci´on y test respecto aln´umero de n...
Experimentaci´on: Rendimiento (Parte 2)Errores de clasificaci´on del conjunto de validaci´on y test respecto aln´umero de n...
Experimentaci´on: Rendimiento (Parte 3)Objetivo: Examinar qu´e ocurre al lanzar varios experimentos enparalelo, para encon...
Experimentaci´on: Rendimiento (Parte 3)Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados enla ejecuci´on d...
Experimentaci´on: Rendimiento (Parte 3)Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados enla ejecuci´on d...
Experimentaci´on: Rendimiento (Parte 3)An´alisis de la productividad al lanzar varios procesos de formaconcurrente usando ...
Uso de la aplicaci´onApril est´a siendo utilizado en numerosos trabajos de investigaci´ondesde el a˜no 2005 aproximadament...
ConclusionesLos objetivos que nos hab´ıamos propuesto al principio del proyectohan sido alcanzados con ´exito:1. Se ha hec...
Cuantificando la mejoraApril: Unas 600 veces m´as r´apido que SNNS (utilizado en pr´acticas deRedes Neuronales).Un experime...
Ampliaciones futurasAlgunas de las propuestas para ampliar la herramienta son:• Interfaz gr´afica.• Adaptaci´on al uso de o...
¿Preguntas?Para conocer m´as sobre el proyecto, la memoria estar´a disponible parasu consulta en el Repositorio Institucio...
Upcoming SlideShare
Loading in …5
×

Implementación de un módulo para el entrenamiento y evaluación de redes neuronales mediante GPUs

318 views

Published on

Published in: Technology
  • Be the first to comment

Implementación de un módulo para el entrenamiento y evaluación de redes neuronales mediante GPUs

  1. 1. Implementaci´on de un m´odulo para el entrenamiento yevaluaci´on de redes neuronales mediante GPUsAdri´an PalaciosUniversidad Polit´ecnica de Valencia27 de Septiembre del 20121 de 27
  2. 2. Introducci´on• Las redes neuronales artificiales son un modelo matem´aticoutilizado en diversas ´areas por su capacidad de aprendizaje a partirde muestras.• El algoritmo de aprendizaje m´as popular es el Backpropagation(BP), un algoritmo iterativo de descenso por gradiente.• Uno de los problemas de este modelo es que se necesita realizaruna gran cantidad de c´alculos para resolver algunos problemas,llegando a necesitar incluso semanas de CPU para su compleci´on.• El objetivo de este proyecto es mejorar una implementaci´on yaexistente del algoritmo BP, incluyendo una nueva versi´on enlenguaje CUDA que posibilite la ejecuci´on de este algoritmo enGPUs.2 de 27
  3. 3. Forma matricial del algoritmo BPEn un dise˜no est´andar, la red tendr´ıa el siguiente aspecto para redescon conexiones todos a todos y usando la forma matricial de BP:i oi+1oo+1ss3 de 27
  4. 4. Aportaciones1. Redise˜no del algoritmo BP para ejecutarse en CPU: Se hamejorado e implementado el dise˜no de redes neuronales en April(realizado en C++) para mejorar la ejecuci´on del algoritmo BP enCPU.2. El modo “bunch”: Nueva formulaci´on del BP en modo “bunch”con momentum y weight decay, algo que no est´a en la literatura.3. Dise˜no del algoritmo BP para ejecutarse en GPU: Sobre eldise˜no anterior, se han a˜nadido los elementos necesarios para quela ejecuci´on ´ıntegra del BP pueda ser efectuada en GPU.4. Experimentaci´on exhaustiva: La implementaci´on ha sido validadamediante la resoluci´on de un conjunto de tareas complejas y se haelaborado un estudio sobre la influencia de los par´ametros en ellas.4 de 27
  5. 5. Aportaci´on 1: Dise˜no del BP• El BP de April ha sufrido cambios desde 2005 para cumplir nuevosrequisitos: Redise˜no aprovechando los conocimientos previos.• Otras implementaciones ofrecen flexibilidad a costa de eficiencia(neuronas independientes) o eficiencia utilizando topolog´ıasespecializadas. Este dise˜no combina lo mejor de ambasaproximaciones.• El modo “on-line” ha sido mejorado.5 de 27
  6. 6. Aportaci´on 2: El modo bunchDise˜no de la red sin bunch:ioi+1oo+1ssDise˜no de la red con bunch (b muestras):bioi+1bobo+1ss6 de 27
  7. 7. Bibliotecas de ´algebra linealLa API de BLAS declara un conjunto de funciones aplicables sobrevectores y matrices.´Esta se divide en 3 niveles:• Nivel 1: Operaciones aplicables sobre un conjunto de vectores, dela forma y ← αx + y.• Nivel 2: Operaciones aplicables sobre matrices y vectores, de laforma: y ← αAx + βy.• Nivel 3: Operaciones aplicables sobre un conjunto de matrices, dela forma: C ← αAB + βC.7 de 27
  8. 8. Implementaciones de la API de BLASLas bibliotecas que implementan esta API aceleran la ejecuci´on deeste tipo de operaciones mediante el uso de:• Instrucciones vectoriales especializadas.• Memoria alineada.• M´ultiples n´ucleos de la CPU.• La GPU.En este proyecto se usan tres implementaciones de la API de BLAS:• ATLAS: Una biblioteca de c´odigo abierto que podemos usar paracualquier tipo de procesador.• Intel MKL: La biblioteca de Intel. Permite el uso de m´ultiplesn´ucleos del procesador.• CUBLAS: La biblioteca de CUDA. Permite el uso de la GPU.8 de 27
  9. 9. Aportaci´on 3: Implementaci´on con CUDALas GPUs son procesadores SIMD con unos300 n´ucleos (comparado con los 8 de unaCPU), pensados inicialmente para c´alculo degr´aficos 3D, pero utilizados en el campo dela computaci´on de altas prestaciones.Las GPU de Nvidia disponen de laarquitectura CUDA que facilita la realizaci´onde operaciones de forma paralela, mediante eluso del lenguaje CUDA.9 de 27
  10. 10. Bloques de memoria y wrappersHemos dise˜nado una clase pararepresentar memoria compartida entreCPU y GPU: El bloque de memoria. Estosbloques de memoria se encargan desuministrar el tipo de memoria pedido deforma actualizada.Tambi´en se han dise˜nado los wrapperspara el ´algebra lineal, que nos permitenrealizar la llamada de funciones de´algebra lineal de forma independendientea la biblioteca usada para compilar.10 de 27
  11. 11. Aportaci´on 4: Experimentaci´onCorrecci´on: La correcci´on de todas las versiones ha sido validadamediante la resoluci´on de las tareas d´ıgitos y xor.Rendimiento: El rendimiento ha sido valorado en base a la resoluci´onde una tarea no trivial, en donde se realiza:1. Un barrido de par´ametros del entrenamiento.2. Un barrido de topolog´ıas.3. Un estudio del paralelismo.11 de 27
  12. 12. Experimentaci´on: Rendimiento (Tarea)La tarea MNIST es una tarea de clasificaci´on de d´ıgitos manuscritosformada a partir de las bases de datos publicadas por el NIST. Elcorpus de entrenamiento est´a formado por 60000 im´agenes de28 × 28 p´ıxeles cada una.Las redes con las cuales realizaremos el entrenamiento compartenestas caracter´ısticas:• La capa de entrada estar´a formada por 784 neuronas.• La capa de salida estar´a formada por 10 neuronas.• La funci´on de activaci´on en las capas ocultas ser´a la tangentehiperb´olica y en la capa de salida ser´a la softmax.• La funci´on de error de la red ser´a la entrop´ıa cruzada.12 de 27
  13. 13. Experimentaci´on: Rendimiento (Parte 1)Objetivo: Buscar un conjunto de par´ametros cuyo resultadorepresente un buen compromiso entre el error de validaci´on y eltiempo de ejecuci´on.Se realizar´an un total de 132 experimentos por build, resultantes delas siguientes combinaciones de valores:• Bunch: 1, 4, 8, 16, 32, 64, 96, 128, 256, 512 y 1024.• Factor de aprendizaje: 0,01, 0,02 y 0,04.• Momentum: 0,0 y 0,02.• Weight decay: 0,0 y 10−6.13 de 27
  14. 14. Experimentaci´on: Rendimiento (Parte 1)Errores de validaci´on respecto al valor bunch para todas las builds:11.522.533.541 4 8 16 32 64 96 128 256 512 1024Errorenvalidacion(%)Valor bunchATLASMKLCUDAminimo14 de 27
  15. 15. Experimentaci´on: Rendimiento (Parte 1)Tiempos por ´epoca respecto al valor bunch para todas las builds:00.511.522.533.541 4 8 16 32 64 96 128 256 512 1024Tiempo(segundos)Valor bunchATLASMKLCUDAminimo15 de 27
  16. 16. Experimentaci´on: Rendimiento (Parte 2)Objetivo: Encontrar un n´umero de neuronas en las capas ocultas quedisminuya el error en los conjuntos de test y validaci´on.Se realizar´an 30 experimentos para cada build, resultantes de lassiguientes combinaciones de valores:• Primera capa oculta: 32, 64, 128, 256, 512 y 1024 neuronas.• Segunda capa oculta: 0, 32, 64, 128 y 256 neuronas.16 de 27
  17. 17. Experimentaci´on: Rendimiento (Parte 2)Errores de clasificaci´on del conjunto de validaci´on y test respecto aln´umero de neuronas en la primera capa para la build con MKL:11.522.533.5432 64 128 256 512 1024Errorenvalidacion(%)Neuronas en la primera capa0 neuronas32 neuronas64 neuronas128 neuronas256 neuronas11.522.533.5432 64 128 256 512 1024Errorentest(%)Neuronas en la primera capa0 neuronas32 neuronas64 neuronas128 neuronas256 neuronas17 de 27
  18. 18. Experimentaci´on: Rendimiento (Parte 2)Errores de clasificaci´on del conjunto de validaci´on y test respecto aln´umero de neuronas en la primera capa para la build con CUDA:11.522.533.544.555.566.532 64 128 256 512 1024Errorenvalidacion(%)Neuronas en la primera capa0 neuronas32 neuronas64 neuronas128 neuronas256 neuronas11.522.533.544.555.566.532 64 128 256 512 1024Errorentest(%)Neuronas en la primera capa0 neuronas32 neuronas64 neuronas128 neuronas256 neuronas18 de 27
  19. 19. Experimentaci´on: Rendimiento (Parte 3)Objetivo: Examinar qu´e ocurre al lanzar varios experimentos enparalelo, para encontrar el modo de ejecuci´on con mayorproductividad.Se realizar´an experimentos para las siguientes combinaciones devalores:• N´umero de experimentos: 1, 2 y 4.• N´ucleos a usar por cada proceso: 1, 2 y 4.19 de 27
  20. 20. Experimentaci´on: Rendimiento (Parte 3)Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados enla ejecuci´on del experimento para la build con MKL:0123456789101 2 4Tiempowall(segundos)Valor OMP_NUM_THREADS1 hilo2 hilos paralelos4 hilos paralelos20 de 27
  21. 21. Experimentaci´on: Rendimiento (Parte 3)Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados enla ejecuci´on del experimento para la build con CUDA:0123456789101112131 2 4Tiempowall(segundos)Valor OMP_NUM_THREADS1 hilo2 hilos paralelos4 hilos paralelos21 de 27
  22. 22. Experimentaci´on: Rendimiento (Parte 3)An´alisis de la productividad al lanzar varios procesos de formaconcurrente usando la build con MKL:Valor de Hilos Tiempo ProductividadOMP NUM THREADS concurrentes por ´epoca por ´epoca1 1 4,017 4,0172 1 2,671 2,6714 1 2,062 2,0621 2 4,266 2,1332 2 2,893 1,44654 2 3,496 1,7481 4 4,733 1,183252 4 5,158 1,28954 4 8,074 2,018522 de 27
  23. 23. Uso de la aplicaci´onApril est´a siendo utilizado en numerosos trabajos de investigaci´ondesde el a˜no 2005 aproximadamente.La nueva implementaci´on del BP de April ya est´a siendo utilizadapara tareas de limpieza de im´agenes, traducci´on autom´atica [Zam12]y predicci´on de temperaturas [ZRP+].Estamos preparando un art´ıculo en donde se describen lasaportaciones de la herramienta April para enviarlo a alguna revista ocongreso relacionado con el reconocimiento de formas.23 de 27
  24. 24. ConclusionesLos objetivos que nos hab´ıamos propuesto al principio del proyectohan sido alcanzados con ´exito:1. Se ha hecho un redise˜no completo de las redes neuronales de Aprilpara ejecutar el algoritmo BP en CPU de un modo eficiente.2. Este dise˜no incluye la formulaci´on del BP en modo “bunch” conmomentum y weight decay.3. Sobre el nuevo dise˜no, se ha incorporado la opci´on de utilizar laGPU para efectuar los c´alculos de forma paralela y eficiente.4. Exhaustiva experimentaci´on para comprobar la correcci´on y elrendimiento de la aplicaci´on. Estudio del efecto de determinadospar´ametros de entrenamiento y configuraci´on sobre tareas notriviales (MNIST).24 de 27
  25. 25. Cuantificando la mejoraApril: Unas 600 veces m´as r´apido que SNNS (utilizado en pr´acticas deRedes Neuronales).Un experimento de la primera parte con MNIST:• Con SNNS: 1 d´ıa y 6 horas.• Con April: 3 minutos.TODOS los experimentos de la primera parte con MNIST:• Con SNNS: 5 meses y 1 semana.• Con April: 6 horas y 20 minutos.25 de 27
  26. 26. Ampliaciones futurasAlgunas de las propuestas para ampliar la herramienta son:• Interfaz gr´afica.• Adaptaci´on al uso de otras librer´ıas.• Uso de m´ultiples GPUs, computaci´on en grid.• Implementaci´on de otros algoritmos con GPU.26 de 27
  27. 27. ¿Preguntas?Para conocer m´as sobre el proyecto, la memoria estar´a disponible parasu consulta en el Repositorio Institucional de la UPV (RiuNet).Muchas gracias por asistir a esta exposici´on.27 de 27

×