3 votos

¿Qué parte ahorrará tiempo al entrenar una red neuronal usando GPU?

Hay mucho trabajo para entrenar una red neuronal profunda usando GPU. Desde la perspectiva de la optimización, ¿qué parte ahorra tiempo? ¿La evaluación de la función objetivo? ¿El cálculo del gradiente? ¿O algo más? ¿Y por qué?

¿Son ciertas operaciones de matrices (como la multiplicación de matrices) más rápidas en GPU que en CPU?

En optimización convexa Apéndice C. Tenemos conteo de operaciones de punto flotante para cada operación. ¿Se cambian en GPU? ¿O la GPU tiene operaciones de punto flotante mucho más rápidas?

enter image description here

2 votos

Tu sospecha es correcta - las GPU son excelentes en la multiplicación de matrices.

0 votos

También supondría que la multiplicación de matrices "sin matriz" sería común. Con esto quiero decir casos en los que la "matriz" es muy dispersa (por ejemplo, convolución) y/o tiene una estructura regular repetida (por ejemplo, FFT), nunca se ensamblará explícitamente en la práctica. Aquí, los algoritmos se estructurarán para acceder a la matriz solo a través de una rutina especializada para la "multiplicación de matriz-vector".

0 votos

@GeoMatt22, ¿podrías darme algún ejemplo de cómo se relaciona la transformada de Fourier rápida con la multiplicación de matrices?

1voto

user100976 Puntos 21

Tienes razón, las GPUs, en comparación con las CPUs (Unidad Central de Procesamiento), son más especializadas en realizar operaciones matriciales y otras transformaciones matemáticas avanzadas. Las GPUs obtienen tal velocidad en operaciones debido a la arquitectura paralela/distribuida con muchos nodos de procesamiento de gama baja.

1voto

dontloo Puntos 334

Es porque las redes neuronales son fáciles de paralelizar, para capas de red comunes, se aplican las mismas operaciones a la entrada y a los parámetros, y el orden en que se ejecutan estas operaciones no afecta la salida.

Las GPUs son buenas para el procesamiento paralelo ya que tienen miles de núcleos. Hasta donde yo sé, la GPU no reduce el número de operaciones de punto flotante necesarias para las operaciones de matriz en comparación con la CPU.

Si una capa implica alguna operación que no se beneficia mucho del procesamiento paralelo (como podría ser el ordenamiento por inserción), entonces el uso de GPUs no será tan rápido.

0 votos

Esto tiene sentido en general. Sin embargo, imagino que también debe haber algunas restricciones en el movimiento de datos (por ejemplo, consideraciones como aquí)?

0 votos

@GeoMatt22 Correcto, sé que el movimiento de datos es importante tanto para cálculos de GPU como de CPU, y se puede obtener mucha aceleración simplemente manipulando memorias/cachés de manera inteligente de aquí para allá. Sin embargo, no estoy seguro exactamente cuáles deberían ser las limitaciones aquí.

0 votos

Generalmente es lo mismo que otros problemas de tipo jerarquía de memoria (por ejemplo, operaciones BLAS compatibles con la caché). Si todas las operaciones no pueden realizarse en la GPU, entonces la aceleración de la velocidad de la GPU frente a la CPU debe ser lo suficientemente grande como para compensar los costos asociados con el movimiento de datos entre la GPU y la CPU (básicamente una versión de la ley de Amdahl). No tengo suficiente experiencia con las GPU o redes neuronales para decir cuáles podrían ser las limitaciones particulares.

0voto

epl692 Puntos 26

Las redes neuronales en general se basan en cálculos de álgebra lineal. Si pensamos en operaciones gráficas como combinar dos texturas (mapas de bits), o cambiar de alguna manera cada píxel de la textura, para lo que están construidas las GPUs, no es más ni menos que operaciones simples de matriz / vector.

Yendo más a fondo - la GPU es un procesador que tiene miles de unidades de cálculo con diferentes registros de datos y un registro de comando común, por lo que, por ejemplo, una operación como:

X = X + 1

donde X es una matriz grande, puede utilizar cada núcleo de la GPU siempre y cuando solo haya un comando para ejecutar en cada uno de ellos. Cómo se utilizan específicamente esas características depende del software, generalmente una biblioteca / herramienta de álgebra lineal como por ejemplo Matlab o las bibliotecas de DNN de nVidia.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X