Cómo seleccionar efectivamente un tamaño de lote óptimo para la actualización de parámetros de aprendizaje profundo, basado en las especificaciones de GPU

Generalmente, el lote más grande que cabe en la memoria gpu, ya que proporciona la utilización de cómputo gpu sin salir de la memoria gpu, lo que lo ralentizaría.

Sin embargo.

El aprendizaje profundo también es notoriamente quisquilloso con los hiperparámetros, y con la introducción de la normalización por lotes, esto se ha convertido en uno de los principales. También está el problema de que los tamaños de lote demasiado grandes causan una degeneración de precisión debido a “mínimos locales agudos” que causan una generalización deficiente (aunque el método de inicialización de Facebook ayuda a aliviar esto). Sin embargo, es muy poco probable que esto sea una preocupación ya que primero se quedará sin memoria gpu. Un problema mayor es la normalización de lotes, si el tamaño de su lote es demasiado pequeño, puede causar problemas con la norma del lote. Recomiendo usar la normalización por lotes, que debería evitar este problema en gran medida.

Si está entrenando su modelo en una GPU, entonces es importante saturar todos los núcleos y tener un tamaño de lote que sea aproximadamente igual a la memoria de la GPU. Esto se debe a que las velocidades de transferencia de memoria RAM-> GPU son muy lentas en comparación con las velocidades de transferencia de registro RAM-> CPU, por lo que si tiene un tamaño de lote muy pequeño, entonces puede ocurrir que la sobrecarga de transferencia de memoria RAM-> GPU destruya cualquier cálculo velocidad que obtienes al hacer tus multiplicaciones matriciales en una GPU.

Por lo tanto, una buena regla general sería seleccionar el tamaño del lote como (memoria total de la GPU en bytes) / (número de parámetros en el modelo * 8). Comience con esto e intente ajustarlo ligeramente para obtener el mejor tamaño de lote para su tarea.

More Interesting

¿Qué otros algoritmos de aprendizaje automático, además del aprendizaje profundo, se aplican ampliamente en aplicaciones comerciales?

¿Cómo sabes que tienes que "maximizar" el lagrangiano para resolver el problema dual?

¿Cómo se relaciona el error cuadrático medio (RMSE) y la clasificación?

¿El sobreajuste en un conjunto de datos implica que el modelo realmente puede aprender y generalizar sobre ese conjunto de datos, pero desafortunadamente demasiado entrenado?

Tengo un conjunto de datos con una combinación de datos cualitativos y cuantitativos, ¿cómo puedo inferir una relación o sensibilidad entre las columnas?

¿Cómo puede alguien usar el verano para hacer un gran progreso en su conocimiento en los campos de redes neuronales artificiales y aprendizaje profundo?

¿Cuáles son las mejores plataformas de ciencia de datos?

¿Cómo puedo aprender a realizar simulaciones de dinámica molecular? ¿Cuáles son algunas buenas fuentes para aprender sobre este campo?

¿Cuál es el algoritmo de búsqueda de patrones (o reconocimiento de patrones) más avanzado? ¿Como funciona?

¿Es mejor utilizar algoritmos basados ​​en reglas o de aprendizaje automático para la clasificación en un dominio de respuesta a preguntas cerrado?

¿Cuál es el proceso de modelado?

¿Qué es ingenuo Bayes, clasificación de espacio vectorial y máquinas de vectores de soporte en la recuperación de información?

¿Cuál es una buena manera de entender las dos fórmulas con respecto a este modelo gráfico de probabilidad dado?

¿Cuáles son algunos buenos proyectos en los que un principiante de aprendizaje automático puede trabajar?

¿Cuándo debo aprender tensorflow?