

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Optimisation
<a name="tutorial-gpu-opt"></a>

Pour en tirer le meilleur parti GPUs, vous pouvez optimiser votre pipeline de données et ajuster votre réseau de deep learning. Comme décrit dans le graphique suivant, une implémentation naïve ou élémentaire d'un réseau neuronal risque d'utiliser le GPU de manière incohérente, et ne pas exploiter pleinement son potentiel. Lorsque vous optimisez le prétraitement et le chargement des données, vous pouvez réduire le goulot d'étranglement de votre CPU à votre GPU. Vous pouvez ajuster le réseau neuronal lui-même, en utilisant un réseau hybride (lorsqu'il est pris en charge par l'infrastructure), en ajustant la taille des lots et en synchronisant les appels. Vous pouvez également utiliser la formation avec précision multiple (float16 ou int8) dans la plupart des infrastructures, ce qui peut améliorer considérablement le débit. 

Le graphique suivant illustre les gains de performance cumulés lorsque différentes optimisations sont appliquées. Vos résultats dépendront des données vous traitez et du réseau que vous optimisez.

![\[Améliorations des performances pour GPUs\]](http://docs.aws.amazon.com/fr_fr/dlami/latest/devguide/images/performance-enhancements.png)


Les guides suivants présentent les options qui fonctionneront avec votre DLAMI et vous aideront à améliorer les performances du GPU.

**Topics**
+ [Prétraitement](tutorial-gpu-opt-preprocessing.md)
+ [Entraînement](tutorial-gpu-opt-training.md)

# Prétraitement
<a name="tutorial-gpu-opt-preprocessing"></a>

Le processus de prétraitement des données via des transformations ou des augmentations peut souvent être lié AU CPU. Il peut donc constituer le goulot d'étranglement dans votre pipeline. Les infrastructures comportent des opérateurs pour le traitement des images, mais la bibliothèque DALI (Data Augmentation Library) affiche de meilleures performances que les options intégrées aux infrastructures.
+ Bibliothèque NVIDIA Data Augmentation Library (DALI) : DALI décharge l'augmentation de données dans le GPU. Il n'est pas préinstallé sur le DLAMI, mais vous pouvez y accéder en l'installant ou en chargeant un conteneur de framework pris en charge sur votre DLAMI ou sur une autre instance Amazon Elastic Compute Cloud. Reportez-vous à la [page de projet DALI](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html) sur le site web NVIDIA pour plus de détails. Pour un exemple de cas d'utilisation et pour télécharger des exemples de code, consultez l'exemple de performance d'[entraînement en matière de SageMaker prétraitement](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance).
+ nvJPEG : bibliothèque de décodage JPEG avec accélération GPU pour les programmeurs C. Elle prend en charge le décodage d'images uniques ou de lots, ainsi que les opérations de transformation suivantes qui sont communes dans le deep learning. nvJPEG est intégré à DALI. Vous pouvez également le télécharger à partir de la [page nvjpeg du site web NVIDIA](https://developer.nvidia.com/nvjpeg) et l'utiliser séparément.

Les rubriques suivantes relatives à la surveillance et l'optimisation des GPU peuvent vous intéresser :
+ [Contrôle](tutorial-gpu-monitoring.md)
  + [Moniteur GPUs avec CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimisation](tutorial-gpu-opt.md)
  + [Prétraitement](#tutorial-gpu-opt-preprocessing)
  + [Entraînement](tutorial-gpu-opt-training.md)

# Entraînement
<a name="tutorial-gpu-opt-training"></a>

Avec la formation avec précision mixte, vous pouvez déployer de plus grands réseaux avec la même quantité de mémoire, ou réduire l'utilisation de la mémoire par rapport à votre réseau simple ou double précision. Vous obtiendrez aussi de meilleures performances de calcul. Vous pouvez également tirer parti de transferts de données plus petits et plus rapides, qui est un facteur important dans la formation distribuée à plusieurs nœuds. Pour profiter de la formation avec précision mixte, vous devez ajuster la conversion et la mise à l'échelle de la perte des données. Les guides suivants décrivent la procédure pour les infrastructures qui prennent en charge la précision mixte.
+ [SDK NVIDIA Deep Learning](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/) : documentation disponible sur le site Web de NVIDIA décrivant l'implémentation en précision mixte pour MXNet, et PyTorch. TensorFlow

**Astuce**  
Recherchez l'infrastructure de votre choix sur le site web, puis recherchez « précision mixte » ou « fp16 » pour obtenir les dernières techniques d'optimisation. Voici quelques guides relatifs à la précision mixte qui peuvent vous être utiles :  
[Entraînement de précision mixte avec TensorFlow (vidéo)](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/) - sur le site du blog NVIDIA.
[Entraînement à précision mixte avec float16 avec MXNet](https://mxnet.apache.org/api/faq/float16) - un article de FAQ sur le site Web. MXNet 
[NVIDIA Apex : un outil pour un entraînement facile à précision mixte grâce PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) à un article de blog sur le site Web de NVIDIA.

Les rubriques suivantes relatives à la surveillance et l'optimisation des GPU peuvent vous intéresser :
+ [Contrôle](tutorial-gpu-monitoring.md)
  + [Moniteur GPUs avec CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Optimisation](tutorial-gpu-opt.md)
  + [Prétraitement](tutorial-gpu-opt-preprocessing.md)
  + [Entraînement](#tutorial-gpu-opt-training)