

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Optimización
<a name="tutorial-gpu-opt"></a>

Para sacarle el máximo partido GPUs, puede optimizar su canalización de datos y ajustar su red de aprendizaje profundo. Tal como se describe en el siguiente gráfico, una implementación ingenua o básica de una red neuronal podría utilizar la GPU de un modo incoherente y no aprovechar todo su potencial. Al optimizar el procesamiento previo y la carga de datos, es posible reducir el cuello de botella de la CPU a la GPU. Puede ajustar la propia red neuronal mediante la hibridación (si el marco de trabajo la admite), ajustando el tamaño del lote y sincronizando las llamadas. También puede utilizar entrenamiento de precisión múltiple (float16 o int8) en la mayoría de los marcos de trabajo, lo que puede tener un efecto drástico en la mejora del rendimiento. 

El gráfico siguiente muestra la mejora acumulativa del rendimiento que se obtiene cuando se aplican distintas optimizaciones. Los resultados dependerán de los datos que esté procesando y de la red que esté optimizando.

![\[Mejoras de rendimiento para GPUs\]](http://docs.aws.amazon.com/es_es/dlami/latest/devguide/images/performance-enhancements.png)


Las siguientes guías introducen opciones que funcionarán con la DLAMI y que le ayudarán a aumentar el rendimiento de la GPU.

**Topics**
+ [Procesamiento previo](tutorial-gpu-opt-preprocessing.md)
+ [Formación](tutorial-gpu-opt-training.md)

# Procesamiento previo
<a name="tutorial-gpu-opt-preprocessing"></a>

El procesamiento previo de los datos a través de transformaciones o aumentos es con frecuencia un proceso asociado a la CPU y puede ser el cuello de botella en la canalización general. Los marcos de trabajo tienen operadores integrados para el procesamiento de imágenes, pero DALI (Data Augmentation Library) demuestra un rendimiento mejorado sobre las opciones integradas de los marcos de trabajo.
+ Biblioteca de aumento de datos de NVIDIA (DALI): DALI descarga el aumento de datos a la GPU. No está preinstalada en la DLAMI, pero puede obtener acceso a ella instalando o cargando un contenedor de marcos de trabajo compatible en la DLAMI o en otra instancia de Amazon Elastic Compute Cloud. Consulte la [página del proyecto DALI](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html) en el sitio web de NVIDIA para obtener más información. Para ver un ejemplo de caso de uso y descargar ejemplos de código, consulta el ejemplo sobre el rendimiento del entrenamiento [ SageMaker previo al procesamiento](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance).
+ nvJPEG: una biblioteca de decodificadores JPEG acelerada por GPU para programadores de C. Admite la decodificación de imágenes únicas o de lotes de imágenes, así como las operaciones de transformación subsiguientes tan frecuentes en el aprendizaje profundo. nvJPEG viene integrada en DALI, pero puede descargarla en la [página de nvjpeg del sitio web de NVIDIA](https://developer.nvidia.com/nvjpeg) y utilizarla de forma independiente.

Es posible que le interesen estos otros temas sobre la monitorización y optimización de GPU:
+ [Supervisión](tutorial-gpu-monitoring.md)
  + [GPUs Supervise con CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimización](tutorial-gpu-opt.md)
  + [Procesamiento previo](#tutorial-gpu-opt-preprocessing)
  + [Formación](tutorial-gpu-opt-training.md)

# Formación
<a name="tutorial-gpu-opt-training"></a>

El entrenamiento de precisión mixta permite implementar redes de mayor tamaño con la misma cantidad de memoria, o reducir el uso de esta en comparación con las redes de precisión única o doble, lo que se traduce en un aumento del rendimiento informático. También ofrece el beneficio de transferencias de datos más pequeñas y rápidas, un factor importante en el entrenamiento distribuido con varios nodos. Para utilizar el entrenamiento de precisión mixta es necesario ajustar el envío de datos y el escalado de pérdidas. Las siguientes guías describen cómo realizar esta operación en los marcos de trabajo compatibles con la precisión mixta.
+ [SDK de aprendizaje profundo de NVIDIA](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/): documentos en el sitio web de NVIDIA que describen la implementación de precisión mixta para, y. MXNet PyTorch TensorFlow

**sugerencia**  
Asegúrese de consultar el sitio web de su marco de trabajo preferido y busque "mixed precision" o "fp16" para conocer las técnicas de optimización más recientes. A continuación se muestran algunas guías de precisión mixta que pueden resultarle de utilidad:  
[Formación de precisión mixta con TensorFlow (vídeo)](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/): en el blog de NVIDIA.
[Entrenamiento de precisión mixta con float16 con](https://mxnet.apache.org/api/faq/float16) un artículo de preguntas frecuentes en el MXNet sitio web. MXNet 
[NVIDIA Apex: una herramienta para un entrenamiento sencillo de precisión mixta con PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) un artículo de blog en el sitio web de NVIDIA.

Es posible que le interesen estos otros temas sobre la monitorización y optimización de GPU:
+ [Supervisión](tutorial-gpu-monitoring.md)
  + [GPUs Supervise con CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimización](tutorial-gpu-opt.md)
  + [Procesamiento previo](tutorial-gpu-opt-preprocessing.md)
  + [Formación](#tutorial-gpu-opt-training)