

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Per sfruttare al meglio le tue potenzialità GPUs, puoi ottimizzare la pipeline di dati e ottimizzare la tua rete di deep learning. Come descritto nel grafico seguente, un'implementazione nativa o di base di una rete neurale potrebbe utilizzare la GPU in maniera non omogenea e non a pieno potenziale. Quando ottimizzi la pre-elaborazione e il caricamento dei dati, puoi ridurre il collo di bottiglia dalla CPU alla GPU. Puoi regolare la rete neurale stessa, utilizzando l'ibridazione (quando supportata dal framework), modificando le dimensioni batch e sincronizzando le chiamate. Puoi anche utilizzare training a precisione multipla (float16 o int8) nella maggior parte dei framework, che può avere un effetto significativo sul miglioramento del throughput. 

Il grafico seguente mostra i miglioramenti delle prestazioni cumulativi quando si applicano ottimizzazioni differenti. I risultati dipenderanno dai dati in corso di elaborazione e dalla rete che si sta ottimizzando.

![\[Miglioramenti delle prestazioni per GPUs\]](http://docs.aws.amazon.com/it_it/dlami/latest/devguide/images/performance-enhancements.png)


Le seguenti guide introducono le opzioni che funzionano con il tuo DLAMI e ti aiutano a migliorare le prestazioni della GPU.

**Topics**
+ [

# Pre-elaborazione
](tutorial-gpu-opt-preprocessing.md)
+ [

# Addestramento
](tutorial-gpu-opt-training.md)

# Pre-elaborazione
<a name="tutorial-gpu-opt-preprocessing"></a>

La pre-elaborazione dei dati tramite trasformazioni o ottimizzazioni può essere spesso un processo basato sulla CPU e questo può essere il collo di bottiglia nella pipeline complessiva. I framework dispongono di operatori integrati per l'elaborazione di immagini, ma DALI (Data augmentation Library) mostra prestazioni migliorate rispetto a opzioni integrate dei framework.
+ NVIDIA Data augmentation Library (DALI): DALI esegue l'offload dell'ottimizzazione dei dati nella GPU. Non è preinstallato su DLAMI, ma puoi accedervi installandolo o caricando un contenitore di framework supportato sul tuo DLAMI o su un'altra istanza Amazon Elastic Compute Cloud. Per informazioni dettagliate, consulta la [pagina di progetto DALI](https://docs.nvidia.com/deeplearning/sdk/dali-install-guide/index.html) sul sito Web NVIDIA. [Per un caso d'uso di esempio e per scaricare esempi di codice, consulta l'esempio Preprocessing Training Performance. SageMaker ](https://github.com/aws-samples/sagemaker-cv-preprocessing-training-performance)
+ nvJPEG: una libreria di decoder JPEG con accelerazione GPU per programmatori C. Supporta la decodifica di immagini singole o batch, nonché operazioni di trasformazione successive che sono comuni in deep learning. nvJPEG è integrato con DALI, oppure è possibile scaricarlo dalla [pagina nvjpeg del sito Web NVIDIA](https://developer.nvidia.com/nvjpeg) e utilizzarlo separatamente.

Questi altri argomenti sul monitoraggio e l'ottimizzazione GPU potrebbero essere interessanti:
+ [Monitoraggio](tutorial-gpu-monitoring.md)
  + [GPUs Monitora con CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Ottimizzazione](tutorial-gpu-opt.md)
  + [Pre-elaborazione](#tutorial-gpu-opt-preprocessing)
  + [Addestramento](tutorial-gpu-opt-training.md)

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

Grazie al training a precisione mista puoi distribuire reti più grandi con la stessa quantità di memoria o ridurre l'utilizzo della memoria rispetto alla rete a precisione singola o doppia, registrando al contempo un incremento delle prestazioni di calcolo. Hai anche il vantaggio di trasferimenti dati più piccoli e rapidi, un fattore importante nel training distribuito a più nodi. Per sfruttare il training a precisione mista occorre regolare casting dei dati e perdita di scaling. Le guide seguenti descrivono come eseguire questa operazione per i framework che supportano la precisione mista.
+ [NVIDIA Deep Learning SDK](https://docs.nvidia.com/deeplearning/sdk/mixed-precision-training/): documenti sul sito Web di NVIDIA che descrivono l'implementazione a precisione mista per, e. MXNet PyTorch TensorFlow

**Suggerimento**  
Assicurati di controllare il sito Web per il framework scelto e cerca "mixed precision" o "fp16" per le tecniche di ottimizzazione più recenti. Di seguito sono elencate alcune guide a precisione mista che possono essere utili:  
[Formazione a precisione mista con TensorFlow (](https://devblogs.nvidia.com/mixed-precision-resnet-50-tensor-cores/)video) - sul sito del blog NVIDIA.
[Allenamento a precisione mista con float16 con MXNet](https://mxnet.apache.org/api/faq/float16) - un articolo di domande frequenti sul sito Web. MXNet 
[NVIDIA Apex: uno strumento per un facile allenamento a precisione mista con PyTorch](https://devblogs.nvidia.com/apex-pytorch-easy-mixed-precision-training/) - un articolo di blog sul sito Web di NVIDIA.

Questi altri argomenti sul monitoraggio e l'ottimizzazione GPU potrebbero essere interessanti:
+ [Monitoraggio](tutorial-gpu-monitoring.md)
  + [GPUs Monitora con CloudWatch](tutorial-gpu-monitoring-gpumon.md)
+ [Ottimizzazione](tutorial-gpu-opt.md)
  + [Pre-elaborazione](tutorial-gpu-opt-preprocessing.md)
  + [Addestramento](#tutorial-gpu-opt-training)