SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Implementaci´on de un m´odulo para el entrenamiento y
evaluaci´on de redes neuronales mediante GPUs
Adri´an Palacios
Universidad Polit´ecnica de Valencia
27 de Septiembre del 2012
1 de 27
Introducci´on
• Las redes neuronales artificiales son un modelo matem´atico
utilizado en diversas ´areas por su capacidad de aprendizaje a partir
de 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 realizar
una 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 ya
existente del algoritmo BP, incluyendo una nueva versi´on en
lenguaje CUDA que posibilite la ejecuci´on de este algoritmo en
GPUs.
2 de 27
Forma matricial del algoritmo BP
En un dise˜no est´andar, la red tendr´ıa el siguiente aspecto para redes
con conexiones todos a todos y usando la forma matricial de BP:
i o
i+1
o
o+1
s
s
3 de 27
Aportaciones
1. Redise˜no del algoritmo BP para ejecutarse en CPU: Se ha
mejorado e implementado el dise˜no de redes neuronales en April
(realizado en C++) para mejorar la ejecuci´on del algoritmo BP en
CPU.
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 el
dise˜no anterior, se han a˜nadido los elementos necesarios para que
la ejecuci´on ´ıntegra del BP pueda ser efectuada en GPU.
4. Experimentaci´on exhaustiva: La implementaci´on ha sido validada
mediante la resoluci´on de un conjunto de tareas complejas y se ha
elaborado un estudio sobre la influencia de los par´ametros en ellas.
4 de 27
Aportaci´on 1: Dise˜no del BP
• El BP de April ha sufrido cambios desde 2005 para cumplir nuevos
requisitos: Redise˜no aprovechando los conocimientos previos.
• Otras implementaciones ofrecen flexibilidad a costa de eficiencia
(neuronas independientes) o eficiencia utilizando topolog´ıas
especializadas. Este dise˜no combina lo mejor de ambas
aproximaciones.
• El modo “on-line” ha sido mejorado.
5 de 27
Aportaci´on 2: El modo bunch
Dise˜no de la red sin bunch:
i
o
i+1
o
o+1
s
s
Dise˜no de la red con bunch (b muestras):
b
i
o
i+1
b
o
b
o+1
s
s
6 de 27
Bibliotecas de ´algebra lineal
La API de BLAS declara un conjunto de funciones aplicables sobre
vectores y matrices.
´Esta se divide en 3 niveles:
• Nivel 1: Operaciones aplicables sobre un conjunto de vectores, de
la forma y ← αx + y.
• Nivel 2: Operaciones aplicables sobre matrices y vectores, de la
forma: y ← αAx + βy.
• Nivel 3: Operaciones aplicables sobre un conjunto de matrices, de
la forma: C ← αAB + βC.
7 de 27
Implementaciones de la API de BLAS
Las bibliotecas que implementan esta API aceleran la ejecuci´on de
este 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 para
cualquier tipo de procesador.
• Intel MKL: La biblioteca de Intel. Permite el uso de m´ultiples
n´ucleos del procesador.
• CUBLAS: La biblioteca de CUDA. Permite el uso de la GPU.
8 de 27
Aportaci´on 3: Implementaci´on con CUDA
Las GPUs son procesadores SIMD con unos
300 n´ucleos (comparado con los 8 de una
CPU), pensados inicialmente para c´alculo de
gr´aficos 3D, pero utilizados en el campo de
la computaci´on de altas prestaciones.
Las GPU de Nvidia disponen de la
arquitectura CUDA que facilita la realizaci´on
de operaciones de forma paralela, mediante el
uso del lenguaje CUDA.
9 de 27
Bloques de memoria y wrappers
Hemos dise˜nado una clase para
representar memoria compartida entre
CPU y GPU: El bloque de memoria. Estos
bloques de memoria se encargan de
suministrar el tipo de memoria pedido de
forma actualizada.
Tambi´en se han dise˜nado los wrappers
para el ´algebra lineal, que nos permiten
realizar la llamada de funciones de
´algebra lineal de forma independendiente
a la biblioteca usada para compilar.
10 de 27
Aportaci´on 4: Experimentaci´on
Correcci´on: La correcci´on de todas las versiones ha sido validada
mediante la resoluci´on de las tareas d´ıgitos y xor.
Rendimiento: El rendimiento ha sido valorado en base a la resoluci´on
de 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
Experimentaci´on: Rendimiento (Tarea)
La tarea MNIST es una tarea de clasificaci´on de d´ıgitos manuscritos
formada a partir de las bases de datos publicadas por el NIST. El
corpus de entrenamiento est´a formado por 60000 im´agenes de
28 × 28 p´ıxeles cada una.
Las redes con las cuales realizaremos el entrenamiento comparten
estas 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 tangente
hiperb´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
Experimentaci´on: Rendimiento (Parte 1)
Objetivo: Buscar un conjunto de par´ametros cuyo resultado
represente un buen compromiso entre el error de validaci´on y el
tiempo de ejecuci´on.
Se realizar´an un total de 132 experimentos por build, resultantes de
las 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
Experimentaci´on: Rendimiento (Parte 1)
Errores de validaci´on respecto al valor bunch para todas las builds:
1
1.5
2
2.5
3
3.5
4
1 4 8 16 32 64 96 128 256 512 1024
Errorenvalidacion(%)
Valor bunch
ATLAS
MKL
CUDA
minimo
14 de 27
Experimentaci´on: Rendimiento (Parte 1)
Tiempos por ´epoca respecto al valor bunch para todas las builds:
0
0.5
1
1.5
2
2.5
3
3.5
4
1 4 8 16 32 64 96 128 256 512 1024
Tiempo(segundos)
Valor bunch
ATLAS
MKL
CUDA
minimo
15 de 27
Experimentaci´on: Rendimiento (Parte 2)
Objetivo: Encontrar un n´umero de neuronas en las capas ocultas que
disminuya el error en los conjuntos de test y validaci´on.
Se realizar´an 30 experimentos para cada build, resultantes de las
siguientes 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
Experimentaci´on: Rendimiento (Parte 2)
Errores de clasificaci´on del conjunto de validaci´on y test respecto al
n´umero de neuronas en la primera capa para la build con MKL:
1
1.5
2
2.5
3
3.5
4
32 64 128 256 512 1024
Errorenvalidacion(%)
Neuronas en la primera capa
0 neuronas
32 neuronas
64 neuronas
128 neuronas
256 neuronas
1
1.5
2
2.5
3
3.5
4
32 64 128 256 512 1024
Errorentest(%)
Neuronas en la primera capa
0 neuronas
32 neuronas
64 neuronas
128 neuronas
256 neuronas
17 de 27
Experimentaci´on: Rendimiento (Parte 2)
Errores de clasificaci´on del conjunto de validaci´on y test respecto al
n´umero de neuronas en la primera capa para la build con CUDA:
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6
6.5
32 64 128 256 512 1024
Errorenvalidacion(%)
Neuronas en la primera capa
0 neuronas
32 neuronas
64 neuronas
128 neuronas
256 neuronas
1
1.5
2
2.5
3
3.5
4
4.5
5
5.5
6
6.5
32 64 128 256 512 1024
Errorentest(%)
Neuronas en la primera capa
0 neuronas
32 neuronas
64 neuronas
128 neuronas
256 neuronas
18 de 27
Experimentaci´on: Rendimiento (Parte 3)
Objetivo: Examinar qu´e ocurre al lanzar varios experimentos en
paralelo, para encontrar el modo de ejecuci´on con mayor
productividad.
Se realizar´an experimentos para las siguientes combinaciones de
valores:
• N´umero de experimentos: 1, 2 y 4.
• N´ucleos a usar por cada proceso: 1, 2 y 4.
19 de 27
Experimentaci´on: Rendimiento (Parte 3)
Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados en
la ejecuci´on del experimento para la build con MKL:
0
1
2
3
4
5
6
7
8
9
10
1 2 4
Tiempowall(segundos)
Valor OMP_NUM_THREADS
1 hilo
2 hilos paralelos
4 hilos paralelos
20 de 27
Experimentaci´on: Rendimiento (Parte 3)
Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados en
la ejecuci´on del experimento para la build con CUDA:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
1 2 4
Tiempowall(segundos)
Valor OMP_NUM_THREADS
1 hilo
2 hilos paralelos
4 hilos paralelos
21 de 27
Experimentaci´on: Rendimiento (Parte 3)
An´alisis de la productividad al lanzar varios procesos de forma
concurrente usando la build con MKL:
Valor de Hilos Tiempo Productividad
OMP NUM THREADS concurrentes por ´epoca por ´epoca
1 1 4,017 4,017
2 1 2,671 2,671
4 1 2,062 2,062
1 2 4,266 2,133
2 2 2,893 1,4465
4 2 3,496 1,748
1 4 4,733 1,18325
2 4 5,158 1,2895
4 4 8,074 2,0185
22 de 27
Uso de la aplicaci´on
April est´a siendo utilizado en numerosos trabajos de investigaci´on
desde el a˜no 2005 aproximadamente.
La nueva implementaci´on del BP de April ya est´a siendo utilizada
para 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 las
aportaciones de la herramienta April para enviarlo a alguna revista o
congreso relacionado con el reconocimiento de formas.
23 de 27
Conclusiones
Los objetivos que nos hab´ıamos propuesto al principio del proyecto
han sido alcanzados con ´exito:
1. Se ha hecho un redise˜no completo de las redes neuronales de April
para ejecutar el algoritmo BP en CPU de un modo eficiente.
2. Este dise˜no incluye la formulaci´on del BP en modo “bunch” con
momentum y weight decay.
3. Sobre el nuevo dise˜no, se ha incorporado la opci´on de utilizar la
GPU para efectuar los c´alculos de forma paralela y eficiente.
4. Exhaustiva experimentaci´on para comprobar la correcci´on y el
rendimiento de la aplicaci´on. Estudio del efecto de determinados
par´ametros de entrenamiento y configuraci´on sobre tareas no
triviales (MNIST).
24 de 27
Cuantificando la mejora
April: Unas 600 veces m´as r´apido que SNNS (utilizado en pr´acticas de
Redes 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
Ampliaciones futuras
Algunas 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
¿Preguntas?
Para conocer m´as sobre el proyecto, la memoria estar´a disponible para
su consulta en el Repositorio Institucional de la UPV (RiuNet).
Muchas gracias por asistir a esta exposici´on.
27 de 27

Mais conteúdo relacionado

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

Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaFcoKraken
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaFcoKraken
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming PlataformsVeronica Ramirez
 
Inteligencia artificial avanzada
Inteligencia artificial avanzadaInteligencia artificial avanzada
Inteligencia artificial avanzadaDiego Guamán
 
Guia simulador modulo digital
Guia simulador modulo digitalGuia simulador modulo digital
Guia simulador modulo digitalvitesa1
 
Counterpropagation
CounterpropagationCounterpropagation
CounterpropagationESCOM
 
Ejercicios de Conexión de memorias
Ejercicios de Conexión de memorias Ejercicios de Conexión de memorias
Ejercicios de Conexión de memorias Eduardo Abalo
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSebastian Gonzalez
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
 
Que es la supercomputacion una explicacion orientada al mundo empresarial
Que es la supercomputacion   una explicacion orientada al mundo empresarialQue es la supercomputacion   una explicacion orientada al mundo empresarial
Que es la supercomputacion una explicacion orientada al mundo empresarialCein
 
0104 arquitectura-del-computador
0104 arquitectura-del-computador0104 arquitectura-del-computador
0104 arquitectura-del-computadorProfesorCorona
 
Samuel J Gutierrez Muñoz
Samuel J Gutierrez MuñozSamuel J Gutierrez Muñoz
Samuel J Gutierrez MuñozSam Gutierrez M
 
Rendimiento y consumo energético con python
Rendimiento y consumo energético con pythonRendimiento y consumo energético con python
Rendimiento y consumo energético con pythonpythoncanarias
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)Victor Asanza
 

Semelhante a Implementación de un módulo para el entrenamiento y evaluación de redes neuronales mediante GPUs (20)

Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
 
Paper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra FmanciaPaper Mmulfpuna Mpi Cparra Fmancia
Paper Mmulfpuna Mpi Cparra Fmancia
 
Ricardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptxRicardo - Meetup Python Madrid marzo 2023.pptx
Ricardo - Meetup Python Madrid marzo 2023.pptx
 
Parallel Programming Plataforms
Parallel Programming PlataformsParallel Programming Plataforms
Parallel Programming Plataforms
 
Inteligencia artificial avanzada
Inteligencia artificial avanzadaInteligencia artificial avanzada
Inteligencia artificial avanzada
 
Guia simulador modulo digital
Guia simulador modulo digitalGuia simulador modulo digital
Guia simulador modulo digital
 
Counterpropagation
CounterpropagationCounterpropagation
Counterpropagation
 
Ejercicios de Conexión de memorias
Ejercicios de Conexión de memorias Ejercicios de Conexión de memorias
Ejercicios de Conexión de memorias
 
Deep Learning Notes
Deep Learning NotesDeep Learning Notes
Deep Learning Notes
 
Conclusiones
ConclusionesConclusiones
Conclusiones
 
Deep Learning, Python, C# y Azure
Deep Learning, Python, C# y AzureDeep Learning, Python, C# y Azure
Deep Learning, Python, C# y Azure
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
 
Que es la supercomputacion una explicacion orientada al mundo empresarial
Que es la supercomputacion   una explicacion orientada al mundo empresarialQue es la supercomputacion   una explicacion orientada al mundo empresarial
Que es la supercomputacion una explicacion orientada al mundo empresarial
 
0104 arquitectura-del-computador
0104 arquitectura-del-computador0104 arquitectura-del-computador
0104 arquitectura-del-computador
 
Samuel J Gutierrez Muñoz
Samuel J Gutierrez MuñozSamuel J Gutierrez Muñoz
Samuel J Gutierrez Muñoz
 
Rendimiento y consumo energético con python
Rendimiento y consumo energético con pythonRendimiento y consumo energético con python
Rendimiento y consumo energético con python
 
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 2do Parcial (2020 PAO 2)
 
Manual Pspice 9.1
Manual Pspice 9.1Manual Pspice 9.1
Manual Pspice 9.1
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 

Último (16)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 

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

  • 1. Implementaci´on de un m´odulo para el entrenamiento y evaluaci´on de redes neuronales mediante GPUs Adri´an Palacios Universidad Polit´ecnica de Valencia 27 de Septiembre del 2012 1 de 27
  • 2. Introducci´on • Las redes neuronales artificiales son un modelo matem´atico utilizado en diversas ´areas por su capacidad de aprendizaje a partir de 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 realizar una 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 ya existente del algoritmo BP, incluyendo una nueva versi´on en lenguaje CUDA que posibilite la ejecuci´on de este algoritmo en GPUs. 2 de 27
  • 3. Forma matricial del algoritmo BP En un dise˜no est´andar, la red tendr´ıa el siguiente aspecto para redes con conexiones todos a todos y usando la forma matricial de BP: i o i+1 o o+1 s s 3 de 27
  • 4. Aportaciones 1. Redise˜no del algoritmo BP para ejecutarse en CPU: Se ha mejorado e implementado el dise˜no de redes neuronales en April (realizado en C++) para mejorar la ejecuci´on del algoritmo BP en CPU. 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 el dise˜no anterior, se han a˜nadido los elementos necesarios para que la ejecuci´on ´ıntegra del BP pueda ser efectuada en GPU. 4. Experimentaci´on exhaustiva: La implementaci´on ha sido validada mediante la resoluci´on de un conjunto de tareas complejas y se ha elaborado un estudio sobre la influencia de los par´ametros en ellas. 4 de 27
  • 5. Aportaci´on 1: Dise˜no del BP • El BP de April ha sufrido cambios desde 2005 para cumplir nuevos requisitos: Redise˜no aprovechando los conocimientos previos. • Otras implementaciones ofrecen flexibilidad a costa de eficiencia (neuronas independientes) o eficiencia utilizando topolog´ıas especializadas. Este dise˜no combina lo mejor de ambas aproximaciones. • El modo “on-line” ha sido mejorado. 5 de 27
  • 6. Aportaci´on 2: El modo bunch Dise˜no de la red sin bunch: i o i+1 o o+1 s s Dise˜no de la red con bunch (b muestras): b i o i+1 b o b o+1 s s 6 de 27
  • 7. Bibliotecas de ´algebra lineal La API de BLAS declara un conjunto de funciones aplicables sobre vectores y matrices. ´Esta se divide en 3 niveles: • Nivel 1: Operaciones aplicables sobre un conjunto de vectores, de la forma y ← αx + y. • Nivel 2: Operaciones aplicables sobre matrices y vectores, de la forma: y ← αAx + βy. • Nivel 3: Operaciones aplicables sobre un conjunto de matrices, de la forma: C ← αAB + βC. 7 de 27
  • 8. Implementaciones de la API de BLAS Las bibliotecas que implementan esta API aceleran la ejecuci´on de este 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 para cualquier tipo de procesador. • Intel MKL: La biblioteca de Intel. Permite el uso de m´ultiples n´ucleos del procesador. • CUBLAS: La biblioteca de CUDA. Permite el uso de la GPU. 8 de 27
  • 9. Aportaci´on 3: Implementaci´on con CUDA Las GPUs son procesadores SIMD con unos 300 n´ucleos (comparado con los 8 de una CPU), pensados inicialmente para c´alculo de gr´aficos 3D, pero utilizados en el campo de la computaci´on de altas prestaciones. Las GPU de Nvidia disponen de la arquitectura CUDA que facilita la realizaci´on de operaciones de forma paralela, mediante el uso del lenguaje CUDA. 9 de 27
  • 10. Bloques de memoria y wrappers Hemos dise˜nado una clase para representar memoria compartida entre CPU y GPU: El bloque de memoria. Estos bloques de memoria se encargan de suministrar el tipo de memoria pedido de forma actualizada. Tambi´en se han dise˜nado los wrappers para el ´algebra lineal, que nos permiten realizar la llamada de funciones de ´algebra lineal de forma independendiente a la biblioteca usada para compilar. 10 de 27
  • 11. Aportaci´on 4: Experimentaci´on Correcci´on: La correcci´on de todas las versiones ha sido validada mediante la resoluci´on de las tareas d´ıgitos y xor. Rendimiento: El rendimiento ha sido valorado en base a la resoluci´on de 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. Experimentaci´on: Rendimiento (Tarea) La tarea MNIST es una tarea de clasificaci´on de d´ıgitos manuscritos formada a partir de las bases de datos publicadas por el NIST. El corpus de entrenamiento est´a formado por 60000 im´agenes de 28 × 28 p´ıxeles cada una. Las redes con las cuales realizaremos el entrenamiento comparten estas 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 tangente hiperb´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. Experimentaci´on: Rendimiento (Parte 1) Objetivo: Buscar un conjunto de par´ametros cuyo resultado represente un buen compromiso entre el error de validaci´on y el tiempo de ejecuci´on. Se realizar´an un total de 132 experimentos por build, resultantes de las 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. Experimentaci´on: Rendimiento (Parte 1) Errores de validaci´on respecto al valor bunch para todas las builds: 1 1.5 2 2.5 3 3.5 4 1 4 8 16 32 64 96 128 256 512 1024 Errorenvalidacion(%) Valor bunch ATLAS MKL CUDA minimo 14 de 27
  • 15. Experimentaci´on: Rendimiento (Parte 1) Tiempos por ´epoca respecto al valor bunch para todas las builds: 0 0.5 1 1.5 2 2.5 3 3.5 4 1 4 8 16 32 64 96 128 256 512 1024 Tiempo(segundos) Valor bunch ATLAS MKL CUDA minimo 15 de 27
  • 16. Experimentaci´on: Rendimiento (Parte 2) Objetivo: Encontrar un n´umero de neuronas en las capas ocultas que disminuya el error en los conjuntos de test y validaci´on. Se realizar´an 30 experimentos para cada build, resultantes de las siguientes 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. Experimentaci´on: Rendimiento (Parte 2) Errores de clasificaci´on del conjunto de validaci´on y test respecto al n´umero de neuronas en la primera capa para la build con MKL: 1 1.5 2 2.5 3 3.5 4 32 64 128 256 512 1024 Errorenvalidacion(%) Neuronas en la primera capa 0 neuronas 32 neuronas 64 neuronas 128 neuronas 256 neuronas 1 1.5 2 2.5 3 3.5 4 32 64 128 256 512 1024 Errorentest(%) Neuronas en la primera capa 0 neuronas 32 neuronas 64 neuronas 128 neuronas 256 neuronas 17 de 27
  • 18. Experimentaci´on: Rendimiento (Parte 2) Errores de clasificaci´on del conjunto de validaci´on y test respecto al n´umero de neuronas en la primera capa para la build con CUDA: 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 32 64 128 256 512 1024 Errorenvalidacion(%) Neuronas en la primera capa 0 neuronas 32 neuronas 64 neuronas 128 neuronas 256 neuronas 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 32 64 128 256 512 1024 Errorentest(%) Neuronas en la primera capa 0 neuronas 32 neuronas 64 neuronas 128 neuronas 256 neuronas 18 de 27
  • 19. Experimentaci´on: Rendimiento (Parte 3) Objetivo: Examinar qu´e ocurre al lanzar varios experimentos en paralelo, para encontrar el modo de ejecuci´on con mayor productividad. Se realizar´an experimentos para las siguientes combinaciones de valores: • N´umero de experimentos: 1, 2 y 4. • N´ucleos a usar por cada proceso: 1, 2 y 4. 19 de 27
  • 20. Experimentaci´on: Rendimiento (Parte 3) Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados en la ejecuci´on del experimento para la build con MKL: 0 1 2 3 4 5 6 7 8 9 10 1 2 4 Tiempowall(segundos) Valor OMP_NUM_THREADS 1 hilo 2 hilos paralelos 4 hilos paralelos 20 de 27
  • 21. Experimentaci´on: Rendimiento (Parte 3) Tiempos wall por ´epoca respecto al n´umero de n´ucleos empleados en la ejecuci´on del experimento para la build con CUDA: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 4 Tiempowall(segundos) Valor OMP_NUM_THREADS 1 hilo 2 hilos paralelos 4 hilos paralelos 21 de 27
  • 22. Experimentaci´on: Rendimiento (Parte 3) An´alisis de la productividad al lanzar varios procesos de forma concurrente usando la build con MKL: Valor de Hilos Tiempo Productividad OMP NUM THREADS concurrentes por ´epoca por ´epoca 1 1 4,017 4,017 2 1 2,671 2,671 4 1 2,062 2,062 1 2 4,266 2,133 2 2 2,893 1,4465 4 2 3,496 1,748 1 4 4,733 1,18325 2 4 5,158 1,2895 4 4 8,074 2,0185 22 de 27
  • 23. Uso de la aplicaci´on April est´a siendo utilizado en numerosos trabajos de investigaci´on desde el a˜no 2005 aproximadamente. La nueva implementaci´on del BP de April ya est´a siendo utilizada para 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 las aportaciones de la herramienta April para enviarlo a alguna revista o congreso relacionado con el reconocimiento de formas. 23 de 27
  • 24. Conclusiones Los objetivos que nos hab´ıamos propuesto al principio del proyecto han sido alcanzados con ´exito: 1. Se ha hecho un redise˜no completo de las redes neuronales de April para ejecutar el algoritmo BP en CPU de un modo eficiente. 2. Este dise˜no incluye la formulaci´on del BP en modo “bunch” con momentum y weight decay. 3. Sobre el nuevo dise˜no, se ha incorporado la opci´on de utilizar la GPU para efectuar los c´alculos de forma paralela y eficiente. 4. Exhaustiva experimentaci´on para comprobar la correcci´on y el rendimiento de la aplicaci´on. Estudio del efecto de determinados par´ametros de entrenamiento y configuraci´on sobre tareas no triviales (MNIST). 24 de 27
  • 25. Cuantificando la mejora April: Unas 600 veces m´as r´apido que SNNS (utilizado en pr´acticas de Redes 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. Ampliaciones futuras Algunas 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. ¿Preguntas? Para conocer m´as sobre el proyecto, la memoria estar´a disponible para su consulta en el Repositorio Institucional de la UPV (RiuNet). Muchas gracias por asistir a esta exposici´on. 27 de 27